:root {
    --case-bg: #090d12;
    --case-panel: #111821;
    --case-panel-2: #17212c;
    --case-line: rgba(173, 191, 207, .17);
    --case-paper: #f1eadb;
    --case-paper-ink: #1f252b;
    --case-red: #e34a4a;
    --case-red-soft: rgba(227, 74, 74, .14);
    --case-amber: #e6ad58;
    --case-green: #55c89a;
    --case-blue: #68a8d8;
    --case-text: #edf3f7;
    --case-muted: #94a4b2;
}

.reports-page {
    min-height: 100vh;
    margin: -32px;
    padding: 58px clamp(22px, 4vw, 68px) 110px;
    color: var(--case-text);
    background:
        radial-gradient(circle at 78% 12%, rgba(80, 122, 148, .12), transparent 32%),
        linear-gradient(rgba(255, 255, 255, .018) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .018) 1px, transparent 1px),
        var(--case-bg);
    background-size: auto, 34px 34px, 34px 34px, auto;
}

.reports-wrap { width: min(1320px, 100%); margin: 0 auto; }
.case-kicker { margin: 0; color: var(--case-red); font-size: 12px; font-weight: 900; letter-spacing: .2em; }
.case-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 36px; padding-bottom: 34px; border-bottom: 1px solid var(--case-line); }
.case-hero h1 { margin: 10px 0 12px; color: #fff; font-size: clamp(38px, 5vw, 66px); line-height: 1.02; letter-spacing: -.045em; }
.case-hero p { max-width: 760px; margin: 0; color: var(--case-muted); font-size: 17px; line-height: 1.75; word-break: keep-all; }
.case-status { flex: 0 0 auto; padding: 11px 15px; border: 1px solid rgba(85, 200, 154, .35); border-radius: 999px; color: var(--case-green); background: rgba(85, 200, 154, .08); font-size: 12px; font-weight: 900; letter-spacing: .08em; }

.case-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 30px 0 22px; }
.case-group-card { position: relative; min-height: 175px; padding: 25px 28px; border: 1px solid var(--case-line); border-radius: 6px; color: inherit; background: linear-gradient(145deg, rgba(255,255,255,.045), rgba(255,255,255,.012)); text-align: left; cursor: pointer; overflow: hidden; transition: border-color .2s ease, transform .2s ease, background .2s ease; }
.case-group-card::after { content: ''; position: absolute; right: -45px; bottom: -70px; width: 170px; height: 170px; border: 1px solid rgba(255,255,255,.07); border-radius: 50%; box-shadow: 0 0 0 22px rgba(255,255,255,.018), 0 0 0 48px rgba(255,255,255,.012); }
.case-group-card:hover { transform: translateY(-2px); border-color: rgba(227,74,74,.55); }
.case-group-card.is-active { border-color: rgba(227,74,74,.72); background: linear-gradient(145deg, rgba(227,74,74,.16), rgba(255,255,255,.02)); box-shadow: inset 3px 0 0 var(--case-red); }
.case-group-card small { display: block; margin-bottom: 26px; color: var(--case-red); font-weight: 900; letter-spacing: .16em; }
.case-group-card strong { display: block; color: #fff; font-size: 27px; letter-spacing: -.02em; }
.case-group-card span { display: block; max-width: 500px; margin-top: 8px; color: var(--case-muted); font-size: 14px; line-height: 1.55; word-break: keep-all; }

.case-subnav { display: flex; gap: 8px; margin: 0 0 44px; padding: 10px; border: 1px solid var(--case-line); border-radius: 6px; background: rgba(10, 15, 21, .86); overflow-x: auto; scrollbar-width: thin; }
.case-subnav a { flex: 0 0 auto; padding: 11px 15px; border: 1px solid transparent; border-radius: 4px; color: #8fa0ae; font-size: 14px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.case-subnav a:hover { color: #fff; background: rgba(255,255,255,.05); }
.case-subnav a.is-active { border-color: rgba(227,74,74,.42); color: #fff; background: var(--case-red-soft); }

.case-panel[hidden], .case-report[hidden] { display: none !important; }
.case-report { animation: caseReveal .24s ease both; }
@keyframes caseReveal { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.report-mast { display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: 26px; margin-bottom: 28px; }
.report-mast .report-code { padding-top: 7px; color: var(--case-red); font: 800 13px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .1em; }
.report-mast h2 { margin: 0 0 10px; color: #fff; font-size: clamp(30px, 4vw, 46px); line-height: 1.18; letter-spacing: -.035em; }
.report-mast p { max-width: 900px; margin: 0; color: var(--case-muted); font-size: 17px; line-height: 1.75; word-break: keep-all; }
.report-content { margin-left: 142px; }

.finding-banner { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 28px; align-items: center; padding: 26px 28px; border: 1px solid rgba(227,74,74,.35); border-left: 4px solid var(--case-red); border-radius: 4px; background: linear-gradient(110deg, rgba(227,74,74,.14), rgba(17,24,33,.8)); }
.finding-banner small { color: var(--case-red); font-weight: 900; letter-spacing: .12em; }
.finding-banner strong { display: block; margin-top: 8px; color: #fff; font-size: 22px; line-height: 1.45; word-break: keep-all; }
.finding-banner p { margin: 7px 0 0; color: #a9b5bf; line-height: 1.7; word-break: keep-all; }
.finding-score { display: grid; place-items: center; width: 92px; height: 92px; border: 1px solid rgba(227,74,74,.45); border-radius: 50%; color: var(--case-red); background: rgba(0,0,0,.22); font-size: 13px; font-weight: 900; text-align: center; }
.finding-score b { display: block; font-size: 25px; }

.metric-strip { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; margin: 16px 0 30px; }
.metric-card { padding: 18px; border: 1px solid var(--case-line); border-radius: 4px; background: rgba(17,24,33,.78); }
.metric-card b { display: block; color: #fff; font-size: 24px; }
.metric-card span { display: block; margin-top: 6px; color: var(--case-muted); font-size: 13px; }

.investigation-board { position: relative; height: 690px; margin-top: 26px; border: 9px solid #3f2e24; border-radius: 3px; background: radial-gradient(circle at 20% 20%, rgba(255,255,255,.05), transparent 24%), #8b6547; box-shadow: inset 0 0 0 3px #211713, 0 24px 55px rgba(0,0,0,.36); overflow: hidden; }
.investigation-board::before { content: ''; position: absolute; inset: 0; opacity: .28; background-image: radial-gradient(rgba(255,255,255,.16) .7px, transparent .8px); background-size: 5px 5px; }
.board-label { position: absolute; z-index: 4; left: 24px; top: 20px; padding: 7px 11px; color: #2b211c; background: #e8d693; box-shadow: 2px 3px 9px rgba(0,0,0,.24); font: 900 13px/1.2 ui-monospace, monospace; transform: rotate(-1deg); }
.evidence-card { position: absolute; z-index: 3; width: 220px; padding: 16px; color: var(--case-paper-ink); background: var(--case-paper); box-shadow: 4px 7px 14px rgba(28,17,11,.35); transform: rotate(var(--tilt, 0deg)); }
.evidence-card::before { content: ''; position: absolute; left: 50%; top: -8px; width: 15px; height: 15px; border-radius: 50%; background: #c62f33; box-shadow: 1px 2px 4px rgba(0,0,0,.35); transform: translateX(-50%); }
.evidence-card small { color: #835f49; font: 800 10px/1.2 ui-monospace, monospace; letter-spacing: .1em; }
.evidence-card h3 { margin: 8px 0 7px; color: #1b2229; font-size: 18px; line-height: 1.25; }
.evidence-card p { margin: 0; color: #4e4c47; font-size: 13px; line-height: 1.55; word-break: keep-all; }
.evidence-card code { color: #9c252a; font-weight: 900; }
.evidence-card img { display: block; width: 100%; height: 112px; margin-bottom: 11px; border: 5px solid #fff; object-fit: cover; box-shadow: 0 2px 5px rgba(0,0,0,.22); cursor: zoom-in; }
.evidence-mail { left: 6%; top: 15%; --tilt: -2deg; }
.evidence-sea { left: 37%; top: 8%; --tilt: 1.5deg; }
.evidence-key { left: 40%; top: 56%; --tilt: -1deg; }
.evidence-zip { left: 7%; top: 62%; --tilt: 1.8deg; }
.evidence-photo { right: 5%; top: 50%; --tilt: -1.5deg; }
.evidence-verdict { right: 4%; top: 12%; --tilt: 2deg; border-top: 6px solid #9f282c; }
.board-string { position: absolute; z-index: 2; height: 2px; background: #b51e29; transform-origin: 0 50%; box-shadow: 0 1px 2px rgba(0,0,0,.35); }
.board-string::before, .board-string::after { content: ''; position: absolute; top: 50%; width: 9px; height: 9px; border-radius: 50%; background: #df4247; transform: translateY(-50%); }
.board-string::before { left: -4px; } .board-string::after { right: -4px; }
.string-1 { left: 21%; top: 29%; width: 240px; transform: rotate(-9deg); }
.string-2 { left: 49%; top: 36%; width: 210px; transform: rotate(-50deg); }
.string-3 { left: 49%; top: 55%; width: 275px; transform: rotate(132deg); }
.string-4 { left: 22%; top: 73%; width: 250px; transform: rotate(-7deg); }
.string-5 { left: 55%; top: 70%; width: 260px; transform: rotate(-7deg); }

.section-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 22px 0; }
.dossier-card { padding: 22px; border: 1px solid var(--case-line); border-radius: 5px; background: linear-gradient(145deg, rgba(255,255,255,.042), rgba(255,255,255,.015)); }
.dossier-card small { color: var(--case-red); font-weight: 900; letter-spacing: .12em; }
.dossier-card h3 { margin: 8px 0 10px; color: #fff; font-size: 20px; }
.dossier-card p, .dossier-card li { color: #a7b3bd; font-size: 15px; line-height: 1.75; word-break: keep-all; }
.dossier-card ul { margin: 0; padding-left: 19px; }
.dossier-card code { color: #f2ca8f; }
.evidence-quote { position: relative; margin: 20px 0; padding: 28px 30px 28px 48px; border: 1px solid rgba(230,173,88,.28); background: #171d22; color: #d7dde2; font-size: 18px; line-height: 1.9; word-break: keep-all; }
.evidence-quote::before { content: '“'; position: absolute; left: 16px; top: 9px; color: var(--case-amber); font: 700 48px/1 Georgia, serif; }
.evidence-quote cite { display: block; margin-top: 13px; color: var(--case-amber); font-size: 12px; font-style: normal; font-weight: 800; letter-spacing: .08em; }
.timeline { margin: 25px 0; padding-left: 24px; border-left: 1px solid rgba(227,74,74,.5); }
.timeline-item { position: relative; padding: 0 0 28px 25px; }
.timeline-item:last-child { padding-bottom: 0; }
.timeline-item::before { content: ''; position: absolute; left: -30px; top: 4px; width: 11px; height: 11px; border: 2px solid var(--case-bg); border-radius: 50%; background: var(--case-red); box-shadow: 0 0 0 1px var(--case-red); }
.timeline-item time { color: var(--case-red); font: 800 12px/1.2 ui-monospace, monospace; }
.timeline-item strong { display: block; margin: 6px 0; color: #fff; font-size: 18px; }
.timeline-item p { margin: 0; color: var(--case-muted); line-height: 1.7; }

.evidence-gallery { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; margin: 22px 0; }
.evidence-figure { margin: 0; padding: 10px; border: 1px solid var(--case-line); background: #111820; }
.evidence-figure button { width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.evidence-figure img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; filter: saturate(.8) contrast(1.04); }
.evidence-figure figcaption { padding: 12px 4px 3px; color: #b7c1c9; font-size: 13px; line-height: 1.5; }

.evidence-table-wrap { margin: 22px 0; border: 1px solid var(--case-line); overflow-x: auto; }
.evidence-table { width: 100%; min-width: 740px; border-collapse: collapse; background: rgba(17,24,33,.72); }
.evidence-table th, .evidence-table td { padding: 14px 16px; border-right: 1px solid var(--case-line); border-bottom: 1px solid var(--case-line); color: #a8b4bd; font-size: 14px; line-height: 1.6; text-align: left; vertical-align: top; }
.evidence-table th { color: #fff; background: rgba(255,255,255,.035); font-size: 12px; letter-spacing: .05em; }
.evidence-table tr:last-child td { border-bottom: 0; }
.evidence-table th:last-child, .evidence-table td:last-child { border-right: 0; }
.hash { max-width: 360px; color: #7fb3d5; font: 12px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; word-break: break-all; }
.caution-note { margin-top: 24px; padding: 20px 22px; border-left: 3px solid var(--case-amber); color: #c7c0b4; background: rgba(230,173,88,.08); line-height: 1.75; word-break: keep-all; }

.diagram-shell, .analysis-flow, .analysis-section, .client-report-frame, .report-placeholder { color: #26344b; }
.diagram-shell { border: 1px solid var(--case-line); border-radius: 5px; background: #fff; overflow: hidden; }
.diagram-toolbar { display: flex; justify-content: flex-end; gap: 6px; padding: 10px; border-bottom: 1px solid #dde3ec; background: #f4f6f9; }
.diagram-toolbar button { min-width: 34px; height: 32px; border: 1px solid #d2dae5; border-radius: 4px; color: #47576d; background: #fff; cursor: pointer; }
.diagram-viewport { height: min(72vh, 760px); min-height: 520px; overflow: auto; }
.diagram-canvas { display: flex; justify-content: center; min-width: 100%; min-height: 100%; padding: 24px; }
.trojan-mermaid { flex: 0 0 auto; margin: 0; }
.trojan-mermaid svg { display: block; max-width: none !important; height: auto; }
.diagram-shell:fullscreen { display: flex; flex-direction: column; width: 100vw; height: 100vh; border: 0; }
.diagram-shell:fullscreen .diagram-viewport { flex: 1; height: auto; }
.analysis-content { color: #a7b3bd; }
.analysis-lead { margin: 0 0 26px; padding: 20px 22px; border-left: 3px solid var(--case-blue); background: rgba(104,168,216,.09); font-size: 16px; line-height: 1.8; }
.analysis-flow { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-bottom: 38px; }
.analysis-step { padding: 18px; border: 1px solid var(--case-line); border-radius: 5px; background: var(--case-panel); }
.analysis-step b { display: block; margin-bottom: 9px; color: var(--case-blue); }
.analysis-step strong { display: block; margin-bottom: 8px; color: #fff; line-height: 1.4; }
.analysis-step span { color: var(--case-muted); font-size: 14px; line-height: 1.6; }
.analysis-section { margin-top: 40px; color: #a7b3bd; }
.analysis-section h3, .analysis-section h4 { color: #fff; }
.analysis-section > p { color: #a7b3bd; line-height: 1.8; }
.analysis-table-wrap { overflow-x: auto; border: 1px solid var(--case-line); }
.analysis-table { width: 100%; min-width: 680px; border-collapse: collapse; background: var(--case-panel); }
.analysis-table th, .analysis-table td { padding: 13px 15px; border: 1px solid var(--case-line); color: #a7b3bd; line-height: 1.6; text-align: left; }
.analysis-table th { color: #fff; background: rgba(255,255,255,.04); }
.analysis-conclusion { margin-top: 36px; padding: 20px 22px; border-left: 3px solid var(--case-green); background: rgba(85,200,154,.08); color: #b8cbc3; line-height: 1.8; }
.client-report-frame { display: block; width: 100%; min-height: 520px; border: 1px solid var(--case-line); border-radius: 5px; background: #fff; }
.report-placeholder { padding: 42px 28px; border: 1px dashed rgba(255,255,255,.18); color: var(--case-muted); background: var(--case-panel); text-align: center; }
.report-placeholder strong { display: block; margin-bottom: 8px; color: #fff; font-size: 22px; }

.case-lightbox[hidden] { display: none; }
.case-lightbox { position: fixed; inset: 0; z-index: 10000; display: grid; place-items: center; padding: 32px; background: rgba(2,5,8,.95); }
.case-lightbox img { display: block; max-width: min(1500px,94vw); max-height: 88vh; object-fit: contain; box-shadow: 0 22px 70px rgba(0,0,0,.6); }
.case-lightbox button { position: fixed; right: 22px; top: 18px; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; color: #fff; background: rgba(0,0,0,.45); font-size: 26px; cursor: pointer; }

@media (max-width: 1100px) {
    .report-content { margin-left: 0; }
    .investigation-board { height: auto; padding: 76px 24px 28px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
    .evidence-card { position: relative; inset: auto !important; width: auto; transform: rotate(var(--tilt,0deg)); }
    .board-string { display: none; }
}
@media (max-width: 860px) {
    .reports-page { margin: -20px; padding: 42px 20px 80px; }
    .case-hero { display: block; }
    .case-status { display: inline-block; margin-top: 20px; }
    .case-groups, .section-grid { grid-template-columns: 1fr; }
    .metric-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .report-mast { grid-template-columns: 1fr; gap: 7px; }
    .finding-banner { grid-template-columns: 1fr; }
    .finding-score { width: auto; height: auto; padding: 12px; border-radius: 4px; }
    .finding-score b { display: inline; margin-right: 6px; font-size: inherit; }
    .evidence-gallery { grid-template-columns: 1fr; }
    .analysis-flow { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 560px) {
    .case-group-card { min-height: 150px; padding: 22px; }
    .metric-strip, .investigation-board, .analysis-flow { grid-template-columns: 1fr; }
    .investigation-board { padding-inline: 17px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* 바깥쪽 화면과 자연스럽게 이어지는 밝은 보고서 화면 */
:root {
    --case-bg: #ffffff;
    --case-panel: #ffffff;
    --case-panel-2: #f5f7fa;
    --case-line: #dce3ea;
    --case-red: #bd3340;
    --case-red-soft: #fff0f2;
    --case-amber: #98661d;
    --case-green: #187a5a;
    --case-blue: #286f9e;
    --case-text: #17212b;
    --case-muted: #667381;
}

.reports-page {
    color: var(--case-text);
    background:
        radial-gradient(circle at 78% 8%, rgba(74, 126, 160, .08), transparent 30%),
        linear-gradient(rgba(31, 52, 69, .035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(31, 52, 69, .035) 1px, transparent 1px),
        #ffffff;
    background-size: auto, 34px 34px, 34px 34px, auto;
}

.case-hero h1,
.case-group-card strong,
.report-mast h2,
.finding-banner strong,
.metric-card b,
.dossier-card h3,
.timeline-item strong,
.analysis-step strong,
.analysis-section h3,
.analysis-section h4,
.analysis-table th,
.report-placeholder strong { color: #17212b; }

.case-group-card {
    background: rgba(255, 255, 255, .88);
    box-shadow: 0 8px 28px rgba(27, 43, 56, .06);
}
.case-group-card::after {
    border-color: rgba(38, 75, 102, .08);
    box-shadow: 0 0 0 22px rgba(38, 75, 102, .025), 0 0 0 48px rgba(38, 75, 102, .018);
}
.case-group-card.is-active {
    background: linear-gradient(145deg, #fff4f5, #ffffff);
    box-shadow: inset 3px 0 0 var(--case-red), 0 8px 28px rgba(27, 43, 56, .07);
}

.case-subnav { background: #f7f9fb; }
.case-subnav a { color: #526270; }
.case-subnav a:hover { color: #17212b; background: #eef2f6; }
.case-subnav a.is-active { color: #7f2029; background: var(--case-red-soft); }

.finding-banner {
    background: linear-gradient(110deg, #fff3f4, #ffffff);
    box-shadow: 0 8px 24px rgba(27, 43, 56, .05);
}
.finding-banner p,
.dossier-card p,
.dossier-card li,
.analysis-content,
.analysis-section,
.analysis-section > p,
.analysis-table th,
.analysis-table td { color: #586775; }
.finding-score { background: #ffffff; }
.metric-card,
.dossier-card,
.evidence-figure,
.evidence-table,
.analysis-step,
.analysis-table,
.report-placeholder { background: #ffffff; }
.metric-card,
.dossier-card,
.evidence-figure,
.analysis-step,
.report-placeholder { box-shadow: 0 5px 18px rgba(27, 43, 56, .045); }
.dossier-card code { color: #8c4d12; }

.evidence-quote {
    border-color: #ead8ba;
    color: #3d4852;
    background: #fffaf1;
}
.timeline-item::before { border-color: #ffffff; }
.timeline-item p,
.evidence-figure figcaption,
.evidence-table th,
.evidence-table td { color: #596875; }
.evidence-table th { color: #273642; background: #f3f6f8; }
.caution-note { color: #5d5140; background: #fff8e9; }

.analysis-lead { color: #314d61; background: #eef7fc; }
.analysis-conclusion { color: #315f50; background: #edf8f4; }
.analysis-table th { color: #263642; background: #f3f6f8; }
.report-placeholder { border-color: #cfd8e1; color: var(--case-muted); }

.diagram-shell {
    border-color: #d7dfe7;
    box-shadow: 0 12px 32px rgba(27, 43, 56, .08);
}
.evidence-quote::before { content: '“'; }

/* 외부 판독기에 의존하지 않는 트로이 목마 구조도 */
.diagram-canvas:has(.trojan-flow-map) { justify-content: flex-start; }
.trojan-flow-map { flex: 0 0 1080px; box-sizing: border-box; width: 1080px; padding: 28px; border: 1px solid #dce3ea; border-radius: 14px; background: linear-gradient(145deg, #f8fafc, #ffffff); box-shadow: 0 18px 45px rgba(27, 43, 56, .08); transform-origin: top left; }
.flow-main-row { display: grid; grid-template-columns: 1fr 110px 1fr 110px 1fr; gap: 12px; align-items: center; }
.flow-node { min-height: 138px; padding: 22px; border: 2px solid #b8c8d8; border-radius: 12px; background: #ffffff; text-align: center; box-shadow: 0 7px 20px rgba(27, 43, 56, .07); }
.flow-node small { display: block; margin-bottom: 13px; color: #68798a; font-weight: 800; letter-spacing: .08em; }
.flow-node strong { display: block; color: #1b2b38; font-size: 24px; }
.flow-node span { display: block; margin-top: 8px; color: #5d6c79; font-size: 14px; }
.flow-node-danger { border-color: #cf6a73; background: #fff7f8; }
.flow-node-server { border-color: #668fc0; background: #f5f9ff; }
.flow-node-client { border-color: #5ba584; background: #f4fbf8; }
.flow-arrow { color: #64788a; text-align: center; }
.flow-arrow b { display: block; color: #bd3340; font-size: 38px; line-height: 1; }
.flow-arrow span { display: block; margin-top: 7px; font-size: 12px; font-weight: 800; }
.flow-down { margin: 24px 0; padding: 15px 18px; border: 1px dashed #9eb0c0; border-radius: 10px; color: #405565; background: #f5f8fa; font-size: 14px; font-weight: 700; text-align: center; }
.flow-down span { margin-right: 10px; color: #bd3340; font-size: 22px; }
.flow-command-title { margin-bottom: 12px; color: #283b49; font-size: 15px; font-weight: 900; letter-spacing: .08em; }
.flow-command-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.flow-command { padding: 18px; border: 1px solid #d7e0e7; border-radius: 10px; background: #ffffff; }
.flow-command b { display: inline-grid; place-items: center; min-width: 40px; height: 26px; border-radius: 99px; color: #ffffff; background: #426a89; font-size: 12px; }
.flow-command strong { display: block; margin: 12px 0 5px; color: #263743; font-size: 17px; }
.flow-command span { color: #667684; font-size: 13px; }
.flow-command-alert { border-color: #e3b8bc; background: #fff7f8; }
.flow-command-alert b { background: #bd3340; }
.flow-return { display: flex; align-items: center; justify-content: center; gap: 13px; margin-top: 20px; padding: 16px; border-radius: 10px; color: #345448; background: #edf8f4; font-size: 14px; }
.flow-return b { color: #187a5a; }
.flow-return i { color: #187a5a; font-size: 20px; font-style: normal; }

/* 사건 인물과 시스템 계정의 관계를 보여주는 수사 보드 */
.people-board { height: 650px; }
.person-avatar { display: grid; place-items: center; width: 78px; height: 78px; margin: 0 auto 14px; border: 5px solid #ffffff; border-radius: 50%; color: #f5e9d8; background: #263746; box-shadow: 0 3px 8px rgba(28,17,11,.3); font-size: 31px; font-weight: 900; }
.person-avatar-account { color: #ffffff; background: #7a563d; font: 900 23px/1 ui-monospace, monospace; }
.person-sender { left: 7%; top: 18%; width: 245px; --tilt: -2deg; }
.person-recipient { right: 7%; top: 17%; width: 245px; --tilt: 2deg; }
.person-account { right: 12%; top: 58%; width: 235px; --tilt: -1deg; }
.person-message { left: 39%; top: 25%; width: 245px; --tilt: 1deg; border-top: 6px solid #9f282c; }
.person-note { left: 16%; top: 63%; width: 285px; --tilt: -1.5deg; }
.person-string-1 { left: 25%; top: 36%; width: 230px; transform: rotate(-2deg); }
.person-string-2 { left: 58%; top: 37%; width: 245px; transform: rotate(-3deg); }
.person-string-3 { left: 61%; top: 49%; width: 205px; transform: rotate(48deg); }

@media (max-width: 1100px) {
    .people-board { height: auto; }
}

/* 사건 전체를 한 화면에서 파악하는 종합 결론 */
.conclusion-summary { display: grid; gap: 18px; }
.conclusion-verdict { position: relative; padding: 30px 32px; border: 1px solid #e4b8bd; border-left: 6px solid var(--case-red); border-radius: 8px; background: linear-gradient(120deg, #fff1f3, #ffffff 75%); box-shadow: 0 12px 30px rgba(35, 47, 57, .07); }
.conclusion-verdict > span { color: var(--case-red); font-size: 12px; font-weight: 900; letter-spacing: .14em; }
.conclusion-verdict strong { display: block; max-width: 900px; margin: 11px 0 9px; color: #1b2833; font-size: clamp(22px, 3vw, 30px); line-height: 1.42; word-break: keep-all; }
.conclusion-verdict p { max-width: 900px; margin: 0; color: #5a6875; line-height: 1.75; word-break: keep-all; }
.conclusion-verdict b { display: inline-block; margin-top: 18px; padding: 8px 12px; border-radius: 99px; color: #8f2430; background: #ffffff; font-size: 12px; box-shadow: inset 0 0 0 1px #e8c0c4; }
.conclusion-chain { display: flex; align-items: center; gap: 9px; padding: 16px; border: 1px solid var(--case-line); border-radius: 8px; background: #f7f9fb; overflow-x: auto; }
.conclusion-chain span { flex: 0 0 auto; padding: 10px 12px; border-radius: 6px; color: #384957; background: #ffffff; font-size: 13px; font-weight: 800; box-shadow: 0 3px 10px rgba(28, 43, 55, .05); }
.conclusion-chain span b { margin-right: 6px; color: var(--case-red); }
.conclusion-chain i { flex: 0 0 auto; color: var(--case-red); font-size: 18px; font-style: normal; }
.conclusion-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.conclusion-card { padding: 23px; border: 1px solid var(--case-line); border-top: 4px solid #6a8498; border-radius: 8px; background: #ffffff; box-shadow: 0 8px 24px rgba(28, 43, 55, .055); }
.conclusion-card small { color: #617485; font-size: 11px; font-weight: 900; letter-spacing: .12em; }
.conclusion-card h3 { margin: 9px 0 14px; color: #20303d; font-size: 20px; }
.conclusion-card ul { margin: 0; padding-left: 19px; }
.conclusion-card li { margin: 7px 0; color: #5a6874; font-size: 14px; line-height: 1.55; }
.conclusion-confirmed { border-top-color: #238564; }
.conclusion-excluded { border-top-color: #758595; }
.conclusion-followup { border-top-color: #c58b35; }
.conclusion-final { display: grid; grid-template-columns: 125px minmax(0, 1fr); gap: 20px; padding: 23px 25px; border: 1px solid #d9e0e6; border-radius: 8px; background: #202d37; }
.conclusion-final span { padding-top: 3px; color: #e9b866; font: 900 12px/1.4 ui-monospace, monospace; letter-spacing: .13em; }
.conclusion-final p { margin: 0; color: #e8edf1; line-height: 1.75; word-break: keep-all; }
.conclusion-final strong { color: #ffffff; }

@media (max-width: 860px) {
    .conclusion-grid { grid-template-columns: 1fr; }
    .conclusion-final { grid-template-columns: 1fr; gap: 7px; }
}

/* 제공된 시나리오 원문을 국어 지문처럼 읽을 수 있는 제시문 형태로 보여줍니다. */
.scenario-original { margin: 0 0 28px; border: 1px solid #d6d9dc; border-top: 6px solid #263746; border-radius: 5px; background: #fffdf8; box-shadow: 0 16px 38px rgba(28, 40, 50, .09); overflow: hidden; }
.scenario-original-head { display: grid; grid-template-columns: 62px minmax(0, 1fr); gap: 18px; align-items: center; padding: 23px 28px; border-bottom: 1px solid #dedbd2; background: linear-gradient(90deg, #f5f1e7, #fffdf8); }
.scenario-original-head > span { display: grid; place-items: center; width: 54px; height: 54px; border: 1px solid #263746; border-radius: 50%; color: #263746; font-size: 12px; font-weight: 900; letter-spacing: .08em; }
.scenario-original-head small { display: block; margin-bottom: 5px; color: #a1272e; font: 900 10px/1.3 ui-monospace, monospace; letter-spacing: .16em; }
.scenario-original-head h3 { margin: 0; color: #172633; font-size: 27px; letter-spacing: -.03em; }
.scenario-passage { position: relative; padding: 35px 46px 38px; counter-reset: paragraph; }
.scenario-passage::before { content: '※ 다음 글을 읽고 디지털 증거와 사건의 관계를 분석하시오.'; display: block; margin-bottom: 25px; padding-bottom: 17px; border-bottom: 1px solid #d9d5ca; color: #4f5559; font-size: 13px; font-weight: 800; }
.scenario-passage p { position: relative; margin: 0 0 20px; color: #282d31; font-family: Batang, '바탕', 'Noto Serif KR', Georgia, serif; font-size: 17px; line-height: 2.05; letter-spacing: .01em; text-align: justify; text-indent: 1em; word-break: keep-all; }
.scenario-passage p:last-child { margin-bottom: 0; }
.scenario-passage p::after { counter-increment: paragraph; content: counter(paragraph, decimal-leading-zero); position: absolute; right: -29px; top: 7px; color: #a9a49b; font: 700 9px/1 ui-monospace, monospace; }
.scenario-original-foot { display: grid; grid-template-columns: auto minmax(0, 1fr) auto minmax(0, .65fr); gap: 9px 14px; align-items: center; padding: 15px 28px; border-top: 1px solid #dedbd2; background: #f4f1ea; }
.scenario-original-foot span { color: #8c4a4f; font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.scenario-original-foot b { color: #46515a; font-size: 12px; }
.analysis-divider { display: flex; align-items: center; gap: 14px; margin: 31px 0 24px; color: #8f2730; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.analysis-divider::before,
.analysis-divider::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, #cf9da1); }
.analysis-divider::after { background: linear-gradient(90deg, #cf9da1, transparent); }

/* 사건 시나리오를 의뢰 내용과 증거 범위로 나누어 보여줍니다. */
.scenario-sheet { margin: 20px 0 28px; padding: 25px; border: 1px solid #d8e0e7; border-left: 5px solid #a12c33; border-radius: 8px; background: #ffffff; box-shadow: 0 10px 28px rgba(26, 42, 54, .06); }
.scenario-heading { display: flex; align-items: baseline; gap: 15px; margin-bottom: 17px; }
.scenario-heading small { color: #a12c33; font-size: 11px; font-weight: 900; letter-spacing: .13em; }
.scenario-heading h3 { margin: 0; color: #20303d; font-size: 22px; }
.scenario-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.scenario-grid article { padding: 17px 18px; border: 1px solid #e1e6ea; border-radius: 7px; background: #f8fafb; }
.scenario-grid b { color: #8f2730; font-size: 12px; }
.scenario-grid p { margin: 8px 0 0; color: #5b6a76; font-size: 14px; line-height: 1.65; word-break: keep-all; }

/* 인감과 출장 자료를 원본 화면과 함께 비교합니다. */
.verification-gallery { display: grid; grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); gap: 14px; margin: 18px 0; }
.verification-gallery .evidence-figure { margin: 0; }
.verification-gallery .evidence-figure img { width: 100%; height: 320px; object-fit: contain; background: #f2f4f6; }

/* 홍길동을 중심으로 확장한 전체 인물 관계망 */
.people-board-expanded { height: 1180px; }
.network-person { width: 270px; padding: 15px; }
.network-person .person-avatar { width: 62px; height: 62px; margin-bottom: 10px; font-size: 25px; }
.network-person h3 { margin-bottom: 8px; }
.network-person p { font-size: 12px; line-height: 1.5; }
.network-person .suspicion-note { margin-top: 9px; padding-top: 8px; border-top: 1px dashed #b9aa94; color: #5b4537; }
.network-person .suspicion-note b { color: #a12c33; }
.relation-badge { display: inline-block; margin-bottom: 9px; padding: 5px 8px; border-radius: 99px; color: #315b4b; background: #e8f2ec; font-size: 10px; font-weight: 900; }
.relation-badge-alert { color: #8d242c; background: #f8e3e4; }
.person-avatar-center { color: #ffffff; background: #a1272e; }
.person-avatar-alert { color: #ffffff; background: #8b3035; }
.network-leader { left: 4%; top: 7%; --tilt: -2deg; }
.network-colleague { right: 4%; top: 7%; --tilt: 2deg; }
.network-center { left: 50%; top: 35%; z-index: 5; width: 290px; border-top: 7px solid #9f282c; --tilt: -.5deg; transform: translateX(-50%) rotate(var(--tilt)); }
.network-rival { left: 4%; top: 35%; --tilt: 1deg; border-top: 7px solid #9f282c; }
.network-creditor { right: 4%; top: 35%; --tilt: -1deg; }
.network-external { left: 7%; bottom: 5%; --tilt: 1.5deg; }
.network-account { right: 7%; bottom: 5%; --tilt: -1.5deg; }
.network-string-leader { left: 25%; top: 24%; width: 310px; transform: rotate(22deg); }
.network-string-colleague { left: 55%; top: 27%; width: 300px; transform: rotate(-24deg); }
.network-string-rival { left: 25%; top: 48%; width: 285px; transform: rotate(2deg); }
.network-string-creditor { left: 55%; top: 49%; width: 285px; transform: rotate(-2deg); }
.network-string-external { left: 25%; top: 72%; width: 315px; transform: rotate(-24deg); }
.network-string-account { left: 55%; top: 69%; width: 310px; transform: rotate(25deg); }
.people-legend { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 15px; padding: 14px 16px; border: 1px solid var(--case-line); border-radius: 7px; background: #ffffff; }
.people-legend span { display: inline-flex; align-items: center; gap: 6px; color: #60707d; font-size: 12px; }
.people-legend b { color: #2e3d49; }
.legend-dot { width: 9px; height: 9px; border-radius: 50%; }
.legend-dot.direct { background: #bd3340; }
.legend-dot.caution { background: #c58b35; }
.legend-dot.pending { background: #6f8191; }

@media (max-width: 1100px) {
    .people-board-expanded { height: auto; }
    .network-person { width: auto; }
    .network-center { transform: rotate(var(--tilt)); }
}

@media (max-width: 760px) {
    .scenario-grid,
    .verification-gallery { grid-template-columns: 1fr; }
    .scenario-heading { display: block; }
    .scenario-heading h3 { margin-top: 7px; }
    .verification-gallery .evidence-figure img { height: 240px; }
    .scenario-original-head { grid-template-columns: 48px minmax(0, 1fr); padding: 18px; }
    .scenario-original-head > span { width: 44px; height: 44px; }
    .scenario-original-head h3 { font-size: 22px; }
    .scenario-passage { padding: 26px 25px 30px; }
    .scenario-passage p { font-size: 15px; line-height: 1.9; text-align: left; }
    .scenario-passage p::after { display: none; }
    .scenario-original-foot { grid-template-columns: auto 1fr; padding: 14px 18px; }
}

/* 수사관용 상세 소견과 후속 수사 절차를 본문 안에서 구분합니다. */
.detail-panel { margin-top: 26px; padding: 26px; border: 1px solid #d7e0e7; border-radius: 9px; background: linear-gradient(145deg, #f7f9fb, #ffffff 70%); box-shadow: 0 12px 30px rgba(25, 42, 55, .06); }
.detail-panel-head { display: flex; align-items: baseline; gap: 15px; margin-bottom: 18px; padding-bottom: 14px; border-bottom: 1px solid #dce3e8; }
.detail-panel-head small { color: #a1272e; font: 900 11px/1.3 ui-monospace, monospace; letter-spacing: .13em; }
.detail-panel-head h3 { margin: 0; color: #1f303d; font-size: 23px; }
.detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.detail-grid-four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.detail-grid article { padding: 19px; border: 1px solid #dfe5ea; border-top: 4px solid #526f86; border-radius: 7px; background: #ffffff; }
.detail-grid article:nth-child(2n) { border-top-color: #a12c33; }
.detail-grid b { display: block; margin-bottom: 9px; color: #253b4b; font-size: 15px; }
.detail-grid p { margin: 0; color: #5b6975; font-size: 13px; line-height: 1.72; word-break: keep-all; }
.detail-summary { margin: 17px 0 0; padding: 17px 19px; border-left: 4px solid #238564; border-radius: 3px; color: #405461; background: #edf8f4; line-height: 1.75; word-break: keep-all; }
.detail-summary strong { color: #1b674f; }
.investigation-steps { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.investigation-steps li { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 14px; align-items: start; padding: 17px 18px; border: 1px solid #dfe5ea; border-radius: 7px; background: #ffffff; }
.investigation-steps li > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; color: #ffffff; background: #a1272e; font: 900 14px/1 ui-monospace, monospace; box-shadow: 0 5px 12px rgba(161, 39, 46, .22); }
.investigation-steps b { display: block; margin: 1px 0 6px; color: #253746; font-size: 15px; }
.investigation-steps p { margin: 0; color: #5a6874; font-size: 13px; line-height: 1.7; word-break: keep-all; }
.investigation-priority { border-color: #d7c2a1; background: linear-gradient(145deg, #fffaf0, #ffffff 72%); }
.investigation-priority .detail-panel-head small { color: #8f5b19; }
.investigation-priority .investigation-steps li > span { background: #9a651f; box-shadow: 0 5px 12px rgba(154, 101, 31, .22); }

@media (max-width: 900px) {
    .detail-grid,
    .detail-grid-four { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
    .detail-panel { padding: 19px; }
    .detail-panel-head { display: block; }
    .detail-panel-head h3 { margin-top: 7px; font-size: 20px; }
    .investigation-steps li { grid-template-columns: 34px minmax(0, 1fr); padding: 14px; }
    .investigation-steps li > span { width: 32px; height: 32px; }
}

/* 드라마 인물 관계도 형식의 익명 실루엣 관계망 */
.legacy-people-board { display: none !important; }
.drama-cast-map { overflow: hidden; border: 1px solid #cfd9e2; border-radius: 12px; background: #f5f8fb; box-shadow: 0 18px 45px rgba(23, 39, 53, .11); }
.cast-map-head { display: grid; grid-template-columns: minmax(0, .9fr) minmax(340px, 1.1fr); gap: 32px; align-items: end; padding: 30px 34px; color: #ffffff; background: linear-gradient(120deg, #101d2a 0%, #172b3b 58%, #293d4b 100%); }
.cast-map-head small { display: block; margin-bottom: 8px; color: #9eb7c9; font: 800 11px/1.3 ui-monospace, monospace; letter-spacing: .13em; }
.cast-map-head h3 { margin: 0; font-size: clamp(23px, 2.2vw, 34px); line-height: 1.22; }
.cast-map-head p { margin: 0; color: #d5e0e7; font-size: 13px; line-height: 1.75; }
.cast-stage { position: relative; height: 1280px; background-color: #eef3f7; background-image: radial-gradient(circle at 50% 42%, rgba(140, 166, 184, .26), transparent 24%), linear-gradient(rgba(255,255,255,.72) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.72) 1px, transparent 1px), linear-gradient(145deg, #f9fbfc, #e9f0f5); background-size: auto, 34px 34px, 34px 34px, auto; }
.cast-stage::before { position: absolute; inset: 22px; border: 1px solid rgba(93, 120, 139, .18); border-radius: 11px; content: ""; pointer-events: none; }
.cast-card { position: absolute; z-index: 3; width: 245px; overflow: hidden; border: 1px solid rgba(92, 114, 130, .28); border-radius: 8px; background: rgba(255,255,255,.97); box-shadow: 0 14px 30px rgba(28, 49, 64, .18); }
.cast-card::after { position: absolute; inset: 0 0 auto; height: 4px; background: #607c8e; content: ""; }
.cast-card-body { padding: 15px 17px 18px; }
.cast-card small { display: block; margin-bottom: 4px; color: #71828f; font: 800 10px/1.4 ui-monospace, monospace; letter-spacing: .07em; }
.cast-card h3 { margin: 0 0 7px; color: #172633; font-size: 24px; line-height: 1.15; }
.cast-card strong { display: inline-block; margin-bottom: 9px; padding: 4px 8px; border-radius: 3px; color: #31586d; background: #e7f0f5; font-size: 11px; }
.cast-card p { margin: 0; color: #526572; font-size: 12px; line-height: 1.62; }
.cast-card code { color: #8e2933; font-size: 11px; }
.cast-portrait { height: 172px; background-image: url('/assets/reports/episode24/cast-silhouettes-v1.png'); background-repeat: no-repeat; background-size: 300% 200%; }
.portrait-leader { background-position: 0 0; }
.portrait-colleague { background-position: 50% 0; }
.portrait-center { background-position: 100% 0; }
.portrait-rival { background-position: 0 100%; }
.portrait-creditor { background-position: 50% 100%; }
.portrait-external { background-position: 100% 100%; }
.cast-leader { left: 3.5%; top: 42px; }
.cast-colleague { right: 3.5%; top: 42px; }
.cast-center { left: 50%; top: 398px; width: 330px; border-color: rgba(153, 40, 48, .45); transform: translateX(-50%); box-shadow: 0 20px 50px rgba(80, 26, 31, .22); }
.cast-center::after, .cast-rival::after { background: #a72e37; }
.cast-center .cast-portrait { height: 230px; }
.cast-center .cast-card-body { padding: 19px 21px 23px; }
.cast-center h3 { font-size: 31px; }
.cast-center strong, .cast-rival strong { color: #8e2933; background: #f8e7e9; }
.cast-focus-label { position: absolute; z-index: 2; left: 13px; top: 13px; padding: 6px 9px; border-radius: 3px; color: #fff; background: #a72e37; font-size: 10px; font-weight: 900; letter-spacing: .04em; }
.cast-rival { left: 2.5%; top: 470px; }
.cast-creditor { right: 2.5%; top: 470px; }
.cast-creditor::after { background: #b47a2e; }
.cast-creditor strong { color: #7d581e; background: #f7eddc; }
.cast-external { left: 11%; bottom: 38px; }
.cast-external::after, .cast-account::after { background: #486b82; }
.cast-account { right: 11%; bottom: 38px; min-height: 286px; }
.cast-account-icon { display: grid; place-items: center; height: 122px; color: #d9e6ee; background: radial-gradient(circle, #375a70 0 34%, #203646 35% 52%, #122431 53%); font: 900 30px/1 ui-monospace, monospace; letter-spacing: .12em; }
.cast-connector { position: absolute; z-index: 1; height: 3px; border-radius: 99px; background: #60879e; transform-origin: left center; }
.cast-connector::after { position: absolute; right: -2px; top: -4px; width: 9px; height: 9px; border-top: 2px solid currentColor; border-right: 2px solid currentColor; color: inherit; content: ""; transform: rotate(45deg); }
.connector-leader { left: 23%; top: 285px; width: 300px; color: #60879e; transform: rotate(24deg); }
.connector-colleague { left: 55%; top: 405px; width: 285px; color: #60879e; transform: rotate(-25deg); }
.connector-rival { left: 24%; top: 640px; width: 275px; color: #ad3340; background: #ad3340; transform: rotate(2deg); }
.connector-creditor { left: 57%; top: 646px; width: 250px; color: #b47a2e; background: #b47a2e; transform: rotate(-3deg); }
.connector-external { left: 28%; top: 1035px; width: 275px; color: #486b82; background: #486b82; transform: rotate(-28deg); }
.connector-account { left: 56%; top: 892px; width: 270px; color: #486b82; background: #486b82; transform: rotate(29deg); }
.cast-relation { position: absolute; z-index: 2; width: 214px; padding: 9px 11px; border: 1px solid #c8d7e1; border-radius: 5px; color: #586d7b; background: rgba(255,255,255,.94); box-shadow: 0 6px 18px rgba(36, 58, 73, .1); font-size: 10px; line-height: 1.45; text-align: center; }
.cast-relation b { display: block; margin-bottom: 3px; color: #294f65; font-size: 11px; }
.relation-leader { left: 27%; top: 222px; }
.relation-colleague { right: 27%; top: 222px; }
.relation-rival { left: 25%; top: 574px; border-color: #e3bdc1; }
.relation-rival b { color: #9c2934; }
.relation-creditor { right: 24%; top: 574px; border-color: #e4d0ad; }
.relation-creditor b { color: #8b6122; }
.relation-external { left: 28%; bottom: 178px; }
.relation-account { right: 27%; bottom: 178px; }
.cast-map-legend { display: flex; flex-wrap: wrap; gap: 12px 24px; padding: 18px 26px; border-top: 1px solid #d4dee5; background: #ffffff; }
.cast-map-legend span { display: inline-flex; align-items: center; gap: 7px; color: #627480; font-size: 11px; }
.cast-map-legend b { color: #263b49; }
.cast-map-legend i { width: 26px; height: 3px; border-radius: 99px; background: #60879e; }
.cast-map-legend .legend-rival { background: #ad3340; }
.cast-map-legend .legend-pressure { background: #b47a2e; }
.cast-map-legend .legend-digital { background: #486b82; }

@media (max-width: 1100px) {
    .cast-map-head { grid-template-columns: 1fr; gap: 14px; }
    .cast-stage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; height: auto; padding: 24px; }
    .cast-card { position: relative; inset: auto; width: auto; transform: none; }
    .cast-center { grid-column: 1 / -1; grid-row: 1; width: min(420px, 100%); justify-self: center; }
    .cast-leader { grid-row: 2; }
    .cast-colleague { grid-row: 2; }
    .cast-rival { grid-row: 3; }
    .cast-creditor { grid-row: 3; }
    .cast-external { grid-row: 4; }
    .cast-account { grid-row: 4; min-height: 0; }
    .cast-connector, .cast-relation { display: none; }
}

@media (max-width: 680px) {
    .cast-map-head { padding: 24px 21px; }
    .cast-stage { grid-template-columns: 1fr; padding: 16px; }
    .cast-center, .cast-leader, .cast-colleague, .cast-rival, .cast-creditor, .cast-external, .cast-account { grid-column: 1; grid-row: auto; width: 100%; }
    .cast-center { grid-row: 1; }
    .cast-map-legend { display: grid; grid-template-columns: 1fr; }
}

/* 관계도 가독성 확대: 실루엣 원본의 정사각형 비율과 충분한 본문 크기를 보존합니다. */
#ep24-people .report-content { margin-left: 0; }
.cast-map-head { padding: 40px 44px; }
.cast-map-head small { font-size: 13px; }
.cast-map-head p { font-size: 16px; line-height: 1.85; }
.cast-card-body { padding: 21px 23px 25px; }
.cast-card small { margin-bottom: 7px; font-size: 12px; }
.cast-card h3 { margin-bottom: 10px; font-size: 30px; }
.cast-card strong { margin-bottom: 13px; padding: 7px 10px; font-size: 13px; line-height: 1.45; }
.cast-card p { font-size: 15px; line-height: 1.78; word-break: keep-all; }
.cast-card code { font-size: 14px; }
.cast-portrait, .cast-center .cast-portrait { width: 100%; height: auto; aspect-ratio: 1 / 1; }
.cast-account-icon { height: auto; aspect-ratio: 1 / 1; font-size: 44px; }
.cast-map-legend { gap: 16px 34px; padding: 24px 32px; }
.cast-map-legend span { font-size: 14px; }

@media (min-width: 1101px) {
    .cast-stage { height: 2070px; }
    .cast-card { width: 330px; }
    .cast-leader { left: 2.5%; top: 54px; }
    .cast-colleague { right: 2.5%; top: 54px; }
    .cast-center { left: 50%; top: 705px; width: 420px; }
    .cast-center .cast-card-body { padding: 27px 29px 31px; }
    .cast-center h3 { font-size: 40px; }
    .cast-center p { font-size: 16px; line-height: 1.82; }
    .cast-rival { left: 1.5%; top: 825px; }
    .cast-creditor { right: 1.5%; top: 825px; }
    .cast-external { left: 8%; bottom: 48px; }
    .cast-account { right: 8%; bottom: 48px; min-height: 0; }
    .cast-focus-label { left: 18px; top: 18px; padding: 9px 12px; font-size: 12px; }
    .cast-relation { width: 285px; padding: 13px 15px; font-size: 13px; line-height: 1.55; }
    .cast-relation b { margin-bottom: 4px; font-size: 14px; }
    .relation-leader { left: 27%; top: 555px; }
    .relation-colleague { right: 27%; top: 555px; }
    .relation-rival { left: 24%; top: 1055px; }
    .relation-creditor { right: 24%; top: 1055px; }
    .relation-external { left: 27%; bottom: 465px; }
    .relation-account { right: 27%; bottom: 465px; }
    .connector-leader { left: 24%; top: 525px; width: 310px; transform: rotate(35deg); }
    .connector-colleague { left: 55%; top: 700px; width: 300px; transform: rotate(-36deg); }
    .connector-rival { left: 25%; top: 1100px; width: 290px; transform: rotate(3deg); }
    .connector-creditor { left: 56%; top: 1110px; width: 280px; transform: rotate(-3deg); }
    .connector-external { left: 29%; top: 1580px; width: 300px; transform: rotate(-30deg); }
    .connector-account { left: 56%; top: 1390px; width: 300px; transform: rotate(31deg); }
}

@media (max-width: 1100px) {
    #ep24-people .report-content { margin-left: 0; }
    .cast-map-head { padding: 31px 28px; }
    .cast-stage { gap: 26px; padding: 28px; }
    .cast-card { width: 100%; }
    .cast-center { width: min(520px, 100%); }
}

@media (max-width: 680px) {
    .cast-map-head { padding: 26px 22px; }
    .cast-map-head p { font-size: 15px; }
    .cast-stage { padding: 18px; }
    .cast-card-body { padding: 20px; }
    .cast-card p { font-size: 15px; }
}

/* 기본 화면은 포스터 미리보기로 표시하고 버튼을 누르면 원본 크기로 확대합니다. */
.drama-cast-map { width: min(680px, 100%); margin: 0 auto; overflow: visible; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.cast-poster-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 22px; margin-bottom: 13px; padding: 14px 16px; border: 1px solid #d4dfe7; border-radius: 8px; background: #ffffff; box-shadow: 0 7px 20px rgba(28,49,64,.08); }
.cast-poster-toolbar div { min-width: 0; }
.cast-poster-toolbar strong { display: block; color: #203441; font-size: 15px; }
.cast-poster-toolbar span { display: block; margin-top: 3px; color: #6d7e8a; font-size: 12px; line-height: 1.45; }
.cast-expand-button { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; padding: 10px 14px; border: 1px solid #8faabd; border-radius: 5px; color: #254f67; background: #eef5f8; font-size: 13px; font-weight: 900; cursor: pointer; }
.cast-expand-button:hover { color: #ffffff; border-color: #315e77; background: #315e77; }
.cast-expand-button > span { margin: 0; color: inherit; font-size: 17px; line-height: 1; }
.cast-poster-viewport { width: 650px; max-width: 100%; overflow: hidden; border: 1px solid #cfd9e2; border-radius: 10px; background: #eef3f7; box-shadow: 0 18px 45px rgba(23,39,53,.16); }
.cast-poster-canvas { width: 1320px; zoom: .48; }
.cast-poster-canvas .cast-map-head { border-radius: 0; }
body.cast-map-open { overflow: hidden; }
.drama-cast-map.is-expanded { position: fixed; z-index: 10000; inset: 0; width: auto; max-width: none; margin: 0; padding: 74px 26px 30px; overflow: auto; background: rgba(7, 13, 19, .97); }
.drama-cast-map.is-expanded .cast-poster-toolbar { position: fixed; z-index: 10002; top: 14px; right: 24px; width: auto; margin: 0; padding: 9px 11px; border-color: rgba(255,255,255,.2); color: #fff; background: #172b3b; box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.drama-cast-map.is-expanded .cast-poster-toolbar div { display: none; }
.drama-cast-map.is-expanded .cast-expand-button { color: #ffffff; border-color: #c7646b; background: #9d2d36; }
.drama-cast-map.is-expanded .cast-poster-viewport { width: 1320px; max-width: none; margin: 0 auto; overflow: visible; border-radius: 10px; }
.drama-cast-map.is-expanded .cast-poster-canvas { width: 1320px; zoom: 1; }

@media (max-width: 1100px) {
    .drama-cast-map { width: min(680px, 100%); }
    .cast-poster-canvas .cast-stage { display: block; height: 2070px; padding: 0; }
    .cast-poster-canvas .cast-card { position: absolute; width: 330px; }
    .cast-poster-canvas .cast-leader { left: 2.5%; top: 54px; }
    .cast-poster-canvas .cast-colleague { right: 2.5%; top: 54px; }
    .cast-poster-canvas .cast-center { left: 50%; top: 705px; width: 420px; transform: translateX(-50%); }
    .cast-poster-canvas .cast-rival { left: 1.5%; top: 825px; }
    .cast-poster-canvas .cast-creditor { right: 1.5%; top: 825px; }
    .cast-poster-canvas .cast-external { left: 8%; bottom: 48px; }
    .cast-poster-canvas .cast-account { right: 8%; bottom: 48px; min-height: 0; }
    .cast-poster-canvas .cast-connector, .cast-poster-canvas .cast-relation { display: block; }
    .cast-poster-canvas .relation-leader { left: 27%; top: 555px; }
    .cast-poster-canvas .relation-colleague { right: 27%; top: 555px; }
    .cast-poster-canvas .relation-rival { left: 24%; top: 1055px; }
    .cast-poster-canvas .relation-creditor { right: 24%; top: 1055px; }
    .cast-poster-canvas .relation-external { left: 27%; bottom: 465px; }
    .cast-poster-canvas .relation-account { right: 27%; bottom: 465px; }
    .cast-poster-canvas .connector-leader { left: 24%; top: 525px; width: 310px; transform: rotate(35deg); }
    .cast-poster-canvas .connector-colleague { left: 55%; top: 700px; width: 300px; transform: rotate(-36deg); }
    .cast-poster-canvas .connector-rival { left: 25%; top: 1100px; width: 290px; transform: rotate(3deg); }
    .cast-poster-canvas .connector-creditor { left: 56%; top: 1110px; width: 280px; transform: rotate(-3deg); }
    .cast-poster-canvas .connector-external { left: 29%; top: 1580px; width: 300px; transform: rotate(-30deg); }
    .cast-poster-canvas .connector-account { left: 56%; top: 1390px; width: 300px; transform: rotate(31deg); }
    .cast-poster-canvas { zoom: .48; }
    .drama-cast-map.is-expanded .cast-poster-viewport { width: calc(100vw - 36px); }
    .drama-cast-map.is-expanded .cast-poster-canvas { width: 1320px; zoom: .72; }
}

@media (max-width: 680px) {
    .cast-poster-toolbar { align-items: flex-start; padding: 12px; }
    .cast-poster-toolbar span { display: none; }
    .cast-poster-viewport { width: 100%; }
    .cast-poster-canvas { zoom: .27; }
    .drama-cast-map.is-expanded { padding: 68px 12px 18px; }
    .drama-cast-map.is-expanded .cast-poster-toolbar { right: 12px; }
    .drama-cast-map.is-expanded .cast-poster-viewport { width: calc(100vw - 24px); }
    .drama-cast-map.is-expanded .cast-poster-canvas { zoom: .48; }
}

/* 확대 화면은 현재 창의 가로 폭에 맞춰 자동 축소하여 양옆 잘림을 방지합니다. */
.drama-cast-map.is-expanded .cast-poster-viewport {
    width: min(1320px, calc(100vw - 52px));
    max-width: none;
    margin: 0 auto;
    overflow: visible;
}
.drama-cast-map.is-expanded .cast-poster-canvas {
    width: 1320px;
    zoom: var(--cast-full-scale, 1) !important;
}

@media (max-width: 680px) {
    .drama-cast-map.is-expanded .cast-poster-viewport { width: calc(100vw - 24px); }
}

/* 관계 설명이 인물 카드 뒤로 들어가지 않도록 행 사이에 전용 공간을 확보합니다. */
.cast-poster-canvas .cast-stage { height: 2350px; }
.cast-poster-canvas .cast-center { top: 820px; }
.cast-poster-canvas .cast-rival,
.cast-poster-canvas .cast-creditor { top: 950px; }
.cast-poster-canvas .cast-external,
.cast-poster-canvas .cast-account { bottom: 48px; }
.cast-poster-canvas .cast-relation { z-index: 5; }
.cast-poster-canvas .relation-leader { left: 27%; top: 690px; }
.cast-poster-canvas .relation-colleague { right: 27%; top: 690px; }
.cast-poster-canvas .relation-rival { left: 2.5%; top: 855px; }
.cast-poster-canvas .relation-creditor { right: 2.5%; top: 855px; }
.cast-poster-canvas .relation-external { left: 8%; bottom: 655px; }
.cast-poster-canvas .relation-account { right: 8%; bottom: 655px; }
.cast-poster-canvas .connector-leader { left: 24%; top: 620px; width: 340px; transform: rotate(32deg); }
.cast-poster-canvas .connector-colleague { left: 55%; top: 815px; width: 325px; transform: rotate(-33deg); }
.cast-poster-canvas .connector-rival { left: 25%; top: 1230px; width: 300px; transform: rotate(3deg); }
.cast-poster-canvas .connector-creditor { left: 56%; top: 1240px; width: 290px; transform: rotate(-3deg); }
.cast-poster-canvas .connector-external { left: 29%; top: 1810px; width: 320px; transform: rotate(-31deg); }
.cast-poster-canvas .connector-account { left: 56%; top: 1585px; width: 320px; transform: rotate(32deg); }

/* 각 인물 카드의 실제 좌표를 기준으로 끊김 없는 직각 연결선을 구성합니다. */
.cast-poster-canvas .cast-card { height: 620px; }
.cast-poster-canvas .cast-center { height: 780px; }
.cast-poster-canvas .cast-connector {
    height: auto;
    border-radius: 0;
    color: #60879e;
    background: none;
    box-shadow: none;
    transform: none;
}
.cast-poster-canvas .cast-connector::before,
.cast-poster-canvas .cast-connector::after {
    position: absolute;
    width: 10px;
    height: 10px;
    border: 3px solid #f4f8fa;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 1px currentColor;
    content: "";
    transform: none;
}
.cast-poster-canvas .connector-leader {
    left: 198px;
    top: 674px;
    width: 462px;
    height: 146px;
    border-left: 3px solid currentColor;
    border-bottom: 3px solid currentColor;
}
.cast-poster-canvas .connector-leader::before { left: -8px; top: -7px; }
.cast-poster-canvas .connector-leader::after { right: -7px; bottom: -8px; }
.cast-poster-canvas .connector-colleague {
    left: 660px;
    top: 674px;
    width: 462px;
    height: 146px;
    border-right: 3px solid currentColor;
    border-bottom: 3px solid currentColor;
}
.cast-poster-canvas .connector-colleague::before { right: -8px; top: -7px; }
.cast-poster-canvas .connector-colleague::after { left: -7px; bottom: -8px; }
.cast-poster-canvas .connector-rival {
    left: 350px;
    top: 1260px;
    width: 100px;
    height: 0;
    color: #ad3340;
    border-top: 3px solid currentColor;
}
.cast-poster-canvas .connector-rival::before { left: -7px; top: -8px; }
.cast-poster-canvas .connector-rival::after { right: -7px; top: -8px; }
.cast-poster-canvas .connector-creditor {
    left: 870px;
    top: 1260px;
    width: 100px;
    height: 0;
    color: #b47a2e;
    border-top: 3px solid currentColor;
}
.cast-poster-canvas .connector-creditor::before { left: -7px; top: -8px; }
.cast-poster-canvas .connector-creditor::after { right: -7px; top: -8px; }
.cast-poster-canvas .connector-external {
    left: 271px;
    top: 1600px;
    width: 289px;
    height: 82px;
    color: #486b82;
    border-left: 3px solid currentColor;
    border-top: 3px solid currentColor;
}
.cast-poster-canvas .connector-external::before { right: -7px; top: -8px; }
.cast-poster-canvas .connector-external::after { left: -8px; bottom: -7px; }
.cast-poster-canvas .connector-account {
    left: 760px;
    top: 1600px;
    width: 289px;
    height: 82px;
    color: #486b82;
    border-right: 3px solid currentColor;
    border-top: 3px solid currentColor;
}
.cast-poster-canvas .connector-account::before { left: -7px; top: -8px; }
.cast-poster-canvas .connector-account::after { right: -8px; bottom: -7px; }

/* 기존 칠판을 보완하는 상세 증거 기록 */
.evidence-reinforcement { margin-top: 38px; padding: 32px; border: 1px solid #d7e0e7; border-radius: 10px; background: linear-gradient(145deg, #f8fafc, #ffffff 72%); box-shadow: 0 14px 34px rgba(27, 47, 61, .08); }
.evidence-reinforcement-head { display: grid; grid-template-columns: minmax(260px, .7fr) minmax(360px, 1.3fr); gap: 32px; align-items: end; margin-bottom: 25px; padding-bottom: 20px; border-bottom: 1px solid #dbe3e9; }
.evidence-reinforcement-head small, .deduction-process-head small { display: block; margin-bottom: 7px; color: #a1272e; font: 900 11px/1.3 ui-monospace, monospace; letter-spacing: .13em; }
.evidence-reinforcement-head h3, .deduction-process-head h3 { margin: 0; color: #192934; font-size: 30px; line-height: 1.2; }
.evidence-reinforcement-head p { margin: 0; color: #61717d; font-size: 14px; line-height: 1.75; word-break: keep-all; }
.evidence-register-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.evidence-register-card { position: relative; overflow: hidden; padding: 22px 22px 18px; border: 1px solid #d8e1e7; border-radius: 7px; background: #ffffff; box-shadow: 0 6px 18px rgba(29, 47, 61, .05); }
.evidence-register-card::before { position: absolute; inset: 0 auto 0 0; width: 4px; background: #62869b; content: ""; }
.evidence-register-card > span { color: #748692; font: 900 10px/1.3 ui-monospace, monospace; letter-spacing: .08em; }
.evidence-register-card h4 { margin: 8px 0 10px; color: #1d2c37; font-size: 19px; line-height: 1.35; }
.evidence-register-card p { margin: 0; color: #536671; font-size: 14px; line-height: 1.75; word-break: keep-all; }
.evidence-register-card footer { margin-top: 15px; padding-top: 12px; border-top: 1px dashed #d8e1e7; color: #71818c; font-size: 12px; line-height: 1.55; }
.evidence-register-card footer b { margin-right: 7px; color: #334b5a; }
.evidence-register-card.is-critical::before { background: #b8323d; }
.evidence-register-card.is-file::before, .evidence-register-card.is-account::before { background: #406f8b; }
.evidence-register-card.is-document::before { background: #7b5b8e; }
.evidence-register-card.is-record::before { background: #527d68; }
.evidence-register-card.is-motive::before { background: #bd812e; }
.evidence-register-card.is-hidden::before { background: #2f7180; }

/* 좌우로 넘기며 확인하는 단계별 추리 과정 */
.deduction-process { margin-top: 38px; overflow: hidden; border: 1px solid #cfdbe3; border-radius: 11px; background: #edf3f6; box-shadow: 0 18px 45px rgba(24, 43, 56, .12); }
.deduction-process-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 34px; padding: 28px 30px; color: #ffffff; background: linear-gradient(115deg, #101e2a, #1e3544 68%, #334d5d); }
.deduction-process-head h3 { color: #ffffff; }
.deduction-process-head p { max-width: 780px; margin: 9px 0 0; color: #cfdae1; font-size: 14px; line-height: 1.7; word-break: keep-all; }
.deduction-controls { flex: 0 0 auto; display: flex; align-items: center; gap: 9px; }
.deduction-controls button { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.28); border-radius: 50%; color: #ffffff; background: rgba(255,255,255,.08); font-size: 20px; cursor: pointer; }
.deduction-controls button:hover:not(:disabled) { color: #172a37; background: #ffffff; }
.deduction-controls button:disabled { opacity: .3; cursor: default; }
.deduction-controls strong { min-width: 62px; color: #d7e2e8; font-size: 13px; text-align: center; }
.deduction-track { display: flex; overflow-x: auto; overscroll-behavior-x: contain; scroll-behavior: smooth; scroll-snap-type: x mandatory; scrollbar-width: none; }
.deduction-track::-webkit-scrollbar { display: none; }
.deduction-slide { flex: 0 0 100%; min-width: 100%; padding: 34px; color: #263845; background-color: #f5f8fa; background-image: linear-gradient(rgba(102, 128, 145, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(102, 128, 145, .07) 1px, transparent 1px); background-size: 32px 32px; scroll-snap-align: start; }
.deduction-slide > header { margin-bottom: 27px; padding-bottom: 19px; border-bottom: 1px solid #d3dee5; }
.deduction-slide > header span { display: inline-block; margin-bottom: 8px; padding: 5px 8px; border-radius: 3px; color: #ffffff; background: #a52e37; font: 900 10px/1.2 ui-monospace, monospace; letter-spacing: .09em; }
.deduction-slide > header h4 { margin: 0; color: #172832; font-size: 27px; line-height: 1.25; }
.deduction-slide > header p { max-width: 900px; margin: 8px 0 0; color: #60727e; font-size: 14px; line-height: 1.75; word-break: keep-all; }
.raw-clue-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px; }
.raw-clue-groups section { padding: 21px; border: 1px solid #d6e0e6; border-top: 4px solid #a52e37; border-radius: 6px; background: rgba(255,255,255,.94); box-shadow: 0 7px 20px rgba(28, 48, 62, .07); }
.raw-clue-groups section:nth-child(2) { border-top-color: #406f8b; }
.raw-clue-groups section:nth-child(3) { border-top-color: #7b5b8e; }
.raw-clue-groups section:nth-child(4) { border-top-color: #b57b2d; }
.raw-clue-groups b { display: block; margin-bottom: 13px; color: #223744; font-size: 17px; }
.raw-clue-groups ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.raw-clue-groups li { padding: 9px 10px; border: 1px solid #dce5ea; border-radius: 4px; color: #566975; background: #f8fafb; font-size: 12px; line-height: 1.45; }
.deduction-chain-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.deduction-chain-grid section { display: grid; justify-items: stretch; padding: 22px; border: 1px solid #d5e0e6; border-radius: 7px; background: rgba(255,255,255,.96); box-shadow: 0 9px 24px rgba(30, 49, 62, .07); text-align: center; }
.deduction-chain-grid section > div { padding: 14px; border-radius: 5px; font-size: 13px; font-weight: 800; line-height: 1.55; word-break: keep-all; }
.deduction-chain-grid section > i { color: #8fa0aa; font-size: 22px; font-style: normal; line-height: 1.5; }
.question-node { color: #8d2a33; border: 1px solid #e0b9bd; background: #fff2f3; }
.evidence-node { color: #345d73; border: 1px solid #bfd3df; background: #edf6fa; }
.result-node { color: #2f624d; border: 1px solid #b9d8c8; background: #edf7f2; }
.deduction-merge { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 12px; align-items: center; padding: 24px; border: 1px solid #d2dde4; border-radius: 8px; background: rgba(255,255,255,.96); box-shadow: 0 9px 24px rgba(30,49,62,.07); }
.deduction-merge.secondary { margin-top: 18px; }
.deduction-merge div { min-height: 105px; padding: 17px; border: 1px solid #ccdbe4; border-radius: 5px; background: #eff6f9; text-align: center; }
.deduction-merge div b, .deduction-merge div span { display: block; }
.deduction-merge div b { margin-bottom: 8px; color: #244b61; font-size: 15px; }
.deduction-merge div span { color: #607480; font-size: 12px; line-height: 1.55; }
.deduction-merge > i { color: #a52e37; font-size: 24px; font-style: normal; font-weight: 900; }
.deduction-merge > strong { grid-column: 1 / -1; padding: 16px; border-left: 4px solid #a52e37; color: #7f2730; background: #fff1f2; font-size: 16px; line-height: 1.55; text-align: center; }
.deduction-timeline { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.deduction-timeline li { display: grid; grid-template-columns: 95px minmax(0, 1fr); gap: 18px; position: relative; padding: 0 0 20px; }
.deduction-timeline li::before { position: absolute; left: 81px; top: 12px; bottom: -2px; width: 2px; background: #abc0cc; content: ""; }
.deduction-timeline li:last-child::before { display: none; }
.deduction-timeline time { position: relative; z-index: 1; align-self: start; padding: 7px 9px; border-radius: 99px; color: #ffffff; background: #355e75; font-size: 11px; font-weight: 900; text-align: center; }
.deduction-timeline div { padding: 14px 16px; border: 1px solid #d4dfe5; border-radius: 5px; background: rgba(255,255,255,.96); }
.deduction-timeline b { color: #263b48; font-size: 14px; }
.deduction-timeline p { margin: 5px 0 0; color: #647680; font-size: 12px; line-height: 1.55; }
.elimination-box { margin-top: 8px; padding: 18px 20px; border: 1px dashed #aebcc5; border-radius: 6px; color: #667680; background: rgba(235,239,242,.92); }
.elimination-box b { color: #394e5b; }
.elimination-box p { margin: 6px 0 0; font-size: 13px; line-height: 1.7; }
.final-chain { display: flex; align-items: stretch; gap: 8px; overflow-x: auto; padding: 4px 2px 22px; }
.final-chain span { display: grid; place-items: center; flex: 1 0 140px; min-height: 82px; padding: 13px; border: 1px solid #c9d8e1; border-radius: 5px; color: #294c5f; background: #ffffff; font-size: 13px; font-weight: 900; line-height: 1.5; text-align: center; }
.final-chain i { align-self: center; color: #a52e37; font-size: 22px; font-style: normal; }
.final-deduction-verdict { padding: 26px 28px; border: 1px solid #d9aeb2; border-left: 6px solid #a52e37; border-radius: 7px; background: linear-gradient(115deg, #fff1f2, #ffffff); box-shadow: 0 10px 28px rgba(92, 31, 37, .09); }
.final-deduction-verdict small { color: #a52e37; font: 900 10px/1.3 ui-monospace, monospace; letter-spacing: .12em; }
.final-deduction-verdict h5 { margin: 10px 0 11px; color: #202f39; font-size: 21px; line-height: 1.55; word-break: keep-all; }
.final-deduction-verdict p { margin: 0; color: #60717c; font-size: 14px; line-height: 1.75; word-break: keep-all; }
.deduction-dots { display: flex; justify-content: center; gap: 7px; padding: 15px; border-top: 1px solid #d0dce3; background: #ffffff; }
.deduction-dots i { width: 8px; height: 8px; border-radius: 50%; background: #becbd3; transition: width .2s ease, background .2s ease; }
.deduction-dots i.is-active { width: 28px; border-radius: 99px; background: #a52e37; }

@media (max-width: 900px) {
    .evidence-reinforcement-head { grid-template-columns: 1fr; gap: 12px; }
    .evidence-register-grid, .raw-clue-groups, .deduction-chain-grid { grid-template-columns: 1fr; }
    .deduction-merge { grid-template-columns: 1fr; }
    .deduction-merge > i { transform: rotate(90deg); text-align: center; }
}

@media (max-width: 680px) {
    .evidence-reinforcement { padding: 22px 18px; }
    .evidence-register-card { padding: 19px 18px 16px; }
    .deduction-process-head { align-items: flex-start; padding: 23px 20px; }
    .deduction-process-head p { font-size: 13px; }
    .deduction-controls { margin-top: 1px; }
    .deduction-controls strong { display: none; }
    .deduction-controls button { width: 38px; height: 38px; }
    .deduction-slide { padding: 24px 18px; }
    .deduction-slide > header h4 { font-size: 22px; }
    .raw-clue-groups ul { grid-template-columns: 1fr; }
    .deduction-timeline li { grid-template-columns: 78px minmax(0, 1fr); gap: 11px; }
    .deduction-timeline li::before { left: 66px; }
}

/* 사건 보고서와 심화 분석 도구를 서로 다른 메뉴 단으로 구분합니다. */
.case-subnav.is-tiered { display: block; padding: 0; overflow: hidden; background: #f7f9fb; }
.case-subnav-primary { display: flex; flex-wrap: wrap; gap: 8px; padding: 10px; }
.case-subnav-tools { display: flex; align-items: center; gap: 9px; padding: 12px 14px; border-top: 1px solid #ccd9e2; background: linear-gradient(90deg, #edf4f8, #f7fafc); }
.case-subnav-tools-label { flex: 0 0 auto; margin-right: 4px; color: #6a7f8d; font-size: 11px; font-weight: 900; letter-spacing: .12em; white-space: nowrap; }
.case-subnav a.case-subnav-feature { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 158px; padding: 10px 17px; text-align: center; }
.case-subnav a.case-subnav-feature svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.case-subnav a.case-subnav-feature.is-deduction { border-color: #d8c7ac; color: #765729; background: #fff8eb; }
.case-subnav a.case-subnav-feature.is-deduction:hover { border-color: #bb9560; color: #553b17; background: #fff1d5; }
.case-subnav a.case-subnav-feature.is-technical { border-color: #b8cfdd; color: #2f647f; background: #edf7fc; }
.case-subnav a.case-subnav-feature.is-technical:hover { border-color: #78a5bb; color: #17465e; background: #dff1f9; }
.case-subnav a.case-subnav-feature.is-active { color: #ffffff; border-color: #8d2b34; background: #9f3039; box-shadow: 0 5px 13px rgba(125, 34, 43, .16); }
#ep24-deduction .deduction-process { margin-top: 0; }

/* 실제 경로와 파일명을 중심으로 구성한 기술 포렌식 작업 기록 */
.technical-analysis-brief { display: grid; gap: 22px; }
.technical-analysis-brief > header { padding: 30px 32px; border: 1px solid #29485b; border-radius: 9px; color: #ffffff; background: linear-gradient(115deg, #0f1c25, #173244 66%, #24485d); box-shadow: 0 14px 34px rgba(16, 38, 52, .2); }
.technical-analysis-brief > header small { display: block; margin-bottom: 8px; color: #86bdd8; font: 900 11px/1.3 ui-monospace, monospace; letter-spacing: .13em; }
.technical-analysis-brief > header h3 { margin: 0; font-size: 31px; line-height: 1.22; }
.technical-analysis-brief > header p { max-width: 980px; margin: 10px 0 0; color: #d0dde5; font-size: 14px; line-height: 1.8; word-break: keep-all; }
.technical-metrics { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 9px; }
.technical-metrics article { padding: 17px 14px; border: 1px solid #d1dde5; border-top: 4px solid #477b98; border-radius: 6px; background: #ffffff; box-shadow: 0 5px 16px rgba(30, 51, 65, .06); }
.technical-metrics b { display: block; color: #183548; font-size: 20px; }
.technical-metrics span { display: block; margin-top: 5px; color: #6c7e89; font-size: 11px; }
.technical-filter { display: grid; grid-template-columns: auto minmax(220px, 1fr) auto; gap: 12px; align-items: center; padding: 14px 16px; border: 1px solid #c8d8e2; border-radius: 7px; background: #eef5f8; }
.technical-filter label { color: #284e63; font-size: 13px; font-weight: 900; }
.technical-filter input { width: 100%; padding: 11px 13px; border: 1px solid #afc5d1; border-radius: 5px; color: #263b48; background: #ffffff; font-size: 13px; outline: none; }
.technical-filter input:focus { border-color: #477b98; box-shadow: 0 0 0 3px rgba(71, 123, 152, .13); }
.technical-filter > span { color: #657985; font-size: 12px; white-space: nowrap; }
.technical-filter > span b { color: #a52e37; }
.technical-ledger { overflow: hidden; border: 1px solid #d2dde4; border-radius: 8px; background: #ffffff; box-shadow: 0 8px 23px rgba(29, 49, 62, .06); }
.technical-ledger > header { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 15px; align-items: center; padding: 18px 21px; border-bottom: 1px solid #d4dfe6; background: linear-gradient(90deg, #edf4f8, #f9fbfc); }
.technical-ledger > header > span { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 5px; color: #ffffff; background: #315f78; font: 900 13px/1 ui-monospace, monospace; }
.technical-ledger > header h4 { margin: 0; color: #1d3442; font-size: 21px; }
.technical-ledger > header p { margin: 5px 0 0; color: #687b87; font-size: 12px; line-height: 1.55; }
.technical-origin-grid, .technical-two-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding: 20px; }
.technical-origin-grid dl { margin: 0; padding: 17px; border: 1px solid #dbe4e9; border-radius: 6px; background: #f8fafb; }
.technical-origin-grid dt { margin-top: 11px; color: #617682; font-size: 11px; font-weight: 900; }
.technical-origin-grid dt:first-child { margin-top: 0; }
.technical-origin-grid dd { margin: 4px 0 0; color: #314b5a; font-size: 12px; line-height: 1.55; word-break: break-all; }
.technical-origin-grid code, .technical-path-list code, .technical-key-list code, .decryption-route code, .technical-hash-table code { color: #244f68; font: 12px/1.55 ui-monospace, SFMono-Regular, Consolas, monospace; word-break: break-all; }
.technical-note { margin: 0 20px 20px; padding: 14px 16px; border-left: 4px solid #b47a2e; color: #627480; background: #fff8eb; font-size: 12px; line-height: 1.7; }
.technical-two-column > div > h5, .technical-two-column > h5 { margin: 0 0 10px; color: #334d5c; font-size: 14px; }
.technical-path-list, .technical-key-list { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.technical-path-list-wide { padding: 20px; }
.technical-path-list li, .technical-key-list li { display: grid; gap: 3px; padding: 11px 12px; border: 1px solid #dce5ea; border-radius: 4px; background: #f9fbfc; }
.technical-path-list li::before { color: #5e8ba4; content: '▸'; float: left; }
.technical-path-list li code { display: block; margin-top: -18px; padding-left: 17px; }
.technical-path-list li span, .technical-key-list li span { color: #71828c; font-size: 11px; line-height: 1.5; }
.technical-key-list li { border-left: 3px solid #718fa0; }
.technical-key-list code { color: #4c6170; }
.decryption-route { display: flex; align-items: stretch; gap: 8px; overflow-x: auto; padding: 22px 20px 14px; }
.decryption-route article { display: grid; align-content: center; flex: 1 0 190px; min-height: 125px; padding: 15px; border: 1px solid #bfd2de; border-radius: 6px; background: #eff6fa; text-align: center; }
.decryption-route article small, .decryption-route article b, .decryption-route article span { display: block; }
.decryption-route article small { color: #778b97; font-size: 10px; font-weight: 900; }
.decryption-route article b { margin: 7px 0; }
.decryption-route article span { color: #607783; font-size: 11px; line-height: 1.55; }
.decryption-route > i { align-self: center; color: #a52e37; font-size: 21px; font-style: normal; font-weight: 900; }
.technical-hash-table { width: calc(100% - 40px); margin: 0 20px 20px; border-collapse: collapse; table-layout: fixed; }
.technical-hash-table th, .technical-hash-table td { padding: 11px 12px; border: 1px solid #d9e2e7; color: #526875; font-size: 11px; text-align: left; vertical-align: top; }
.technical-hash-table th { color: #27495c; background: #edf4f7; }
.technical-hash-table th:first-child, .technical-hash-table td:first-child { width: 220px; }
.technical-hash-table td:last-child code { word-break: break-all; }

/* 안드로이드 포렌식 분석 전용 화면 */
.android-group-card small { color: #168262; }
.case-group-card.android-group-card:hover { border-color: #55a98d; }
.case-group-card.android-group-card.is-active { border-color: #45a584; background: linear-gradient(145deg, #eaf9f3, #ffffff); box-shadow: inset 3px 0 0 #168262, 0 8px 28px rgba(24, 107, 80, .09); }
.android-case-panel .report-mast .report-code { color: #168262; }
.android-case-panel .case-subnav a.is-active { color: #12654e; border-color: #8bcbb5; background: #e9f7f2; }
.android-case-panel code { color: #17644f; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; word-break: break-all; }
.android-finding-banner { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 28px; align-items: center; padding: 30px 32px; border: 1px solid #2d6c59; border-left: 5px solid #52d0a4; border-radius: 9px; color: #ffffff; background: linear-gradient(115deg, #0f2520, #174538 66%, #245f4e); box-shadow: 0 15px 35px rgba(17, 62, 49, .18); }
.android-finding-banner small { color: #7ae0bd; font: 900 11px/1.3 ui-monospace, monospace; letter-spacing: .15em; }
.android-finding-banner strong { display: block; margin-top: 9px; font-size: 23px; line-height: 1.48; word-break: keep-all; }
.android-finding-banner p { margin: 9px 0 0; color: #cde3dc; font-size: 14px; line-height: 1.8; word-break: keep-all; }
.android-finding-banner code { color: #a4f0d4; }
.android-risk-score { display: grid; place-items: center; width: 104px; height: 104px; border: 1px solid rgba(122, 224, 189, .55); border-radius: 50%; color: #baf3df; background: rgba(0, 0, 0, .16); font-size: 12px; font-weight: 900; text-align: center; }
.android-risk-score b { display: block; font-size: 18px; }
.android-metrics .metric-card { border-top: 4px solid #3c9b7d; }
.android-metrics .metric-card b { color: #164f3e; }
.android-evidence-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 26px 0; }
.android-evidence-frame { margin: 0; overflow: hidden; border: 1px solid #ccd9d5; border-radius: 8px; background: #ffffff; box-shadow: 0 10px 26px rgba(29, 56, 48, .08); }
.android-evidence-frame button { display: block; width: 100%; padding: 0; border: 0; background: #10151a; cursor: zoom-in; }
.android-evidence-frame img { display: block; width: 100%; height: auto; max-height: 520px; object-fit: contain; background: #10151a; }
.android-evidence-frame figcaption { display: grid; gap: 5px; padding: 15px 17px; color: #5d726b; font-size: 12px; line-height: 1.65; }
.android-evidence-frame figcaption b { color: #204b3e; font-size: 14px; }
.android-evidence-frame.is-wide img { max-height: none; }
.android-analysis-route { padding: 25px; border: 1px solid #cddbd6; border-radius: 8px; background: #f7faf9; }
.android-analysis-route h3 { margin: 0 0 17px; color: #203f35; font-size: 20px; }
.android-analysis-route ol { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; counter-reset: route; }
.android-analysis-route li { position: relative; min-height: 116px; padding: 17px; border: 1px solid #d5e1dd; border-radius: 6px; background: #ffffff; counter-increment: route; }
.android-analysis-route li::before { content: counter(route, decimal-leading-zero); display: block; margin-bottom: 11px; color: #1f8c6b; font: 900 11px/1 ui-monospace, monospace; }
.android-analysis-route b, .android-analysis-route span { display: block; }
.android-analysis-route b { color: #1f3b32; font-size: 15px; }
.android-analysis-route span { margin-top: 7px; color: #6a7d76; font-size: 12px; line-height: 1.55; }
.android-identity-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.android-identity-grid article { padding: 18px; border: 1px solid #d8e3df; border-radius: 6px; background: #ffffff; }
.android-identity-grid span { display: block; color: #73877f; font-size: 10px; font-weight: 900; letter-spacing: .1em; }
.android-identity-grid b { display: block; margin-top: 7px; color: #1b493a; font-size: 15px; line-height: 1.45; word-break: break-all; }
.android-identity-grid p { margin: 8px 0 0; color: #6a7c75; font-size: 12px; line-height: 1.6; }
.android-link-proof { display: flex; align-items: stretch; gap: 9px; margin: 23px 0; }
.android-link-proof div { display: grid; align-content: center; flex: 1; min-height: 108px; padding: 17px; border: 1px solid #c9ded6; border-radius: 6px; background: #eef8f4; text-align: center; }
.android-link-proof span, .android-link-proof strong { display: block; }
.android-link-proof span { color: #71837c; font-size: 10px; font-weight: 900; }
.android-link-proof strong { margin-top: 7px; color: #235343; font-size: 14px; word-break: break-all; }
.android-link-proof > i { align-self: center; color: #2b9070; font-size: 22px; font-style: normal; font-weight: 900; }
.android-note { padding: 18px 20px; border-left: 4px solid #309473; color: #61746d; background: #f0f8f5; font-size: 13px; line-height: 1.75; }
.android-note b { color: #205b48; }
.android-note p { margin: 4px 0 0; }
.android-terminal-proof { overflow: hidden; border: 1px solid #223b33; border-radius: 8px; color: #b8f2d8; background: #07110e; box-shadow: 0 13px 30px rgba(11, 38, 29, .18); }
.android-terminal-proof header { display: flex; justify-content: space-between; gap: 15px; padding: 14px 18px; border-bottom: 1px solid #28463c; background: #10231d; }
.android-terminal-proof header span { color: #5bc99f; font: 900 10px/1.3 ui-monospace, monospace; letter-spacing: .13em; }
.android-terminal-proof header b { color: #d0f5e7; font-size: 12px; }
.android-terminal-proof pre { margin: 0; padding: 22px; overflow-x: auto; color: #73e8b8; font: 12px/1.8 ui-monospace, SFMono-Regular, Consolas, monospace; }
.android-terminal-proof footer { padding: 12px 18px; border-top: 1px solid #203a31; color: #8eb4a6; font-size: 11px; }
.android-network-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 22px 0; }
.android-network-grid article { padding: 18px; border: 1px solid #d4e0dc; border-top: 4px solid #3d9a7d; border-radius: 6px; background: #ffffff; }
.android-network-grid span { color: #72857e; font-size: 10px; font-weight: 900; }
.android-network-grid b { display: block; margin: 8px 0; color: #204d3f; font-size: 17px; word-break: break-all; }
.android-network-grid p { margin: 0; color: #667a73; font-size: 12px; line-height: 1.65; }
.android-permission-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.android-permission-grid article { position: relative; padding: 21px; border: 1px solid #d5e0dc; border-radius: 7px; background: #ffffff; box-shadow: 0 7px 18px rgba(28, 56, 47, .05); }
.android-permission-icon { display: grid; place-items: center; width: 43px; height: 43px; border-radius: 50%; color: #ffffff; background: #287b60; font: 900 10px/1 ui-monospace, monospace; }
.android-permission-grid h3 { margin: 13px 0 8px; color: #203d34; font-size: 18px; }
.android-permission-grid p { min-height: 43px; margin: 0; color: #6b7d77; font-size: 11px; line-height: 1.6; }
.android-permission-grid b { display: block; margin-top: 11px; color: #a04343; font-size: 12px; }
.android-persistence-chain { margin-top: 24px; padding: 25px; border: 1px solid #cddbd6; border-radius: 8px; background: #f4f9f7; }
.android-persistence-chain h3 { margin: 0 0 17px; color: #25473c; }
.android-persistence-chain > div { display: flex; align-items: stretch; gap: 10px; }
.android-persistence-chain article { flex: 1; padding: 17px; border: 1px solid #d5e1dd; border-radius: 6px; background: #ffffff; }
.android-persistence-chain small { color: #29916f; font-weight: 900; }
.android-persistence-chain b { display: block; margin: 7px 0; color: #24483c; }
.android-persistence-chain p { margin: 0; color: #687b74; font-size: 12px; line-height: 1.6; }
.android-persistence-chain > div > span { align-self: center; color: #339374; font-size: 22px; font-weight: 900; }
.android-command-ledger { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; margin: 24px 0; }
.android-command-ledger article { padding: 19px; border: 1px solid #d4dfdb; border-left: 4px solid #398f72; border-radius: 5px; background: #ffffff; }
.android-command-ledger span { display: block; color: #2a7c61; font-size: 11px; font-weight: 900; }
.android-command-ledger code { display: block; margin: 9px 0; padding: 10px 12px; color: #8cf0c8; background: #10251e; font-size: 11px; line-height: 1.6; }
.android-command-ledger p { margin: 0; color: #6a7b75; font-size: 12px; line-height: 1.65; }
.android-contact-result { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 22px 0; }
.android-contact-result div { padding: 19px; border: 1px solid #cee0d9; border-radius: 6px; background: #eff8f5; text-align: center; }
.android-contact-result small, .android-contact-result b, .android-contact-result span { display: block; }
.android-contact-result small { color: #74857f; font-size: 10px; font-weight: 900; }
.android-contact-result b { margin: 8px 0; color: #1f5b47; font-size: 20px; }
.android-contact-result span { color: #677a73; font-size: 11px; }
.android-verdict { position: relative; overflow: hidden; padding: 34px; border-radius: 9px; color: #ffffff; background: linear-gradient(120deg, #10251f, #205c49 72%, #2c7a61); box-shadow: 0 15px 36px rgba(20, 69, 54, .18); }
.android-verdict::after { content: ''; position: absolute; right: -45px; top: -65px; width: 220px; height: 220px; border: 1px solid rgba(255,255,255,.13); border-radius: 50%; box-shadow: 0 0 0 28px rgba(255,255,255,.035), 0 0 0 60px rgba(255,255,255,.02); }
.android-verdict small { color: #81ddbc; font: 900 11px/1.3 ui-monospace, monospace; letter-spacing: .15em; }
.android-verdict h3 { position: relative; z-index: 1; margin: 10px 0; font-size: 28px; line-height: 1.35; }
.android-verdict p { position: relative; z-index: 1; max-width: 900px; margin: 0; color: #d0e8df; line-height: 1.8; }
.android-verdict code { color: #a5f0d4; }
.android-verdict > span { display: inline-block; position: relative; z-index: 1; margin-top: 18px; padding: 8px 11px; border: 1px solid #dc9595; border-radius: 4px; color: #ffe2e2; background: rgba(124, 34, 34, .35); font-size: 12px; font-weight: 900; }
.android-conclusion-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; margin: 23px 0; }
.android-conclusion-grid article { padding: 20px; border: 1px solid #d3dfdb; border-radius: 6px; background: #ffffff; }
.android-conclusion-grid span { color: #27795f; font-size: 12px; font-weight: 900; }
.android-conclusion-grid ul { margin: 13px 0 0; padding-left: 18px; color: #667a72; font-size: 13px; line-height: 1.8; }

@media (max-width: 1050px) {
    .technical-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .android-analysis-route ol, .android-network-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
    .case-subnav { flex-wrap: nowrap; overflow-x: auto; }
    .case-subnav.is-tiered { overflow: hidden; }
    .case-subnav-primary, .case-subnav-tools { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
    .case-subnav-tools-label { position: sticky; left: 0; z-index: 1; padding: 8px 10px 8px 2px; background: #edf4f8; }
    .technical-origin-grid, .technical-two-column { grid-template-columns: 1fr; }
    .android-evidence-grid, .android-identity-grid, .android-permission-grid, .android-command-ledger, .android-contact-result, .android-conclusion-grid { grid-template-columns: 1fr; }
    .android-finding-banner { grid-template-columns: 1fr; }
    .android-risk-score { width: auto; height: auto; padding: 12px; border-radius: 5px; }
    .android-risk-score b { display: inline; margin-right: 6px; }
    .android-link-proof, .android-persistence-chain > div { display: grid; grid-template-columns: 1fr; }
    .android-link-proof > i, .android-persistence-chain > div > span { justify-self: center; transform: rotate(90deg); }
}

@media (max-width: 620px) {
    .technical-analysis-brief > header { padding: 25px 21px; }
    .technical-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .technical-filter { grid-template-columns: 1fr; }
    .technical-filter > span { white-space: normal; }
    .technical-origin-grid, .technical-two-column, .technical-path-list-wide { padding: 15px; }
    .technical-hash-table { display: block; width: auto; overflow-x: auto; }
    .android-analysis-route ol, .android-network-grid { grid-template-columns: 1fr; }
    .android-finding-banner, .android-verdict { padding: 24px 20px; }
    .android-terminal-proof header { display: grid; }
}
