:root{
/* design/ 중성 팔레트로 remap (변수명 유지, 값만 교체). 차콜 + 소프트블루 */
--purple-900:#19191B;--purple-800:#1F1F22;--purple-700:#333338;
--purple-500:#5C5C66;--purple-mid:#6E6E78;--purple-300:#AECBE8;
--gray-50:#FAFAF9;--gray-100:#F5F5F4;--gray-150:#EFEDEB;--gray-200:#E7E5E4;
--gray-300:#D6D3D1;--gray-400:#A8A29E;--gray-500:#78716C;--gray-700:#44403C;--gray-900:#1C1917;
--black:#000;--white:#fff;
--font-sans:'Pretendard','Pretendard Variable',-apple-system,sans-serif;
--font-mono:'JetBrains Mono','D2Coding',Consolas,monospace;
}
[data-theme="dark"]{
--bg:#19191B;--bg-alt:#1F1F22;--bg-viz:#131315;--bg-input:#131315;
--surface:#1F1F22;--text:#F2F2F4;--text-muted:#C5C5CC;
--text-muted-strong:#DCDCE0;--accent-purple:#AECBE8;
--border:#333338;--border-strong:#6E6E78;--accent:#AECBE8;
--node-label:#F2F2F4;--cluster-label:#AECBE8;--l1-label:#F2F2F4;
--card-1:#1F1F22;--card-2:#252528;--card-3:#2B2B2F;--card-4:#333338;
}
[data-theme="light"]{
/* 2026-07-02 kara_design 정렬 — 커스텀 소프트블루(#50749C) → kara 네이비(#2E5A8C), 회색은 kara stone 계열 */
--bg:#FFFFFF;--bg-alt:#FAFAF9;--bg-viz:#F5F5F4;--bg-input:#F5F5F4;
--surface:#FFFFFF;--text:#1C1917;--text-muted:#57534E;
--text-muted-strong:#44403C;--accent-purple:#2E5A8C;
--border:#E7E5E4;--border-strong:#78716C;--accent:#2E5A8C;
--node-label:#1C1917;--cluster-label:#2E5A8C;--l1-label:#1C1917;
--card-1:#FAFAF9;--card-2:#F5F5F4;--card-3:#EFEDEB;--card-4:#E7E5E4;
}
*{box-sizing:border-box;margin:0;padding:0}
html{font-family:var(--font-sans);font-size:15px;line-height:1.5;letter-spacing:-0.01em;color:var(--text);background:var(--bg);transition:.3s}
body{min-height:100vh;background:var(--bg-alt)}
[data-theme="dark"] body{background-image:radial-gradient(circle,rgba(146,145,153,.05) 1px,transparent 1px);background-size:16px 16px}

.page{max-width:100%;margin:0 auto;padding:0}

/* 플랫폼 공유 프레임 — KARA K박스 바
   2026-07-02: 기술매칭·공모사업 kbar와 동일 스펙으로 통일(1480px·K 33px·l1 600·l2 .1em/2px·transition) */
