:root{
  --navy:#132a4b; --navy2:#1b3a63; --bg:#f2f4f8; --card:#fff; --line:#dfe4ec;
  --ink:#1e2a3a; --mute:#66748a; --pri:#1f5fbf; --pri-s:#e6eefb;
  --red:#d9363e; --red-s:#fdeaea; --amb:#e08a12; --amb-s:#fff3df; --grn:#2e9e5b; --grn-s:#e6f5ec;
  --vio:#6b4fbb; --font:"Pretendard","Noto Sans KR","Malgun Gothic",system-ui,sans-serif;
}
*{box-sizing:border-box} html,body{margin:0;height:100%}
body{font-family:var(--font);color:var(--ink);background:var(--bg);font-size:13.5px;line-height:1.45}
a{color:var(--pri);text-decoration:none} a:hover{text-decoration:underline}
button{font-family:inherit;font-size:12.5px;padding:6px 12px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;color:var(--ink)}
button:hover{background:#f6f8fb} button.pri{background:var(--pri);color:#fff;border-color:var(--pri)} button.pri:hover{background:#184c99}
button.red{background:var(--red);color:#fff;border-color:var(--red)} button.grn{background:var(--grn);color:#fff;border-color:var(--grn)}
button.sm{padding:3px 8px;font-size:11.5px} button:disabled{opacity:.5;cursor:default}
input,select,textarea{font-family:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink)}
textarea{width:100%;min-height:90px;resize:vertical}
input:focus,textarea:focus,select:focus,button:focus-visible{outline:2px solid #9dbdf0;outline-offset:1px}

/* 레이아웃 */
.shell{display:grid;grid-template-columns:212px 1fr;grid-template-rows:48px 1fr;height:100vh}
.top{grid-column:1/3;background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 16px;gap:16px}
.top .brand{font-weight:800;letter-spacing:.5px;font-size:15px} .top .brand small{font-weight:400;opacity:.7;margin-left:6px;font-size:11px}
.top .sp{flex:1} .top .st{font-size:12px;opacity:.85;display:flex;gap:14px;align-items:center}
.top .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--grn);margin-right:4px}
.top .dot.off{background:var(--mute)}
/* (c293 실측 1440·1024) 상단 바의 '로그아웃'·시계·문구가 두 줄로 꺾였다 — 글자는 안 꺾고, 좁으면 부제를 숨긴다 */
.top .brand, .top .st, .top .st > *, .top button{white-space:nowrap} .top .st{flex-wrap:nowrap}
@media (max-width:1180px){ .top .brand small{display:none} }
.side{background:var(--navy2);color:#d7e0ee;padding:10px 0;overflow:auto}
.side .grp{font-size:10.5px;color:#8aa0bf;padding:12px 16px 4px;letter-spacing:.3px}
.side a{display:flex;align-items:center;gap:8px;color:#d7e0ee;padding:8px 16px;font-size:13px;border-left:3px solid transparent}
.side a:hover{background:#25497a;text-decoration:none} .side a.on{background:#0f2445;border-left-color:#6fa3ea;color:#fff}
.side a .n{display:inline-block;width:18px;height:18px;border-radius:50%;background:#2d5a96;font-size:10.5px;text-align:center;line-height:18px;color:#fff}
.side a .sub{font-size:11px;color:#8aa0bf;margin-left:auto}
.main{overflow:auto;padding:16px 18px}
.hd{display:flex;align-items:center;gap:10px;margin:0 0 12px} .hd h1{font-size:17px;margin:0;font-weight:800}
.hd .step{background:var(--pri);color:#fff;font-size:11px;padding:2px 8px;border-radius:10px}
.hd .desc{color:var(--mute);font-size:12px} .hd .sp{flex:1}
.hd .actions{display:flex;gap:6px}

/* 그리드·카드 */
.g{display:grid;gap:12px} .g2{grid-template-columns:1fr 1fr} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
.g-2-1{grid-template-columns:2fr 1fr} .g-1-2{grid-template-columns:1fr 2fr} .g-3-2{grid-template-columns:3fr 2fr}
.card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:12px 14px;min-width:0}
.card h3{margin:0 0 8px;font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px}
.card h3 .r{margin-left:auto;font-weight:400;color:var(--mute);font-size:11.5px}
.card.pad0{padding:0} .card.pad0 h3{padding:10px 14px 0}
.kpi{display:flex;flex-direction:column;gap:2px}
.kpi .l{font-size:11.5px;color:var(--mute)} .kpi .v{font-size:24px;font-weight:800;line-height:1.1}
.kpi .d{font-size:11px;color:var(--mute)} .kpi .d.up{color:var(--red)} .kpi .d.dn{color:var(--grn)}
.kpi.red .v{color:var(--red)} .kpi.amb .v{color:var(--amb)} .kpi.pri .v{color:var(--pri)} .kpi.grn .v{color:var(--grn)} .kpi.vio .v{color:var(--vio)}
.mb{margin-bottom:12px} .mt{margin-top:12px} .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mute{color:var(--mute)} .small{font-size:11.5px} .b{font-weight:700}
.badge{display:inline-block;padding:1px 7px;border-radius:9px;font-size:11px;font-weight:700;line-height:1.5;background:#eef1f6;color:#4b5a70;white-space:nowrap}
.b-red{background:var(--red-s);color:var(--red)} .b-amb{background:var(--amb-s);color:#a8620a} .b-grn{background:var(--grn-s);color:#1f7a43}
.b-pri{background:var(--pri-s);color:var(--pri)} .b-vio{background:#efeaf9;color:var(--vio)} .b-gray{background:#eef1f6;color:#5c6b80}
.tag{display:inline-block;padding:1px 6px;border:1px solid var(--line);border-radius:3px;font-size:11px;margin:1px 2px 1px 0;background:#fafbfd}
.tag.p{border-color:#f0b7b9;background:var(--red-s);color:var(--red)}
table{width:100%;border-collapse:collapse;font-size:12.5px} th,td{text-align:left;padding:6px 8px;border-bottom:1px solid #edf0f5;vertical-align:top}
th{background:#f7f9fc;font-weight:700;color:#4b5a70;font-size:11.5px;white-space:nowrap} tr:hover td{background:#fafcff}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums} tr.sel td{background:var(--pri-s)}
.clk{cursor:pointer}
.empty{color:var(--mute);text-align:center;padding:22px 8px;font-size:12.5px;border:1px dashed var(--line);border-radius:6px}
.err{background:var(--red-s);color:var(--red);padding:8px 10px;border-radius:4px;font-size:12px;margin-bottom:10px;white-space:pre-wrap}
.ok{background:var(--grn-s);color:#1f7a43;padding:8px 10px;border-radius:4px;font-size:12px;margin-bottom:10px}
.note{background:#f7f9fc;border-left:3px solid var(--pri);padding:8px 10px;font-size:12px;color:#4b5a70;border-radius:0 4px 4px 0}
.note.warn{border-left-color:var(--amb);background:var(--amb-s)}
.bar{height:8px;background:#eef1f6;border-radius:4px;overflow:hidden} .bar i{display:block;height:100%;background:var(--pri)}
.bar.red i{background:var(--red)} .bar.amb i{background:var(--amb)} .bar.grn i{background:var(--grn)}
.axis{display:grid;grid-template-columns:110px 1fr 40px;gap:8px;align-items:center;font-size:12px;margin:5px 0}
.list{display:flex;flex-direction:column;gap:6px}
.item{border:1px solid var(--line);border-radius:5px;padding:8px 10px;background:#fff}
.item:hover{border-color:#b9cdf0} .item.sel{border-color:var(--pri);background:var(--pri-s)}
.item .t{font-weight:700;font-size:13px;margin-bottom:2px} .item .m{font-size:11.5px;color:var(--mute)}
.steps{display:flex;gap:0;margin:8px 0 12px}
.steps div{flex:1;text-align:center;padding:7px 4px;font-size:12px;background:#eef1f6;color:var(--mute);border-right:2px solid #fff}
.steps div.done{background:var(--grn-s);color:#1f7a43} .steps div.cur{background:var(--pri);color:#fff;font-weight:700}
.chips button{margin:0 4px 4px 0}
.tl{border-left:2px solid var(--line);margin-left:8px;padding-left:14px}
.tl div{position:relative;margin-bottom:8px;font-size:12px} .tl div::before{content:"";position:absolute;left:-19px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--pri)}
.tl .ts{color:var(--mute);font-size:11px}
.sc{display:grid;grid-template-columns:repeat(3,1fr);gap:8px} .sc div{padding:8px;border-radius:5px;font-size:12px}
.sc .o{background:var(--grn-s)} .sc .b{background:#f7f9fc;font-weight:400} .sc .p{background:var(--red-s)}
.chk{display:flex;gap:8px;align-items:flex-start;padding:8px;border:1px solid var(--line);border-radius:5px;margin-bottom:6px;background:#fff}
.chk input[type=checkbox]{margin-top:3px} .chk .body{flex:1} .chk .meta{font-size:11.5px;color:var(--mute);margin-top:3px}
.chk .meta span{margin-right:10px}
.kw-row td input{width:100%} .kw-row.prot td:first-child{border-left:3px solid var(--red)}
svg text{font-family:var(--font)}
/* (D262) 탭 — 두 가지뿐이다. .seg: 카드 머리의 작은 세그먼트 컨트롤(트랙 위에 떠 있는 흰 알약이 현재 축), .tabs.big: 표 위의 굵은 밑줄 탭.
   예전 .tabs button.on 은 글자색이 파랑이었는데 전역 button.on(파란 배경)과 겹쳐 파란 글자가 파란 배경에 묻혔다 — 이 두 규칙만 남긴다. */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:10px;align-items:flex-end}
.tabs button{border:none;border-bottom:3px solid transparent;border-radius:0;background:none;padding:9px 14px 8px;font-size:13px;color:var(--mute);font-weight:600;margin-bottom:-1px;display:inline-flex;align-items:center;gap:7px}
.tabs button:hover{background:#f4f7fb;color:var(--navy)}
.tabs button.on{border-bottom-color:var(--navy);color:var(--navy);font-weight:800;background:none}
.tabs button .cnt{display:inline-block;min-width:20px;padding:1px 7px;border-radius:10px;background:#e9eef6;color:#4b5a70;font-size:11px;font-weight:700;text-align:center}
.tabs button.on .cnt{background:var(--navy);color:#fff}
.tabs .hint{margin-left:auto;font-size:11.5px;color:var(--mute);padding:6px 0}
.seg{display:inline-flex;background:#e6ebf3;border-radius:8px;padding:2px;gap:2px;vertical-align:middle;margin-right:8px}
.seg button{border:none;background:transparent;color:#5c6b80;padding:3px 10px;border-radius:6px;font-size:11.5px;font-weight:600;line-height:1.5;box-shadow:none}
.seg button:hover{background:rgba(255,255,255,.55);color:var(--navy)}
.seg button.on{background:#fff;color:var(--navy);font-weight:800;box-shadow:0 1px 2px rgba(19,42,75,.18),0 0 0 1px rgba(19,42,75,.06)}
.seg-label{font-size:11px;color:var(--mute);margin-right:4px}
/* (D245) 툴팁 — 마우스오버·포커스 모두. 문구는 config/help.json 에서 온다 */
.tip{display:inline-block;width:14px;height:14px;line-height:14px;text-align:center;border-radius:50%;background:#e4e9f2;color:var(--pri);font-size:10px;font-weight:700;cursor:help;position:relative;vertical-align:1px;margin-left:2px}
.tip:hover::after,.tip:focus::after{content:attr(data-tip);position:absolute;left:0;top:18px;z-index:8;width:340px;max-width:70vw;background:var(--navy);color:#fff;padding:8px 10px;border-radius:5px;font-size:11.5px;font-weight:400;line-height:1.45;white-space:normal;text-align:left;box-shadow:0 4px 14px rgba(0,0,0,.25)}
/* (D243) 8영역 칩 */
.badge.b-dom{background:#ecf1fb;color:#2a4a8a;border:1px solid #cad8f3}
/* (D246) 창구 트리 */
.tree details{border:1px solid var(--line);border-radius:5px;margin-bottom:6px;background:#fff}
.tree summary{padding:6px 10px;cursor:pointer;font-size:12.5px;background:#f7f9fc;border-radius:5px}
.tree .tr-org{padding:4px 10px 4px 22px;font-size:12px} .tree .tr-org>label{font-weight:700}
.tree .tr-items{padding:2px 0 4px 20px} .tree .tr-item{display:block;padding:3px 0;font-size:12px;border-bottom:1px dashed #eef1f6}
.tree .tr-item .small{margin-left:20px}
button.on{background:var(--pri);color:#fff}
/* (D255) 네비 — 고른 주제의 8단계는 들여쓰고, 8영역 버튼은 점을 단다 */
.side a.sub{padding-left:26px;font-size:12px}
.topic-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* (D253) 8영역 띠·영역 카드 */
.dom-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px} .dom-card{border:1px solid var(--line);border-radius:5px;padding:8px 10px;background:#fff}
.dom-card .t{font-weight:700;font-size:13px;margin-bottom:3px} .dom-card .t a{color:var(--navy)}
td.ok-cell{color:#1f7a43;font-weight:700}
/* (D300~D303) 1단계 요청 입력 강조 · 등록 주제는 참고 목록 · 칸 추천 · 민감도 이유 · 상황판 → 2단계 초점 창구 */
/* (D308) 단계 디자인 — 원형 숫자·순번·핵심 카드·다음 단계 CTA·다녀간 단계 */
.hd .stepnum{display:inline-flex;width:28px;height:28px;border-radius:50%;background:var(--pri);color:#fff;font-weight:800;font-size:14px;align-items:center;justify-content:center;box-shadow:0 0 0 3px rgba(43,108,176,.18)}
.card h3 .num{display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--pri);color:#fff;font-size:12px;align-items:center;justify-content:center;flex:none}
.card.key{border:2px solid var(--pri);box-shadow:0 2px 8px rgba(43,108,176,.12)} .card.key h3{font-size:14px}
.cta{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:16px;font-weight:700;font-size:12px;text-decoration:none;border:1.5px solid #b7c3d6;color:#5c6b80;background:#fff;margin-left:6px}
.cta.go{background:#1f7a43;border-color:#1f7a43;color:#fff;box-shadow:0 2px 6px rgba(31,122,67,.25)} .cta.go:hover{background:#186336} .cta.wait:hover{border-color:var(--pri);color:var(--pri)}
.steps8 .st.seen .n{box-shadow:0 0 0 2px #2b6cb0;background:#e8f0fb;color:#2b6cb0}
.card.ask{border:2px solid var(--pri);background:linear-gradient(180deg,#f3f7ff,#fff);box-shadow:0 2px 8px rgba(43,108,176,.12)} .card.ask h3{font-size:14px} .card.ask h3 .num{} .card.ask textarea{min-height:120px;border:1px solid #9db7dc;background:#fff}
.card.roster{background:#f8f9fb;border-style:dashed} .card.roster h3{color:#4b5a70} .card.roster .item{background:#fff;border-left:3px solid #d5dce8;padding:6px 8px;margin-bottom:6px}
.sug-row{gap:6px;align-items:center} .sens-why{display:inline-block;background:#fff8e6;border:1px solid #f0d99a;border-radius:4px;padding:1px 6px;font-size:11.5px;margin-left:6px}
.hd-link{font-weight:600;color:var(--pri);text-decoration:none} .hd-link:hover{text-decoration:underline}
button.tag.clk{cursor:pointer;border:1px solid #d5dce8;background:#fff} button.tag.clk:hover{border-color:var(--pri)}
.ch-tree tr.focus td{background:#fff3cd;box-shadow:inset 3px 0 0 #e0a800}
/* (D316·D317) 조회·설명 패널 머리 — 탭·필터·닫기 */
.pane-bar{position:sticky;top:0;background:#fff;padding:4px 0;border-bottom:1px solid var(--line);margin-bottom:6px;gap:6px;align-items:center;flex-wrap:wrap} .pane-bar .seg{margin-right:4px}
/* (D311) 법정 기술 설명 패널 */
.law-tech{border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff} .law-tech .chip.off,.chips .chip.off{opacity:.5;text-decoration:line-through} .law-detail{border-top:1px dashed var(--line);padding-top:8px}
/* (D309·D310) 레지스트리 탭 · 7단계 재생성 접이식 */
.chips label.chip{cursor:pointer} details.regen{border:1px dashed #b7c3d6;border-radius:6px;padding:6px 10px;background:#fbfcfe} details.regen summary{cursor:pointer}
/* (D299) 임시 항목 */
td.last-cell{box-shadow:inset 0 0 0 2px #2b6cb0;border-radius:4px}
.tmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}
.tmp-card{border:1px dashed #9fb0c8;border-radius:8px;padding:8px 10px;background:#fbfcfe} .tmp-card.sel{border-style:solid;border-color:#2b6cb0;background:#eef4ff} .tmp-card .t{font-weight:700;margin-bottom:2px}
.leaflet-container{font:inherit}
@media (max-width:1100px){.dom-grid{grid-template-columns:1fr 1fr}}
.legend{display:flex;gap:12px;font-size:11.5px;color:var(--mute)} .legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--line);border-radius:14px;font-size:12px;background:#fff}
.toast{position:fixed;right:16px;bottom:16px;background:var(--navy);color:#fff;padding:10px 14px;border-radius:6px;font-size:12.5px;box-shadow:0 4px 16px rgba(0,0,0,.2);z-index:9;max-width:420px;white-space:pre-wrap}
.toast.err{background:var(--red)}
@media (max-width:1100px){.g4{grid-template-columns:1fr 1fr}.g3,.g-2-1,.g-1-2,.g-3-2{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* (D256) 창구 링크·링크 묶음 */
a.chan{font-weight:700;color:var(--navy)} a.lk{margin-right:2px;padding:0 4px;border:1px solid var(--line);border-radius:3px;background:#f7f9fc;white-space:nowrap}
.tt-grp{margin:3px 0;padding:3px 0;border-bottom:1px dashed #eef1f6} .tt-grp b{margin-right:6px;color:var(--navy)} .tt-grp label{margin-right:8px;white-space:nowrap}
.crumbs{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--mute);margin-bottom:6px} .crumbs b{color:var(--navy)}
.sm-link{font-size:12px;padding:3px 8px;border:1px solid var(--line);border-radius:4px;background:#fff;margin-left:6px}
.card.kpi.clk:hover{border-color:#b9cdf0}
/* (D266) 주요 안보위협 유형 띠 — 기본 탐지 영역이라 다른 카드와 다르게: 남색 그라데이션 위 흰 카드, 영역 아이콘 */
.dom-band{background:linear-gradient(135deg,#132a4b 0%,#1f4a86 100%);border-radius:8px;padding:14px 16px 16px;color:#fff}
.dom-band-hd{margin-bottom:12px} .dom-band-hd .k{font-size:10.5px;letter-spacing:.6px;text-transform:uppercase;color:#9fb8de;font-weight:700}
.dom-band-hd h3{margin:2px 0 4px;font-size:17px;font-weight:800;color:#fff} .dom-band-hd .small{color:#d7e0ee}
.dom-band .dom-grid{grid-template-columns:repeat(4,1fr)} .dom-band .dom-card{border:none;box-shadow:0 2px 8px rgba(0,0,0,.18);color:var(--ink)}
.dom-band .dom-card.sel{outline:3px solid #f2c94c}
.dom-top{display:flex;gap:10px;align-items:center;margin-bottom:6px} .dom-top .t{font-weight:800;font-size:14px;color:var(--navy)}
.dom-ico{color:#1f5fbf;flex:none;background:#e6eefb;border-radius:8px;padding:4px} .dom-recent{min-height:2.6em;color:#2f3d52}
.quick{background:#fff;color:var(--ink);border-radius:6px;padding:12px 14px;margin-top:12px}
.chip{display:inline-block;padding:4px 10px;margin:3px 4px 3px 0;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:12px;cursor:pointer}
.chip:hover{border-color:#7c93c4} .chip.on{background:var(--navy);color:#fff;border-color:var(--navy)} .chip.hit{border-color:#f2c94c;background:#fff8e1} .chip.on.hit{background:var(--navy)} .chip.mute{color:var(--mute)}
.chk-row{padding:8px 0;border-bottom:1px dashed #eef1f6} .chk-hd{font-size:12.5px;margin-bottom:4px}
.card.kpi.gauge{padding:8px 12px} .card.kpi.gauge .l{font-size:11.5px} .card.kpi.gauge .d{font-size:11px}
.spark{vertical-align:middle;margin-right:4px}
@media (max-width:1100px){.dom-band .dom-grid{grid-template-columns:1fr 1fr}}
/* (D269) 8단계 띠 */
.steps8{display:flex;align-items:center;gap:2px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin-bottom:10px}
.steps8 .st{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:14px;color:var(--mute);font-size:12px;border:1px solid transparent}
.steps8 .st .n{display:inline-block;width:18px;height:18px;border-radius:50%;background:#e9eef6;color:#4b5a70;font-size:11px;text-align:center;line-height:18px;font-weight:700}
.steps8 .st.done .n{background:var(--grn);color:#fff} .steps8 .st.done{color:#1f7a43}
.steps8 .st.cur{background:var(--pri);color:#fff;border-color:var(--pri);font-weight:700} .steps8 .st.cur .n{background:#fff;color:var(--pri)}
.steps8 .st:hover{text-decoration:none;border-color:#b9cdf0} .steps8 .ar{color:#c3ccdb;font-size:12px}
.steps-ol{margin:8px 0 0;padding-left:18px;font-size:12.5px} .steps-ol li{margin:3px 0}
details.intro summary{cursor:pointer;font-size:13px}
@media (max-width:1100px){.steps8 .st .l{display:none}.steps8 .st.cur .l{display:inline}}
/* (D274) 조치 템플릿 편집 표 · (D275) 위성 지도 라벨 */
.tpl-edit td{vertical-align:top;padding:4px 4px} .tpl-edit input,.tpl-edit select,.tpl-edit textarea{font-size:12px} .wrap{overflow-x:auto}
.mp text{paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;font-weight:600} .map-inset text{paint-order:stroke;stroke:#fff;stroke-width:2.5px}
/* (D277) 지난 단계 · 현재 단계 설명 */
.steps8 .st.past{color:#5c6b80} .steps8 .st.past .n{background:#b7c3d6;color:#fff}
details.intro summary{cursor:pointer;font-size:13px} .intro-body{font-size:12.5px;line-height:1.55;padding-top:6px} .intro-body b{color:var(--navy);margin-right:4px}
/* (D278) 선택한 영역은 노란 테두리 + 배지 + 살짝 뜸, 빠른 탐지 패널은 파란 띠와 다른 따뜻한 색 */
.dom-band .dom-card.sel{outline:3px solid #f2c94c;background:#fffbe6;transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.3)}
.dom-card .selmark{display:inline-block;background:#f2c94c;color:#3a2f00;font-weight:800;font-size:10.5px;border-radius:9px;padding:1px 7px;margin-left:6px;vertical-align:1px}
.dom-card button.sel{background:#f2c94c;color:#3a2f00;font-weight:800}
.quick{background:#fff8e6;color:var(--ink);border:2px solid #f2c94c;border-left:8px solid #e0a800;border-radius:6px;padding:12px 14px;margin-top:12px}
.quick .chip{background:#fff} .quick .chip:hover{border-color:#e0a800;background:#fff3cc} .quick .chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}   /* (c290) 고른 유형 — 흰 바탕 규칙이 덮어 글자가 안 보였다(실측) */ .quick-step{display:inline-block;width:20px;height:20px;line-height:20px;border-radius:50%;background:#e0a800;color:#fff;font-weight:800;font-size:12px;text-align:center;margin-right:6px}
/* (D279) 목록 편집 */
.tag .x{border:none;background:transparent;color:#8a97ab;margin-left:3px;padding:0 2px;cursor:pointer;font-size:12px;line-height:1} .tag .x:hover{color:var(--red)}
.eadd{display:inline-flex;gap:4px;align-items:center;margin-left:6px;vertical-align:middle} .eadd input{font-size:12px}
/* (D283) 창구 트리 아이콘 */
.tr-ico{display:inline-block;width:16px;text-align:center;font-size:12px;margin-right:3px;vertical-align:-1px} svg.tr-ico{vertical-align:-3px}
.mono{display:inline-block;width:16px;height:16px;line-height:16px;border-radius:50%;color:#fff;font-size:9.5px;font-weight:800;text-align:center;margin-right:4px;vertical-align:-3px}
/* (D276) 사건 탭 = 추이 카드의 세그먼트와 같은 부품, 조금 크게 */
.seg.lg button{font-size:12.5px;padding:5px 12px} .seg .cnt{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;background:#d7dfec;font-size:11px;margin-left:4px;color:#33507d} .seg button.on .cnt{background:var(--pri);color:#fff}
/* (D286) 네비 주제 고정 해제 */
.side .grp-x{color:#f2c94c;font-size:11px;margin-left:6px;padding:0 4px;border:1px solid #6b5a1a;border-radius:8px} .side .grp-x:hover{background:#3a3110;text-decoration:none}
/* (D287) 소스 스위치 · 기관별 창구 · 키워드 추천 */
.switch{position:relative;display:inline-block;width:44px;height:24px;flex:none} .switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:#c3ccdb;border-radius:24px;transition:.2s;cursor:pointer} .slider::before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.switch input:checked+.slider{background:#1f9d55} .switch input:checked+.slider::before{transform:translateX(20px)} .switch input:focus-visible+.slider{outline:2px solid var(--pri)}
.sw-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px} .sw-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff}
.sw-row.on{border-color:#9ad4b3;background:#f2fbf6;box-shadow:inset 3px 0 0 #1f9d55} .sw-body{flex:1;min-width:0} .sw-row .t{font-weight:700;font-size:13px} .run{color:#1f7a43}
.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#1f9d55;margin-right:5px;vertical-align:0;box-shadow:0 0 0 0 rgba(31,157,85,.6);animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(31,157,85,.6)}70%{box-shadow:0 0 0 7px rgba(31,157,85,0)}100%{box-shadow:0 0 0 0 rgba(31,157,85,0)}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
.org-list{max-height:600px;overflow:auto} .org-list details{border-bottom:1px solid var(--line)} .org-list summary{padding:7px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12.5px;background:#f7f9fc}
.org-list summary .mono{width:22px;height:22px;line-height:22px;font-size:11px} .mono.img{border-radius:4px;object-fit:contain;background:#fff;border:1px solid var(--line)} .org-list table{width:100%} .org-list td{padding:4px 12px;font-size:12px} .org-list tr.off td{color:var(--mute)}
.kw-suggest{background:#f4f7fc;border:1px dashed #b9cdf0;border-radius:6px;padding:6px 8px}
@media (max-width:1100px){.sw-grid{grid-template-columns:1fr}}
/* (D289·D290) 관리자 카탈로그·기술 설명 */
.ent-form{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:4px 0;font-size:12px} .ent-form input[type=text],.ent-form input:not([type]){font-size:12px}
.ent-tbl td,.td-tbl td{vertical-align:top;font-size:12px} .ent-tbl tr.off td{color:var(--mute)} .ent-tbl tr.ent-edit td{background:#f7f9fc} .td-tbl textarea{font-size:12px}
/* (D292) 2단계 등록부 트리 + 창구 스위치 */
.switch.sm{width:36px;height:20px} .switch.sm .slider::before{width:14px;height:14px} .switch.sm input:checked+.slider::before{transform:translateX(16px)}
.ch-tree details.typ{border-top:1px solid var(--line)} .ch-tree details.typ>summary{padding:8px 14px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;background:#f0f4fa}
.ch-tree details.typ.stub>summary{background:#f6f6f8;color:var(--mute)} .ch-tree details.org{margin:0 0 0 14px;border-left:2px solid #e3e9f3}
.ch-tree details.org>summary{padding:6px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12.5px} .ch-tree details.org>summary .mono{width:20px;height:20px;line-height:20px;font-size:10px}
.ch-tree table{width:100%} .ch-tree td{padding:3px 10px;font-size:12px;vertical-align:middle} .ch-tree td.swc{width:44px} .ch-tree tr.off td{color:var(--mute)}
.warn-text{color:#b26a00;font-weight:600}
/* (D295) 관리자 설정 탭 */
.admin-tabs{position:sticky;top:0;z-index:3;background:var(--bg,#f4f6fa);padding:6px 0}
/* (D307) 탭이 7개라 한 줄에서 넘치면 마지막 탭(기술 설명)이 화면 밖으로 잘렸다 — 줄바꿈하고 폭을 화면에 맞춘다 */
.admin-tabs .seg{flex-wrap:wrap;max-width:100%;row-gap:4px} .admin-tabs .seg button{white-space:nowrap}
/* (D298) 소스별 지금 수집(접이식) · 일괄 스위치 */
details.src-run>summary{padding:6px 14px;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:12.5px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fbfcfe}
.run-chip{display:inline-flex;align-items:center;gap:5px} .hdot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c3ccdb} .hdot.b-grn{background:#1f9d55} .hdot.b-red{background:#d9363e} .hdot.b-amb{background:#e08a12}
.switch.grp{margin-right:6px} .switch input:indeterminate+.slider{background:#8fb8e8} .switch input:indeterminate+.slider::before{transform:translateX(8px)}

/* (D330) 상황판 맨 아래 네 카드는 높이를 맞춘다 — 내용이 많은 카드만 길어지면 화면이 층져 보인다.
   카드는 고정 높이의 세로 상자이고 본문(.cbody)만 안에서 스크롤한다. 좁은 화면(2열)에서도 같은 규칙이다. */
.g4.even>.card{display:flex;flex-direction:column;height:330px}
.g4.even>.card>h3{flex:0 0 auto}
.g4.even .cbody{flex:1 1 auto;min-height:0;overflow:auto}
.g4.even .cbody>.item{margin-bottom:6px}
@media (max-width:1100px){.g4.even>.card{height:300px}}

/* (D334) 상단 통합 검색칸 — 가운데, 너비는 화면에 맞춘다 */
.tp-search{display:flex;gap:4px;align-items:center;min-width:260px;max-width:520px;flex:1 1 380px;margin-left:12px}
.tp-search input{flex:1;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);color:#fff;border-radius:6px;padding:5px 10px;font-size:12.5px}
.tp-search input::placeholder{color:rgba(255,255,255,.65)} .tp-search input:focus{background:#fff;color:var(--ink);outline:none}
@media (max-width:900px){.tp-search{display:none}}
/* (D336) 바로 수집 마법사 */
.qz-steps{display:flex;gap:8px;margin:6px 0 12px} .qz-steps .st{flex:1;padding:8px 10px;border-radius:6px;background:#eef2f8;color:#5c6b80;font-size:12.5px;font-weight:700}
.qz-steps .st.on{background:var(--pri);color:#fff} .qz-steps .st.done{background:var(--grn-s);color:var(--grn)}
.qz-kind{display:grid;grid-template-columns:repeat(4,1fr);gap:10px} .qz-kind .k{border:1px solid var(--line);border-radius:8px;padding:14px;cursor:pointer;background:#fff}
.qz-kind .k:hover{border-color:var(--pri)} .qz-kind .k.on{border-color:var(--pri);background:var(--pri-s)} .qz-kind .k b{display:block;font-size:14px;margin-bottom:4px}
.qz-grp{display:grid;grid-template-columns:repeat(3,1fr);gap:8px} .qz-grp label{border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff;cursor:pointer;display:block}
.qz-grp label.rec{border-color:#b9cdf0;background:#f6f9ff} .qz-grp .m{font-size:11.5px;color:var(--mute)}
@media (max-width:1100px){.qz-kind{grid-template-columns:1fr 1fr}.qz-grp{grid-template-columns:1fr 1fr}}

/* (D339) 상황판 첫 줄 KPI 넷은 높이가 같다 · 추이 카드와 나의 사건 현황도 같은 높이(.eqh1, 본문만 스크롤) */
.g4.kpirow>.card,.g4.kpirow>.clk>.card{height:118px;display:flex;flex-direction:column;justify-content:center}
.g4.kpirow>.clk{display:block}
.eqh1{height:392px;display:flex;flex-direction:column} .eqh1>h3{flex:0 0 auto} .eqh1>.cbody{flex:1 1 auto;min-height:0;overflow:auto}
.side a .n.ico{background:transparent;padding:0;display:inline-flex;align-items:center;vertical-align:middle;margin-right:6px} .side a .n.ico svg{width:15px;height:15px}
/* 바로 수집 — 1단계 입력칸은 버튼 바로 옆, 2단계 창구 상세는 접이식 */
.qz-kind .k .ico{font-size:22px;display:block;margin-bottom:4px}
.qz-target{display:flex;gap:6px;align-items:center;margin-top:12px} .qz-target input{width:360px;max-width:100%} .qz-target button{white-space:nowrap;flex:none}   /* (c181) 아이콘이 붙어도 한 줄 */
.qz-grp details{margin-top:4px} .qz-grp summary{cursor:pointer;font-size:11.5px;color:var(--pri)} .qz-grp .chl{font-size:11.5px;color:var(--mute);margin:2px 0 0 4px}
.qz-ctx{background:#f6f9ff;border:1px solid #d9e4f5;border-radius:6px;padding:8px 10px}

/* (D342) 관련 기관 칩 — 존안자료 있음/없음을 눈으로 가른다 */
.pill.org-on{background:var(--pri-s);border-color:#b9cdf0;color:var(--navy);cursor:pointer}
.pill.org-on:hover{background:#dbe7fb} .pill.org-off{opacity:.5;background:#f2f4f8;color:var(--mute);cursor:default}
/* (D343) 바로 수집 — 단계 숫자·집중 카드·영역/유형 고르기·아이콘 */
.qz-steps .st .qn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#fff;color:var(--navy);font-size:11px;margin-right:6px}
.qz-steps .st.on .qn{background:#fff;color:var(--pri)} .qz-steps .st.done .qn{background:var(--grn);color:#fff}
.card.focus{border-color:#b9cdf0;box-shadow:0 1px 6px rgba(31,95,191,.10)}
.card.focus>h3 .qn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--pri);color:#fff;font-size:12px;margin-right:6px}
.qz-doms{display:flex;flex-wrap:wrap;gap:6px} .qz-doms .dchip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:16px;padding:5px 12px;font-size:12.5px;cursor:pointer}
.qz-doms .dchip.on{border-color:var(--pri);background:var(--pri-s);color:var(--ink);font-weight:700}   /* (c231) 색을 안 적으면 button.on{color:#fff} 이 이겨 흰 글자가 연파랑 바탕에 얹힌다 — 갈무리에서 안 읽혔다 */
/* (c177, D556) 그래프 칩 — '전부' 칩은 한 디자인(점선 테두리) · 보기 메뉴 번호 배지 */
.qz-doms .dchip.all{border-style:dashed;color:var(--pri)} .qz-doms .dchip.all.on{border-style:solid}
.dchip .cn{display:inline-flex;width:17px;height:17px;border-radius:50%;background:#7b8797;color:#fff;font-size:10.5px;font-weight:700;align-items:center;justify-content:center;margin-right:2px}
.dchip.on .cn{background:var(--pri)}
/* (c179, D558) 지식그래프 = '바로 수집' 모양 — ① 타일 · ② 조건 · ③ 결과 띠 · 특화 영역 타일(비활성) */
.qz-kind.gviews{grid-template-columns:repeat(7,1fr)} .qz-kind.gdoms{grid-template-columns:repeat(8,1fr)} .qz-kind .k b .cn{margin-right:6px;vertical-align:1px}
.qz-kind .k.off{opacity:.45;cursor:not-allowed;background:#f5f6f8} .qz-kind .k.off:hover{border-color:var(--line)}
/* (c180, D559) ③ 결과도 ①·② 와 같은 흰 카드 — 안의 결과 카드는 옅은 바탕 · 360도 둘레 그림 · 결과 그림 · 배지의 수 */
.card.gres3>.gres>.card{background:#fbfcfe} .card.gres3>.gres>.card:last-child{margin-bottom:0} .card.gres3>.gres>.g{margin-bottom:12px} .card.gres3>.gres>.g:last-child{margin-bottom:0}
.gchart{display:block;width:100%} .gchart .clk{cursor:pointer} .gchart .clk:hover{filter:brightness(.85)}
.c360 .fc:hover circle{stroke:var(--pri)!important;stroke-width:3px} .c360 .fc text{pointer-events:none}
.qz-doms .dchip .cnt{display:inline-block;min-width:16px;padding:0 5px;border-radius:8px;background:#e9eef6;color:#4b5a70;font-size:10.5px;font-weight:700;text-align:center;margin-left:2px} .qz-doms .dchip.on .cnt{background:var(--pri);color:#fff}
@media (max-width:1400px){.qz-kind.gviews{grid-template-columns:repeat(4,1fr)}.qz-kind.gdoms{grid-template-columns:repeat(4,1fr)}}
/* (c177) 팝업 */
.pop-bg{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:300;display:none;align-items:center;justify-content:center;padding:20px}
.pop{background:#fff;border-radius:8px;max-width:900px;width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.pop-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line)} .pop-h .sp{flex:1} .pop-b{padding:12px 14px;overflow:auto}
/* (c177) 행렬 — 첫 열 고정 · 누를 수 있는 칸 · 색 범례 */
.mxt th:first-child,.mxt td:first-child{position:sticky;left:0;background:#fff;z-index:1} .mxt th .mxh{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.mxt td.mx-c.clk{cursor:pointer;font-weight:600} .mxt td.mx-c.clk:hover{outline:2px solid var(--pri);outline-offset:-2px} .mxt tr:hover td{filter:brightness(.97)}
.mx-leg{display:flex;gap:10px;align-items:center} .mx-sw{display:inline-block;width:14px;height:14px;border-radius:3px;background:rgb(31,95,191);vertical-align:-2px;margin-right:3px}
/* (c177) 그래프 — 작은 개체 이름은 150% 이상 확대했을 때만 · 슬라이더 */
.gv-svg[data-zoom="0"] text.sm{display:none}
.gv-bar .gv-sl{display:inline-flex;gap:10px;align-items:center;font-size:11.5px;color:var(--mute)} .gv-bar .gv-sl label{display:inline-flex;align-items:center;gap:4px} .gv-bar .gv-sl input[type=range]{width:80px} .gv-bar .gv-sl b{min-width:22px;text-align:right}
.gband table td,.gband table th{padding:3px 6px;font-size:12px} .gband tr.sel td{background:var(--pri-s)}
.qz-types{display:flex;flex-wrap:wrap;gap:6px} .qz-types .tchip{border:1px solid var(--line);background:#fff;border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer}
.qz-types .tchip.on{border-color:var(--pri);background:var(--pri);color:#fff;font-weight:700}
.qz-target .picked{background:var(--pri-s);border:1px solid #b9cdf0;border-radius:6px;padding:5px 10px;font-weight:700;font-size:12.5px}
.qz-grp label .gi{font-size:15px;margin-right:4px} .qz-grp label.on{border-color:var(--pri);background:var(--pri-s)}
.ask{border-left:3px solid #e6eefb;padding-left:10px}

/* (D346) 네비 8영역 배지 — 다른 항목과 같은 원형, 기호만 다르다 */
.side a .n.dm{background:#3b5f8f;font-size:11.5px}
/* (c181) AI 도구·운영 네비 배지는 색 이모지 — 원 배경 없이 · 수집 정보 필터 카드 */
.side a.adm{margin-top:6px;border-top:1px dashed #3a5f92;padding-top:10px;color:#ffd9a3} .side a.adm .n{background:#b7791f} .side a.adm.on .n{background:#fff;color:#b7791f}
.asset-btn{margin-left:4px;padding:0 6px;font-size:11px;line-height:16px}
.lk-in{padding:1px 6px;font-size:11px;line-height:16px;vertical-align:middle}
.side a .n.emo{background:transparent;font-size:13px;line-height:18px}
.ifilt .frow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px} .ifilt .frow:first-of-type{margin-top:0} .ifilt .fl{font-size:12px;font-weight:700;color:#4b5a70;min-width:56px} .ifilt select{max-width:260px} .ifilt label.small{display:inline-flex;align-items:center;gap:4px}
.side a.on .n.dm{background:#fff;color:var(--pri)}
/* (D344) 바로 수집 1단계 — 기술 하위 단계(체계·분야·기술·HS) */
.qz-doms .dchip.off{opacity:.45;cursor:not-allowed;text-decoration:line-through}
.qz-techs{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;overflow:auto;padding:2px}
.qz-techs .tchip{text-align:left;max-width:100%} .qz-types .tchip code{font-size:11px;background:transparent;padding:0;margin-right:4px}
.qz-grp label.off{opacity:.55} .chl.off{opacity:.55} .chl .qtag{display:inline-block;font-size:10px;line-height:14px;padding:0 4px;border-radius:3px;margin-left:3px;vertical-align:middle}
.qtag.en{background:#e6eefb;color:var(--pri);font-weight:700} .qtag.num{background:#fff3d6;color:#8a5a00;font-weight:700}
/* (D345) 3단계 상세 설정 — 입력칸이 눈에 들어오게 */
.ask-card{border-color:#e0b95a;box-shadow:0 1px 8px rgba(224,185,90,.25);background:linear-gradient(180deg,#fffdf7,#fff)}
.ask-card>h3{color:#6b4a00}
.ask-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:8px;background:#fff}
.ask-box .al{width:220px;flex:none} .ask-box .al label{font-size:13px}
.ask-box .ask-in{flex:1;min-width:220px;max-width:460px;font-size:14px;padding:9px 12px;border:2px solid #b9cdf0;border-radius:8px;background:#f7faff;font-weight:600}
.ask-box .ask-in:focus{outline:none;border-color:var(--pri);background:#fff;box-shadow:0 0 0 3px rgba(31,95,191,.15)}
.ask-box.miss{border-color:#e0b95a;background:#fffaf0} .ask-box.miss .ask-in{border-color:#e0b95a;background:#fff8e6}
.ask-box.ok{border-color:#cfe3cf} .ask-box.ok .ask-in{border-color:#9fcf9f;background:#f4fbf4}
.ask-box.kw{border-color:#b9cdf0;background:#f7faff} .ask-box.kw .ask-in{background:#fff}
.small.warn,.warn{color:#8a5a00} .qz-chlist .chl{padding:2px 0}

/* (D349) 상세 설정 — 넣은 값이 칩으로 보이고 × 로 지운다 */
.ask-in-wrap{display:flex;gap:6px;align-items:center;flex:1;min-width:240px;max-width:440px}
.ask-in-wrap .ask-in{flex:1;min-width:0;max-width:none}
.ask-in-wrap button.sm{padding:8px 14px;font-size:12.5px;white-space:nowrap}
.ask-side{flex:1;min-width:200px}
.ask-chips{display:flex;flex-wrap:wrap;gap:6px}
.ask-chips .chip{display:inline-flex;align-items:center;gap:6px;background:var(--pri-s);border:1px solid #b9cdf0;border-radius:14px;padding:4px 6px 4px 11px;font-size:12.5px;font-weight:600;color:var(--navy)}
.ask-chips .chip .x{cursor:pointer;width:16px;height:16px;line-height:15px;text-align:center;border-radius:50%;background:#fff;color:#7a8ba6;font-weight:700}
.ask-chips .chip .x:hover{background:#e4574d;color:#fff}
.ok{color:#227a3d} .qz-chlist .pill{margin:2px 2px 0 0}

/* (D355) 자주 보는 나라는 별표로 앞에 */
.qz-types .tchip.fav{border-color:#e0b95a;background:#fffaf0;font-weight:700}
.qz-types .tchip.fav.on{border-color:var(--pri);background:var(--pri);color:#fff}

/* (D355) 자주 찾는 나라는 바로 누른다 */
.qz-fav{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.qz-fav .favb{border:2px solid #b9cdf0;background:var(--pri-s);color:var(--navy);border-radius:18px;padding:7px 18px;font-size:13.5px;font-weight:700;cursor:pointer}
.qz-fav .favb:hover{background:#dbe7fb} .qz-fav .favb.on{background:var(--pri);border-color:var(--pri);color:#fff}
/* (c109) '전부 빠른 검색' 은 제목 줄 오른쪽에 크게 */
button.allbtn{padding:8px 16px;font-size:13px;font-weight:700}
.qz-doms .dchip.off{opacity:.45;cursor:not-allowed}

/* (D362) 설명은 ⓘ 에 — 화면의 말이 무슨 뜻인지 그 자리에서 답한다 */
.hint{display:inline-block;width:15px;height:15px;line-height:15px;text-align:center;border-radius:50%;background:#e6eefb;color:var(--pri);font-size:10.5px;font-weight:700;cursor:help;vertical-align:1px}
.axis.clk{cursor:pointer;border-radius:6px} .axis.clk:hover{background:var(--pri-s)}
.card.kpi.clk{cursor:pointer} .card.kpi.clk:hover{box-shadow:0 1px 8px rgba(31,95,191,.16)}
a.dl{color:var(--pri);text-decoration:none;border-bottom:1px dotted #b9cdf0} a.dl:hover{background:var(--pri-s)}
.urlc code{font-size:11px} button.sm.cp{padding:2px 7px;font-size:11px;margin-left:4px}
/* (D363) 조각 낱말로 접힌 줄 — 지우지 않고 뒤로 보내되 그 사실이 보이게 */
tr.absorbed{opacity:.72;background:#fbfbfd}

/* (D365) 지식그래프 보기 도구 — 확대·축소·필터·저장 */
.gv{position:relative}
.gv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.gv-bar .gv-z{display:inline-flex;align-items:center;gap:4px} .gv-bar .gv-z b{font-size:11.5px;min-width:38px;text-align:center;color:var(--mute)}
.gv-ck{font-size:11.5px;color:var(--mute);display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.gv-sp{flex:1}
.gv-leg{flex-wrap:wrap;align-items:center;margin-bottom:6px}
.gv-leg .lg{display:inline-flex;align-items:center;border-radius:12px;padding:1px 7px 1px 5px;border:1px solid transparent}
.gv-leg .lg.clk:hover{border-color:var(--line);background:#fff}
.gv-leg .lg.off{opacity:.38;text-decoration:line-through}
.gv-leg .lg.weak i{background:repeating-linear-gradient(90deg,#e08a12 0 4px,transparent 4px 7px);border-radius:0;height:3px}
.gv-leg .sep{width:1px;height:12px;background:var(--line)}
.gv-hint{margin-top:4px}
.gv-svg{cursor:grab} .gv-svg:active{cursor:grabbing}
/* (D364) 연결 근거 — 누가 만들었나 */
.by{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:9px;border:1px solid;margin-right:5px;white-space:nowrap}
.by-rule{color:#516074;border-color:#c7cfdb;background:#f4f6f9} .by-ai{color:#5b3fa8;border-color:#d6ccee;background:#f6f3fd}
.by-human{color:#1e7a45;border-color:#bfe2cd;background:#f1f9f4} .by-doc{color:#6b7280;border-color:#e3e7ee;background:#fafbfc}
.by-law{color:#8c3f77;border-color:#e6cbdf;background:#fbf4f9} .by-registry{color:#92400e;border-color:#f0d9b5;background:#fdf6ec}
.basis{border:1px solid var(--line);border-left:3px solid var(--pri);border-radius:4px;padding:7px 9px;margin-top:6px;background:#fcfdff}
.basis .m{color:var(--mute);font-size:11.5px;margin-top:2px}
.bz{display:flex;gap:8px;align-items:flex-start;padding:5px 0;border-top:1px dotted var(--line)}
.bz:first-child{border-top:0} .bz .k{min-width:76px;font-weight:600;font-size:12px}
.bz .ok{color:var(--grn)} .bz .no{color:var(--amb)}

/* (D366) 판단 리포트 · 영역 몫 막대 */
.brieft{width:100%;border-collapse:collapse} .brieft th{width:104px;text-align:left;vertical-align:top;padding:6px 8px 6px 0;font-size:12px;color:var(--mute);font-weight:600;white-space:nowrap}
.brieft td{padding:6px 0;vertical-align:top;border-top:1px solid var(--line);font-size:12.5px} .brieft td.nw{white-space:nowrap;text-align:right;padding-left:8px}
.brieft tr:first-child td, .brieft tr:first-child th{border-top:0}
.domw{display:flex;align-items:center;gap:6px;padding:3px 0;flex-wrap:wrap} .domw b{min-width:64px}
.wbar{display:inline-block;width:92px;height:7px;background:#eef1f6;border-radius:4px;overflow:hidden}
.wbar i{display:block;height:100%;background:var(--pri)} .wpct{font-size:11px;color:var(--mute);min-width:30px}
.wtxt{flex:1;min-width:200px}
/* (D368) 바로 수집 — 국가 자음 색인 · 창구 묶음 · 제외된 창구 */
.qz-cho{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}
.chob{padding:3px 9px;border:1px solid var(--line);background:#fff;border-radius:13px;font-size:12.5px;cursor:pointer}
.chob:hover{background:var(--pri-s)} .chob.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.chgrp{margin-top:6px} .chgrp .gname{display:inline-block;min-width:118px;font-size:11.5px;color:var(--mute);font-weight:600}
.skgrp{margin-top:6px;padding-left:2px;border-left:2px solid var(--amb-s)}
.ask-box .chsum summary{cursor:pointer;color:var(--mute);font-size:11.5px}
.ask-box .chsum .pill{margin:2px 2px 0 0;font-size:11px;padding:2px 6px}
details.unfit summary{cursor:pointer} .pill.off{opacity:.6}
.ask-side .ok{color:var(--grn)}

/* (c146) 리포트 팝업 — 새 CSS 를 최소로 두고 기존 카드·버튼 색을 그대로 쓴다(D176) */
.rp-modal{position:fixed;inset:0;background:rgba(16,24,40,.55);z-index:3000;display:flex;align-items:center;justify-content:center;padding:24px}
.rp-box{background:#fff;border-radius:12px;width:min(980px,96vw);height:min(88vh,1000px);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 18px 60px rgba(0,0,0,.35)}
.rp-bar{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line,#e1e6ee);background:#f7f9fc}
.rp-bar .sp{flex:1}
.rp-fr{flex:1;border:0;width:100%;background:#fff}

/* (c147) 조직도 — 층마다 한 줄, 사람 한 명이 카드 하나. 층 이름은 직위 사전이 세운 것이다. */
/* (c184) 고른 법인 띠 — 결과 맨 위에서 어느 법인을 보고 있는지 한눈에 */
.oc-selbar{background:#eaf2ff;border:1px solid #b9cdf0;border-left:6px solid var(--pri);border-radius:8px;padding:10px 14px;margin-bottom:12px}
.oc-selbar-t{font-size:17px;margin-bottom:6px} .oc-selbar-t b{color:#1b2940;font-size:19px}
.oc-l{margin-bottom:14px}
.oc-lh{font-size:12px;font-weight:700;color:#5b6a80;letter-spacing:.03em;padding:4px 0 8px;border-bottom:1px solid #e6ebf2;margin-bottom:10px}
.oc-lh .cnt{background:#eef2f8;border-radius:999px;padding:1px 7px;margin-left:6px;color:#4a5b75;font-weight:600}
.oc-row{display:flex;flex-wrap:wrap;gap:10px}
.oc-p{flex:0 0 auto;min-width:176px;max-width:240px;border:1px solid #e3e8ef;border-radius:10px;padding:10px 12px;background:#fff;cursor:pointer}
.oc-p:hover{border-color:#b9c9e4;background:#f7faff}
.oc-n{font-weight:700;font-size:15px;color:#1b2940}
.oc-n .oc-s{font-size:11px;color:#7b8798;font-weight:500;margin-left:5px}
.oc-t{font-size:12px;color:#3f5170;margin-top:2px}
.oc-a{font-size:12px;color:#6b7688;margin-top:3px}
.oc-b{margin-top:6px;display:flex;gap:4px;align-items:center;flex-wrap:wrap}

/* (c149) Vision 후보 — 기계가 대조를 못 넘은 것을 사람이 고른다. 채택된 원문과 섞이지 않게 눌러 둔다. */
.vcand{margin:6px 0 2px;padding:6px 10px;border-left:3px solid #d7b36b;background:#fffaf0;border-radius:0 6px 6px 0;font-size:12.5px}
.vcand .vc{display:flex;gap:6px;align-items:center;margin-top:4px}
.vcand .vc a{color:#33507d;text-decoration:none;word-break:break-all}
.vcand .vc a:hover{text-decoration:underline}
/* (c187) 8영역 화면 — 0 띠(작은 타일) · ① 현황의 유형 줄 · ② 시나리오 접이식 소절. 다른 메뉴의 .dom-card/.kpi/.qn 을 그대로 쓴다. */
.dom-mini .dom-card{padding:6px 9px;text-decoration:none;color:inherit;display:block} .dom-mini .dom-card:hover{border-color:#7c93c4} .dom-mini .dom-card.sel{outline:3px solid #f2c94c;background:#fffbe6} .dom-mini .dom-card .t{font-size:12.5px;margin-bottom:2px}
.dm-types .row{justify-content:space-between;padding:3px 0;border-bottom:1px solid #f1f3f7} .dm-types .row:last-child{border-bottom:none} .dm-h4{font-size:12.5px;font-weight:700;margin:0 0 6px;color:var(--navy)}
details.dm-sec{border-top:1px dashed var(--line);padding:6px 0;margin-top:4px} details.dm-sec summary{cursor:pointer;font-weight:700;font-size:12.5px} details.dm-sec .small{margin-top:4px}
/* (c190) 8영역 머리·띠의 파랑 선 아이콘 크기 맞춤 · 상단 AI/스케줄러가 관리자에게는 링크다 */
.hd h1 .dom-ico{vertical-align:-7px;margin-right:6px} .dom-mini .dom-ico{vertical-align:-4px;padding:2px;margin-right:3px} .kpi .v a .dom-ico{vertical-align:-3px;padding:1px}
#tp-ai.tp-link:hover,#tp-sched.tp-link:hover{text-decoration:underline}
/* (c191) 판단 내역 연결 경로 — ① ② 줄에 버튼 모양 링크가 들어 있어 줄 간격이 좁으면 위아래가 겹친다 */
.ar-path .small{line-height:2.4;margin:2px 0} .ar-path .sm-link{vertical-align:middle}
/* (c193) 누른 KPI 는 테두리로 표시 — 나의 수집 목록·판단 내역의 숫자 → 아래 표 연결 */
.card.kpi.clk.sel{border-color:var(--pri);box-shadow:inset 0 0 0 1px var(--pri)}
/* (c194) 5단계 연계 사건 줄 — 제목 · 원문 · 이동 · 잇기/끊기 */
.rel-row{padding:4px 0;border-bottom:1px dashed var(--line)} .rel-row .rel-acts{margin-left:6px;white-space:nowrap} .rel-row .rel-acts button{margin-left:4px;padding:2px 7px;font-size:11.5px}
/* (c194, D577) 전체화면 상황판 — 어두운 배경, 동적 요소(파동·새 항목 밝힘) */
.wall{position:fixed;inset:0;z-index:5000;background:radial-gradient(1400px 700px at 30% 15%,#10213f 0%,#070d19 65%);color:#dbe4f3;font-size:13px;display:flex;flex-direction:column;overflow:hidden;font-family:var(--font)}
.wall .mute{color:#8ea2c6} .wall .small{font-size:11.5px} .wall button.sm{background:#0f1a30;color:#dbe4f3;border:1px solid #2b4370} .wall button.sm:hover{border-color:#6ea8ff}
.wall-top{display:flex;align-items:center;gap:14px;padding:8px 18px;border-bottom:1px solid #1e2e4a;background:#0a1224}
.wall-top .wb{font-weight:900;font-size:19px;letter-spacing:.6px;color:#fff} .wall-top .wt{color:#8fb3ff;font-weight:700} .wall-top .wclock{font-variant-numeric:tabular-nums;color:#ffd27a;font-weight:700;font-size:15px;margin-left:6px}
.wall-kpis{display:flex;gap:8px;margin-left:auto} .wk{background:#0f1a30;border:1px solid #223559;border-radius:8px;padding:4px 12px;min-width:120px} .wk .l{font-size:10.5px;color:#8ea2c6} .wk .v{font-size:19px;font-weight:800;color:#fff;line-height:1.15} .wk .v .mute{font-size:12px;font-weight:600} .wk .d{font-size:10.5px;color:#8ea2c6}
.wall-body{flex:1;display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);grid-template-rows:minmax(0,1fr);gap:10px;padding:10px 18px;min-height:0}
.wall-body.bigworld{grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:minmax(0,1.3fr) minmax(0,1fr)}
.wall-body.bigworld .wp-world{grid-column:1/4;grid-row:1} .wall-body.bigworld .wall-map{grid-column:4/13;grid-row:1} .wall-body.bigworld .wall-map .wm-big{overflow:hidden} .wall-body.bigworld .wall-right{display:contents}
/* (c199, 사용자 지시 2026-09-21) 세계 크게의 아래 줄 — 추이 3열(국내 지도 폭과 같다) · 사건 4열 · 실시간 수집 첩보 5열(가장 넓게) */
.wall-body.bigworld .wp-trend{grid-column:1/4;grid-row:2} .wall-body.bigworld .wp-inc{grid-column:4/8;grid-row:2} .wall-body.bigworld .wall-feed{grid-column:8/13;grid-row:2} .wall-body.bigworld .wp-kw{display:none}
.wall-body.bigworld.nofeed .wp-inc{grid-column:4/13}
.wall-map{grid-column:1;grid-row:1;position:relative;background:#0a1428;border:1px solid #223559;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;min-height:0}
.wall-map .wm-big{flex:1;min-height:0;display:flex;align-items:center;justify-content:center} .wall-svg{width:100%;height:100%;max-height:100%}
.wall-right{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1.15fr) minmax(0,1fr);gap:10px;min-height:0}
.wall-right .wp{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.wp-world{grid-column:1/3;grid-row:1;cursor:pointer} .wp-world:hover{border-color:#9fc1ff} .wp-world .wm-small{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.wall-feed{grid-column:3;grid-row:1/3;background:#0a1428;border:1px solid #223559;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;min-height:0}
.wp-trend{grid-column:1;grid-row:2} .wp-inc{grid-column:2;grid-row:2}
/* (c197) 전체화면 표시 글자 — 일반 지도의 .mp text 흰 테두리를 타지 않는다 */
.wall .wmp{cursor:pointer} .wall .wmp text{paint-order:normal;stroke:none;font-family:var(--font)}
.wall-body.nofeed .wp-world{grid-column:1/4} .wall-body.nofeed .wp-trend{grid-column:1/3} .wall-body.nofeed .wp-inc{grid-column:3}
.wall-tick{overflow:hidden;white-space:nowrap;border-top:1px solid #1e2e4a;background:#0a1224;padding:5px 0;font-size:13.5px;color:#dbe4f3}
.wall-tick-in{display:inline-block;padding-left:100%;animation:wtick 45s linear infinite;will-change:transform} .wall-tick:hover .wall-tick-in{animation-play-state:paused}
.wall-tick .tk-sec{margin-right:56px} .wall-tick .tk-ok{color:#3ddc97;font-weight:700} .wall-tick .tk-ng{color:#ff8a8a;font-weight:700} .wall-tick .tk-amb{color:#ffb020;font-weight:700} .wall-tick #w-tclock{color:#ffd27a;font-variant-numeric:tabular-nums}
@keyframes wtick{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.wm-h{display:flex;gap:8px;align-items:baseline;margin-bottom:4px;font-size:12.5px;flex:0 0 auto} .wm-h b{color:#fff;font-size:13.5px}
.wm-legend{display:flex;gap:12px;font-size:11px;color:#b9c8e0;margin-top:4px;flex:0 0 auto} .wm-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:-1px}
.wf-list{flex:1;overflow:auto;min-height:0} .wf{display:block;padding:5px 6px;border-bottom:1px solid #16233d;font-size:12px;cursor:pointer} .wf:hover{background:#111f3a}
.wf .wf-h{display:flex;gap:6px;align-items:baseline;white-space:nowrap;overflow:hidden;font-size:11px;margin-bottom:2px}
.wf .wf-t{color:#ffd27a;font-variant-numeric:tabular-nums;flex:0 0 auto} .wf .wf-c{color:#8fb3ff;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0} .wf .wf-r{display:inline-block;background:#1b2f55;border-radius:3px;padding:0 5px;font-size:10.5px;color:#cfe0ff;flex:0 0 auto} .wf .wf-x{display:block;color:#e6eefb;font-size:12.5px;line-height:1.35}
.wf.new{animation:wflash 6s ease-out} .wi.new{animation:wflash 6s ease-out}
.wp{background:#0a1428;border:1px solid #223559;border-radius:10px;padding:8px 10px;min-height:0;overflow:auto}
.wtr-list{flex:1;min-height:0;overflow:hidden;display:grid;grid-auto-rows:minmax(0,1fr);row-gap:2px}
.wtr{display:grid;grid-template-columns:86px 1fr 48px;gap:8px;align-items:center;min-height:0} .wtr .wl{font-size:12.5px;color:#cfe0ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wtr .wn{text-align:right;font-weight:700;color:#fff;font-size:13px} .wtr svg.wspark{display:block;width:100%;height:100%;min-height:0;max-height:56px}
.wp-trend{overflow:hidden}
.wi-list{flex:1;min-height:0;overflow:auto}
.wi{display:grid;grid-template-columns:8px 1fr;gap:8px;padding:4px 2px;border-bottom:1px solid #16233d;cursor:pointer;align-items:center} .wi:hover{background:#111f3a} .wi .wi-b{width:8px;height:8px;border-radius:50%} .wi .wi-x{font-size:12px;color:#e6eefb} .wi .wi-m{grid-column:2;font-size:10.5px;color:#8ea2c6} .wnew{color:#ffb020;animation:wblink 1.2s steps(2) infinite}
.wkw{display:flex;flex-wrap:wrap;gap:5px;overflow:hidden} .wkw .kw{background:#132446;border:1px solid #2b4370;border-radius:14px;padding:2px 9px;font-size:11.5px;color:#e6eefb} .wkw .kw b{color:#8fb3ff;margin-left:3px} .wkw .kw i{font-style:normal;color:#ff8a8a;margin-left:4px;font-size:11px}
.wch-bar{height:9px;background:#16233d;border-radius:5px;overflow:hidden;margin:4px 0} .wch-bar i{display:block;height:100%;background:linear-gradient(90deg,#3ddc97,#6ea8ff)} .wch .ok{color:#3ddc97;margin-right:8px} .wch .ng{color:#ff8a8a;margin-right:8px}
.wall-foot{padding:4px 18px;font-size:11px;color:#8ea2c6;border-top:1px solid #1e2e4a;background:#0a1224}
.wring{fill:none;stroke:#ffb020;transform-box:fill-box;transform-origin:center;animation:wring 2.4s ease-out infinite} .wring.d2{animation-delay:1.2s}
@keyframes wring{0%{transform:scale(1);opacity:.95}100%{transform:scale(4.2);opacity:0}}
@keyframes wflash{0%{background:#2a4a17}60%{background:#1a2f16}100%{background:transparent}}
@keyframes wblink{50%{opacity:.25}}
/* (c195) 관리자 설정 — 묶음 줄(위) + 탭 줄(아래) */
.admin-groups .seg.lg button{font-weight:700} .admin-tabs .seg{flex-wrap:wrap}
/* (c232) 알림 벨 — 화면 오른쪽 맨 위(계정 자리). 목록은 벨 아래로 열리고, 새 알림은 그 옆에 잠깐 뜬다. */
.bellwrap{position:relative;display:inline-flex;align-items:center}
.bell{background:transparent;border:1px solid rgba(255,255,255,.28);color:#fff;border-radius:16px;padding:3px 9px;font-size:13px;line-height:1.2;cursor:pointer}
.bell:hover{background:rgba(255,255,255,.12)}
.bell.has{border-color:#ffd166}
.bell-n{display:inline-block;min-width:16px;padding:0 5px;margin-left:3px;border-radius:9px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;vertical-align:1px}
.bellpop{position:absolute;right:0;top:32px;width:430px;max-height:60vh;overflow:auto;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 28px rgba(19,42,75,.22);z-index:900;padding:8px}
.bellpop h4{margin:2px 6px 8px;font-size:12.5px;color:var(--mute);font-weight:700;display:flex;align-items:center;gap:6px}
.bellpop .arow{display:block;width:100%;text-align:left;border:1px solid transparent;border-radius:6px;padding:7px 8px;background:#fff;cursor:pointer}
.bellpop .arow:hover{background:var(--pri-s);border-color:#b9cdf0}
.bellpop .arow.new{background:#fffdf3;border-color:#f0dfa8}
.bellpop .arow .t{font-size:12.5px;font-weight:700}
.bellpop .arow .m{font-size:11.5px;color:var(--mute);margin-top:2px}
.bellpop .arow .w{font-size:10.5px;color:#93a0b4;margin-top:2px}
.bellpop .arow.bad .t{color:var(--red)}
.bellpop .foot{display:flex;gap:8px;align-items:center;padding:6px 6px 2px;border-top:1px solid var(--line);margin-top:6px;font-size:11.5px;color:var(--mute)}
.belltoast{position:absolute;right:0;top:32px;width:330px;background:#0f2445;color:#fff;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.28);padding:10px 12px;z-index:901;font-size:12.5px;animation:bellin .25s ease-out}
.belltoast b{display:block;font-size:13px;margin-bottom:3px}
.belltoast .m{color:#c8d6ea}
@keyframes bellin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* (c234) 나의 임무 설정 — 계정 이름 옆(머리 띠). 화면 머리에 있던 것을 옮겼다. */
.tp-mission{background:transparent;border:1px solid rgba(255,255,255,.28);color:#fff;border-radius:14px;padding:3px 10px;font-size:11.5px;cursor:pointer;margin-left:10px;white-space:nowrap;flex:none}   /* (c237) 내 설정 · (c254) 알림벨 오른편 */
.tp-mission:hover{background:rgba(255,255,255,.12)}
/* (c235) 모드 고르기 — 가운데에서 크게 고른다. 그림은 인라인 SVG 라 오프라인·데모본에서도 같이 보인다. */
.modewrap{max-width:900px;margin:18px auto 0;padding:0 8px}
.modehd{text-align:center;margin-bottom:18px}
.modehd h2{margin:0 0 6px;font-size:22px;letter-spacing:-.4px}
.modegrid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto 150px auto auto auto;column-gap:16px;row-gap:10px;align-items:start}   /* (c238·c239) 여섯 줄 = 제목·부제·그림·설명·강조·단추 */
.modecard{display:grid;grid-row:span 6;grid-template-rows:subgrid;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 16px 14px;cursor:pointer;
  box-shadow:0 1px 3px rgba(19,42,75,.06);transition:border-color .12s,box-shadow .12s,transform .12s}   /* (c238) subgrid — 두 카드의 같은 칸이 같은 수평선에 놓인다 */
.modecard:hover{border-color:var(--pri);box-shadow:0 6px 18px rgba(19,42,75,.12);transform:translateY(-1px);background:#fff}
.modecard.on{border-color:var(--pri);box-shadow:0 0 0 2px var(--pri-s) inset}
.modecard .t{font-size:20px;font-weight:800;color:var(--navy);line-height:30px;letter-spacing:-.3px}   /* (c239) 그림 위의 머리 — 글씨를 키웠다 */
.modecard .s{font-size:13px;color:var(--mute);line-height:20px;margin-top:-4px}
.modecard .art{height:150px;overflow:visible}
.modecard .art svg{display:block}
.modecard .ml{margin:0;padding-left:18px;align-self:start}
.modecard .ml li{font-size:12.5px;line-height:1.7;color:var(--ink)}
.modecard .note{font-size:12.5px;font-weight:700;color:var(--pri);background:var(--pri-s);border-radius:6px;padding:7px 9px;min-height:36px;display:flex;align-items:center;align-self:stretch}
.modecard .pick{text-align:center;font-size:12.5px;font-weight:700;color:#fff;background:var(--pri);border-radius:6px;padding:9px 8px;align-self:end}
.modecard.on .pick{background:var(--grn)}
@supports not (grid-template-rows:subgrid){.modecard{display:flex;flex-direction:column;gap:10px}.modecard .ml{flex:1}}
@media (max-width:760px){.modegrid{grid-template-columns:1fr;grid-template-rows:none}.modecard{grid-row:auto;grid-template-rows:auto auto 150px auto auto auto;row-gap:10px}}
.modefoot{margin:18px auto 0;text-align:center;font-size:12px;color:var(--mute)}
/* (c236) 일반 모드 홈 — 요즘 쓰는 AI 화면처럼 가운데로 모으고, 그 아래에 8대 안보영역을 둔다. */
.home{max-width:820px;margin:26px auto 40px;padding:0 10px}
.hgreet{text-align:center;font-size:26px;letter-spacing:-.6px;margin:0 0 6px}
.hsub{text-align:center;color:var(--mute);font-size:13px;margin-bottom:20px}
.hbox{border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 10px rgba(19,42,75,.06);background:#fff;padding:10px 12px 8px}
.hbox:focus-within{border-color:var(--pri);box-shadow:0 2px 14px rgba(31,95,191,.14)}
.hbox textarea{width:100%;border:none;outline:none;resize:vertical;font-family:inherit;font-size:14px;line-height:1.6;color:var(--ink);background:transparent}
.hbox textarea::placeholder{color:#9aa6b8}
.hbar{display:flex;align-items:center;gap:8px;border-top:1px solid #f0f3f8;padding-top:8px;margin-top:6px}
.hplus{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid #d5dce8;background:#fff;color:#4b5a70;cursor:pointer;transition:all .12s}
.hplus:hover{background:var(--pri-s);border-color:var(--pri);color:var(--pri)}
.hsend{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:none;background:var(--pri);color:#fff;cursor:pointer;box-shadow:0 2px 6px rgba(31,95,191,.35);transition:all .12s}
.hsend:disabled{opacity:.45;box-shadow:none}
.hsend svg,.hplus svg{width:16px;height:16px}
.hsend:hover{background:#184c99}
.hsec{margin-top:28px}
/* (c290) 유형의 대표 샘플 카드 — AI 를 부르기 전 보이는 것 */
.hsample{margin-top:12px;border:1px dashed #b9cdf0;border-radius:10px;padding:10px 12px;background:#f7faff}
.hsample .kw{display:inline-block;padding:1px 8px;margin:2px 2px 2px 0;border:1px solid #d5dce8;border-radius:12px;background:#fff;font-size:12px}
.hsample .row{flex-wrap:wrap;gap:8px}
/* (c291) 대표 검색어는 누르는 단추 · 내가 더한 검색어는 남색 칩 · 검색어 추가 칸 */
.hsample button.kw{cursor:pointer;font-family:inherit;color:var(--ink)} .hsample button.kw:not(.on):hover{border-color:var(--pri);background:var(--pri-s)}   /* 더한 칩은 hover 에도 남색(누른 직후 흰 글자가 떴다 · 실측) */
.hsample .kw.on{background:var(--navy);color:#fff;border-color:var(--navy)} .hsample .kw .x{cursor:pointer;margin-left:2px;font-weight:700}
.hsample .hkwrow{align-items:center;gap:6px} .hsample .hkw-in{width:180px;height:26px;padding:2px 8px;border:1px solid var(--line);border-radius:6px;font-size:12px;font-family:inherit}
.hsec-hd{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.hdoms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}   /* (c237) minmax(0,…) — 긴 글이 칸을 밀어 오른쪽이 잘려 보였다 */
@media (max-width:860px){ .hdoms{grid-template-columns:repeat(2,1fr)} }
.hdom{display:flex;align-items:center;gap:8px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 10px;cursor:pointer;min-width:0;overflow:hidden}
.hdom:hover{border-color:var(--pri);background:var(--pri-s)}
.hdom.on{border-color:var(--pri);background:var(--pri-s);box-shadow:0 0 0 1px var(--pri) inset;color:var(--ink)}   /* (c291) 색을 안 적으면 button.on{color:#fff} 이 이겨 연파랑 바탕에 흰 글자(사용자 실측) */
.hdom.on .tx b{color:var(--navy)}
.hdom .ic{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--pri-s);color:var(--pri);flex:none}
.hdom .tx{display:flex;flex-direction:column;line-height:1.35;min-width:0}
.hdom .tx b{font-size:12.5px}
.hdom .tx .small{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdom .cnt{margin-left:auto;font-size:10.5px;color:var(--mute);flex:none}
/* (c235) 흐름 라인은 눌러서 옮긴다 — 지나온 칸(초록 ✓) · 지금 칸(파랑) · 앞으로 올 칸(회색) */
.qz-steps.gsteps .st{display:inline-flex;align-items:center;gap:6px;border:none;cursor:pointer;font-family:inherit}
.qz-steps.gsteps .st .sarrow{margin-left:auto;opacity:.55}
.qz-steps.gsteps .st:hover{filter:brightness(.97)}
/* (c235) 수집 창구 규모 — 좌우로 옮기는 토글 셋. 설명은 빼고 곳 수만 둔다(화면이 커지던 것을 줄였다). */
.scalebar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scseg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.scseg .sc{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:86px;padding:6px 12px;border:none;border-right:1px solid var(--line);background:#fff;cursor:pointer;font-family:inherit}
.scseg .sc:last-child{border-right:none}
.scseg .sc b{font-size:12.5px}
.scseg .sc span{font-size:11px;color:var(--mute)}
.scseg .sc.on{background:var(--pri);color:#fff}
.scseg .sc.on span{color:#e8f0fd}
.sarr{width:28px;height:28px;border-radius:6px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:14px;line-height:1}
.sarr:disabled{opacity:.35;cursor:default}
.chanwrap{max-height:60vh;overflow:auto;padding:10px 14px}
.chanwrap details{border-bottom:1px solid #eef1f6;padding:6px 0}
.chanwrap summary{cursor:pointer;font-weight:700;font-size:12.5px}
.chanwrap summary .cnt{display:inline-block;min-width:18px;padding:0 6px;margin-left:6px;border-radius:9px;background:#eef1f6;color:#5c6b80;font-size:10.5px}
.chanwrap ul{margin:6px 0 2px 18px;padding:0}
.chanwrap li{font-size:12px;line-height:1.9;list-style:disc}
/* (c236) 추가 입력 사항 — 값은 칩이다(× 로 지우고 '보기' 로 우리가 가진 자료를 본다) */
.needrow{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-top:1px solid #f2f5f9}
.needrow:first-of-type{border-top:none}
.needrow .nl{min-width:150px;display:flex;flex-direction:column;line-height:1.4}
.needrow .nl b{font-size:12.5px}
.needrow .nv{flex:1;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.vchip{display:inline-flex;align-items:center;gap:4px;background:var(--pri-s);border:1px solid #cfdcf4;border-radius:14px;padding:2px 4px 2px 10px;font-size:12px}
.vchip .vb{border:none;background:#fff;border-radius:10px;font-size:10.5px;padding:1px 6px;cursor:pointer;color:var(--pri)}
.vchip .vx{border:none;background:transparent;color:#7b8797;font-size:13px;line-height:1;cursor:pointer;padding:0 4px}
.vchip .vx:hover{color:var(--red)}
.vadd{width:150px;border:1px dashed var(--line);border-radius:12px;padding:3px 9px;font-size:12px}
.chanwrap li.need{background:#fffaf0;border-radius:4px;padding:1px 4px}
/* (c237) 8단계 띠 아래의 3단계 띠 — 어느 단계가 어느 칸에 드는지 선으로 잇는다(두 모드가 같은 주제를 본다) */
.stage3wrap{margin:-6px 0 10px}
.stage3wrap .tie{display:flex;height:8px;margin:0 10px}
.stage3wrap .tie span{border-left:1px solid #cfd8e6;border-right:1px solid #cfd8e6;border-bottom:1px solid #cfd8e6;border-radius:0 0 4px 4px}
.stage3{display:flex;gap:6px;margin:0 10px}
.stage3 .g3{display:flex;align-items:center;gap:6px;justify-content:center;padding:5px 8px;border:1px solid var(--line);border-radius:6px;
  background:#fff;color:var(--mute);font-size:11.5px;text-decoration:none}
.stage3 .g3:hover{border-color:var(--pri);color:var(--pri);background:var(--pri-s)}
.stage3 .g3 .n{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#eef1f6;color:#5c6b80;font-size:10px;font-weight:700}
.stage3 .g3 .rng{font-size:10.5px;opacity:.75}
.stage3 .g3.cur{border-color:var(--pri);background:var(--pri-s);color:var(--pri);font-weight:700}
.stage3 .g3.cur .n{background:var(--pri);color:#fff}
.stage3 .g3.done{border-color:var(--grn);color:var(--grn)}
.stage3 .g3.done .n{background:var(--grn);color:#fff}
/* (c238) ① 수집 요청 — 하나씩 열리는 세 묶음. 지난 묶음은 ✓ 와 요약 한 줄로 접힌다. 숫자 배지는 흐름 라인에만 있다. */
.wz{padding:0;overflow:hidden}
.wz-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid transparent}
.wz-h.open{border-bottom-color:var(--line);background:#fafcff}
.wz-h b{font-size:13.5px}
.wz-h .wz-sub{font-size:12px}
.wz-ic{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#e9eef6;color:#7b8797;font-size:11px;font-weight:800}
.wz-h.open .wz-ic{background:var(--pri);color:#fff}
.wz-h.done .wz-ic{background:var(--grn);color:#fff}
.wz-b{padding:12px 14px 14px}
.wz-s{padding:8px 14px 10px 42px;font-size:12px;color:var(--mute)}
.quote{background:#f6f8fb;border-left:3px solid var(--pri);border-radius:6px;padding:9px 12px;font-size:13.5px;line-height:1.6}
/* 영역 → 유형을 잇는 판: 고른 영역 칩 아래에 홈이 생기고 그 아래 판이 붙는다 */
.domrow .dchip.on{position:relative}
.domrow .dchip.on:after{content:"";position:absolute;left:50%;bottom:-11px;width:12px;height:12px;background:var(--pri-s);border-left:1px solid var(--pri);border-top:1px solid var(--pri);transform:translateX(-50%) rotate(45deg)}
.typepanel{margin-top:10px;border:1px solid var(--pri);border-radius:8px;background:var(--pri-s);padding:10px 12px}
.typepanel .tp-h{display:flex;align-items:center;gap:6px;font-size:12.5px;margin-bottom:8px}
.typepanel .qz-types .tchip{background:#fff}
.needhd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:10px;border-top:1px dashed var(--line)}
.needhd b{font-size:12.5px}
/* (c241) 홈 입력 줄 — 파일 단추는 글자 있는 알약, 보내기 단추는 오른쪽 끝에 크게(둘을 떼어 놓는다) */
.hbar .sp{flex:1}
.hfile{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:16px;border:1px solid #d5dce8;background:#fff;color:#4b5a70;font-size:12.5px;cursor:pointer;white-space:nowrap}
.hfile:hover{background:var(--pri-s);border-color:var(--pri);color:var(--pri)}
.hfile svg{width:15px;height:15px}
.hsend{width:40px;height:40px;margin-left:12px;flex:none}
.hsend svg{width:18px;height:18px}
/* (c241) ① 수집 요청 — AI 가 읽은 것(인용문)과 사용자가 확인·고칠 것(검색어·영역·유형)을 나눈다 · 단추 둘은 같은 크기 */
.wz-acts{display:flex;gap:6px;align-items:center;margin-top:10px;flex-wrap:wrap}
.wz-acts .sm{min-width:132px;height:30px}
.wz-sec{border-top:1px dashed var(--line);padding-top:10px}
.kwbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.kchip{display:inline-flex;align-items:center;gap:4px;border:1px solid #b9cdf0;background:var(--pri-s);border-radius:14px;padding:3px 6px 3px 10px;font-size:12.5px;font-weight:600;color:var(--navy)}
.kchip.org{border-color:#e0b95a;background:#fffaf0}
.kchip .kx{border:none;background:transparent;color:#7b8797;cursor:pointer;font-size:11px;padding:0 2px;line-height:1}
.kchip .kx:hover{color:#c0392b}
.kwadd{display:inline-flex;gap:4px;align-items:center}
.typepanel .qz-types .tchip.on{background:var(--pri);color:#fff;border-color:var(--pri)}   /* (c241) 판 안의 흰 바탕 규칙이 이겨 추천 유형의 흰 글자가 안 보이던 것 */
/* (c241) 일반 모드 나의 탐지 목록 — 세로 카드(지켜보는 중 = 초록 띠) */
.tcard{border:1px solid var(--line);border-left:4px solid #c9d3e2;border-radius:8px;padding:10px 12px;background:#fff;margin-top:8px}
.tcard.live{border-left-color:var(--grn)}
.tcard.sel{border-color:var(--pri)}
.tcard .tn{font-size:13.5px}
.tsec .r{margin-left:auto;font-size:12px;color:var(--mute)}
/* (c242) 추가 입력 — 머리는 띠, 줄 이름 앞 그림, 첫 칩이 같은 x 에서 시작(앞단어 맞춤), 검색어 묶음은 묶음마다 한 줄 */
.needhd{background:#f6f8fb;border:1px solid #e6ebf3;border-radius:6px;padding:7px 10px;margin-top:12px}
.needrow .nl{width:260px;min-width:260px}   /* (c253) '해외 뉴스·NVD는 영문 입력 필요 · 창구 12곳' 이 한 줄에 */
.needrow .nl .nico{margin-right:4px}
.needrow[data-need="keyword_group"] .nv{flex-direction:column;align-items:flex-start}
.vchip.grp{border-radius:6px;padding:3px 6px 3px 10px}
/* (c242) 창구 트리 — 값이 필요한 창구는 노랗게 */
.tree .tr-item.need{background:#fff8e6;border-radius:4px;padding:1px 4px}
#g-tree .tree{border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff}
/* (c242) 기간·주기 한 줄씩 · 완료 상자 */
.pline{display:flex;align-items:center;gap:12px;padding:9px 0;flex-wrap:wrap}
.pline+.pline{border-top:1px dashed var(--line)}
.pline .pico{font-size:17px;width:24px;text-align:center}
.pline label{display:inline-flex;align-items:center;gap:8px}
.finish{margin-top:14px;padding:12px 14px;border:1px solid var(--grn);background:#f2fbf5;border-radius:8px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.finish .big{background:var(--grn);font-size:14px;padding:10px 20px;border-radius:8px}
.finish .big:hover{background:#1e7f4a}
/* (c242) 두 줄 진행 띠(일반 모드 카드) · 전문가 표 머리의 묶음 칸 */
.dual{display:grid;grid-template-columns:44px 1fr;gap:4px 8px;align-items:center;margin-top:8px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff}
.dual .dl{font-size:11px;color:var(--mute);text-align:right}
.d8row{display:flex;gap:4px} .d8row .d8{flex:1;text-align:center;font-size:11px;border:1px solid var(--line);border-radius:4px;padding:2px 0;color:var(--mute)}
.d8row .d8.done{border-color:var(--grn);color:var(--grn)} .d8row .d8.cur{border-color:var(--pri);background:var(--pri-s);color:var(--pri);font-weight:700}
.d3row{display:flex;gap:4px} .d3row .d3{display:flex;align-items:center;justify-content:center;gap:5px;font-size:12px;border:1px solid var(--line);border-radius:4px;padding:3px 0;color:var(--mute)}
.d3row .d3 b{display:inline-flex;width:15px;height:15px;border-radius:50%;background:#eef1f6;font-size:10px;align-items:center;justify-content:center;color:#5c6b80}
.d3row .d3.done{border-color:var(--grn);color:var(--grn)} .d3row .d3.done b{background:var(--grn);color:#fff}
.d3row .d3.cur{border-color:var(--pri);background:var(--pri-s);color:var(--pri);font-weight:700} .d3row .d3.cur b{background:var(--pri);color:#fff}
th.g3h{text-align:center;background:#eef3fb;color:var(--navy);font-weight:700;border-bottom:1px solid #d5dce8}
th .lbl{display:inline-block;font-size:10px;color:var(--mute);font-weight:600;margin-right:4px;vertical-align:middle}
/* (c243) 일반 모드에서 뺀 창구 — 트리에서 흐리게 */
.tree .tr-item.skip{opacity:.45;text-decoration:line-through}
.skipnote{padding:6px 10px;border-left:3px solid #d5dce8;background:#fafbfd;border-radius:4px}
/* (c245) 참고 영역 — 회색 판 + 세로로 긴 실물 카드(입력 칸과 다른 모양임이 보이게) */
.refarea{margin-top:18px;padding:12px 14px 14px;background:#f3f5f9;border:1px dashed #c3cedd;border-radius:10px}
.ref-tag{display:inline-block;font-size:11px;font-weight:700;color:#5c6b80;background:#e4e9f1;border-radius:4px;padding:1px 7px;margin-right:8px}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:10px}
.rcard{display:flex;flex-direction:column;gap:8px;min-height:330px;background:#fff;border:1px solid var(--line);border-top:6px solid #c9d3e2;border-radius:10px;padding:12px 12px 12px;box-shadow:0 1px 3px rgba(19,42,75,.06)}
.rcard.live{border-top-color:var(--grn)}
.rc-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--mute)}
.rc-st{font-weight:700;color:#5c6b80;background:#f1f4f8;border-radius:10px;padding:1px 8px} .rcard.live .rc-st{color:var(--grn);background:#eaf7ef}
.rc-n{font-weight:800;font-size:14px;line-height:1.35;color:var(--navy);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:38px}
.rc-c{display:flex;gap:14px;font-size:11.5px;color:var(--mute)} .rc-c b{font-size:16px;color:var(--ink);margin-right:3px}
.rc-st3{list-style:none;margin:0;padding:8px 0 0;border-top:1px solid #f0f3f8;display:flex;flex-direction:column;gap:5px}
.rc-st3 li{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mute)}
.rc-st3 li b{width:16px;height:16px;border-radius:50%;background:#eef1f6;font-size:10px;display:inline-flex;align-items:center;justify-content:center;color:#5c6b80;flex:none}
.rc-st3 li.done{color:var(--grn)} .rc-st3 li.done b{background:var(--grn);color:#fff}
.rc-st3 li.cur{color:var(--pri);font-weight:700} .rc-st3 li.cur b{background:var(--pri);color:#fff}
.rc-st3 .dots{margin-left:auto;display:inline-flex;gap:3px} .rc-st3 .dots u{width:6px;height:6px;border-radius:50%;background:#dde3ec;display:inline-block;text-decoration:none} .rc-st3 .dots u.on{background:currentColor}
.rc-k{display:flex;flex-wrap:wrap;gap:4px} .rc-k span{font-size:11px;background:#f1f4f8;border-radius:4px;padding:1px 6px;color:#4b5a70} .rc-k .more{background:transparent;color:var(--mute)}
.rc-f{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid #f0f3f8} .rc-f .sm{width:100%}
/* (c246) ② 데이터 분석 — 단추 둘 같은 크기(보고서 생성 · 보고서 다시 만들기) · 필터 줄은 내용 카드 머리에 */
.runbar .pri{min-width:170px;height:34px}
button.pri.alt{background:#fff;color:var(--pri);border-color:var(--pri)} button.pri.alt:hover{background:var(--pri-s)}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #f0f3f8}
.ivcustom{display:inline-flex;gap:4px;align-items:center;margin-left:6px}
/* (c248) ① 소제목 셋은 같은 글씨(13px 굵게) + 그림 · 기관 칸은 넓게 · 필수 입력 보기(기관 카드 + 창구 줄 + 입력 칩) · 보기 팝업 덧붙임 */
.wz-lbl{font-size:13px;font-weight:700;color:var(--navy)}
.vadd{width:190px} .vadd[data-gadd="company"]{width:240px}
.chanwrap2{max-height:62vh;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:2px}
.chorg{border:1px solid var(--line);border-radius:8px;background:#fff}
.chorg summary{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;list-style:none;font-size:12.5px}
.chorg summary::-webkit-details-marker{display:none}
.chorg summary .mono{width:22px;height:22px;border-radius:50%;background:#e9eef6;color:#334155;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}
.chorg summary .cnt{font-size:11px;color:var(--mute);background:#f1f4f8;border-radius:9px;padding:0 7px}
.chlist{border-top:1px solid #f0f3f8;padding:4px 10px 8px}
.chrow{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:6px}
.chrow+.chrow{border-top:1px dashed #f0f3f8}
.chrow.need{background:#fff8e6}
.chrow .chn{flex:1;display:flex;flex-direction:column;min-width:0} .chrow .chn b{font-size:12.5px}
.chneeds{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;max-width:52%}
.nchip{font-size:11.5px;background:#fff;border:1px solid #e6c98a;color:#7a5a12;border-radius:10px;padding:1px 8px;white-space:nowrap}
.orgx{border-top:1px solid var(--line);padding-top:10px}
/* (c249) ② 사건 한 줄 · 요청 색 표 · 6축 막대 · 보고서 표 한 줄 · 못 돈 창구 열어 보기 · 보고서 팝업은 본문 폭(170mm)에 맞춘다 */
.irow{display:flex;align-items:center;gap:8px;padding:7px 8px;border-top:1px solid #f0f3f8;flex-wrap:wrap}
.irow:first-child{border-top:none}
.irow .ititle{font-weight:700;color:var(--navy);flex:1;min-width:220px;cursor:pointer;font-size:13px} .irow a.ititle:hover{text-decoration:underline}
.tpill{font-size:11px;border-radius:10px;padding:1px 8px;white-space:nowrap}
.axes{display:flex;flex-direction:column;gap:4px}
.axisrow{display:flex;align-items:center;gap:8px;font-size:12px} .axisrow .al{width:120px;flex:none;color:var(--ink)} .axisrow .bar{flex:1;height:8px;background:#eef1f6;border-radius:4px;overflow:hidden} .axisrow .bar i{display:block;height:100%;background:var(--pri)} .axisrow b{width:28px;text-align:right}
.reptab td.rlinks{white-space:nowrap} .reptab td.rtitle{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
details.skipped summary{cursor:pointer;color:var(--pri)} details.skipped ul{margin:6px 0 0 16px}
.basis .m{display:flex;align-items:center;gap:6px;flex-wrap:wrap} .basis .m .sm{margin-left:auto}
.rp-box{width:min(760px,96vw)}
/* (c250) 보고서에서 뺀 사건은 흐리게 · 전문가 나의 탐지 목록의 단계 칸은 같은 폭 */
.irow.excl{opacity:.55}
.card.pad0 table th.num,.card.pad0 table td.num{width:74px;min-width:74px;text-align:center}
.card.pad0 table td.num .small{font-size:10.5px}
.card.pad0 table td.stcol{min-width:200px} .card.pad0 table td.stcol .chips{gap:4px}   /* (c250) 상태 단추가 한 줄에 */
/* (c252) 보고서 주요 항목 수정 팝업 · 단추 범례 */
.secrows{display:flex;flex-direction:column;gap:6px}
.secrow{display:flex;gap:6px;align-items:center} .secrow .secn{width:20px;text-align:center;color:var(--mute);font-size:12px} .secrow .sec-t{width:170px} .secrow .sec-d{flex:1}
.btnlegend{display:block;padding:6px 8px;background:#f6f8fb;border-radius:6px;line-height:1.7}   /* .legend 는 그래프 범례가 쓰는 이름이라 겹쳤다(c252 실측: 표처럼 깨짐) */
/* (c254) 기다림 표시 · 1회 수집 예상 시간 · 보고서 구성 줄 · 목록 카드 부분 갱신 */
.wait{color:var(--pri);margin-left:8px;white-space:nowrap}
.est{min-height:18px}
.secrow2{flex-wrap:wrap;gap:6px;align-items:center}
.secrow2 .tag{margin:0}
/* (c290) 보고서 구성의 하위 항목 — 타임라인 summary 와 같은 ▸ 말머리(강조색 · 14px 칸) 를 앞에 두고 한 단 들여쓴다 */
.secrow2.sub{padding-left:8px} .secrow2 .sub-lbl::before{content:"▸";display:inline-block;width:14px;color:var(--acc);font-weight:400}
#g-listcard{transition:opacity .15s}
/* (c255) 내 설정 — 역할 폼은 격자(칸이 한 줄에 맞는다) · 담당 업무 줄 +/- · 만들기/취소 같은 크기 */
.gr-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;align-items:start}
.gr-form label{display:flex;flex-direction:column;gap:4px;margin:0} .gr-form label.wide,.gr-form .gr-duties{grid-column:1/-1}
.gr-form input{width:100%;box-sizing:border-box}
.gr-duties{display:flex;flex-direction:column;gap:6px} .gr-lbl{display:block} .gr-dutyrow{gap:6px;flex-wrap:nowrap} .gr-dutyrow input{flex:1} .gr-dutyrow button{width:32px}
.gr-acts .gr-btn{min-width:130px;height:34px;font-size:13px;padding:0 14px}
/* (c257) 상단 오른쪽 묶음 — 벨 · 내 설정 · 계정. 내 설정은 벨에 붙고(6px), 계정 이름은 길면 두 줄로 접힌다(높이 48px 안) */
.tp-acct{display:inline-flex;align-items:center;gap:6px;max-width:420px}
.tp-acct .tp-mission{margin-left:0}
.tp-acct #tp-user{flex:0 0 auto;width:max-content;max-width:150px;white-space:normal;overflow-wrap:anywhere;line-height:1.15;font-size:12px;text-align:left;margin-left:4px}
.secpages{gap:8px;align-items:center;flex-wrap:wrap} .tag.pages{background:#eef4ff;border-color:#c7d7f5}
/* (c258) 내 설정 — 머리 줄과 그 아래 칩·체크 사이를 띄운다 · 저장하기 줄 */
.gpc > .row:first-child{margin-bottom:12px}
.gpc > .qz-doms{margin-top:2px}
.gp-save .row{align-items:center;gap:12px} .gp-save .pri.big{min-width:150px;height:40px;font-size:14px}
/* (c273) 공용 확인 상자 — 리포트 창(.rp-modal)과 같은 덮개, 작은 상자 */
.rp-modal.ask-modal .rp-box{width:min(460px,92vw);height:auto;padding:16px 18px;overflow:visible}
.ask-msg{white-space:pre-wrap;line-height:1.55;font-size:13px;color:#1f2a3d}
.ask-acts{gap:8px;margin-top:12px;align-items:center}
/* (c274) 나의 탐지 목록 — AI 도구 상자 */
.rp-modal.tk-modal .rp-box{width:min(1180px,97vw);height:min(92vh,1100px)}
.tk-body{padding:12px 14px;overflow:auto;flex:1}
.tk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px}
.tk-sec h4{margin:0 0 8px;font-size:13px}
.tk-table{width:100%;font-size:12px}.tk-table th,.tk-table td{padding:3px 6px}.tk-table td.num{text-align:right}.tk-table td.left,.tk-table th.left{text-align:left}
.tk-sug{gap:8px;padding:4px 0;border-bottom:1px dashed var(--line)}
/* (c276) 생성 시점 규칙 편집 창 */
.rp-modal.rules-modal .rp-box{width:min(760px,95vw);height:auto;max-height:90vh}
.rules-box .tk-body{overflow:auto;max-height:calc(90vh - 52px)}
.rule-ed input,.rule-ed textarea{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:4px}
/* (c278) 단추 옆 기다림 표시 */
.run-wait{margin-left:8px;color:var(--pri);white-space:nowrap;font-size:12px}
.reptab tr.pending td{background:#fff8e6}
/* (c286) 안보영역 화면 3번 세부 — 1:2 격자의 왼쪽 창구 표가 칸보다 넓어 오른쪽 열(상태·건)이 잘렸다(사용자 지적 2026-09-26). 칸이 줄어들 수 있게 하고 표는 칸 안에서 가로로 민다 */
.g-1-2{grid-template-columns:minmax(0,1fr) minmax(0,2fr)} .g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr)} .g-3-2{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
.g>.card.pad0{min-width:0;overflow-x:auto} .g>.card.pad0>table{min-width:100%}
