#workbench{flex:1; display:none; min-height:0}
body.lab-mode #sidebar{display:none}
body.lab-mode #composer-wrap{display:none}
body.lab-mode #chat{display:none}
/* 열이 짓눌리지 않도록 최소 폭을 준다 — 결과 열이 340px 상세 패널보다 좁아지면
   패널·툴팁이 열 밖으로 삐져나온다. */
body.lab-mode #workbench{display:grid;
  grid-template-columns:minmax(240px,300px) minmax(320px,430px) minmax(360px,1fr)}

/* 1열로 접히는 지점을 1,100px 로 올린다(base.css 의 860px 규칙보다 뒤에 온다).
   열마다 내부 스크롤을 줘서 긴 법령 목록이 조문·실행 버튼을 화면 밖으로 밀지 않게. */
@media (max-width:1100px){
  body.lab-mode #workbench{grid-template-columns:1fr; overflow-y:auto}
  #workbench .wb-col{border-right:none; border-bottom:1px solid var(--line)}
  #workbench .wb-col:last-child{border-bottom:none}
  #workbench .wb-body{max-height:45vh}
}

/* 제목·부제 위계 — 기본 13pt 는 접근성 설정이므로 상대 배율만 쓴다 */
#workbench .wb-head{font-size:1.08em}
#workbench .wb-head .sub{font-size:.88em}

.wb-col{border-right:1px solid var(--line); display:flex; flex-direction:column; min-height:0; min-width:0}
.wb-col:last-child{border-right:none}

.law-row{width:100%; text-align:left; padding:9px 10px; border-radius:10px; font-size:var(--font-size-base);
  display:flex; gap:8px; align-items:center; color:var(--tx-dim)}
.law-row:hover{background:var(--bg-hover); color:var(--tx)}
.law-row.active{background:var(--accent-soft); color:var(--tx)}
.law-row .nm{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.law-row .cnt{margin-left:auto; font-size:var(--font-size-base); color:var(--accent);
  background:var(--accent-soft); padding:1px 8px; border-radius:999px; flex:none}
.law-row .lt{font-size:var(--font-size-base); color:var(--tx-faint); border:1px solid var(--line);
  padding:0 6px; border-radius:6px; flex:none}

.art-row{border:1px solid var(--line); border-radius:10px; margin-bottom:8px; background:var(--bg-card)}
.art-row.checked{border-color:var(--accent)}
.art-head{display:flex; gap:8px; align-items:center; padding:9px 10px; cursor:pointer; font-size:var(--font-size-base)}
.art-head input{accent-color:var(--accent); flex:none}
/* 펼치기 조작부는 진짜 <button> — 키보드(Tab·Enter·Space)로 닿게 하되 모양은 텍스트 그대로 */
.art-head .lbl{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  text-align:left; min-width:0; font:inherit; color:inherit}
.art-head .cnt{margin-left:auto; font-size:var(--font-size-base); color:var(--tx-faint); flex:none}
.art-edit{display:none; padding:0 10px 10px}
/* 직계(>)로 한정: 부모 조가 열려도 자식(항·호)의 textarea 가 함께 켜지지 않게
   (descendant 선택자였을 때 자식 스니펫과 textarea 가 겹쳐 보이던 버그 수정) */
.art-row.open > .art-edit{display:block}
.art-edit textarea{width:100%; min-height:110px; border:1px solid var(--line); border-radius:8px;
  background:var(--bg-input); color:var(--tx); font-size:var(--font-size-base); padding:8px; resize:vertical;
  font-family:inherit; box-sizing:border-box}
/* 본문이 수집되지 않은 단위 — 안내문이 '원문'으로 전송되지 않게 비활성 + 안내는 placeholder 로 */
.art-edit textarea:disabled{background:var(--bg-soft); color:var(--tx-faint); resize:none; cursor:not-allowed}
.art-edit .note{font-size:var(--font-size-base); color:var(--tx-faint); margin-top:4px}
.unit-chip{font-size:var(--font-size-base); color:var(--tx-faint); border:1px solid var(--line);
  padding:0 6px; border-radius:6px; flex:none}
.art-row > .sub-units{display:none; padding:0 8px 8px}
.art-row.open > .sub-units{display:block}
/* 미리보기도 자르지 않고 전문 표시(2줄 클램프 제거) — 줄바꿈·긴 토큰 깔끔히 래핑 */
.unit-snippet{font-size:var(--font-size-base); color:var(--tx-dim); padding:0 10px 0 34px; margin-bottom:8px;
  line-height:1.6; white-space:pre-wrap; word-break:break-word}
.art-row.open > .unit-snippet{display:none}

#radial-box{width:100%; position:relative}
.wb-list-title{font-size:1.08em; margin:18px 0 10px}
#workbench .wb-graph-card{margin-bottom:14px; height:clamp(500px,calc(100dvh - 246px),900px);
  display:flex; flex-direction:column; box-sizing:border-box}