.kbar{position:sticky;top:0;z-index:1000;background:#0F2A4D;border-top:3px solid #8FA8C8;border-bottom:1px solid #14365E;font-family:"Pretendard","Pretendard Variable","Malgun Gothic",sans-serif}
.kbar-logo{height:32px;width:auto;display:block}
.kbar a{color:inherit;text-decoration:none} /* techmap엔 전역 a 리셋이 없음 — 방문 링크 보라·밑줄 차단 */
.kbar__in{max-width:1480px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px;padding:0 24px}
.kbar-brand{display:flex;align-items:center;gap:12px}
.kbar-k{width:33px;height:33px;border:1.5px solid #fff;display:grid;place-items:center;font-family:"JetBrains Mono","IBM Plex Mono","Consolas",monospace;font-weight:700;font-size:15px;color:#fff}
.kbar-l1{font-family:"JetBrains Mono","IBM Plex Mono","Consolas",monospace;font-weight:600;font-size:14px;letter-spacing:.03em;color:#fff}
.kbar-l2{font-family:"JetBrains Mono","IBM Plex Mono","Consolas",monospace;font-weight:400;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#8fa8c8;margin-top:2px}
.kbar-nav{display:flex;gap:2px}
.kbar-nav a{font-size:13.5px;color:#8fa8c8;padding:8px 14px;white-space:nowrap;transition:.15s}
.kbar-nav a:hover{color:#fff}
.kbar-nav a.on{color:#fff;font-weight:700;box-shadow:inset 0 -2px 0 #fff}
@media(max-width:540px){.kbar-l1,.kbar-l2{display:none}.kbar__in{padding:0 12px}}
/* Very compact sticky (~20%) */
.sticky-top{position:sticky;top:60px;z-index:30;background:var(--bg);padding:8px 24px 8px;border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(0,0,0,.04)}
.body-mid{background:var(--bg-alt);padding:12px 24px 4px;border-bottom:1px solid var(--border)}
.footer-bot{background:var(--bg);padding:16px 24px 24px}
@media (max-width:1024px){.sticky-top,.body-mid,.footer-bot{padding-left:14px;padding-right:14px}}

/* Topbar: brand + title + actions
 * Track CCCCCC: 폰트 키움 + Pretendard 통일 + 미니멀 (사용자 요청: 화려하지 않게) */
.topbar{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;margin-bottom:8px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand__icon{width:32px;height:32px;border:1.5px solid var(--border-strong);display:grid;place-items:center;font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-weight:800;font-size:15px;color:var(--accent);flex:0 0 auto;letter-spacing:.02em}
.brand__mark{min-width:0}
.brand__line1{font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-weight:700;font-size:13px;letter-spacing:.04em;white-space:nowrap;color:var(--text)}
.brand__line2{font-family:var(--font-mono);font-weight:500;font-size:10px;letter-spacing:.10em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;margin-top:2px}

.title-block{display:flex;align-items:baseline;gap:14px;min-width:0}
.title-block h1{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:22px;font-weight:800;letter-spacing:-0.02em;line-height:1.2;white-space:nowrap;color:var(--text)}
.title-block .sub{font-size:12px;color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.title-block .form-id{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--text-muted);text-transform:uppercase;margin-left:8px;white-space:nowrap;padding:2px 7px;border:1px solid var(--border)}

/* Track CCCCCC: head-actions 미니멀 디자인 — 그룹 구분선 + 폰트 통일 + 적정 spacing */
.head-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.head-actions .divider{width:1px;height:22px;background:var(--border);margin:0 2px}
.zoom-control{display:flex;align-items:center;border:1px solid var(--border);height:30px}
.zoom-control button{background:transparent;border:none;padding:0 11px;cursor:pointer;color:var(--text);font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:13px;font-weight:600;line-height:1;border-radius:0;height:100%;min-width:30px}
.zoom-control button:hover{background:var(--surface);color:var(--accent-purple)}
.zoom-control button:disabled{opacity:.3;cursor:not-allowed}
.zoom-control .zoom-val{font-family:var(--font-mono);font-size:11px;padding:0 9px;min-width:50px;text-align:center;border-left:1px solid var(--border);border-right:1px solid var(--border);color:var(--text);font-weight:700;line-height:30px}
.meta-label{font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.theme-toggle{background:transparent;border:1px solid var(--border);padding:0 12px;cursor:pointer;border-radius:0;height:30px;display:inline-flex;align-items:center;transition:border-color .15s ease, color .15s ease}
.theme-toggle:hover{border-color:var(--accent-purple);color:var(--accent-purple)}
.theme-toggle .meta-label{color:var(--text);font-size:11px;letter-spacing:.06em}
.theme-toggle:hover .meta-label{color:var(--accent-purple)}

/* Controls 2x2 grid */
.controls-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"search year" "type legend";gap:6px}
@media (max-width:980px){.controls-grid{grid-template-columns:1fr;grid-template-areas:"search" "year" "type" "legend"}}
.card--search{grid-area:search}
.card--type{grid-area:type}
.card--year{grid-area:year}
.card--legend{grid-area:legend}

/* Track AAAAAA (rev): 미니멀 — 라운드·컬러 액센트 제거, 폰트 가독성만 유지 */
.card{border:1px solid var(--border);padding:8px 12px;display:flex;flex-direction:column;gap:5px;min-width:0}
.card--search{background:var(--card-1)}
.card--year{background:var(--card-2)}
.card--type{background:var(--card-3)}
.card--legend{background:var(--card-4)}

.card>header{display:flex;justify-content:space-between;align-items:baseline;font-family:'Pretendard','Pretendard Variable',var(--font-sans);font-size:12px;font-weight:700;color:var(--text);padding-bottom:4px;border-bottom:1px dashed var(--border);letter-spacing:.01em}
.card>header .desc{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted-strong);font-weight:400}
.card-body{display:flex;flex-wrap:wrap;gap:4px;align-items:center}

/* Search input + button */
.search-wrap{display:flex;gap:4px}
/* 2026-07-03 검색 수리: 회색 배경이 안 보인다는 지적 → 흰색 고정 */
.search{flex:1;border:1px solid var(--border);background:#FFFFFF;color:var(--text);padding:6px 10px;font-family:var(--font-mono);font-size:12px;border-radius:0}
.search:focus{outline:none;border-color:var(--border-strong)}
.search::placeholder{color:var(--text-muted);font-family:var(--font-mono)}
.search-btn{background:var(--accent);color:var(--bg);border:none;padding:6px 14px;cursor:pointer;font-family:var(--font-sans);font-weight:700;font-size:12px;border-radius:0;letter-spacing:.04em}
.search-btn:hover{opacity:.85}
.search-clear{background:transparent;color:var(--text);border:1px solid var(--border);padding:6px 10px;cursor:pointer;font-family:var(--font-mono);font-size:12px;border-radius:0}
.search-clear:hover{border-color:var(--border-strong)}

/* Track AAAAAA: filter-toggle 폰트 강화 + 라운드 */
.filter-toggle{background:transparent;color:var(--text);border:1px solid var(--border);padding:5px 10px;font-size:12px;font-family:'Pretendard','Pretendard Variable',var(--font-sans);font-weight:700;cursor:pointer;border-radius:4px;transition:.15s;letter-spacing:.01em;min-height:28px;box-sizing:border-box}
.filter-toggle.is-active{background:var(--accent);color:var(--bg);border-color:var(--accent);box-shadow:0 1px 4px rgba(174,203,232,.25)}
.filter-toggle:hover:not(.is-active){border-color:var(--accent-purple);color:var(--accent-purple)}
/* Track BBBBBB: 유형필터 전체 ON/OFF 토글 */
.filter-toggle-all{background:transparent;color:var(--text);border:1px dashed var(--accent-purple);padding:5px 12px;font-size:12px;font-family:'Pretendard','Pretendard Variable',var(--font-sans);font-weight:800;cursor:pointer;border-radius:4px;transition:.15s;letter-spacing:.04em;min-height:28px;box-sizing:border-box;margin-left:6px}
.filter-toggle-all.is-active{background:var(--accent-purple);color:#FFFFFF;border-style:solid;border-color:var(--accent-purple)}
.filter-toggle-all:hover{border-style:solid}

/* Track DDDDDD: 시점 범위 글자 키움 (사용자 요청, 잘 안 보이는 문제) */
.year-display{display:flex;align-items:center;gap:8px;font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:14px;font-weight:800;color:var(--text)}
.year-display .val{padding:3px 10px;background:var(--bg-input);border:1px solid var(--border);font-family:var(--font-mono);font-size:13px;letter-spacing:.02em;border-radius:2px}
.year-display .val--from{color:var(--accent-purple);border-color:var(--accent-purple)}
.year-display .val--to{color:var(--accent-purple);border-color:var(--accent-purple)}
.year-display .sep{color:var(--text-muted);font-size:12px}
/* Track DDDDDD (rev): year-ticks 더 크게 (사용자 요청) */
.year-ticks{display:flex;justify-content:space-between;font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:12px;font-weight:700;color:var(--text);letter-spacing:.04em;margin-top:4px;padding:0 2px}
.year-slider{position:relative;height:20px;display:flex;align-items:center;width:100%}
.year-slider .track{position:absolute;width:100%;height:3px;background:var(--border);top:50%;transform:translateY(-50%)}
.year-slider .range-fill{position:absolute;height:3px;background:var(--purple-300);top:50%;transform:translateY(-50%);z-index:1}
.year-slider input[type=range]{position:absolute;width:100%;background:transparent;appearance:none;-webkit-appearance:none;pointer-events:none;height:20px;z-index:2;margin:0}
.year-slider input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--purple-300);border:2px solid var(--bg);cursor:pointer;pointer-events:auto;position:relative;z-index:3}
.year-slider input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--purple-300);border:2px solid var(--bg);cursor:pointer;pointer-events:auto}
.year-ticks{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);letter-spacing:.05em}

/* Track AAAAAA: 범례 가독성 강화
 * Track BBBBBB: 2줄 강제 (grid 2행)
 * Track DDDDDD (rev): 범례 글자 더 크게 13px (사용자 요청) */
.legend-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(0, 1fr));grid-auto-flow:column;grid-template-rows:auto auto;gap:8px 16px;font-size:13px;align-items:center}
.legend-item{display:flex;align-items:center;gap:6px;color:var(--text);font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.01em}
.legend-swatch{width:14px;height:14px;border:1px solid transparent;border-radius:2px}
.legend-shape{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center}
.legend-shape svg{width:14px;height:14px;color:currentColor}
.legend-divider{color:var(--text-muted-strong);margin:0 4px;opacity:.5}
.legend-faded-demo{color:var(--text-muted-strong);font-style:italic;text-decoration:underline dotted;text-underline-offset:2px}

.viz-wrap{position:relative;overflow:auto;background:var(--bg-viz);padding:0}
#viz{display:block;width:100%;min-width:1820px;height:880px;background:var(--bg-viz);transform-origin:top center;transition:transform .2s}
.zoom-info{position:absolute;top:14px;right:18px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);letter-spacing:.05em;background:var(--surface);padding:4px 9px;border:1px solid var(--border);display:none;z-index:5}
.zoom-info.is-active{display:block}

/* Track TTTTT (디자인): 컬럼 헤더 배지 박스 + 상단 컬러 라인 + main/id 2단 구성
 * Track UUUUU2: id 폰트 9→18px 확대 + 'Pretendard' ExtraBold(800) 적용 (사용자 요청) */
.col-header .header-bg{fill:var(--bg-alt);stroke:var(--border);stroke-width:1;opacity:.55}
.col-header .header-accent{stroke-width:3;stroke-linecap:square}
.col-header .header-main{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:14px;font-weight:800;letter-spacing:.02em;fill:var(--text);text-anchor:middle}
.col-header .header-id{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:18px;font-weight:800;letter-spacing:.12em;text-anchor:middle;text-transform:uppercase}

.node--sankey rect{cursor:pointer;stroke:var(--border-strong);stroke-width:.5;transition:opacity .2s, fill .2s}
.node--sankey text{font-family:var(--font-sans);font-weight:500;font-size:12px;cursor:pointer;pointer-events:auto;fill:var(--node-label);transition:opacity .2s}
.node--l1 text{font-weight:700;font-size:14px;fill:var(--l1-label)}
.node--l5 text{font-weight:700;font-size:13px;fill:var(--text)}
.node--l5 rect.disconnected{fill:transparent !important;stroke:var(--gray-400);stroke-width:1;stroke-dasharray:3 3}
.node--l5 text.disconnected{fill:var(--gray-400)}
.node--sankey.inactive rect{opacity:.22}
.node--sankey.inactive text{opacity:.4}
.node--sankey text:hover{text-decoration:underline}

.link--sankey{fill:none;stroke-opacity:.3;cursor:pointer}
.link--phantom{stroke-opacity:0 !important;pointer-events:none}

.node--detail{cursor:pointer;transition:opacity .2s}
.node--detail .shape{stroke:var(--bg-viz);stroke-width:.6}
.node--detail.unreviewed .shape{opacity:.45;stroke-dasharray:1 1}
.node--detail:hover .shape{stroke:var(--white);stroke-width:1.6}

.cluster-hit-g{cursor:pointer}
.cluster-hit{fill:transparent}
.link--bridge{fill:none;stroke-opacity:.2;pointer-events:none}
.link--bridge--right{stroke-opacity:.1}
.link--internal{fill:none;stroke-opacity:.10;stroke-width:.6;pointer-events:none}
.faded{opacity:.06 !important}
.dimmed{opacity:.25 !important}

/* Track AAAAAA (rev): 하단 통계 미니멀 — 박스·컬러 액센트·hover 제거, 폰트 가독성만 유지 */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:18px;margin-bottom:16px}
.stat-card{padding:0}
.stat-card .title{font-family:'Pretendard','Pretendard Variable',var(--font-sans);font-size:13px;font-weight:700;letter-spacing:-0.01em;color:var(--text);margin-bottom:6px;line-height:1.3}
.stat-card .num{font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-weight:800;font-size:28px;line-height:1;color:var(--text);letter-spacing:-0.01em}
.stat-card .num .unit{font-size:14px;font-weight:600;color:var(--text-muted);margin-left:5px}
.stat-card .cap{font-size:10px;color:var(--text-muted);margin-top:5px;font-family:var(--font-sans)}

