:root {
  --bg: #f5f6f8; --card: #fff; --fg: #1d2330; --muted: #6b7280; --line: #e3e6eb; --accent: #2457d6;
  --fail: #d92d20; --fail-bg: #fdecea; --review: #b54708; --review-bg: #fff4e5;
  --pass: #067647; --pass-bg: #e7f6ee; --skip: #6b7280; --skip-bg: #f1f2f4;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 17px/1.6 -apple-system, "Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif; }
header { display: flex; align-items: center; gap: 12px; padding: 12px 24px; background: #121a2e; color: #fff; position: sticky; top: 0; z-index: 5; }
header h1 { font-size: 19px; margin: 0; }
header .sub { color: #aab3c5; font-size: 16px; }
header select { max-width: 260px; }
main { max-width: 1400px; margin: 0 auto; padding: 20px 24px 60px; }
h2 { font-size: 17px; margin: 24px 0 10px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 16px; }
.row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.spacer { flex: 1; }
.muted { color: var(--muted); }
.hidden { display: none !important; }
.time { font-variant-numeric: tabular-nums; }
button { background: var(--accent); color: #fff; border: 0; border-radius: 6px; padding: 8px 16px; font: inherit; cursor: pointer; }
button:disabled { opacity: .45; cursor: not-allowed; }
button.ghost { background: transparent; color: var(--accent); border: 1px solid var(--line); }
input, select, textarea { font: inherit; padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; color: var(--fg); }
.badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 16px; background: var(--skip-bg); color: var(--skip); white-space: nowrap; }
.badge.ok { background: var(--pass-bg); color: var(--pass); }
.badge.bad { background: var(--fail-bg); color: var(--fail); }
.badge.run { background: #e8efff; color: var(--accent); }

#drop { position: relative; border: 2px dashed #c4cad6; border-radius: 10px; padding: 28px; text-align: center; cursor: pointer; transition: .15s; }
#drop.over { border-color: var(--accent); background: #eef3ff; }
#drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
#drop p { margin: 4px 0; }
#upload .row { margin-top: 14px; }

.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; }
#preview:not(:empty) { margin-top: 14px; }
.tile { background: var(--card); border: 1px solid var(--line); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
.tile .img { height: 200px; background: #eceef2 center/contain no-repeat; cursor: zoom-in; position: relative; }
.tile .meta { padding: 8px; display: flex; flex-direction: column; gap: 5px; font-size: 16px; }
.tile .name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.tile .line { display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.tile select { width: 100%; font-size: 16px; padding: 3px; }
.tile.running { border-color: var(--accent); box-shadow: 0 0 0 2px #dbe6ff; }
.tile.error { border-color: var(--fail); }
.tile .x { position: absolute; top: 4px; right: 4px; background: rgba(0,0,0,.55); color: #fff; border-radius: 50%; width: 22px; height: 22px; padding: 0; font-size: 16px; }
.spin { display: inline-block; width: 10px; height: 10px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: s .7s linear infinite; vertical-align: -1px; margin-right: 4px; }
@keyframes s { to { transform: rotate(360deg); } }

.status .steps { display: flex; gap: 6px; margin: 12px 0 8px; }
.status .steps div { flex: 1; text-align: center; padding: 6px; border-radius: 6px; background: var(--skip-bg); color: var(--muted); font-size: 16px; }
.status .steps div.active { background: #e8efff; color: var(--accent); font-weight: 600; }
.status .steps div.done { background: var(--pass-bg); color: var(--pass); }
.bar { height: 6px; background: var(--skip-bg); border-radius: 3px; overflow: hidden; }
#bar { height: 100%; width: 0; background: var(--accent); transition: width .3s; }
.error { margin-top: 10px; padding: 10px; border-radius: 6px; background: var(--fail-bg); color: var(--fail); }

.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip { cursor: pointer; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line); user-select: none; font-weight: 600; }
.chip.off { opacity: .35; }
.chip.FAIL { background: var(--fail-bg); color: var(--fail); }
.chip.REVIEW { background: var(--review-bg); color: var(--review); }
.chip.PASS { background: var(--pass-bg); color: var(--pass); }
.chip.SKIP { background: var(--skip-bg); color: var(--skip); }

table { width: 100%; border-collapse: collapse; margin-top: 12px; }
th, td { text-align: left; vertical-align: top; padding: 8px; border-bottom: 1px solid var(--line); }
th { font-size: 16px; color: var(--muted); font-weight: 600; background: #fafbfc; }
td .ref { font-size: 15px; color: var(--muted); }
td.val { font-family: ui-monospace, Consolas, monospace; font-size: 16px; max-width: 280px; word-break: break-word; }
.st { font-weight: 700; font-size: 16px; padding: 2px 8px; border-radius: 4px; }
.st.FAIL { background: var(--fail-bg); color: var(--fail); }
.st.REVIEW { background: var(--review-bg); color: var(--review); }
.st.PASS { background: var(--pass-bg); color: var(--pass); }
.st.SKIP { background: var(--skip-bg); color: var(--skip); }

.doc { margin-bottom: 14px; }
.doc .head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.doc .thumbs { display: flex; gap: 6px; }
.doc .thumbs img { height: 54px; border: 1px solid var(--line); border-radius: 4px; cursor: zoom-in; }
.doc table td:first-child { width: 220px; color: var(--muted); font-family: ui-monospace, Consolas, monospace; font-size: 16px; }
.doc td.v { white-space: pre-wrap; word-break: break-word; }
.doc td.v.null { color: #b8bec9; }
.doc input, .doc textarea { width: 100%; }

#lightbox { position: fixed; inset: 0; background: rgba(10,14,24,.92); z-index: 20; display: flex; flex-direction: column; }
.lb-head { display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; color: #fff; }
.lb-head .ghost { color: #fff; border-color: #556; }
.lb-body { flex: 1; overflow: auto; text-align: center; padding: 0 16px 16px; }
.lb-body img { max-width: 100%; cursor: zoom-in; background: #fff; }
.lb-body img.full { max-width: none; cursor: zoom-out; }

@media (max-width: 700px) {
  header { flex-wrap: wrap; padding: 10px 16px; }
  main { padding: 16px; }
  .grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
  #findings th:nth-child(5), #findings td:nth-child(5), #findings th:nth-child(6), #findings td:nth-child(6) { display: none; }
}

details.basis { margin-top: 4px; font-size: 16px; }
details.basis summary { cursor: pointer; color: var(--accent); }
details.basis p { margin: 4px 0; color: var(--fg); max-width: 520px; }
header a { color: #cfd8ff; font-size: 17px; text-decoration: none; }
.rules-page td:nth-child(4), .rules-page td:nth-child(5) { font-size: 17px; max-width: 460px; }

/* ---- v2: 건별 화면 ---- */
.filelist:not(:empty) { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.fchip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; background: #fafbfc; font-size: 16px; }
.fchip button { background: none; color: var(--muted); padding: 0 2px; }
.opts { margin-top: 14px; }
.scroll-x { overflow-x: auto; }
#case-table td, #case-table th { white-space: nowrap; }
#case-table tbody tr { cursor: pointer; }
#case-table tbody tr:hover { background: #f5f8ff; }
#case-table td.name { max-width: 240px; overflow: hidden; text-overflow: ellipsis; }
.n-fail { color: var(--fail); font-weight: 700; }
.n-review { color: var(--review); font-weight: 700; }
.recheck { margin-top: 12px; }
.case { margin-top: 18px; }
.case > .head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.case > .head h3 { margin: 0; font-size: 18px; }
.case .verdict { font-weight: 700; padding: 3px 10px; border-radius: 6px; }
.verdict.FAIL { background: var(--fail-bg); color: var(--fail); }
.verdict.REVIEW { background: var(--review-bg); color: var(--review); }
.verdict.PASS { background: var(--pass-bg); color: var(--pass); }
.report { white-space: pre-wrap; background: #f8f9fb; border-left: 4px solid var(--accent); padding: 12px 14px; border-radius: 6px; margin: 12px 0; line-height: 1.7; }
.report .src { display: block; margin-top: 6px; font-size: 15px; color: var(--muted); }
.report.old { border-left-color: #b5b9c2; color: #5b6170; }  /* 현재 판정 기준이 아닌 이전 의견 (B01) */
.report.old .src { color: #b54708; }
/* 원문 인용 — 시스템 작성 문장과 구분 (B01 F02) */
.report q.raw { quotes: "「" "」"; background: #eef0f4; color: #3b4150; border-radius: 3px; padding: 0 2px; font-style: italic; }
/* 판정 없음·형식 오류·집계 불일치 / 전부 해당없음 — 이상 없음과 구분 (B01 F01) */
.verdict.NONE { background: #fde8e4; color: #8a2a12; border: 1px dashed #c4553a; }
.verdict.NA { background: #eceef2; color: #4a5060; border: 1px dashed #8a90a0; }
/* 판정 데이터 형식 오류 — 행·안내·진단 인용 (B01 F01) */
.fmt-err { background: #fff4f0; border: 1px dashed #c4553a; border-radius: 6px; padding: 8px 12px; margin: 10px 0; color: #8a2a12; }
tr.bad-row td { background: #fff4f0; }
.diag-errs { margin: 4px 0; padding-left: 18px; }
.diag { display: block; color: #5b6170; font-size: 14px; }
.diag code { background: #eef0f4; padding: 1px 4px; border-radius: 3px; white-space: pre-wrap; word-break: break-all; }
.filt-note { font-size: 14px; margin: 4px 0; }
.cnt-err { color: #8a2a12; font-size: 13px; border-bottom: 1px dashed #c4553a; white-space: nowrap; }  /* 저장 집계 값 오류 (B01 V3-B) */
.meta-line { font-size: 16px; color: var(--muted); margin-top: 6px; }
.strip { display: flex; gap: 8px; overflow-x: auto; padding: 4px 0 8px; }
.ptile { flex: 0 0 120px; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; background: #fff; font-size: 15px; }
.ptile .img { height: 150px; background: #eceef2 center/contain no-repeat; cursor: zoom-in; }
.ptile .m { padding: 4px 5px; display: flex; flex-direction: column; gap: 3px; }
.ptile select { font-size: 15px; padding: 2px; width: 100%; }
.ptile.running { border-color: var(--accent); box-shadow: 0 0 0 2px #dbe6ff; }
.ptile.error { border-color: var(--fail); }
details.sec { margin-top: 10px; }
details.sec > summary { cursor: pointer; font-weight: 600; padding: 6px 0; }
/* 심사의견: 기본 접힘, 제목 줄에 첫 줄(종합)만 한 줄로 (UI12) */
details.report-box > summary { background: #f8f9fb; border-left: 4px solid var(--accent); border-radius: 6px; padding: 8px 12px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
details.report-box.old > summary { border-left-color: #b5b9c2; }
details.report-box > summary .report-first { font-weight: 400; color: #39425a; margin-left: 8px; }
details.report-box > summary .report-warn { font-weight: 600; color: #b54708; margin-left: 8px; }
details.report-box[open] > summary .report-first { display: none; }
details.report-box > .report { margin-top: 6px; }
.cat-row td { background: #f3f5f9; font-weight: 700; font-size: 16px; color: #39425a; }
.stage { font-size: 16px; }

/* ---- v3: 목록 그리드 ---- */
#upload #drop { padding: 18px; display: flex; flex-direction: column; gap: 4px; align-items: center; }
#upload .opts { margin-top: 10px; }
#up-msg.busy { color: var(--accent); font-weight: 600; }
.grid-card { margin-top: 16px; }
.toolbar h2 { margin: 0; }
.toolbar input { width: 240px; }
.grid-wrap { margin-top: 10px; max-height: 46vh; overflow: auto; border: 1px solid var(--line); border-radius: 8px; }
#grid { margin: 0; font-size: 17px; }
#grid thead th { position: sticky; top: 0; z-index: 1; background: #f3f5f9; white-space: nowrap; }
#grid td { white-space: nowrap; padding: 7px 8px; }
#grid tbody tr { cursor: pointer; }
#grid tbody tr:hover { background: #f5f8ff; }
#grid tbody tr.sel { background: #e3ecff; box-shadow: inset 3px 0 0 var(--accent); }
#grid td.name { max-width: 160px; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
#grid td.ben { max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
#grid td.num { text-align: right; font-variant-numeric: tabular-nums; }
#empty { padding: 24px; text-align: center; }
#detail { margin-top: 16px; }
#detail .case { margin-top: 0; }
.pd-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sub-h { margin: 18px 0 8px; font-size: 17px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.docreview td.req { max-width: 460px; font-size: 16px; }
.docreview tr.miss td { background: #fff6f5; }
.docreview a { color: var(--accent); }
.small { font-size: 16px; margin-top: 6px; }
.st { white-space: nowrap; }
.badge.wait { background: #fff4e5; color: #9a5b00; }

/* ---- 이미지 대조 ---- */
.ic { position: fixed; inset: 0; z-index: 40; background: #eef1f6; display: flex; flex-direction: column; }
.ic-head { display: flex; align-items: center; gap: 12px; padding: 10px 18px; background: #0f1b33; color: #fff; flex-wrap: wrap; }
.ic-head .ghost { color: #fff; border-color: #3a4a6b; }
.ic-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.ic-chip { cursor: pointer; font-size: 16px; padding: 3px 10px; border-radius: 999px; background: #fff; color: var(--c, #2b3f73); border: 2px solid var(--c, #c9d3e6); font-weight: 700; user-select: none; }
.ic-chip.doc { --c: #6c8cff; }
.ic-chip.off { opacity: .35; }
.ic-note { padding: 8px 18px; background: #fff4e5; color: #8a4b00; font-size: 17px; }
.ic-body { flex: 1; display: grid; grid-template-columns: 1fr 340px; min-height: 0; }
.ic-canvas { position: relative; overflow: auto; display: grid; grid-template-columns: 1fr 140px 1fr; padding: 16px; align-items: start; }
.ic-col { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.ic-doc-h { font-weight: 700; font-size: 18px; color: #2b3f73; margin-top: 6px; }
.ic-page { position: relative; background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.12); }
.ic-page img { display: block; width: 100%; }
.ic-pno { position: absolute; top: 6px; right: 8px; font-size: 15px; background: rgba(15,27,51,.75); color: #fff; padding: 1px 6px; border-radius: 4px; }
.ic-box { position: absolute; border: 2.5px solid var(--c); background: color-mix(in srgb, var(--c) 10%, transparent); border-radius: 3px; cursor: pointer; transition: box-shadow .15s; }
.ic-box i { position: absolute; left: -2px; top: -17px; font-style: normal; font-size: 15px; font-weight: 700; color: #fff; background: var(--c); padding: 0 5px; border-radius: 3px 3px 0 0; white-space: nowrap; }
#ic-svg { position: absolute; left: 0; top: 0; pointer-events: none; overflow: visible; }
.ic-line { fill: none; stroke-width: 2.2; opacity: .85; }
.ic-hit { fill: none; stroke: transparent; stroke-width: 14; pointer-events: stroke; cursor: pointer; }
.ic.focus .ic-line:not(.hot) { opacity: .1; }
.ic.focus .ic-box:not(.hot) { opacity: .25; }
.ic-line.hot { stroke-width: 4; opacity: 1; }
.ic-box.hot { box-shadow: 0 0 0 4px color-mix(in srgb, var(--c) 35%, transparent); opacity: 1; z-index: 2; }
.ic-list { background: #fff; border-left: 1px solid var(--line); overflow: auto; }
.ic-list-h { position: sticky; top: 0; background: #fff; padding: 10px 14px; font-weight: 700; border-bottom: 1px solid var(--line); }
.ic-row { padding: 9px 14px; border-bottom: 1px solid var(--line); cursor: pointer; border-left: 4px solid var(--c); font-size: 16px; }
.ic-row:hover, .ic-row.hot { background: #f3f6fc; }
.ic-row .r1 { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 17px; }
.ic-row .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--c); }
.ic-row .st2 { margin-left: auto; color: var(--c); font-weight: 700; }
.ic-row .r2 { margin-top: 3px; word-break: break-word; }
.ic-row .r3 { margin-top: 3px; color: #9a5b00; }
.ic-tip { position: fixed; z-index: 50; max-width: 360px; background: #0f1b33; color: #fff; padding: 9px 12px; border-radius: 8px; font-size: 16px; line-height: 1.6; pointer-events: none; box-shadow: 0 6px 20px rgba(0,0,0,.3); }
.ic-tip .muted { color: #9fb0cf; }
.ic-tip .m { color: #ffd59a; }

/* ---- 심사 도우미 채팅 ---- */
.chat-fab { position: fixed; right: 22px; bottom: 22px; z-index: 30; border-radius: 999px; padding: 12px 18px; box-shadow: 0 6px 18px rgba(36,87,214,.35); font-weight: 700; }
.chat { position: fixed; right: 0; top: 0; bottom: 0; width: min(480px, 100vw); z-index: 35; background: #fff; display: flex; flex-direction: column; box-shadow: -8px 0 30px rgba(15,27,51,.18); }
.chat-h { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: #0f1b33; color: #fff; }
.chat-h .ghost { color: #fff; border-color: #3a4a6b; padding: 4px 10px; }
.chat-ctx { font-size: 16px; color: #9fb0cf; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 220px; }
.chat-att { padding: 8px 14px; font-size: 16px; display: flex; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--line); }
.chat-att:empty { display: none; }
.chat-att .att { border: 1px solid var(--line); border-radius: 999px; padding: 2px 9px; cursor: pointer; }
.chat-att { flex-direction: column; }
.chat-att .att-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.chat-att .att.on { background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 700; }
.chat-att .att.on small { color: #dfe7ff; }
.att-sel { margin-top: 4px; }
.att-thumbs { display: flex; gap: 8px; }
.att-thumbs a { display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 13px; color: var(--muted); text-decoration: none; }
.att-thumbs img { width: 64px; height: 84px; object-fit: cover; object-position: top; border: 2px solid var(--accent); border-radius: 4px; background: #fff; }
.att-msg { font-size: 15px; color: var(--accent); margin-top: 4px; }
.chat-att input { display: none; }
.chat-body { flex: 1; overflow: auto; padding: 14px; background: #f6f8fb; }
.msg { display: flex; margin-bottom: 12px; }
.msg.user { justify-content: flex-end; }
.msg .bubble { max-width: 88%; padding: 9px 12px; border-radius: 12px; font-size: 17px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
.msg.user .bubble { background: var(--accent); color: #fff; border-bottom-right-radius: 3px; }
.msg.assistant .bubble { background: #fff; border: 1px solid var(--line); border-bottom-left-radius: 3px; white-space: normal; }
.bubble.md p { margin: 0 0 6px; } .bubble.md ul { margin: 4px 0 8px; padding-left: 18px; } .bubble.md h5 { margin: 8px 0 4px; font-size: 17px; }
.bubble.md table { margin: 6px 0; font-size: 16px; } .bubble.md th, .bubble.md td { padding: 4px 6px; }
.bubble.md code { background: #f1f4fa; padding: 0 4px; border-radius: 3px; }
.bubble .rid { font-weight: 700; color: var(--accent); text-decoration: none; background: #eef3ff; padding: 0 4px; border-radius: 3px; }
.att-note { font-size: 15px; opacity: .85; margin-top: 4px; }
.typing { color: var(--muted); }
.chat-empty { text-align: center; padding: 30px 10px 10px; }
.sugg { display: flex; flex-direction: column; gap: 6px; padding: 6px 4px; }
.sugg button { text-align: left; font-size: 17px; background: #fff; }
.chat-in { display: flex; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--line); }
.chat-in textarea { flex: 1; resize: none; font-size: 18px; }
.chat-foot { font-size: 15px; color: var(--muted); padding: 0 12px 10px; }


/* ---- 피드백 게시판 (2026-10-12) ---- */
.bd-note { margin-bottom: 14px; background: #f4f8ff; border-color: #cfdcff; line-height: 1.85; }
.bd-tools { margin-top: 12px; }
.bd-tools #q { width: 240px; }
.bd-tools input[type="checkbox"] { width: auto; }   /* .toolbar input 의 240px 상속 방지 */
.bd-tg { font-size: 16px; color: var(--muted); display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.chip.cat { font-size: 16px; padding: 5px 12px; font-weight: 600; cursor: pointer; background: var(--skip-bg); color: var(--skip); }
.chip.c-vlm { background: #e8efff; color: #1e46ad; }
.chip.c-ocr { background: #e2f3f7; color: #0b6b80; }
.chip.c-rule { background: var(--review-bg); color: var(--review); }
.chip.c-ui { background: #efe9fb; color: #5b3bbf; }
.chip.c-etc { background: var(--skip-bg); color: var(--skip); }
#list tbody tr { cursor: pointer; }
#list tbody tr:hover { background: #f5f8ff; }
#list tbody tr.sel { background: #e3ecff; box-shadow: inset 3px 0 0 var(--accent); }
#list td.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
#list td.bd-t { max-width: 520px; }
.bd-tl { display: flex; align-items: center; gap: 8px; max-width: 520px; white-space: nowrap; }
.bd-tl b { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
#list td.bd-t b { font-size: 18px; }
#list td.bd-t .chip.cat { vertical-align: 2px; }
#list td.who { white-space: nowrap; }
#list td.refc { max-width: 170px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#list .chip.cat { white-space: nowrap; }
.bd-ex { margin-top: 0; flex: 1 1 0; min-width: 60px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#empty { padding: 24px; text-align: center; }

.bd-post .bd-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.bd-post .bd-h h3 { margin: 0; font-size: 21px; }
.bd-post .bd-h .num { color: var(--muted); font-weight: 700; font-variant-numeric: tabular-nums; }
.bd-body { white-space: pre-wrap; font-size: 18px; line-height: 1.85; margin: 14px 0; padding: 14px 18px;
  background: #f8f9fb; border-left: 4px solid var(--accent); border-radius: 6px; word-break: break-word; }
.bd-ref { margin: 14px 0; padding: 14px 18px; border: 1px solid var(--line); border-radius: 10px; background: #fcfdff; }
.bd-ref table { margin-top: 10px; }
.bd-pgs { display: flex; gap: 8px; overflow-x: auto; padding: 4px 0 2px; }
.bd-pg { flex: 0 0 120px; text-align: center; }
.bd-pg .img { height: 150px; background: #eceef2 center/contain no-repeat; border: 1px solid var(--line); border-radius: 6px; cursor: zoom-in; }
.bd-ths, .fm-ths { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
.bd-th { position: relative; display: inline-block; }
.bd-th img { height: 96px; display: block; border: 1px solid var(--line); border-radius: 6px; background: #fff; cursor: zoom-in; }
.bd-th .x { position: absolute; top: -7px; right: -7px; width: 25px; height: 25px; padding: 0; font-size: 15px;
  border-radius: 50%; background: rgba(15,27,51,.72); color: #fff; }
.bd-acts { margin-top: 16px; }
a.btn { display: inline-flex; align-items: center; padding: 9px 15px; border: 1px solid var(--line); border-radius: 6px;
  color: var(--accent); text-decoration: none; }
.bd-cs { display: flex; flex-direction: column; gap: 10px; }
.bd-c { border: 1px solid var(--line); border-radius: 10px; padding: 11px 15px; }
.bd-c.adm { background: #f4f8ff; border-color: #cfdcff; }
.bd-c-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bd-c-b { white-space: pre-wrap; margin-top: 5px; font-size: 17px; line-height: 1.8; word-break: break-word; }
.bd-in { display: flex; gap: 8px; margin-top: 12px; }
.bd-in textarea { flex: 1; resize: vertical; font-size: 17px; }

/* 글쓰기 창 (board_form.js) — 심사 화면과 게시판에서 같이 쓴다 */
.ovl { position: fixed; inset: 0; z-index: 60; background: rgba(15,27,51,.55); display: flex; justify-content: center;
  align-items: flex-start; padding: 36px 16px; overflow: auto; }
.fm { width: min(760px, 100%); }
.fm-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fm-l { display: block; margin: 16px 0 6px; font-weight: 600; }
.fm input, .fm textarea { width: 100%; }
.fm textarea { resize: vertical; line-height: 1.75; }
.fm-ref { margin-top: 12px; padding: 11px 14px; background: #f4f8ff; border: 1px solid #cfdcff; border-radius: 8px; }
.fm-ref .small { display: block; margin-top: 2px; }
.fm-drop { border: 2px dashed #c4cad6; border-radius: 8px; padding: 16px; text-align: center; color: var(--muted); }
.fm-drop.over { border-color: var(--accent); background: #eef3ff; }
.fm-chk { display: flex; align-items: center; gap: 8px; margin-top: 16px; }
.fm-chk input { width: auto; }
.fm-f { display: flex; align-items: center; gap: 10px; margin-top: 20px; }
.bf-toast { position: fixed; right: 22px; bottom: 84px; z-index: 70; background: #0f1b33; color: #fff;
  padding: 13px 18px; border-radius: 10px; box-shadow: 0 8px 24px rgba(15,27,51,.3); }
.bf-toast a { color: #9fc2ff; margin-left: 6px; }

@media (max-width: 760px) {
  .page-head { flex-wrap: wrap; }
  .page-head h1 { white-space: nowrap; }
  #new { white-space: nowrap; }
  .bd-tools #q { width: 100%; }
  /* 좁은 화면에서는 핵심 열만: 연결된 건·답변은 상세에서 본다 */
  #list th:nth-child(4), #list td:nth-child(4),
  #list th:nth-child(7), #list td:nth-child(7) { display: none; }
  #list td.bd-t, .bd-ex { max-width: 50vw; }
  .bd-in { flex-direction: column; align-items: stretch; }
}

/* 심사 화면의 신고 버튼 */
button.flag { background: none; color: var(--muted); border: 1px solid var(--line); border-radius: 6px;
  padding: 3px 9px; font-size: 15px; margin-top: 4px; }
button.flag:hover { color: var(--fail); border-color: var(--fail); background: #fff6f5; }
.mi .mbadge { margin-left: auto; background: var(--fail); color: #fff; border-radius: 999px; font-size: 14px;
  font-weight: 700; padding: 1px 8px; }

/* ---- 가독성: 여백·크기 (2026-10-05) ---- */
.card { padding: 22px 24px; border-radius: 12px; }
h2 { font-size: 19px; margin: 28px 0 12px; }
th, td { padding: 11px 12px; }
th { font-size: 16px; letter-spacing: .2px; }
td .ref { font-size: 15px; margin-top: 2px; }
td.val { font-size: 16px; max-width: 320px; }
button { padding: 10px 18px; }
input, select, textarea { padding: 8px 11px; }
.badge { padding: 3px 11px; }
.st { padding: 3px 10px; font-size: 16px; }
.chip { padding: 7px 14px; }
.verdict { font-size: 17px; }
#grid { font-size: 17px; }
#grid td { padding: 12px 12px; }
#grid td.name { max-width: 200px; }
#grid td.ben { max-width: 220px; }
.grid-wrap { max-height: 52vh; }
.report { font-size: 18px; line-height: 1.85; padding: 16px 20px; }
.meta-line { font-size: 16px; margin-top: 8px; }
.case > .head h3 { font-size: 20px; }
.ptile { flex: 0 0 150px; font-size: 15px; }
.ptile .img { height: 190px; }
.doc table td:first-child { width: 240px; font-size: 16px; }
.ic-row { font-size: 16px; padding: 12px 16px; }
.ic-row .r1 { font-size: 17px; }
.ic-box i { font-size: 15px; top: -19px; }
.ic-tip { font-size: 16px; max-width: 420px; }
.msg .bubble { font-size: 17px; }
.chat { width: min(540px, 100vw); }
th { white-space: nowrap; }

/* ---- 의견접수 (capture.js): 떠 있는 버튼 · 캡처 편집 창 ---- */
/* 심사 도우미와 의견접수 버튼은 같은 크기로 오른쪽 아래에 나란히 (의견접수가 왼쪽) */
:root { --fab-w: min(168px, calc(50vw - 28px)); }
.chat-fab, .cap-fab { width: var(--fab-w); height: 52px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center;
  gap: 6px; white-space: nowrap; border-radius: 999px; font-weight: 700; border: 0; }
.cap-fab { position: fixed; right: 22px; bottom: 22px; z-index: 30; background: #d9480f; color: #fff;
  box-shadow: 0 6px 18px rgba(217,72,15,.35); }
.cap-fab:hover { background: #c2410c; }
.cap-fab.beside-chat { right: calc(22px + var(--fab-w) + 12px); }
.cap-fab.busy { cursor: progress; opacity: .8; }
/* 심사 도우미 창이 열려 있으면 창 왼쪽 아래로 비켜 선다 */
body:has(.chat:not(.hidden)) .cap-fab { bottom: 22px; right: calc(min(540px, 100vw) + 22px); }
@media (max-width: 700px) { body:has(.chat:not(.hidden)) .cap-fab { display: none; } }
body.cap-open .cap-fab, body.cap-open .chat-fab { visibility: hidden; }
.bf-toast { bottom: 90px; max-width: min(560px, calc(100vw - 44px)); }
.bf-toast.warn { background: #7a2e0e; }
.cap { position: fixed; inset: 0; z-index: 80; background: rgba(15,27,51,.6); display: flex; padding: 18px; }
.cap-win { flex: 1; min-width: 0; display: flex; flex-direction: column; background: #fff; border-radius: 12px; overflow: hidden;
  box-shadow: 0 20px 60px rgba(0,0,0,.35); }
/* 머리줄: 제목 · 작은 안내 · 편집 도구 · 닫기 */
.cap-h { display: flex; align-items: center; gap: 8px 14px; flex-wrap: wrap; padding: 10px 16px; border-bottom: 1px solid var(--line); }
.cap-h > b { font-size: 19px; white-space: nowrap; }
#cap-ttl-st .badge { font-size: 14px; margin-left: -6px; }
.cap-steps { font-size: 12px; color: var(--muted); white-space: nowrap; }
.cap-steps i { display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; border-radius: 50%;
  background: #e8efff; color: var(--accent); font-style: normal; font-weight: 700; font-size: 10px; margin: 0 3px 0 6px; }
.cap-tools { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.cap-tools.off { opacity: .4; pointer-events: none; }
.cap-grp { display: flex; gap: 5px; align-items: center; }
.cap-tools button { padding: 6px 11px; font-size: 15px; }
.cap-t { background: #fff; color: var(--fg); border: 1px solid var(--line); }
.cap-t[aria-pressed="true"] { background: var(--accent); color: #fff; border-color: var(--accent); }
.cap-sw { width: 28px; height: 28px; padding: 0 !important; border-radius: 50%; border: 3px solid #fff; box-shadow: 0 0 0 1px #c4cad6; }
.cap-sw.on { box-shadow: 0 0 0 2px var(--fg); }
.cap-sz { width: 36px; height: 30px; padding: 0 !important; background: #fff; border: 1px solid var(--line); display: inline-flex; align-items: center; justify-content: center; }
.cap-sz i { display: block; width: 20px; background: var(--fg); border-radius: 4px; }
.cap-sz.on { border-color: var(--fg); box-shadow: inset 0 0 0 1px var(--fg); }
.cap-main { flex: 1; display: flex; min-height: 0; }
.cap-edit { flex: 1; min-width: 0; display: flex; flex-direction: column; background: #e9edf3; }
/* 확대하면 이미지 영역이 스크롤된다. 가운데 정렬은 margin:auto (넘칠 때도 왼쪽·위가 잘리지 않음) */
.cap-stage { flex: 1; min-height: 0; position: relative; display: flex; padding: 16px; overflow: auto; }
#cap-cv { display: block; flex: none; margin: auto; background: #fff; box-shadow: 0 4px 18px rgba(15,27,51,.25); touch-action: none; cursor: crosshair; }
#cap-cv[data-tool="view"] { cursor: default; }
#cap-cv[data-tool="pen"] { cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><circle cx='12' cy='12' r='4' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='12' r='4' fill='none' stroke='white' stroke-width='1'/></svg>") 12 12, crosshair; }
.cap-crop { position: absolute; display: flex; gap: 8px; padding: 6px; background: #fff; border-radius: 10px; box-shadow: 0 6px 20px rgba(15,27,51,.3); }
.cap-crop button { padding: 7px 14px; font-size: 15px; white-space: nowrap; }
.cap-empty { margin: auto; max-width: 560px; width: 100%; display: flex; flex-direction: column; gap: 10px; text-align: center; }
.cap-dz { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 34px 24px; background: #fff; border: 2px dashed #b9c3d6;
  border-radius: 12px; color: var(--fg); }
.cap-over { position: absolute; inset: 10px; display: flex; align-items: center; justify-content: center; border: 3px dashed var(--accent);
  border-radius: 12px; background: rgba(232,239,255,.92); color: var(--accent); font-size: 20px; font-weight: 700; pointer-events: none; }
/* 여러 장 넘겨 보기 */
.cap-pager { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 14px; background: #fff; border-top: 1px solid var(--line); }
.cap-pager button { padding: 6px 12px; font-size: 15px; }
.cap-pno { min-width: 52px; text-align: center; font-variant-numeric: tabular-nums; font-weight: 600; }
.cap-ths { display: flex; gap: 6px; }
.cap-th { width: 54px; height: 40px; padding: 0 !important; border: 2px solid var(--line); border-radius: 6px; background: #f3f5f9; overflow: hidden; }
.cap-th img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cap-th.on { border-color: var(--accent); }
.cap-zoom { display: inline-flex; align-items: center; gap: 4px; }
.cap-zoom .cap-zp { min-width: 64px; font-variant-numeric: tabular-nums; }
kbd { display: inline-block; padding: 1px 7px; border: 1px solid #c4cad6; border-bottom-width: 2px; border-radius: 5px; background: #f7f8fa; font: inherit; font-size: 14px; }
/* 오른쪽: 작성 폼 · 글 보기 */
.cap-side { width: 440px; flex: none; overflow: auto; padding: 6px 22px 18px; border-left: 1px solid var(--line); display: flex; flex-direction: column; }
.cap-side > * { flex-shrink: 0; }
.cap-side input:not([type=checkbox]), .cap-side textarea { width: 100%; }
.cap-side textarea { resize: vertical; line-height: 1.7; }
.cap-side #cap-body { min-height: 120px; }
.cap-side input.bad { border-color: var(--fail); }
.cap-side .req { color: var(--fail); }
.cap-ref { display: flex; gap: 10px; align-items: flex-start; margin-top: 14px; padding: 11px 14px; background: #f4f8ff; border: 1px solid #cfdcff; border-radius: 8px; cursor: pointer; }
.cap-ref input { margin-top: 6px; }
.cap-side .fm-chk { align-items: flex-start; }
.cap-side .fm-chk input { margin-top: 6px; }
.cap-info { margin-top: 12px; padding: 8px 10px; background: #f7f8fa; border-radius: 6px; word-break: break-all; }
.cap-f { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; margin-top: auto; padding-top: 18px; }
.cap-f #cap-msg { margin-top: 0; font-size: 14px; white-space: nowrap; }
.cap-f button { padding: 8px 14px; font-size: 16px; white-space: nowrap; }
.cap-vh { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.cap-vh .num { font-weight: 700; color: var(--muted); }
.cap-vt { font-size: 20px; margin: 10px 0 4px; word-break: break-word; }
.cap-meta { font-size: 15px; }
.cap-side .bd-body { margin-top: 12px; white-space: pre-wrap; word-break: break-word; }
.cap-side .bd-ref { margin-top: 14px; }
.cap-side .bd-ref .row { gap: 6px 10px; }
.cap-side .bd-ref .btn { margin-left: auto; padding: 4px 10px; font-size: 14px; text-decoration: none; }
.cap-side .findings { font-size: 14px; }
.cap-side a.bd-pg { text-decoration: none; color: inherit; }
.cap-acts { margin-top: 16px; gap: 8px; }
.cap-cmts { margin-top: 18px; padding-top: 4px; border-top: 1px solid var(--line); }
.cap-cmts #cap-cm { width: 100%; min-height: 160px; resize: vertical; line-height: 1.7; }
.cap-ans-f { margin-top: 8px; gap: 8px; }
.cap-ans .bd-c-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cap-ans .bd-c-h button { padding: 4px 10px; font-size: 14px; }
.cap-ans .bd-c-b { white-space: pre-wrap; word-break: break-word; max-height: 50vh; overflow: auto; }
.cap-olds { margin-top: 12px; }
.cap-olds .bd-c-h { display: flex; align-items: center; gap: 8px; }
.chip.c-error { background: #fdecea; color: #b42318; }
.cap-target { display: block; cursor: default; word-break: break-all; }
.cap-side .bd-in { flex-direction: column; align-items: stretch; }
@media (max-width: 1000px) {
  .cap { padding: 0; }
  .cap-win { border-radius: 0; }
  .cap-main { flex-direction: column; overflow: auto; }
  .cap-edit { flex: none; height: 62vh; }
  .cap-side { width: auto; border-left: 0; border-top: 1px solid var(--line); overflow: visible; }
  .cap-steps { display: none; }
}
@media print { .cap-fab, .chat-fab { display: none !important; } }

/* 의견접수·피드백 창 오른쪽 패널 — 스크롤이 거의 생기지 않도록 글자·여백을 줄인다 */
.cap-side { width: 420px; font-size: 14px; line-height: 1.5; padding: 4px 18px 14px; }
.cap-side input:not([type=checkbox]), .cap-side textarea, .cap-side select, .cap-side button { font-size: 14px; }
.cap-side input:not([type=checkbox]), .cap-side textarea { padding: 6px 9px; }
.cap-side textarea { line-height: 1.5; }
.cap-side #cap-body { min-height: 96px; }
.cap-side .fm-l { margin: 10px 0 4px; font-size: 14px; }
.cap-side .badge, .cap-side .chip { font-size: 13px; padding: 1px 8px; }
.cap-side .sub-h { font-size: 15px; margin: 12px 0 6px; }
.cap-side .small, .cap-side .muted.small { font-size: 12.5px; }
.cap-side .cap-ref { margin-top: 10px; padding: 8px 10px; }
.cap-side .cap-info { margin-top: 8px; padding: 6px 8px; }
.cap-side .cap-vh { margin-top: 10px; gap: 6px; }
.cap-side .cap-vt { font-size: 17px; margin: 6px 0 2px; }
.cap-side .cap-meta { font-size: 13px; }
.cap-side .bd-body { margin-top: 8px; }
.cap-side .cap-f { padding-top: 12px; }
.cap-side .cap-f button { padding: 6px 12px; font-size: 14px; }
.cap-side .cap-f #cap-msg { font-size: 12.5px; }
.cap-side .cap-cmts { margin-top: 12px; }
.cap-side .cap-cmts #cap-cm { min-height: 100px; line-height: 1.5; }
.cap-side .cap-acts { margin-top: 10px; }
.cap-side .cap-ans .bd-c-h button, .cap-side .cap-ans-f button { padding: 4px 10px; font-size: 13px; }

/* 심사 목록 삭제(휴지통) 버튼 */
button.danger { color: #b3261e; border-color: #e7b3ae; }
button.danger:hover:not(:disabled) { background: #fdecea; }

/* 상세 점검 표 표시 범위 (전체·표시·숨김 행 수와 전체 보기) */
.filt-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 8px 0 6px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: #f7f9fc; font-size: 15px; }
.filt-bar .hid { color: #8a5a00; }
button.small { padding: 4px 10px; font-size: 14px; }
/* 목록 조회 상태 (불러오는 중·실패·조회 시각) */
.list-status { font-size: 14px; color: var(--muted); }
.list-status.err { color: #b3261e; font-weight: 600; }
/* 목록 행 표시값 형식 오류 (UI-V2-C2) */
tr.row-bad td { background: #fff4f2; cursor: not-allowed; }

/* 피드백 창: 쓰기·수정·보기 같은 모양 — '분류:' 오른쪽에 분류 칩, 보기에서는 입력란 모양의 읽기 전용 칸 */
.cap-cat-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.cap-cat-row .fm-l { margin: 0; }
.chip.cat.ro { cursor: default; }
.chip.cat.ro.off { filter: grayscale(1); }
.cap-ro { border: 1px solid var(--line, #d0d5dd); border-radius: 6px; background: var(--skip-bg, #f5f6f8); padding: 6px 9px;
  white-space: pre-wrap; word-break: break-word; }
.cap-ro-t { font-weight: 600; }
.cap-ro-b { min-height: 96px; line-height: 1.5; }

/* 피드백 창 상태·답변: 관리자가 아니면 같은 모양으로 보이되 비활성 */
.cap-cmts select:disabled, .cap-cmts textarea:disabled { background: var(--skip-bg); color: var(--fg); cursor: default; }
.cap-cmts button:disabled { opacity: .45; cursor: default; }

/* 피드백 창: 등록·수정·취소 버튼 줄은 오른쪽 패널 맨 아래에 고정 (내용이 길면 스크롤해도 아래에 붙어 있음) */
.cap-side > .cap-f { position: sticky; bottom: 0; z-index: 2; background: var(--card); margin-top: auto;
  padding: 12px 0 2px; border-top: 1px solid var(--line); }
.cap-side { padding-bottom: 12px; }
.cap-cmts { margin-bottom: 12px; }
.cap-cmts .cap-ans-meta { margin: -2px 0 6px; }
.cap-cmts .sub-h #cap-ans-del { padding: 3px 10px; font-size: 13px; }
.cap-f button:disabled { opacity: .45; cursor: default; }

/* 피드백 창의 읽기 전용·비활성 부분 가시성 — 입력란과 거의 같은 모양(밝은 바탕·진한 글자·테두리)으로 읽기 쉽게,
   다만 바탕을 아주 옅은 회색으로 두어 수정할 수 없음은 구분되게 한다 */
.cap-ro, .cap-cmts select:disabled, .cap-cmts textarea:disabled {
  background: #f8f9fb; border-color: #d5d9e0; color: var(--fg); -webkit-text-fill-color: var(--fg); opacity: 1; }
.cap-cmts textarea:disabled::placeholder { color: var(--muted); -webkit-text-fill-color: var(--muted); }
.cap-cmts select:disabled, .cap-cmts textarea:disabled { cursor: not-allowed; }
.chip.cat.ro.off { opacity: .55; filter: saturate(.5); }        /* 고르지 않은 분류도 글자를 읽을 수 있게 */
.cap-cmts button:disabled, .cap-f button:disabled { opacity: .6; cursor: not-allowed; }

/* 피드백 창 (UI07): 이미지에 맞춘 높이(JS sizeWin)일 때 가운데 정렬 */
.cap { align-items: center; }
.cap-win { max-height: 100%; align-self: stretch; }
.cap-win[style*="height"] { align-self: center; }
/* 내용·담당자 답변 칸은 크기 조절 없이 오른쪽 남는 높이를 채운다 (내용이 더 넓게). 읽기만 가능하면 칸 안에서 스크롤 */
.cap-side #cap-body, .cap-side .cap-ro-b { flex: 3 1 220px; min-height: 180px; height: auto; resize: none; overflow: auto; }
.cap-side .cap-cmts { flex: 2 1 auto; display: flex; flex-direction: column; min-height: 0; }
.cap-side .cap-cmts > * { flex-shrink: 0; }
.cap-side .cap-cmts #cap-cm { flex: 1 1 140px; min-height: 130px; height: auto; resize: none; overflow: auto; }
.cap-side .cap-ro-b { max-height: none; }
.cap-side .cap-meta-l { margin-top: 6px; }
.cap-cmts textarea[readonly] { background: #eef3fa; border-color: #c8d5e8; color: var(--fg); cursor: default; }
.cap-cmts textarea[readonly]:focus { outline: none; box-shadow: none; }
/* 읽기만 가능한 칸(제목·내용 보기, 비활성 답변·상태)은 옅은 파란 바탕으로 — 흰 바탕의 작성 가능한 입력란과 구분 */
.cap-ro, .cap-cmts select:disabled, .cap-cmts textarea:disabled { background: #eef3fa; border-color: #c8d5e8; }

/* 피드백 게시판 목록 (UI09): 분류·제목 열 분리. 고정 표 배치 — 다른 열은 정한 폭, 제목이 나머지 폭을 모두 차지하고
   넘치면 … 로 줄임(긴 제목이 표를 옆으로 늘리지 않음). 상태·답변은 배지만큼만 */
#list { width: 100%; table-layout: fixed; }
#list th:nth-child(1) { width: 48px; }
#list th.bd-cat { width: 128px; }
#list th:nth-child(4) { width: 110px; }
#list th:nth-child(5) { width: 110px; }
#list th.bd-n:nth-child(6) { width: 66px; }
#list th.bd-n:nth-child(7) { width: 54px; }
#list th:nth-child(8) { width: 160px; }
#list td.bd-cat { white-space: nowrap; overflow: hidden; }
#list th.bd-t, #list td.bd-t { max-width: none; overflow: hidden; }
#list td.bd-t .bd-tl { max-width: none; overflow: hidden; }
#list .bd-n { white-space: nowrap; text-align: center; padding-left: 4px; padding-right: 4px; }
#list td.who, #list td:nth-child(8) { overflow: hidden; text-overflow: ellipsis; }

/* 게시판 목록 (UI10): 내 글은 작성자 이름을 파란 굵은 글씨로('나' 배지 대신), 분류 칩은 목록에서만 조금 작게 — 잘리지 않게 */
#list td.who.me { color: var(--accent); font-weight: 700; }
#list td.bd-cat .chip.cat { font-size: 14px; padding: 3px 9px; }
#list th.bd-cat { width: 132px; }
#list td.bd-cat { overflow: visible; }
#list th:nth-child(8) { width: 132px; }