#radial-box{flex:1; min-height:280px}
#radial-box svg{display:block; height:100%}
#radial-detail{position:absolute; top:8px; right:8px; width:min(340px, calc(100% - 16px)); max-height:calc(100% - 16px);
  overflow-y:auto; background:var(--bg-card); border:1px solid var(--line); border-radius:12px;
  box-shadow:var(--shadow); z-index:6; display:none}
.rd-head{display:flex; gap:8px; align-items:center; padding:10px 12px;
  border-bottom:1px solid var(--line); position:sticky; top:0; background:var(--bg-card)}
.rd-type{font-size:var(--font-size-base); padding:2px 8px; border-radius:999px; font-weight:700; flex:none}
.rd-title{font-size:var(--font-size-base); font-weight:700; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap}
.rd-close{margin-left:auto; color:var(--tx-faint); flex:none; font-size:var(--font-size-base); padding:2px 4px}
.rd-close:hover{color:var(--tx)}
.rd-body{padding:10px 12px}
.rd-field{margin-bottom:8px}
.rd-k{font-size:var(--font-size-base); color:var(--tx-faint); margin-bottom:2px}
.rd-v{font-size:var(--font-size-base); line-height:1.55; white-space:pre-wrap; word-break:break-word}
.rd-rel{font-size:var(--font-size-base); font-weight:700; margin:10px 0 4px; color:var(--tx-dim)}
.rd-rel .n{font-weight:500; color:var(--tx-faint)}
.rd-item{display:block; width:100%; text-align:left; font-size:var(--font-size-base); padding:4px 6px;
  border-radius:8px; color:var(--tx-dim); line-height:1.5; word-break:break-word}
.rd-item:hover{background:var(--bg-hover); color:var(--tx)}
.rd-more{font-size:var(--font-size-base); color:var(--tx-faint); padding:2px 6px}

.wb-foot{flex:none; padding:10px; border-top:1px solid var(--line)}
/* 실행 버튼은 조문을 고르기 전에는 실제로 눌리지 않는다(흐리게만 보이던 것을 바로잡음) */
#workbench .wb-analyze:disabled{opacity:.45; cursor:not-allowed}
.wb-hint{margin-top:6px; font-size:.9em; color:var(--tx-dim); text-align:center; line-height:1.5}

/* 게시(재검토 등록) 행 — 통계 알약과 구분되는 별도 줄의 주요 버튼 */
.wb-actions{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:10px;
  padding-top:10px; border-top:1px dashed var(--line)}
.wb-actions .wb-analyze{width:auto; padding:8px 16px; opacity:1}
#wb-publish-msg:empty{display:none}

/* 지식 카드 펼치기 — 공통 카드(knowledgeCard)에 화면에서 버튼 하나를 붙인다 */
#wb-result .k-card{cursor:pointer}
#wb-result .k-head .k-toggle{margin-left:8px; flex:none}

.noti-sec{margin-bottom:16px}
.noti-sec h4{font-size:var(--font-size-base); margin:0 0 8px; display:flex; gap:8px; align-items:center}
.noti-sec h4 .n{color:var(--tx-dim); font-weight:500; font-size:var(--font-size-base)}

.noti-row{border:1px solid var(--line); border-radius:10px; background:var(--bg-card);
  padding:8px 12px; margin-bottom:6px; font-size:var(--font-size-base); display:flex; gap:8px; align-items:center}