.footer-meta{display:flex;flex-wrap:wrap;gap:14px;padding-top:12px;border-top:1px solid var(--border);margin-bottom:6px}
.disclaimer{font-size:11px;color:var(--text-muted);line-height:1.5}

.modal{position:fixed;inset:0;background:rgba(12,12,14,.7);display:grid;place-items:center;z-index:100;padding:24px}
.modal[hidden]{display:none}
.modal__card{background:var(--surface);border:1px solid var(--purple-300);padding:0;width:620px;max-width:100%;max-height:86vh;overflow:hidden;position:relative;border-radius:0;display:flex;flex-direction:column}
.modal__head{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--bg-alt)}
.modal__head .meta-label{flex:0 0 auto}
.modal__head .modal__id{flex:1;text-align:right}
.modal__close{flex:0 0 auto;background:transparent;border:1px solid var(--border);color:var(--text);width:30px;height:30px;font-size:20px;cursor:pointer;border-radius:0;font-family:var(--font-mono);line-height:1;padding:0;display:grid;place-items:center}
.modal__close:hover{border-color:var(--border-strong)}
.modal__body{padding:20px;overflow-y:auto}
.modal__tag-row{margin-bottom:16px;display:flex;gap:6px;flex-wrap:wrap}
.tag-box{display:inline-block;background:var(--black);color:var(--white);font-family:var(--font-sans);font-weight:600;font-size:12px;padding:3px 9px;border-radius:0;letter-spacing:.05em}
.tag-box.unreviewed{background:transparent;color:var(--purple-300);border:1px solid var(--purple-300)}
.tag-box.outline{background:transparent;color:var(--text-muted);border:1px solid var(--border)}
.tag-box.active{background:#2D9B5F;color:white}
.tag-box.inactive{background:transparent;color:var(--gray-400);border:1px solid var(--gray-400)}
.modal__rows{display:grid;gap:8px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--border)}
.modal__rows>div{display:grid;grid-template-columns:108px 1fr;gap:12px;font-size:14px;align-items:baseline}
.modal__rows dt{font-family:var(--font-mono);font-weight:400;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-size:11px}
.modal__rows dd{font-family:var(--font-sans);color:var(--text)}
.modal__connections{display:grid;gap:12px}
.modal__connections h2,
.modal__connections h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:400;margin-bottom:4px}
.modal__connections ul{list-style:none;display:grid;gap:4px}
.modal__connections li{font-size:13px;font-family:var(--font-mono);color:var(--text);letter-spacing:.02em}
.modal__connections .strength{color:var(--text-muted);font-size:11px;margin-left:8px}

.tooltip{position:fixed;background:var(--surface);border:1px solid var(--purple-300);padding:9px 13px;font-family:var(--font-mono);font-size:12px;pointer-events:none;z-index:50;display:none;letter-spacing:.02em;color:var(--text);max-width:320px}
.tooltip strong{display:block;font-family:var(--font-sans);font-weight:700;font-size:14px;margin-bottom:4px;letter-spacing:-0.01em;color:var(--text)}
.tooltip .meta{color:var(--text-muted);font-size:11px;margin-top:4px}

/* Track VVVV: Toolbar (select / hand) + insight panel + sidebar highlight */
.toolbar{display:inline-flex;align-items:center;border:1px solid var(--border);background:var(--bg);height:30px}
.tool-btn{background:transparent;border:none;border-right:1px solid var(--border);padding:0 11px;cursor:pointer;color:var(--text);font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:13px;font-weight:700;line-height:1;border-radius:0;height:100%;letter-spacing:.04em}
.tool-btn:last-child{border-right:none}
.tool-btn:hover{background:var(--surface)}
.tool-btn.active{background:var(--accent);color:var(--bg)}

#viz.cursor-grab{cursor:grab}
#viz.cursor-grabbing{cursor:grabbing}

/* highlight (Tab 7 pattern) — opacity 강조 */
.node--detail.dehighlighted .shape{opacity:.04}
.node--sankey.dehighlighted rect{opacity:.10}
.node--sankey.dehighlighted text{opacity:.18}
.cluster-bubble.dehighlighted{opacity:.10}
/* 2026-07-03 검색 수리: 검색어 매치 없는 군집은 흐리게 (버블·펼친 내부 노드 모두) */
.cluster-bubble.search-miss{opacity:.12}
.cluster-hit-g.search-miss{opacity:.15}
/* 2026-07-03 연결 강조 개선: 링크 리본도 대상 체인만 남기고 dim + 집계 브리지 + detail 초점 */
.link--sankey.dehighlighted{stroke-opacity:.04}
.link--bridge.dehighlighted{stroke-opacity:.02}
.internal-edges.dehighlighted{opacity:.15}
.link--bridge--agg{stroke-opacity:.55}
.node--detail.hl-focus .shape{stroke:var(--gray-900);stroke-width:1.4;opacity:1}
.node--detail.hl-focus{filter:drop-shadow(0 0 3px rgba(46,90,140,.8))}
.cluster-bubble.highlight-target circle{stroke:var(--white);stroke-width:1.8}

/* Track WWWW: hover preview (약한 강조) — click 전 미리보기 */
.node--sankey.hover-preview rect{stroke:var(--purple-300);stroke-width:1.4}
.node--sankey.hover-preview text{font-weight:700}
.cluster-bubble.hover-preview circle{stroke:var(--purple-300);stroke-width:1.4}

/* Track WWWW: cluster bubble 라벨 — 외곽선 stroke 로 노드와 분리 (가독성) */
.cluster-bubble text{paint-order:stroke;stroke:var(--bg-viz);stroke-width:2.5;stroke-linejoin:round}

/* Track YYYYY: CENTER 버블 디자인 강화 — 다크/라이트 적응
 *   - JS inline 고정된 흰색 stroke/fill 을 CSS 변수 기반으로 override
 *   - 라이트 모드에서 충분한 대비 + 굵은 텍스트 + 큰 폰트 */