.noti-row .nm2{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.noti-row .kc{margin-left:auto; flex:none; font-size:var(--font-size-base); color:var(--amber)}

/* 영향 등급 판정 기준 — 상시 5행을 펼쳐두지 않고 <details> 로 접는다 */
.rule-box{border:1px solid var(--line); border-radius:12px; background:var(--bg-card);
  padding:10px 12px; margin-bottom:12px}
.rule-box .rb-title{font-size:var(--font-size-base); font-weight:700; margin-bottom:8px}
summary.rb-title{cursor:pointer; margin-bottom:0; color:var(--tx-dim)}
summary.rb-title:hover{color:var(--tx)}
.rule-box[open] > .rb-title{margin-bottom:8px; color:var(--tx)}
.rule-box .rb-note{font-size:.92em; color:var(--tx-dim); line-height:1.6; margin-top:8px;
  padding-top:8px; border-top:1px dashed var(--line)}
/* 규칙 칩이 한글 뜻(예: '질의회시 경유')으로 바뀌어 폭이 늘었다 — 좁은 열에서 줄바꿈되게 */
.rule-row{display:flex; gap:8px; align-items:baseline; flex-wrap:wrap; font-size:var(--font-size-base);
  color:var(--tx-dim); margin-bottom:5px; line-height:1.5}
.rule-row:last-child{margin-bottom:0}
.rule-row .sev-name{flex:none; font-weight:700; width:96px; color:var(--tx)}
.rule-row .chips{flex:none; display:flex; gap:3px; flex-wrap:wrap}
.rule-row > span:last-child{flex:1 1 240px; min-width:0}


/* 개정/폐지 토글 (시뮬레이터 푸터) */
.ct-toggle{display:flex; gap:0; margin-bottom:8px; border:1px solid var(--line);
  border-radius:10px; overflow:hidden}
.ct-opt{flex:1; padding:8px; font-size:var(--font-size-base); background:var(--bg-card); color:var(--tx-dim)}
.ct-opt.active{background:var(--accent); color:var(--accent-contrast); font-weight:600}
.ct-opt[data-ct="repeal"].active{background:var(--red)}

.wb-analyze.repeal.ready{background:var(--red)}

/* 알림 카테고리 탭 */
.noti-tabs{display:flex; gap:6px; margin:4px 0 12px; flex-wrap:wrap}
.noti-tab{padding:7px 13px; border-radius:999px; border:1px solid var(--line); font-size:var(--font-size-base);
  background:var(--bg-card); color:var(--tx-dim)}
.noti-tab:hover{border-color:var(--accent)}
.noti-tab.active{background:var(--accent); border-color:var(--accent); color:var(--accent-contrast)}

/* 문서(판례·회시·법령·조문) 행 — 클릭/Enter·Space 로 상세 펼침 */
.noti-item{border:1px solid var(--line); border-radius:10px; background:var(--bg-card);
  margin-bottom:6px; cursor:pointer}
.noti-item:hover{border-color:var(--accent)}
.ni-head{display:flex; gap:8px; align-items:center; padding:8px 12px; font-size:var(--font-size-base)}
.ni-type{font-size:var(--font-size-base); padding:1px 7px; border-radius:999px; font-weight:700; flex:none}
/* 펼치기 조작부는 진짜 <button> — 키보드로 닿게 하되 모양은 텍스트 그대로 */
.ni-head .nm2{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  text-align:left; min-width:0; font:inherit; color:inherit}
.ni-date{color:var(--tx-faint); font-size:var(--font-size-base); flex:none}
.ni-head .kc{margin-left:auto; flex:none; font-size:var(--font-size-base); color:var(--amber)}
.ni-head .chev{flex:none; color:var(--tx-faint); font-size:var(--font-size-base); transition:transform .2s}
.noti-item.open .chev{transform:rotate(90deg)}
.ni-snippet{font-size:var(--font-size-base); color:var(--tx-dim); line-height:1.6; padding:0 12px; margin-bottom:8px;
  white-space:pre-wrap; word-break:break-word}
.noti-item.open .ni-snippet{display:none}
.ni-detail{display:none; border-top:1px dashed var(--line); padding:10px 12px; cursor:default}
.noti-item.open .ni-detail{display:block}