.cluster-bubble circle{stroke:var(--text)!important;stroke-width:1.2!important;fill-opacity:.80!important;transition:stroke-width .15s ease, fill-opacity .15s ease}
.cluster-bubble:hover circle{stroke-width:2.2!important;fill-opacity:.95!important}
.cluster-bubble text{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif!important;font-size:12px!important;font-weight:800!important;fill:var(--text)!important;letter-spacing:-.01em}
[data-theme="light"] .cluster-bubble text{stroke:#FFFFFF!important;stroke-width:3.5!important}
[data-theme="light"] .cluster-bubble circle{fill-opacity:.92!important;stroke-width:1.5!important}
[data-theme="dark"] .cluster-bubble text{stroke:#150A24!important;stroke-width:3!important;fill:#FFFFFF!important}
.cluster-bubble.highlight-target circle{stroke-width:2.6!important;filter:drop-shadow(0 0 6px currentColor)}

/* Track WWWW: 단축키 가이드 footer */
.shortcut-guide{margin-left:auto;color:var(--text-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.04em}

/* Track XXXX: insight section (하단 별도 섹션 — dashboards Tab 7 패턴) */
.insight-section{margin:14px 0 0;padding:16px 18px;background:var(--surface);border:1px solid var(--purple-300);display:none;font-family:var(--font-sans)}
.insight-section.is-open{display:block}
.insight-section__head{display:flex;align-items:center;gap:10px;padding:0 0 12px;border-bottom:1px solid var(--border);margin-bottom:14px}
.insight-section__head h3{font-size:16px;font-weight:800;line-height:1.3;color:var(--text);flex:0 0 auto;word-break:keep-all;font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif}
/* Track WWWWW: subEl 글자 키움 10→13px + 가독성 강화 (사용자 요청) */
.insight-section__head .meta{font-family:'Pretendard','Pretendard Variable',var(--font-mono);font-size:13px;font-weight:500;color:var(--text-muted);letter-spacing:.02em;flex:1;text-align:right;padding-right:8px}
.insight-section__head .meta strong{font-weight:800;font-size:14px}
.insight-section__close{background:transparent;border:1px solid var(--border);color:var(--text);width:28px;height:28px;font-size:18px;cursor:pointer;border-radius:4px;line-height:1;padding:0;display:grid;place-items:center;flex:0 0 auto}
.insight-section__close:hover{border-color:var(--accent-purple);color:var(--accent-purple)}
.insight-section__sub{padding:0 0 10px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);letter-spacing:.04em}
.insight-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
/* Track WWWWW: 인사이트 카드 디자인 강화 — 라운드, 컬러 사이드바, hover lift, gradient bg */
.insight-card{position:relative;padding:14px 16px 14px 18px;border:1px solid var(--border);border-radius:6px;background:linear-gradient(135deg, var(--bg-alt) 0%, color-mix(in srgb, var(--bg-alt) 92%, var(--accent-purple) 8%) 100%);display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start;min-height:84px;transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease;overflow:hidden}
.insight-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border)}
.insight-card.insight-정량::before{background:var(--accent-purple)}
.insight-card.insight-정책::before{background:#E9D67A}
.insight-card.insight-trend::before{background:#7ADCA0}
.insight-card.insight-기업\/기관::before{background:#D592E0}
.insight-card.insight-논문\/특허::before{background:#8FB8E0}
.insight-card:hover{transform:translateY(-2px);border-color:var(--accent-purple);box-shadow:0 6px 20px rgba(174,203,232,.18)}
.insight-card .insight-title{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:13px;font-weight:600;line-height:1.5;color:var(--text);word-break:keep-all;text-decoration:none}
a.insight-title{color:var(--accent-purple);text-decoration:none;border-bottom:1px dashed color-mix(in srgb, var(--accent-purple) 60%, transparent)}
a.insight-title:hover{color:var(--text);border-bottom-color:var(--text)}
.insight-card .insight-meta{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);margin-top:8px;letter-spacing:.03em;display:block;line-height:1.5}
.insight-type-tag{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:10px;font-weight:700;color:var(--text-muted);border:1px solid var(--border);padding:3px 8px;letter-spacing:.05em;text-transform:uppercase;align-self:start;background:var(--bg-input);border-radius:3px}
.insight-card.insight-정량 .insight-type-tag{color:var(--accent-purple);border-color:var(--accent-purple)}
.insight-card.insight-정책 .insight-type-tag{color:#E9D67A;border-color:#E9D67A}
.insight-card.insight-trend .insight-type-tag{color:#7ADCA0;border-color:#7ADCA0}
.insight-card.insight-기업\/기관 .insight-type-tag{color:#D592E0;border-color:#D592E0}
.insight-card.insight-논문\/특허 .insight-type-tag{color:#8FB8E0;border-color:#8FB8E0}
.insight-empty{padding:14px 4px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}

/* Track YYYYY: DETAIL 목록 CTA 버튼 — 크고 강조 (사용자 요청) */
.detail-list-btn-cta{
  background:linear-gradient(135deg, var(--accent-purple) 0%, color-mix(in srgb, var(--accent-purple) 70%, #5DC9C9 30%) 100%);
  color:#FFFFFF;
  border:none;
  padding:9px 18px;
  font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;
  font-size:14px;
  font-weight:800;
  letter-spacing:.04em;
  border-radius:5px;
  cursor:pointer;
  flex:0 0 auto;
  box-shadow:0 2px 8px rgba(174,203,232,.35);
  transition:transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.detail-list-btn-cta:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(174,203,232,.5);filter:brightness(1.1)}
.detail-list-btn-cta:active{transform:translateY(0);box-shadow:0 1px 4px rgba(174,203,232,.3)}
[data-theme="light"] .detail-list-btn-cta{color:#FFFFFF;box-shadow:0 2px 8px rgba(90,52,148,.4)}

/* Track XXXXX: 인사이트 글자 키움 (사용자 요청) */
.insight-card .insight-title{font-size:14px !important;line-height:1.55}
.insight-card .insight-meta{font-size:11.5px !important}
.insight-type-tag{font-size:10.5px !important;padding:3px 9px}

/* Track ZZZZZ: 인사이트 카드 영역 완전 hide — 선택범위 기술카드만 메인 (사용자 요청) */
#insight-cards-container{display:none!important}

/* Track XXXXX: 선택 detail 상위 5 카드 섹션 */
.detail-cards-section{margin-top:18px;padding-top:14px;border-top:1px dashed var(--border)}
.detail-cards-section[hidden]{display:none}
.detail-cards-section__head{display:flex;align-items:center;gap:10px;padding:0 0 10px}
.detail-cards-section__head h4{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:15px;font-weight:800;color:var(--text);margin:0;flex:0 0 auto;letter-spacing:.02em}
.detail-cards-section__head .meta{font-family:'Pretendard',var(--font-mono);font-size:12px;font-weight:500;color:var(--text-muted);letter-spacing:.02em;flex:1}
.detail-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.detail-card{position:relative;padding:14px 16px 14px 18px;border:1px solid var(--border);border-radius:6px;background:linear-gradient(135deg, var(--bg-input) 0%, color-mix(in srgb, var(--bg-alt) 88%, var(--accent-purple) 12%) 100%);display:grid;grid-template-rows:auto 1fr auto;gap:8px;min-height:120px;transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease;overflow:hidden}
.detail-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent-purple)}
.detail-card.dc-patent::before{background:#8FB8E0}
.detail-card.dc-paper::before{background:#A06CD5}
.detail-card.dc-project::before{background:#5DC9C9}
.detail-card.dc-report::before{background:#E9D67A}
.detail-card.dc-techdoc::before{background:#7ADCA0}
.detail-card.dc-presentation::before{background:#D592E0}
.detail-card.dc-knowhow::before{background:#F08987}
.detail-card.dc-milestone::before{background:#F0C987}
.detail-card:hover{transform:translateY(-2px);border-color:var(--accent-purple);box-shadow:0 6px 18px rgba(174,203,232,.18)}
.detail-card__head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.detail-card__type{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:11px;font-weight:800;padding:3px 9px;letter-spacing:.06em;text-transform:uppercase;border-radius:3px;background:var(--bg-alt);color:var(--text-muted);border:1px solid var(--border)}
.detail-card.dc-patent .detail-card__type{color:#8FB8E0;border-color:#8FB8E0}
.detail-card.dc-paper .detail-card__type{color:var(--accent-purple);border-color:var(--accent-purple)}
.detail-card.dc-project .detail-card__type{color:#5DC9C9;border-color:#5DC9C9}
.detail-card.dc-report .detail-card__type{color:#E9D67A;border-color:#E9D67A}
.detail-card.dc-techdoc .detail-card__type{color:#7ADCA0;border-color:#7ADCA0}
.detail-card.dc-presentation .detail-card__type{color:#D592E0;border-color:#D592E0}
.detail-card.dc-knowhow .detail-card__type{color:#F08987;border-color:#F08987}
.detail-card__year{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);font-weight:600}
.detail-card__title{font-family:'Pretendard','Pretendard Variable',-apple-system,sans-serif;font-size:14px;font-weight:600;line-height:1.5;color:var(--text);word-break:keep-all}
a.detail-card__title{color:var(--accent-purple);text-decoration:none;border-bottom:1px dashed color-mix(in srgb, var(--accent-purple) 60%, transparent)}
a.detail-card__title:hover{color:var(--text);border-bottom-color:var(--text)}
.detail-card__meta{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);line-height:1.5;letter-spacing:.02em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.detail-card__impact{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--accent-purple)}
.detail-card__impact::before{content:"◆";font-size:9px}

/* Track CCCCC: filter-toggle 안의 type-count 배지 (예: "논문 1,234") */
.filter-toggle .type-count{display:inline-block;margin-left:5px;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);letter-spacing:.02em}
.filter-toggle.is-active .type-count{color:inherit;opacity:.85}

/* Track CCCCC: sidebar L4/L5 detail count badge (sankey text 뒤 dy 0.35em 라벨 옆) */
.node--sankey .count-badge{font-family:var(--font-mono);font-size:9px;fill:var(--text-muted);letter-spacing:.02em}
.node--sankey.inactive .count-badge{opacity:.4}
.node--sankey.dehighlighted .count-badge{opacity:.18}
/* Track GGGGG: L1~L5 inline (count) tspan 통일 — 모든 sankey 라벨 우측에 동일 패턴 */
.node--sankey text .inline-count{font-family:var(--font-mono);font-size:9px;opacity:.55;letter-spacing:.02em}
.node--sankey.zero-count text{opacity:.42}
.node--sankey.zero-count text .inline-count{opacity:.32}
.node--sankey.inactive.zero-count text{opacity:.22}
/* Track JJJJJ: L4_미분류 / L5_미분류 노드 — 회색·점선 (KISTEP 12 외 미분류 detail) */
.node--sankey.node--unclassified rect{fill:var(--gray-400)!important;stroke:var(--gray-400)!important;stroke-dasharray:3 3;opacity:.55}
.node--sankey.node--unclassified text{fill:var(--text-muted);font-style:italic}

/* Track CCCCC: detail viewer modal — 50건 페이지 + 검색·정렬·CSV */
#detail-modal{position:fixed;inset:0;background:rgba(12,12,14,.7);display:none;place-items:center;z-index:120;padding:24px}
#detail-modal.is-open{display:grid}
#detail-modal .modal-card{background:var(--surface);border:1px solid var(--purple-300);width:780px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;border-radius:0}
#detail-modal .modal-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--border);background:var(--bg-alt)}
#detail-modal .modal-head h3{font-size:14px;font-weight:700;color:var(--text);margin:0;flex:0 0 auto}
#detail-modal .modal-head #detail-modal-count{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);flex:1;letter-spacing:.04em}
#detail-modal .modal-head button{background:transparent;border:1px solid var(--border);color:var(--text);padding:4px 10px;font-family:var(--font-mono);font-size:11px;cursor:pointer;border-radius:0;letter-spacing:.03em}
#detail-modal .modal-head button:hover{border-color:var(--border-strong)}
#detail-modal #detail-modal-close{font-size:18px;line-height:1;padding:2px 9px}
#detail-modal .modal-controls{display:flex;gap:8px;padding:10px 18px;border-bottom:1px solid var(--border);align-items:center}
#detail-modal .modal-controls input,#detail-modal .modal-controls select{background:var(--bg-input);color:var(--text);border:1px solid var(--border);padding:6px 10px;font-family:var(--font-mono);font-size:12px;border-radius:0}
#detail-modal .modal-controls input{flex:1}
#detail-modal .modal-controls input:focus,#detail-modal .modal-controls select:focus{outline:none;border-color:var(--border-strong)}
#detail-modal .table-wrap{flex:1;overflow:auto;padding:0 18px}
#detail-modal table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:12px}
#detail-modal thead th{position:sticky;top:0;background:var(--bg-alt);text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-weight:400}
#detail-modal tbody td{padding:6px 10px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:top}
#detail-modal tbody tr.clickable{cursor:pointer}
#detail-modal tbody tr.clickable:hover{background:var(--bg-alt)}
#detail-modal tbody td.col-arrow{font-family:var(--font-mono);color:var(--accent-purple);text-align:center;width:24px}
#detail-modal .pagination{display:flex;align-items:center;justify-content:center;gap:14px;padding:10px 18px;border-top:1px solid var(--border);background:var(--bg-alt)}
#detail-modal .pagination button{background:transparent;border:1px solid var(--border);color:var(--text);padding:4px 12px;font-family:var(--font-mono);font-size:12px;cursor:pointer;border-radius:0}
#detail-modal .pagination button:hover:not(:disabled){border-color:var(--border-strong)}
#detail-modal .pagination button:disabled{opacity:.3;cursor:not-allowed}
#detail-modal #page-info{font-family:var(--font-mono);font-size:11px;color:var(--text)}
/* Track DDDDD (G): 단축키 가이드 modal */
#help-modal{position:fixed;inset:0;background:rgba(12,12,14,.7);display:none;place-items:center;z-index:130;padding:24px}
#help-modal.is-open{display:grid}
#help-modal .modal-card{background:var(--surface);border:1px solid var(--purple-300);width:520px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;border-radius:0;overflow:auto}
#help-modal .modal-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--border);background:var(--bg-alt)}
#help-modal .modal-head h3{font-size:14px;font-weight:700;color:var(--text);margin:0;flex:1}
#help-modal .modal-head button{background:transparent;border:1px solid var(--border);color:var(--text);padding:2px 9px;font-family:var(--font-mono);font-size:18px;cursor:pointer;border-radius:0;line-height:1}
#help-modal .help-body{padding:16px 18px;font-family:var(--font-sans);font-size:12px;color:var(--text)}
#help-modal table{width:100%;border-collapse:collapse;font-size:12px}
#help-modal th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-weight:400}
#help-modal td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:top}
#help-modal kbd{font-family:var(--font-mono);font-size:11px;background:var(--bg-alt);border:1px solid var(--border);padding:1px 6px;border-radius:0;color:var(--text)}
#help-modal .help-hint{margin:12px 0 0;font-size:11px;color:var(--text-muted);line-height:1.5}
#help-btn{font-family:var(--font-mono);font-size:14px;font-weight:700;width:30px;height:30px;display:grid;place-items:center}
/* Track FFFFF (D): toast — KIPRIS 출원번호 복사 안내·일반 알림 (bottom-center, 자동 사라짐) */
#toast-container{position:fixed;left:50%;bottom:36px;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--surface);border:1px solid var(--purple-300);color:var(--text);padding:10px 18px;font-family:var(--font-mono);font-size:12px;letter-spacing:.02em;box-shadow:0 4px 16px rgba(0,0,0,.25);max-width:480px;line-height:1.5;opacity:0;transform:translateY(8px);transition:opacity .18s ease, transform .18s ease;pointer-events:auto}
.toast.is-show{opacity:1;transform:translateY(0)}
.toast strong{color:var(--accent-purple);font-weight:700}

/* Track CCCCC: 좌측 sidebar 하단 type filter 카드 (sidebar 통합 — type filter는 controls-grid의 card--type을 6종으로 단순화하고 단축키 1~6 노출) */
.card--type .type-shortcut{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);letter-spacing:.04em;margin-left:auto}

/* T20: 인쇄·PDF 저장용 */
@media print {
  [data-theme] { background: white !important; color: black !important; }
  body { background-image: none !important; }
  .head-actions, .zoom-control, .theme-toggle, .controls-grid { display: none !important; }
  .sticky-top { position: static !important; box-shadow: none !important; }
  .viz-wrap { overflow: visible !important; }
  #viz { transform: none !important; }
  .stat-card .num { color: black !important; }
  /* sankey hue는 보라 유지 */
}

/* ── IMP-04: 신뢰 칩 + 출처 모달 ── */
.trust-chip{align-self:center;display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;padding:4px 12px;cursor:pointer;height:26px;white-space:nowrap}
.trust-chip:hover{border-color:var(--purple-300);color:var(--text)}
.trust-chip .mono{color:var(--text);font-weight:700}
#sources-modal{position:fixed;inset:0;background:rgba(12,12,14,.7);display:none;place-items:center;z-index:120;padding:24px}
#sources-modal.is-open{display:grid}
#sources-modal .modal-card{background:var(--surface);border:1px solid var(--purple-300);width:520px;max-width:100%;max-height:88vh;display:flex;flex-direction:column}
#sources-modal .modal-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--border);background:var(--bg-alt)}
#sources-modal .modal-head h3{font-size:14px;font-weight:700;color:var(--text);margin:0;flex:1}
#sources-modal .modal-head button{background:transparent;border:1px solid var(--border);color:var(--text);padding:2px 9px;font-size:18px;line-height:1;cursor:pointer}
#sources-modal .modal-head button:hover{border-color:var(--border-strong)}
#sources-modal .src-body{padding:16px 18px;overflow:auto}
#sources-modal table{width:100%;border-collapse:collapse;font-size:13px}
#sources-modal th,#sources-modal td{padding:6px 8px;border-bottom:1px solid var(--border);color:var(--text)}
#sources-modal th{font-weight:700;color:var(--text-muted);text-align:left}
#sources-modal th.num,#sources-modal td.num{text-align:right;font-family:var(--font-mono)}
#sources-modal .gauge{margin-top:14px;font-size:12px;color:var(--text-muted)}
#sources-modal .gauge-bar{height:8px;background:var(--bg-alt);border:1px solid var(--border);margin-top:4px}
#sources-modal .gauge-fill{height:100%;background:var(--purple-500)}
#sources-modal .disclaimer{margin-top:14px;font-size:11px;color:var(--text-muted);line-height:1.6}

/* ── IMP-02: 온보딩 투어 ── */
#tour-overlay{position:fixed;inset:0;background:rgba(12,12,14,.82);display:none;place-items:center;z-index:200;padding:24px}
#tour-overlay.is-open{display:grid}
.tour-card{background:var(--surface);border:1px solid var(--purple-300);width:440px;max-width:100%;padding:24px}
.tour-step{font-family:var(--font-mono);font-size:11px;color:var(--accent);letter-spacing:.08em;font-weight:700}
.tour-card h3{font-size:18px;font-weight:800;color:var(--text);margin:8px 0 6px}
.tour-card p{font-size:14px;color:var(--text-muted);line-height:1.7}
.tour-again{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);margin-top:16px;cursor:pointer}
.tour-actions{display:flex;align-items:center;gap:8px;margin-top:18px}
.tour-spacer{flex:1}
.tour-btn,.tour-btn-ghost{font-family:var(--font-sans);font-size:13px;padding:7px 16px;cursor:pointer;border:1px solid var(--border)}
.tour-btn{background:var(--purple-500);color:#fff;border-color:var(--purple-500);font-weight:700}
.tour-btn:hover{background:var(--purple-700)}
.tour-btn-ghost{background:transparent;color:var(--text-muted)}
.tour-btn-ghost:hover{border-color:var(--purple-300);color:var(--text)}
/* ============ 모바일 세로(portrait) 최적화 (2026-07-03) ============
 * ≤768px: 데스크톱 viz(1820px sankey)·컨트롤을 숨기고 .m-ex(계층 드릴다운 탐색기)를 표시.
 * .m-ex DOM은 08-mobile.js가 생성 — 데스크톱에선 display:none이라 무해. */
.m-ex{display:none}
@media (max-width:768px){
  body{overflow-x:hidden}
  main.body-mid,.controls-grid,.head-actions{display:none}
  .sticky-top{position:static;padding:10px 14px 6px}
  .topbar{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding-bottom:6px}
  .title-block{display:flex;flex-wrap:wrap;gap:4px 10px;min-width:0}
  .title-block h1{font-size:16px;white-space:normal;word-break:keep-all}
  .title-block .sub,.title-block .form-id{display:none}
  .trust-chip{font-size:10px;padding:3px 8px}
  .footer-bot{padding:14px}
  .stats-grid{grid-template-columns:1fr 1fr;gap:10px}
  .m-ex{display:block;padding:14px 14px 24px;background:var(--bg-alt)}
}
.m-ex .m-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);margin-bottom:12px}
.m-ex .m-stats>div{background:var(--surface);padding:10px 8px;text-align:center}
.m-ex .m-stats b{display:block;font-family:var(--font-mono);font-size:17px;font-weight:700;color:var(--accent)}
.m-ex .m-stats span{font-size:10.5px;color:var(--text-muted)}
.m-search{position:relative;margin-bottom:14px}
.m-search input{width:100%;padding:11px 12px;border:1.5px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:14px;border-radius:0;outline:none;-webkit-appearance:none}
.m-search input:focus{border-color:var(--accent)}
.m-search-out{position:absolute;left:0;right:0;top:100%;z-index:20;background:var(--surface);border:1px solid var(--border-strong);border-top:none;list-style:none;margin:0;padding:0;max-height:280px;overflow-y:auto}
.m-search-out li button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--border);padding:10px 12px;font:inherit;font-size:13px;cursor:pointer;color:var(--text)}
.m-search-out .m-none{padding:10px 12px;color:var(--text-muted);font-size:12.5px}
.m-lv{font-family:var(--font-mono);font-size:9.5px;color:var(--accent);border:1px solid var(--border);padding:1px 5px;flex-shrink:0}
.m-search-out .m-row__meta{margin-left:auto}
.m-h{font-size:14px;font-weight:700;margin:18px 0 8px;display:flex;align-items:baseline;gap:8px;word-break:keep-all}
.m-h span{font-family:var(--font-mono);font-size:9.5px;font-weight:400;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}
.m-acc{border:1px solid var(--border);background:var(--surface);margin-bottom:8px}
.m-acc summary{display:flex;align-items:center;gap:9px;padding:12px 14px;cursor:pointer;list-style:none;font-weight:700;font-size:14.5px}
.m-acc summary::-webkit-details-marker{display:none}
.m-acc summary::after{content:"\203A";margin-left:auto;color:var(--text-muted);transition:transform .15s;font-size:16px}
.m-acc[open] summary::after{transform:rotate(90deg)}
.m-sw{width:11px;height:11px;flex-shrink:0;border:1px solid rgba(0,0,0,.15)}
.m-acc__label{flex:1;min-width:0;word-break:keep-all}
.m-acc__cnt{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);white-space:nowrap}
.m-l2{border-top:1px solid var(--border);padding:10px 14px 12px}
.m-l2__head{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}
.m-list{list-style:none;margin:0;padding:0}
.m-row{border-bottom:1px solid var(--border)}
.m-row:last-child{border-bottom:none}
.m-row__btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;background:none;border:none;padding:11px 2px;font:inherit;font-size:13.5px;text-align:left;cursor:pointer;color:var(--text)}
.m-row__label{min-width:0;word-break:keep-all}
.m-row__meta{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);white-space:nowrap}
.m-row__meta b{color:var(--accent);font-weight:700}
.m-row__chev{color:var(--border-strong);transition:transform .15s;display:inline-block}
.m-row__btn[aria-expanded="true"] .m-row__chev{transform:rotate(90deg)}
.m-ci{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--bg-alt);padding:10px 12px;margin:0 0 10px}
.m-ci-meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-family:var(--font-mono);font-size:11px;margin-bottom:5px;color:var(--text)}
.m-ci-meta b{color:var(--accent)}
.m-ci-src{font-size:11px;color:var(--text-muted);margin-bottom:6px;word-break:keep-all}
.m-ci-list{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.m-ci-list li{font-size:12px;line-height:1.55;word-break:keep-all;color:var(--text)}
.m-ci-type{font-family:var(--font-mono);font-size:9px;color:var(--accent);border:1px solid var(--border);padding:0 4px;margin-right:6px;white-space:nowrap}
.m-ci-yr{color:var(--text-muted)}
.m-ci-l5{margin-top:7px;font-size:11.5px;color:var(--text);word-break:keep-all}
.m-ci-l5 b{color:var(--accent)}
.m-row--l5{padding-bottom:8px}
.m-row--l5.is-off{opacity:.45}
.m-l5__head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 0 4px}
.m-row--l5 .m-row__label{font-weight:700;font-size:13.5px}
.m-chips{display:flex;flex-wrap:wrap;gap:5px;padding-bottom:4px}
.m-chip{font-size:11px;border:1px solid var(--border);background:var(--surface);padding:3px 8px;word-break:keep-all;color:var(--text)}
.m-chip b{font-family:var(--font-mono);color:var(--accent);font-weight:600}
.m-note{margin-top:16px;font-size:11px;color:var(--text-muted);line-height:1.6;word-break:keep-all}

/* ── 무지개 흐름 강조 (2026-07-03) — 클릭 하이라이트 상태 전용 시각 인코딩 ──
 * 살아남은 경로 리본: 좌→우 스펙트럼 그라데이션(stroke=url(#tmfg…)) + dash 흐름 애니.
 * 평상시 kara 고정색은 clearFlowColors()가 원복. */
/* v3 사용자 피드백: dash 흰 공백 제거 — 흐름은 그라데이션 이동(SMIL)이 담당.
 * 색감은 기존 리본 색 기조(밝은 파도만 이동), 농도는 은은하게. */
.flow-hl{stroke-opacity:.62 !important}
.flow-hl.dehighlighted{stroke-opacity:.03 !important} /* 이전 선택 잔존 방어 — dim이 흐름 농도를 이기게 */
.link--bridge.flow-hl{stroke-opacity:.55 !important}

/* ── K바 반응형 보강(2026-07-15): 창 축소 시 브랜드 줄바꿈 깨짐 방지 ──
   브랜드는 nowrap 고정, 메뉴는 남는 폭에서 가로 스크롤(스크롤바 숨김) */
.kbar-brand{flex-shrink:0}
.kbar-l1{white-space:nowrap}
.kbar-nav{flex:1 1 auto;min-width:0;overflow-x:auto;justify-content:flex-end;scrollbar-width:none}
.kbar-nav::-webkit-scrollbar{display:none}
@media(max-width:1200px){.kbar-nav a{padding:8px 9px;font-size:12.5px}}
@media(max-width:1050px){.kbar-l2{display:none}.kbar-visits{display:none}}
