:root {
  --bg: #f4f7f8; --panel: #fff; --ink: #1d2b30; --muted: #66777d; --line: #dde5e8;
  --brand: #11606f; --brand-2: #1a7d8f; --accent: #93dde8; --soft: #e8f4f6;
  --hi: #1e7b4f; --hi-bg: #e5f4ec; --mid: #8a5a00; --mid-bg: #fdf1d8; --lo: #a3342b; --lo-bg: #fbe6e3;
  --dep: #0b5ea8; --wd: #b23b2e;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--ink); font: 14px/1.5 "Pretendard", "Malgun Gothic", "Apple SD Gothic Neo", system-ui, sans-serif; }
.hidden { display: none !important; }
.muted { color: var(--muted); }
.err { color: var(--lo); min-height: 1.2em; margin: 6px 0 0; }
button, input, select, textarea { font: inherit; color: inherit; }
input, select, textarea { border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; background: #fff; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--accent); border-color: var(--brand-2); }
.btn { border: 1px solid var(--line); background: #fff; border-radius: 6px; padding: 6px 12px; cursor: pointer; white-space: nowrap; }
.btn:hover { border-color: var(--brand-2); }
.btn.primary { background: var(--brand); color: #fff; border-color: var(--brand); }
.btn.primary:hover { background: var(--brand-2); }
.btn.ghost { background: transparent; }
.btn.danger { color: var(--lo); }
.btn:disabled { opacity: .5; cursor: default; }
.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.row.end { justify-content: flex-end; }
.kbd { font-size: 11px; border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 4px; padding: 0 5px; color: var(--muted); font-weight: 500; }

/* 로그인 */
.login { min-height: 100vh; display: grid; place-items: center; padding: 16px; }
.login-card { width: min(360px, 100%); background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 28px; display: grid; gap: 10px; }
.login-card h1 { margin: 0; font-size: 22px; }
.login-card p { margin: 0 0 6px; }
.login-card label { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }
.login-icon { width: 56px; height: 56px; border-radius: 12px; }

/* 상단 — v0.15.0 한 줄 머리글 (회사 ▾ · 이름 ▾ 작은 메뉴) + 메뉴 두 줄 */
.top { display: flex; align-items: center; gap: 10px; padding: 7px 16px; background: var(--brand); color: #fff; flex-wrap: wrap; }
.top .brand { display: flex; align-items: center; gap: 8px; font-size: 16px; white-space: nowrap; }
.top .brand img { width: 28px; height: 28px; border-radius: 6px; }
.top .brand .muted { color: #bfe3ea; font-size: 13px; }
.top .company-pick { display: flex; gap: 6px; flex: 1; min-width: 0; align-items: center; flex-wrap: wrap; } /* 1366 이상은 한 줄 · 좁으면 이 안에서 줄바꿈 */
.top .company-pick .btn { white-space: nowrap; }
@media (max-width: 1480px) { .top .company-pick .kbd { display: none; } }
.top select { min-width: 220px; max-width: 420px; flex: 1 1 280px; border: 0; color: var(--ink); }
.top .btn.ghost { color: #fff; border-color: #3a8a99; }
.top .me { display: flex; gap: 8px; align-items: center; }
.dd { position: relative; }
.dd-btn { white-space: nowrap; }
.dd-list { position: absolute; top: calc(100% + 4px); left: 0; z-index: 70; min-width: 170px; display: flex; flex-direction: column; background: #fff; color: var(--ink); border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 8px 24px rgba(10,30,35,.2); padding: 4px; }
.dd-list.right { left: auto; right: 0; }
.dd-list button { border: 0; background: none; text-align: left; padding: 7px 12px; border-radius: 6px; cursor: pointer; white-space: nowrap; color: var(--ink); }
.dd-list button:hover, .dd-list button:focus { background: var(--soft); outline: none; }
.tabs { background: #fff; border-bottom: 1px solid var(--line); }
.tabs .menus { display: flex; align-items: stretch; gap: 2px; padding: 0 12px; }
.tabs .menus button { border: 0; background: none; padding: 8px 16px 6px; cursor: pointer; color: #4a5b60; font-size: 15px; font-weight: 600; border-bottom: 3px solid transparent; white-space: nowrap; }
.tabs .menus button:hover { color: var(--brand); }
.tabs .menus button.on { color: var(--brand); border-bottom-color: var(--brand); }
.tabs .menus .menu-set { margin-left: auto; font-weight: 500; }
.tabs .subs { display: flex; align-items: center; gap: 4px; padding: 4px 12px; background: var(--soft); border-top: 1px solid var(--line); }
.tabs .subs button { border: 1px solid transparent; background: none; border-radius: 999px; padding: 2px 14px; cursor: pointer; color: #3b4d52; font-size: 13.5px; white-space: nowrap; }
.tabs .subs button:hover { background: #fff; border-color: var(--line); }
.tabs .subs button.on { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.tabs .subs .sub-hint { margin-left: auto; font-size: 11px; color: #8fa3a8; }
@media (max-width: 1100px) { .tabs .menus, .tabs .subs { overflow-x: auto; scrollbar-width: none; } .tabs .menus button { padding: 8px 11px 6px; } .tabs .subs .sub-hint { display: none; } } /* 좁은 창: 메뉴 줄 안에서만 옆으로 */
/* 화면 제목줄: 메뉴 › 화면 · 한 줄 설명 (main 과 같은 폭) */
.scrhead { display: flex; align-items: baseline; gap: 6px; max-width: 1500px; margin: 0 auto; padding: 9px 20px 0; font-size: 15px; white-space: nowrap; min-width: 0; }
.scrhead.wide { max-width: none; padding: 7px 16px 0; }
.scrhead .sh-sep { color: #9aabb0; }
.scrhead .sh-d { color: var(--muted); font-size: 13px; margin-left: 8px; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.scrhead .grow { flex: 1; }
.scrhead .sh-k { border: 0; background: none; color: var(--muted); font-size: 12px; cursor: pointer; padding: 0 2px; white-space: nowrap; }
.scrhead .sh-k:hover { color: var(--brand); }
main { padding: 10px 20px 20px; max-width: 1500px; margin: 0 auto; } /* v0.15.0 위 여백은 화면 제목줄 */
h2 { font-size: 18px; margin: 0 0 4px; }
h3 { font-size: 15px; margin: 0 0 8px; }
.lead { margin: 0 0 16px; color: var(--muted); }

/* 카드·그리드 */
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 16px; }
.grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.imp-card { display: grid; gap: 8px; align-content: start; }
.imp-card .n { font-size: 12px; background: var(--soft); color: var(--brand); border-radius: 999px; padding: 1px 8px; font-weight: 600; }
.imp-card .stat { font-size: 13px; }
.imp-card .stat b { color: var(--brand); }
.drop { border: 1.5px dashed var(--line); border-radius: 8px; padding: 12px; text-align: center; color: var(--muted); cursor: pointer; font-size: 13px; }
.drop.over { border-color: var(--brand-2); background: var(--soft); }
.imp-card textarea { width: 100%; height: 64px; resize: vertical; font-size: 12px; }
.note { background: var(--soft); border-radius: 8px; padding: 10px 12px; font-size: 13px; }
.note.warn { background: var(--mid-bg); }

/* 표 */
.tbl-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 8px; background: #fff; max-height: calc(100vh - 290px); }
table { border-collapse: collapse; width: 100%; font-size: 13px; }
th, td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { background: #f7fafb; position: sticky; top: 0; z-index: 1; font-weight: 600; color: #3b4d52; white-space: nowrap; }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
td.dep, span.dep, b.dep { color: #c0392b; } td.wd, span.wd, b.wd { color: #0b5ea8; } /* 통장 관례: 입금 빨강 · 출금 파랑 */
tr.sel td { background: #eef8fa; }
tr:hover td { background: #fafcfc; }
tr.sel:hover td { background: #e4f3f6; }
td.memo { max-width: 280px; }
td.nowrap { white-space: nowrap; }
.badge { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 999px; font-weight: 600; white-space: nowrap; }
.badge.high { background: var(--hi-bg); color: var(--hi); }
.badge.mid { background: var(--mid-bg); color: var(--mid); }
.badge.low { background: var(--lo-bg); color: var(--lo); }
.badge.done { background: var(--soft); color: var(--brand); }
.badge.open { background: #eef1f2; color: var(--muted); }
.lines { margin-top: 4px; font-size: 12px; color: var(--muted); display: grid; grid-template-columns: auto 1fr auto; gap: 0 10px; }
.lines .d { color: var(--dep); } .lines .c { color: var(--wd); }
select.opt { max-width: 420px; width: 100%; }

/* 작업대 */
.work { display: grid; grid-template-columns: 260px 1fr; gap: 16px; }
.steps { display: grid; gap: 6px; align-content: start; }
.step { text-align: left; border: 1px solid var(--line); background: #fff; border-radius: 8px; padding: 10px 12px; cursor: pointer; display: flex; justify-content: space-between; gap: 8px; }
.step.on { border-color: var(--brand); box-shadow: inset 3px 0 0 var(--brand); }
.step .cnt { font-weight: 700; color: var(--brand); }
.step .cnt.zero { color: #b8c4c7; }
.toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 10px 0; }
.toolbar .grow { flex: 1; }
.stat-row { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.stat-box { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 10px 14px; min-width: 150px; }
.stat-box .k { font-size: 12px; color: var(--muted); }
.stat-box .v { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* 대화상자 */
.dlg { border: 0; border-radius: 12px; padding: 0; width: min(560px, 94vw); box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.dlg form { padding: 20px; display: grid; gap: 10px; }
.dlg::backdrop { background: rgba(10,30,35,.18); } /* v0.13.1 뒤 화면이 보이게 옅게 */
.f { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }
.seg { display: flex; gap: 14px; flex-wrap: wrap; }
.seg.small { font-size: 13px; }
fieldset.learn { border: 1px solid var(--line); border-radius: 8px; display: grid; gap: 8px; padding: 10px; }
.toast { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: #16353c; color: #fff; padding: 10px 16px; border-radius: 8px; opacity: 0; transition: opacity .2s; pointer-events: none; max-width: 90vw; z-index: 50; }
.toast.on { opacity: 1; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
details summary { cursor: pointer; }
@media (max-width: 900px) { .work { grid-template-columns: 1fr; } main { padding: 12px; } }
.work > * { min-width: 0; }
@media (max-width: 700px) {
  .top { padding: 10px 12px; gap: 8px; }
  .top .company-pick { min-width: 0; width: 100%; }
  .top select { min-width: 0; }
  .tabs { padding: 0 8px; }
}
.dlg.wide { width: min(1100px, 96vw); }
#mapTable select { font-size: 12px; padding: 3px 4px; min-width: 96px; }
#mapTable tr.hdr td { background: var(--soft); font-weight: 600; }
#mapTable tr.muted td { color: #a9b6b9; }
.ok { color: var(--hi); } .bad { color: var(--lo); }
.verify td.num.bad, .verify td.num.ok { font-weight: 600; }
.banner { border-radius: 10px; padding: 12px 16px; margin-bottom: 12px; font-weight: 600; }
.banner.ok { background: var(--hi-bg); } .banner.bad { background: var(--lo-bg); } .banner.wait { background: #eef1f2; color: var(--muted); }
.banner.warn { background: #fff4d6; color: #7a5600; } /* v0.15.0 이월잔액 검증 기간 다름 등 */
.form-grid .f select, .form-grid .f input { width: 100%; min-width: 0; }

/* v0.3 */
.tab-badge { display: inline-block; min-width: 18px; padding: 0 5px; border-radius: 999px; background: var(--wd); color: #fff; font-size: 11px; font-weight: 700; margin-left: 3px; line-height: 17px; }
.badge.asked { background: #fff1d6; color: #8a5a00; } .badge.answered { background: #e6f0ff; color: #0b5ea8; }
.badge.booked { background: #efe9fb; color: #5b3aa0; } .badge.ready { background: var(--mid-bg); color: var(--mid); } .badge.exported { background: var(--hi-bg); color: var(--hi); }
.badge.pending { background: var(--mid-bg); color: var(--mid); } .badge.sent { background: #e6f0ff; color: #0b5ea8; } .badge.registered { background: var(--hi-bg); color: var(--hi); }
.client-ans { margin-top: 3px; font-size: 12px; background: #eef5ff; border-radius: 6px; padding: 3px 7px; color: #164a7a; }
.prog { display: flex; height: 10px; border-radius: 999px; overflow: hidden; background: #eef1f2; margin: 6px 0 2px; }
.prog i { display: block; height: 100%; }
.prog .booked { background: #9b86d6; } .prog .exported { background: #2e9e67; } .prog .ready { background: #e0b04a; } .prog .answered { background: #5d9be0; } .prog .asked { background: #f2cf85; } .prog .open { background: #d9dfe1; }
.legend { display: flex; gap: 12px; flex-wrap: wrap; font-size: 12px; color: var(--muted); }
.legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 4px; vertical-align: -1px; }
.thread { display: grid; gap: 4px; margin-top: 6px; }
.msg { font-size: 12px; padding: 4px 8px; border-radius: 8px; max-width: 520px; }
.msg.client { background: #fff4d6; justify-self: start; } .msg.agent { background: var(--soft); justify-self: end; }
.msg .who { color: var(--muted); font-size: 11px; margin-right: 6px; }
.cards2 { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(640px, 100%), 1fr)); }
a.btn { text-decoration: none; color: inherit; display: inline-block; }
.kpi { display: flex; gap: 10px; flex-wrap: wrap; }
.presence { font-size: 12px; color: var(--hi); }
tr.booked td { color: #6b5b95; }
/* v0.5 금융거래처 현황 */
.warn-box { border-color: #e9c46a !important; background: #fffaf0; }
span.warn, div.warn { color: #9a6b00; }
/* v0.6 자금일보 */
.dlg.xl { width: min(1480px, 98vw); max-height: 94vh; }
.dlg-body { padding: 18px 20px; display: grid; gap: 4px; }
tr.click { cursor: pointer; }
tr.click:hover td { background: #eef8fa; }
tr.grp td { background: #f2f6f7; font-weight: 600; }
tr.sub-g td:first-child { color: var(--lo); }
tr.diffrow td { background: #fff1ef; }
tr.unposted td { color: #7b8a8f; }
tr.flash td { background: #ffe9a8 !important; transition: background .4s; }
.chip { display: inline-block; font-size: 11px; padding: 0 7px; border-radius: 999px; background: #eef1f2; margin-right: 4px; white-space: nowrap; }
.chip.book_only { background: var(--lo-bg); color: var(--lo); } .chip.amount { background: var(--mid-bg); color: var(--mid); }
.chip.opening { background: #e6f0ff; color: #0b5ea8; } .chip.gap { background: #efe9fb; color: #5b3aa0; } .chip.adjust { background: var(--hi-bg); color: var(--hi); }
.hint { font-size: 11.5px; color: #6a4b00; background: #fff7e0; border-radius: 5px; padding: 1px 6px; margin-top: 2px; }
.hint.dup, .hint.direct_sale { background: #fde8e5; color: #8f2b22; }
table.ledger td, table.ledger th { padding: 4px 6px; }
.cash-tbl { max-height: calc(100vh - 330px); }
.stat-box .v.ok { color: var(--hi); } .stat-box .v.bad { color: var(--lo); } .stat-box .v.muted { color: var(--muted); }
.cash-tbl td:nth-child(2) { min-width: 150px; }
.cash-tbl td:first-child { white-space: nowrap; }
.cash-tbl table { font-size: 12.5px; } .cash-tbl th, .cash-tbl td { padding: 5px 6px; } .cash-tbl td.cash-st { min-width: 170px; } /* v0.15.0 1366에서 상태·원인 칸까지 보이게 */
.txv table { font-size: 12.5px; } .txv th, .txv td { padding: 5px 6px; } /* v0.15.0 원천세 신고서 ↔ 급여대장 표 (신고·대장 위아래) */
table.ledger td:nth-child(6) { min-width: 230px; }
/* v0.6 통장정리·채권채무 */
.subtabs { display: flex; gap: 4px; margin: 0 0 8px; border-bottom: 1px solid var(--line); }
.subtabs button { border: 1px solid var(--line); border-bottom: 0; background: #f7fafb; padding: 7px 14px; border-radius: 8px 8px 0 0; cursor: pointer; color: var(--muted); }
.subtabs button.on { background: #fff; color: var(--brand); font-weight: 600; box-shadow: inset 0 3px 0 var(--brand); }
.actbar { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; }
/* v0.15.5 거래처 원장·통장대체 점검 한 팝업: 짝 없는 줄 */
tr.unpaired td { background: #fff5f2; }
tr.unpaired.sel td { background: #fde9e3; }
tr[data-vk].unpaired { cursor: pointer; }
.grp-tbl tr.sel td { background: #dff1f5; }
tr.gsub > td { background: #fafcfc; padding: 4px 8px 10px; }
table.inner { font-size: 12.5px; } table.inner td { border-bottom: 1px dashed var(--line); padding: 3px 6px; }
.ctx { position: fixed; z-index: 100; background: #fff; border: 1px solid #c9d6da; border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,.18); min-width: 220px; padding: 4px 0; font-size: 13px; }
.ctx .ci { padding: 6px 14px; cursor: pointer; display: flex; justify-content: space-between; gap: 12px; position: relative; white-space: nowrap; }
.ctx .ci:hover { background: #eef8fa; }
.ctx .ci.dis { color: #b5c0c3; cursor: default; }
.ctx .ci.sub > .inner { display: none; position: absolute; left: 100%; top: -4px; }
.ctx .ci.sub:hover > .inner { display: block; }
.ctx hr { border: 0; border-top: 1px solid var(--line); margin: 4px 0; }
td.warn { color: #9a6b00; }
table.ed input, table.ed select { padding: 4px 6px; font-size: 13px; }
table.gridtbl tr.sel td { background: #e4f3f6; }
.co-badge { font-size: 13px; font-weight: 600; background: #fff4d6; color: #7a5200; border: 1px solid #f0d58a; border-radius: 999px; padding: 2px 12px; margin-left: 8px; vertical-align: 2px; }
.btn.danger-bg { background: var(--lo); border-color: var(--lo); }

/* 머리글 클릭 정렬 */
table:not(.ed):not(.gridtbl):not(.inner):not(.nosort) > thead th:not(:empty) { cursor: pointer; user-select: none; }
table:not(.ed):not(.gridtbl):not(.inner):not(.nosort) > thead th:not(:empty):hover { background: #eaf3f5; }
th.s-asc::after { content: ' ▲'; font-size: 10px; color: var(--brand); }
th.s-desc::after { content: ' ▼'; font-size: 10px; color: var(--brand); }

.pick-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
.pick-row input[type=number] { width: 130px; }
.pick-prev { max-height: 260px; overflow: auto; font-size: 12.5px; border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; background: #fafcfc; }
.pick-prev span { display: inline-block; margin: 2px 8px 2px 0; }

/* 진행 현황 → v0.15.0 홈 (.todo — 맨 아래) · 옛 .step 규칙은 단계별 일괄(.work .step)을 깨뜨려 뺌 */
.home { max-width: 1100px; }
.pill { font-size: 11px; padding: 1px 8px; border-radius: 999px; font-weight: 600; }
.p-done { background: #e3f3e8; color: #2e7d4f; } .p-todo { background: #e4f0f3; color: #1f5f6b; } .p-warn { background: #fbe3df; color: #b23b2e; }
.p-skip, .p-wait, .p-soon { background: #eef0f1; color: #6b7a7e; }

/* 처리 결과 줄 */
.resultbar { position: sticky; top: 0; z-index: 20; display: flex; gap: 10px; align-items: center; margin: 0; padding: 9px 20px; background: #e9f6ee; border-bottom: 1px solid #bfe3cb; font-size: 14px; }
.resultbar .ico { width: 22px; height: 22px; border-radius: 50%; background: #2e8b57; color: #fff; display: grid; place-items: center; font-size: 13px; }
/* 급여 */
.pay-up .drop { padding: 22px; text-align: center; }
.emp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.emp { display: flex; flex-direction: column; gap: 3px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; background: #fafcfc; }
#payDlg { padding: 20px 24px; width: min(1100px, 96vw); }

/* 전표 처리 (세 칸) */
main.wide { max-width: none; padding: 10px 16px 0; }
.proc { display: grid; grid-template-rows: auto auto auto minmax(160px, 1fr) auto auto; height: calc(100vh - 120px); gap: 6px; }
.pc-tabs { display: flex; gap: 2px; align-items: center; border-bottom: 1px solid var(--line); }
.pc-tabs > button[data-ev] { border: 0; background: none; padding: 8px 14px; font: inherit; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; }
.pc-tabs > button[data-ev].on { color: var(--ink); font-weight: 700; border-bottom-color: var(--brand); }
.pc-filter, .pc-chips { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.pc-filter input, .pc-filter select { padding: 5px 8px; }
.chip-f { border: 1px solid var(--line); background: #fff; border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 13px; cursor: pointer; color: #3b4d52; }
.chip-f.on { background: var(--brand); border-color: var(--brand); color: #fff; }
.chip-f b { font-weight: 700; margin-left: 2px; }
.pc-list { overflow: auto; border: 1px solid var(--line); border-radius: 8px; background: #fff; outline: none; }
.pc-list:focus { border-color: var(--brand-2); }
.pc-tbl { font-size: 13px; }
.pc-tbl td { padding: 5px 8px; vertical-align: middle; }
.pc-tbl th[data-sk] { cursor: pointer; user-select: none; }
.pc-tbl tr.cur td { background: #dff0f3 !important; }
.pc-tbl tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--brand); }
.pc-tbl tr.sel td { background: #eef7f0; }
.pc-tbl tbody tr { cursor: default; }
.pc-lines { border: 1px solid var(--line); border-radius: 8px; background: #fff; max-height: 230px; overflow: auto; display: flex; flex-direction: column; }
.pc-lines table th { position: static; }
.pc-acts { display: flex; gap: 6px; justify-content: flex-end; padding: 6px 8px; margin-top: auto; border-top: 1px solid var(--line); }
.pc-reason { background: #f7fafb; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; font-size: 13px; margin-bottom: 8px; min-height: 36px; }
.ver { font-size: 11px; color: #cfe6ea; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; padding: 0 7px; margin-left: 6px; }
.loan-credit { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; font-size: 13px; } .loan-credit input { padding: 4px 6px; }

/* v0.10 — 행 선택 공통 · Enter 규칙 · 거래처 필수 · 정리 내역 · 전체 잔액 · 시스템 업데이트 */
.selbox:focus { outline: none; }
.selbox:focus-within, .selbox:focus { border-color: #9fcad3; }
.selbox tr[data-k] { cursor: default; }
.selbox tr.cur:not(.sel) td { background: #f3fafb; }
.selbox tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--brand-2); }
.need-tag { font-size: 11px; font-weight: 600; color: var(--lo); background: var(--lo-bg); border-radius: 999px; padding: 0 7px; margin-left: 4px; }
input.need { border-color: #e2a198; background: #fff8f6; }
.psug { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-top: 6px; font-size: 12px; }
.psug:empty { display: none; }
.chip-p { border: 1px solid #c9dde2; background: #f4fafb; border-radius: 999px; padding: 2px 10px; cursor: pointer; font-size: 12.5px; color: var(--ink); }
.chip-p:hover { border-color: var(--brand-2); background: #e6f4f7; }
.chip-p span { color: var(--muted); font-size: 11px; margin-left: 5px; }
.seg-btn { display: inline-flex; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
.seg-btn button { border: 0; background: #fff; padding: 6px 12px; cursor: pointer; color: var(--muted); }
.seg-btn button + button { border-left: 1px solid var(--line); }
.seg-btn button.on { background: var(--brand); color: #fff; }
.all-tbl tr.acct-h td { font-weight: 600; }
.all-tbl tr.acct-h .tw { display: inline-block; width: 12px; color: var(--muted); }
.all-tbl td.flags { min-width: 160px; max-width: 360px; }
.all-tbl .fl-text { display: none; font-size: 11.5px; color: #7a5a1a; margin-top: 2px; }
.all-tbl tr.sel .fl-text, .all-tbl tr.cur .fl-text { display: block; }
.chip.fl-neg, .chip.fl-nop { background: var(--lo-bg); color: var(--lo); } .chip.fl-biz { background: #efe9fb; color: #5b3aa0; }
.chip.fl-pair, .chip.fl-carry { background: var(--mid-bg); color: var(--mid); } .chip.fl-bank { background: #e6f0ff; color: #0b5ea8; }
.mod { color: #1f6f8b; font-weight: 600; }
tr.pl-row td { background: #fff8f6; }
tr.pl-row.sel td { background: #f6e9e6; }
.hfilter { padding: 10px 14px; }
.hfilter input, .hfilter select { padding: 5px 8px; }
code.cmd { display: inline-block; margin-top: 4px; background: #16353c; color: #d9f3f7; padding: 3px 10px; border-radius: 6px; font-size: 12.5px; user-select: all; }
.flash-t { background: #ffe9a8; border-radius: 6px; padding: 2px 6px; transition: background .4s; }
.btn.primary .kbd { color: #d6eef2; border-color: rgba(255,255,255,.45); }

/* v0.11 — 전표 처리 바로 입력 · 통합 검색 칸 (요청 9·10) */
.proc { grid-template-columns: minmax(0, 1fr); grid-template-areas: "tabs" "filter" "chips" "list" "lines" "reason"; }
.proc > .pc-tabs { grid-area: tabs; } .proc > .pc-filter { grid-area: filter; } .proc > .pc-chips { grid-area: chips; }
.proc > .pc-list { grid-area: list; } .proc > .pc-lines { grid-area: lines; } .proc > .pc-reason { grid-area: reason; }
.proc > .pc-side { grid-area: side; display: none; }
.proc.side { grid-template-columns: minmax(0, 1fr) minmax(330px, 30%); grid-template-areas: "tabs tabs" "filter filter" "chips chips" "list side" "lines side" "reason side"; }
.proc.side > .pc-side { display: flex; }
.btn.on { background: var(--soft); border-color: var(--brand-2); color: var(--brand); font-weight: 600; }
.pc-learn { font-size: 12.5px; color: #3b4d52; display: inline-flex; gap: 4px; align-items: center; border: 1px dashed #c9dde2; border-radius: 999px; padding: 3px 10px; cursor: pointer; }
.pc-tbl td.ie { min-width: 96px; font-size: 12.5px; }
.pc-tbl td.ie-a { min-width: 130px; } .pc-tbl td.ie-p { min-width: 130px; }
.pc-tbl .sugg, .sugg-row td { color: #1b62c9; }
.pc-tbl tr.editing td { background: #fffbe8 !important; }
.pc-tbl tr.editing td.ie { padding: 2px 3px; }
.pc-tbl tr.with-edit td { background: #fff5d1 !important; }
.pc-tbl tr.just td { background: #f1faf3; }
.pc-tbl tr.just.cur td { background: #dff0f3 !important; }
.ie-in { width: 100%; min-width: 110px; padding: 3px 6px; font-size: 12.5px; border: 1px solid var(--brand-2); border-radius: 4px; background: #fff; }
.ie-in::placeholder { color: #1b62c9; opacity: .7; }
.ie-in.need { border-color: #e2a198; background: #fff5f2; }
.pc-prev { padding: 8px 10px; font-size: 13px; }
.p-skip { background: #eef1f2; color: #66777d; }
.pc-side { flex-direction: column; min-height: 0; border: 1px solid var(--line); border-radius: 8px; background: #fbfdfd; overflow: hidden; margin-bottom: 8px; }
.ps-head { display: flex; gap: 6px; align-items: center; padding: 6px 8px 4px 10px; }
.ps-head .btn { padding: 0 8px; font-size: 16px; }
#psQ { margin: 0 8px 6px; padding: 5px 8px; }
.ps-body { overflow: auto; flex: 1; min-height: 0; padding-bottom: 8px; }
.ps-card { background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; margin: 6px 8px; font-size: 12.5px; }
.ps-card.dim { opacity: .62; }
.ps-t { display: flex; gap: 6px; align-items: baseline; flex-wrap: wrap; }
.ps-acc { display: flex; gap: 6px 12px; flex-wrap: wrap; margin: 4px 0; }
.ps-acc span { background: #f3f8f9; border-radius: 6px; padding: 1px 7px; }
.ps-acc span.neg { background: #fde8ec; color: #b0264a; }
.ps-items { width: 100%; font-size: 12px; margin-top: 4px; }
.ps-items td { padding: 2px 4px; border-bottom: 1px solid #f0f3f4; }
.ps-items td.memo { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-acts { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.ps-acts .btn { padding: 3px 8px; font-size: 12px; }

/* v0.11 — 일반전표 · 작업함 탭 · 잔액상계검토 · 하단창 (요청 15·17) */
.gn-tbl input { width: 100%; padding: 4px 6px; }
.gn-tbl input.num { text-align: right; }
.gn-tbl td { padding: 3px 4px; }
.gn-tbl input::placeholder { color: #1b62c9; opacity: .65; }
.gn-tplbox { background: #f7fbfc; border: 1px solid #d5e8ec; border-radius: 8px; padding: 8px 12px; margin-top: 6px; font-size: 13px; }
.gn-tplbox label { display: inline-flex; gap: 4px; align-items: center; font-size: 12.5px; color: #3b4d52; }
.gn-tplbox input { padding: 4px 7px; }
b.warn { color: var(--mid); }
.wtabs { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin: 6px 0 2px; }
.wtabs .btn { padding: 3px 10px; font-size: 12.5px; }
.badge.cls-sales { background: #e6f0ff; color: #0b5ea8; } .badge.cls-buys { background: #fdf1d8; color: #8a5a00; } .badge.cls-other { background: #efe9fb; color: #5b3aa0; }
.off-tbl td { vertical-align: top; }
.off-tbl td > div { white-space: nowrap; padding: 1px 0; }
.off-tbl .btn.ghost { padding: 0 6px; font-size: 11.5px; }
.negbox { background: #fde8ec; color: #b0264a; border-radius: 4px; padding: 0 4px !important; }
.gl-bottom { margin-top: 8px; border: 1px solid #b9d7dd; border-radius: 10px; background: #fff; padding: 10px 12px; box-shadow: 0 -2px 8px rgba(17, 96, 111, .06); }
.gl-split > .tbl-wrap { max-height: 34vh; }
tr.bot td { background: #fff4cf !important; }

/* v0.13 세금 납부 대사 */
.tax-grid { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 12px; margin-bottom: 14px; align-items: start; }
.tax-det { position: sticky; top: 8px; max-height: calc(100vh - 24px); overflow: auto; }
.tax-det .kv { display: grid; grid-template-columns: 70px 1fr; gap: 6px 10px; font-size: 13px; }
#txWrap tr[data-k] { cursor: pointer; }
#txWrap tr.cur td { background: #eef6f8; }
#txWrap tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--brand); }
@media (max-width: 1100px) { .tax-grid { grid-template-columns: 1fr; } .tax-det { position: static; max-height: none; } }

/* v0.13.1 떠 있는 창 — 제목줄로 옮기기, 뒤 화면 보며 입력 */
dialog.float { position: fixed; inset: auto; margin: 0; z-index: 900; max-height: 94vh; overflow: auto; border: 1px solid #b9d3d9; box-shadow: 0 14px 44px rgba(0,0,0,.28); }
dialog.float.resizable { resize: both; }
.dlg h3, .win-head { cursor: move; user-select: none; }
.dlg h3 button, .dlg h3 input, .dlg h3 select, .dlg h3 a, .win-head button { cursor: pointer; }
dialog.moving { opacity: .93; }
.win-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 12px; background: #eef6f8; border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 3; border-radius: 12px 12px 0 0; }
.top .company-pick .kbd { background: rgba(255,255,255,.18); color: #fff; border-color: rgba(255,255,255,.3); }
.gnwin { width: min(1240px, 97vw); }
.gnwin .dlg-body { padding: 10px 14px 12px; }
.gnwin .gn-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 12px; align-items: start; }
.gnwin.noref .gn-grid { grid-template-columns: 1fr; } .gnwin.noref #gnRef { display: none; }
.gn-ref { border-left: 1px solid var(--line); padding: 6px 0 0 12px; font-size: 12.5px; max-height: 60vh; overflow: auto; }
.gn-ref.loading { opacity: .55; }
.gn-kpi { display: flex; gap: 14px; flex-wrap: wrap; background: #f4fafb; border-radius: 6px; padding: 5px 8px; }
table.mini { font-size: 12px; width: 100%; } table.mini td { padding: 2px 4px; } table.mini .btn { padding: 0 6px; font-size: 11.5px; }

/* ② 계정 줄 → 거래처별 명세 (v0.13.2) */
.verify tr.vrow{cursor:pointer}.verify tr.vrow:hover td{background:#f4fafb}.verify tr.vrow.open td{background:#eef6f8}.vtg{display:inline-block;width:12px;color:var(--muted)}
.verify tr.vsub td{background:#fbfdfd;font-size:12.5px;padding-top:4px;padding-bottom:4px}.verify tr.vsum td{border-top:1px solid #d6e6ea}
/* 통장 거래 → 일반전표 (v0.13.2) */
.gnwin tr.gn-lock input{background:#eef3f4;color:#44565b;border-color:#dfe8ea;cursor:default}.gnwin .gn-bank .dep{color:#c0392b;font-weight:600}.gnwin .gn-bank .wd{color:#1f5fbf;font-weight:600}
.off-tbl .off-line{cursor:pointer;border-radius:5px;padding:1px 4px}.off-tbl .off-line:hover{background:#eef6f8}.off-tbl .off-line.on{background:#d8eef3;outline:1px solid #7fb9c6}.off-tbl tr.sel td{background:#f3f9fa}
/* v0.14 위하고에서 받기 */
#pullBtn.busy { border-color: var(--brand-2); color: var(--brand); background: #eef7f9; }

/* v0.14.1 거래 찾기 (Ctrl+F) */
.fdwin { width: min(97vw, max(720px, 60vw)); height: min(760px, 90vh); display: none; padding: 0; min-width: 520px; min-height: 300px; } /* v0.15.0 기본 = 화면 60% (1366에서 뒤 목록이 보이게) */
.fdwin[open] { display: flex; flex-direction: column; }
.fdwin .win-head .dep, .fdwin .dep { color: #c0392b; } .fdwin .wd { color: #1f5fbf; }
.fdwin .dlg-body { display: flex; flex-direction: column; gap: 6px; padding: 8px 12px 10px; flex: 1; min-height: 0; }
.fd-filter { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; font-size: 12.5px; }
.fd-filter label { display: inline-flex; gap: 4px; align-items: center; }
.fd-filter input[type=date] { width: 132px; }
.fd-qb { padding: 1px 7px; font-size: 12px; }
.fd-tabs { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.fd-tabs .chip-f[disabled] { opacity: .45; cursor: default; }
.fd-list { flex: 1; min-height: 160px; overflow: auto; border: 1px solid var(--line); border-radius: 8px; outline: none; }
.fd-list:focus { border-color: #7fb9c6; box-shadow: 0 0 0 2px #d8eef3; }
.fd-list.loading { opacity: .5; }
.fd-tbl { width: 100%; font-size: 12.5px; }
.fd-tbl thead th { position: sticky; top: 0; background: #f4f8f9; z-index: 1; }
.fd-tbl td { padding: 3px 6px; vertical-align: middle; }
.fd-tbl tr[data-i] { cursor: pointer; }
.fd-tbl tr[data-i]:hover td { background: #f6fbfc; }
.fd-tbl tr.cur td { background: #e3f1f5 !important; }
.fd-tbl tr.sel td { background: #d3ecd9; }
.fd-tbl tr.cur.sel td { background: #c4e5cd !important; }
.fd-tbl tr.exact td.amt { font-weight: 700; color: #166534; }
.fd-tbl tr.dim td { color: #8a9a9e; }
/* v0.16.1 (1001-FD) 묶음 없이 한 표 — 한 전표의 이어진 줄(cont)은 위 줄과 붙여서: 사이 경계선 없음 · 흐린 글 · '↳ 위하고 #…' */
.fd-tbl tr:has(+ tr.cont) td { border-bottom-color: transparent; }
.fd-tbl tr.cont td { color: #6b7d82; }
.fd-tbl tr.cont .fd-src { background: transparent; color: #8a9a9e; padding-left: 0; }
/* v0.15.0 한 줄로: 거래처·계정은 잘라서(툴팁에 전체), 적요는 남는 너비만 — 좁은 창(1366)에서 금액 칸이 밀려나지 않게 (적요가 먼저 줄어듦) */
.fd-tbl .ell { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-tbl th.cb, .fd-tbl td.cb { width: 20px; padding-right: 0; }
.fd-tbl td.src { white-space: nowrap; }
.fd-tbl td.src .fd-src { max-width: 120px; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.fd-tbl td.who .ell { max-width: 200px; }
.fd-tbl td.acct .ell { max-width: 150px; } /* 계정은 늘 '251 외상매입금' — 좁으면 … (툴팁에 전체) */
.fd-tbl th.sd, .fd-tbl td.sd { width: 24px; text-align: center; padding-left: 2px; padding-right: 2px; }
.fd-tbl td.sd { font-weight: 600; color: #3b5358; }
.fd-tbl td.memo { width: 100%; max-width: 0; min-width: 40px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fd-tbl th.memo { max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* v0.16.1 (1001-FD) 머리글도 적요 칸이 먼저 줄어들게 */
.fd-tbl .fd-tm, .fd-tbl .fd-stl { font-size: 11px; }
.fdwin.narrow .fd-tbl td, .fdwin.narrow .fd-tbl th { padding: 3px 4px; }
.fdwin.narrow .fd-tbl .cb { padding-right: 0; } .fdwin.narrow .fd-tbl .sd { padding-left: 2px; padding-right: 2px; }
.fdwin.narrow .fd-tbl td.who .ell { max-width: 92px; } .fdwin.narrow .fd-tbl td.who .fd-pc { display: none; } /* 거래처 코드는 툴팁에 */
.fdwin.narrow .fd-tbl td.acct .ell { max-width: 108px; }
.fdwin.narrow .fd-tbl td.src .fd-src { max-width: 100px; } /* '↳ 위하고 #00001'까지는 다 보이게 (매입매출 #…은 …) */
.fdwin.narrow .fd-dup, .fdwin.narrow .fd-late, .fdwin.narrow .fd-of, .fdwin.narrow .fd-tm { display: none; } /* v0.16.1 (1001-FD) 좁은 창(1366·1920 기본 너비): 같은 금액 ×N·+N일은 줄 툴팁·경고 줄로 — 가로 스크롤 없이 원장·전표 단추까지 보이게 */
.fdwin.narrow .fd-tbl td.st .pill, .fdwin.narrow .fd-tbl td.how .pill { font-size: 11px; padding: 0 5px; }
.fdwin.narrow .fd-tools .btn { padding: 0 3px; font-size: 11px; }
.fd-tools .btn { padding: 0 5px; font-size: 11.5px; }
.fd-src { display: inline-block; padding: 0 6px; border-radius: 9px; font-size: 11px; background: #eef3f4; color: #3b5358; }
.fd-src.s-open { background: #fff4de; color: #8a5a00; } .fd-src.s-sum, .fd-src.s-vsum { background: #fde9e1; color: #9a3b12; }
.fd-src.s-sp { background: #e6f0ff; color: #1f4f9a; } .fd-src.s-journal { background: #eef0f7; color: #45507a; } .fd-src.s-bank { background: #e7f6ee; color: #1d6b41; }
.fd-hp { font-size: 12.5px; color: #0b5e3b; background: #e9f8ef; border: 1px solid #b7e2c8; border-radius: 6px; padding: 3px 8px; margin: 4px 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* v0.17.8 (1002-FD2) 이 창에서 고른 짝 */
.fd-dup-dlg { max-width: 640px; } .fd-dup-dlg h3 { margin: 0 0 6px; }
.fd-warn { font-size: 12px; color: #8a5a00; background: #fff8e6; border: 1px solid #f1dfb0; border-radius: 6px; padding: 2px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 0 0 auto; }
.fd-help { font-size: 11.5px; } .fd-help.warn { color: #9a6b00; font-weight: 600; }
.fd-seln { font-size: 12px; }
.pc2-tag.fdp { background: #e7f6ee; color: #1d6b41; } /* v0.16.1 (1001-FD) 할 일: 거래 찾기로 고름 */
@media (max-width: 720px) { .fd-filter input[type=date] { width: 120px; } }

/* v0.14.2 거래처·계정 칸: 코드·이름이 아직 거래처/계정으로 안 바뀜 */
input.bad { border-color: var(--lo) !important; box-shadow: 0 0 0 2px var(--lo-bg); }
td.warn, div.warn, span.warn { color: var(--mid); }
/* v0.15.0 증빙 📎 · 되돌리기 알림 · 작은 입력 창 (엔지니어 D) */
.att-b { border: 1px solid #d9c27a; background: #fff8e1; border-radius: 6px; padding: 0 5px; font-size: 12px; line-height: 18px; cursor: pointer; vertical-align: middle; }
.att-b:hover { background: #ffefb8; }
.att-dlg { width: min(1100px, 96vw); } .att-dlg .row > .grow { flex: 1; }
.att-grid { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 12px; margin-top: 8px; align-items: start; }
.att-list { display: grid; gap: 4px; max-height: 70vh; overflow: auto; }
.att-item { display: grid; gap: 2px; text-align: left; border: 1px solid var(--line); background: #fff; border-radius: 8px; padding: 6px 8px; cursor: pointer; font-size: 12.5px; word-break: break-all; }
.att-item.on { border-color: var(--brand); box-shadow: inset 3px 0 0 var(--brand); }
.att-item .muted { font-size: 11px; }
.att-view { min-height: 300px; border: 1px solid var(--line); border-radius: 8px; padding: 8px; background: #fafcfc; }
.att-view img { max-width: 100%; max-height: 66vh; display: block; margin: 0 auto; }
.att-view iframe { width: 100%; height: 66vh; border: 0; background: #fff; }
.panel.flash { box-shadow: 0 0 0 3px #f2c14e; transition: box-shadow .3s; }
.toast.undo-toast { pointer-events: auto; display: flex; gap: 10px; align-items: center; bottom: 64px; }
.toast.undo-toast:not(.on) { pointer-events: none; }
.toast.undo-toast .btn { padding: 3px 10px; background: #fff; color: #16353c; border-color: #fff; }
@media (max-width: 760px) { .att-grid { grid-template-columns: 1fr; } }

/* v0.15.0 (F) 메뉴 두 줄 · 홈 '이번 달 할 일' · 단축키 도움말 */
main.wide .proc { height: calc(100vh - var(--chrome, 150px) - 16px); } /* --chrome = 머리글+메뉴+결과 줄+제목줄 높이 (setTabs·ResizeObserver 가 잼) */
.home-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 10px; }
.home-top .co { font-size: 17px; }
.home-top .grow { flex: 1; }
ol.todo { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.todo .td { display: grid; grid-template-columns: 28px 118px 104px minmax(0, 1fr) auto; gap: 12px; align-items: center; background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 8px 14px; min-height: 52px; }
.todo .td-n { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 13px; background: #eef2f3; color: #4a5b60; }
.todo .td-t { font-size: 15px; white-space: nowrap; }
.todo .pill { justify-self: start; white-space: nowrap; font-size: 12px; }
.todo .td-b { min-width: 0; }
.todo .td-k { font-size: 13px; color: #3b4d52; display: flex; align-items: center; gap: 10px; min-width: 0; }
.todo .td-kt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.todo .td-k .bar { flex: 0 0 120px; height: 6px; background: #eef2f3; border-radius: 3px; overflow: hidden; }
.todo .td-k .bar i { display: block; height: 100%; background: #2e8b57; }
.todo .td-s { font-size: 12.5px; color: #8a5a00; display: flex; gap: 10px; align-items: center; margin-top: 2px; min-width: 0; }
.todo .td-s .n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.todo .lnk { border: 0; background: none; padding: 0; color: var(--brand); font-size: 12.5px; cursor: pointer; white-space: nowrap; text-decoration: underline; text-underline-offset: 2px; }
.todo .td-a .btn { min-width: 120px; }
.todo .td.st-done { background: #f7fbf8; } .todo .td.st-done .td-n { background: #2e8b57; color: #fff; } .todo .td.st-done .td-t { color: #4a6b55; }
.todo .td.st-skip, .todo .td.st-wait, .todo .td.st-soon { opacity: .75; }
.todo .td.st-warn .td-n { background: #fbe3df; color: #b23b2e; }
.todo .td.is-next { border: 2px solid var(--brand); padding: 7px 13px; box-shadow: 0 2px 10px rgba(31,95,107,.12); }
.todo .td.is-next .td-n { background: var(--brand); color: #fff; }
@media (max-width: 900px) { .todo .td { grid-template-columns: 28px 1fr auto; } .todo .td-b { grid-column: 1 / -1; } }
.keyhelp { width: min(1180px, 96vw); max-height: calc(100vh - 24px); overflow: auto; }
.keyhelp .kh-grid { columns: 3 320px; column-gap: 16px; }
.keyhelp section { break-inside: avoid; margin: 0 0 12px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; }
.keyhelp section.on { border: 2px solid var(--brand); background: #f6fbfc; }
.keyhelp h4 { margin: 0 0 4px; font-size: 13.5px; }
.keyhelp table { width: 100%; font-size: 12.5px; border-collapse: collapse; }
.keyhelp th { text-align: left; white-space: normal; width: 40%; padding: 2px 10px 2px 0; color: var(--brand); font-weight: 600; vertical-align: top; position: static; background: none; border: 0; }
.keyhelp .kh-grid:focus { outline: none; }
.keyhelp td { padding: 2px 0; color: #3b4d52; border: 0; }

/* v0.15.0 (B) 전표 처리 › 할 일: 1366×768에서 목록 10줄 이상 — 윗 칸은 줄바꿈 없이 한 줄씩, 긴 단축키 줄은 '단축키 ?' 풍선, 아래 칸은 낮게·접기 */
.pc-tabs { position: relative; flex-wrap: nowrap; min-width: 0; }
.pc-acts-top { display: inline-flex; gap: 4px; margin-left: 12px; flex-wrap: nowrap; }
.pc-acts-top .btn { padding: 4px 9px; font-size: 12.5px; }
.pc-help { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 0 1 auto; }
.pc-help-btn { display: none; padding: 3px 9px; font-size: 12.5px; }
.pc-filter { flex-wrap: nowrap; }
.pc-filter select#pcBank { max-width: 240px; min-width: 0; }
.pc-filter input[type=date] { width: 138px; }
.proc .pc-chips { flex-wrap: nowrap; min-width: 0; } /* v0.15.0 전표 처리만 한 줄 (처리 내역 칩은 줄바꿈) */
.pc-chips .chip-f { padding: 3px 10px; font-size: 12.5px; white-space: nowrap; }
.chip-f .chip-sub { font-size: 11.5px; opacity: .85; }
#pcSelInfo { white-space: nowrap; }
.pc-lines { max-height: 150px; }
.pc-ltbl td { padding: 3px 8px; }
.pc-ltbl th { padding: 4px 8px; }
.pc-reason { display: flex; align-items: center; gap: 8px; padding: 4px 8px 4px 12px; min-height: 0; }
.pc-r-main { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc-r-acts { display: inline-flex; gap: 4px; flex: none; }
.pc-r-acts .btn { padding: 3px 9px; font-size: 12.5px; }
.proc.lines-off .pc-lines { display: none; }
.proc.lines-off .pc-lines:has(.pc-prev) { display: flex; } /* 바로 입력 중에는 미리보기를 보여 줌 */
.choice-dlg { width: min(560px, 94vw); }
@media (max-width: 1699px) {
  .pc-help { display: none; }
  .pc-help-btn { display: inline-block; }
  .proc.help-on .pc-help { display: block; position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; white-space: normal; max-width: 560px; background: #fff; color: #3b4d52; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; line-height: 1.7; box-shadow: 0 6px 18px rgba(0,0,0,.12); }
}
@media (max-width: 1500px) {
  .pc-tabs > button[data-ev] { padding: 6px 12px; }
}
@media (max-width: 1250px) { .pc-acts-top .btn .kbd { display: none; } }
.pc-tabs > .grow { flex: 1; }
@media (max-height: 820px) {
  .pc-tabs > button[data-ev] { padding: 5px 12px; }
  .pc-lines { max-height: 104px; }
  .proc { gap: 5px; }
  .pc-list .pc-tbl td { padding: 4px 8px; }
}

/* v0.16.0 cash/tax */
/* (930-16) 자금일보: 칩 한 줄 · 계좌 한 줄 */
.cash-bar { flex-wrap: wrap; gap: 6px 8px; margin-bottom: 8px; }
.cash-chips { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.cash-chips .chip-f { padding: 2px 10px; font-size: 12.5px; white-space: nowrap; }
.chip-f b.bad { color: var(--lo); } .chip-f.on b.bad { color: #fff; }
.cash-tbl { max-height: calc(100vh - 210px); }
.cash-tbl td.cash-nm { min-width: 140px; }
.cash-sub, .cash-dt { font-size: 11px; font-weight: 400; }
.cash-why { font-size: 12px; }
/* (930-13) 올리기 칸 → 자료 받기로 옮김 한 줄 */
.up-moved { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 8px 0; padding: 5px 10px; border: 1px dashed var(--line); border-radius: 6px; font-size: 12.5px; background: var(--soft); }
.up-moved .btn { padding: 1px 10px; font-size: 12px; }
.up-moved .up-sum { color: var(--muted); }
/* (930-15) 예정표 밖 세금 = 통장 표 모양 */
.tx-others table { font-size: 12.5px; } .tx-others th, .tx-others td { padding: 4px 6px; }
.tx-others tr[data-k] { cursor: pointer; } .tx-others tr[data-k]:hover td { background: #eef8fa; }
.tx-others .tx-cls { padding: 1px 8px; font-size: 12px; }
.tx-clsd { white-space: nowrap; }
.tx-note { font-size: 11.5px; max-width: 420px; white-space: normal; }
.tx-osel { font-size: 12.5px; }
#txWrap tr[data-k] { cursor: pointer; }
.tx-others td.memo { min-width: 150px; }
.tx-others .tx-clsel { font-size: 12px; padding: 1px 4px; max-width: 110px; }

/* v0.16.0 gl/out */
/* (930-11)(930-12) 거래처 잔액 한 화면 — 칩 · 수지라식 촘촘한 표 · 합계 줄 고정 */
.gb-bar { margin: 2px 0 6px; gap: 6px; }
.gb-chips { display: inline-flex; gap: 4px; flex-wrap: wrap; align-items: center; }
.gb-chips .chip-f { padding: 3px 10px; font-size: 12.5px; white-space: nowrap; }
.gb-sep { width: 1px; height: 18px; background: var(--line); margin: 0 3px; }
.chip-f.gb-negc.on { background: #b23b2e; border-color: #b23b2e; }
#gbQ { width: 220px; padding: 5px 8px; }
.gb-per { white-space: nowrap; font-size: 12.5px; } .gb-per input { padding: 4px 6px; }
.gb-act { margin: 0 0 6px; padding: 4px 8px; font-size: 12.5px; }
.gb-wrap { max-height: calc(100vh - var(--chrome, 150px) - 142px); min-height: 160px; }
.gb-tbl th, .gb-tbl td { padding: 3px 7px; white-space: nowrap; vertical-align: middle; }
.gb-tbl td.gb-pn { max-width: 300px; overflow: hidden; text-overflow: ellipsis; }
.gb-tbl .gb-ck { width: 24px; text-align: center; padding: 3px 2px; }
.gb-tbl tbody tr[data-k] { cursor: pointer; }
.gb-tbl tfoot td { position: sticky; bottom: 0; background: #eef4f5; font-weight: 700; border-top: 2px solid #cfdfe2; z-index: 1; }
.gb-tbl tr.gb-g td { background: #f3f8f9; border-top: 2px solid #d5e3e6; font-size: 12.5px; }
.gb-tbl tr.gb-g .btn { padding: 1px 8px; font-size: 12px; }
.gb-c-sales, .gb-ar { color: #b0452f; } .gb-c-buys, .gb-ap { color: #1f5f9e; } .gb-c-other { color: #6a4fa3; } .gb-c-expense { color: #6b7a7e; }
.gb-ar, .gb-ap { font-weight: 600; }
.gb-help { font-size: 12px; margin: 5px 0 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* (930-18) 위하고 보내기 — 전표 상태 넷 */
.prog .exported, .prog .gb-o-exported { background: #7cc3d3; } .prog .missing, .prog .gb-o-missing { background: #d9534f; }
.prog .gb-o-booked { background: #9b86d6; } .prog .gb-o-ready { background: #e0b04a; }
.badge.missing { background: var(--lo-bg); color: var(--lo); }
.gb-olead { margin-bottom: 10px; }
.gb-opanel { margin-bottom: 10px; padding: 12px 14px; }
.gb-opanel h3 { font-size: 15px; }
.gb-onote { margin-top: 8px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gb-onote .btn { padding: 2px 10px; }
.gb-omiss { border-color: #e8b4ae; }
#obTbl td .btn { padding: 2px 8px; font-size: 12px; }
details.gb-opanel > summary { cursor: pointer; }

/* v0.16.0 in/grid */
/* (930-6)(930-13) 자료 받기 › 위하고 자료: 올리기 1~9 접는 칸 · 가상 거래처 점검 · 반제 대상 줄 → 원장 */
details.in-up > summary, details.in-carry > summary { font-size: 14px; line-height: 1.5; }
details.in-up > summary b, details.in-carry > summary > b:first-child { color: var(--brand); }
.in-sum, .in-got { font-size: 12.5px; font-weight: 400; color: #3b4d52; }
.in-sum .warn { font-weight: 400; }
details.in-up[open] > summary, details.in-carry[open] > summary { margin-bottom: 6px; }
details.in-up:not([open]), details.in-carry:not([open]) { padding-top: 9px; padding-bottom: 9px; }
.in-lead { margin: 4px 0 10px; }
.in-grid { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); }
.in-card { display: grid; gap: 8px; align-content: start; min-width: 0; }
.in-card .n { font-size: 12px; background: var(--soft); color: var(--brand); border-radius: 999px; padding: 1px 8px; font-weight: 600; }
.in-card .stat { font-size: 13px; color: var(--brand); }
.in-card .pay-up .drop { padding: 12px; }
.in-card.in-wide { grid-column: 1 / -1; }
.in-card.in-full { grid-column: 1 / -1; } /* v0.19.0 15 사업·기타·일용 지급 명세 */
.in-card.in-full .tbl-wrap td, .in-card.in-full .tbl-wrap th { padding: 3px 8px; }
@media (min-width: 1100px) { /* v0.18.0 (1002-1) 4칸 고정 — 9 통장내역은 8 원천세 신고서 바로 아래(4번째 칸), 10 부가세 신고서는 그 왼쪽 3칸 */
  .in-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-flow: row dense; }
  .in-card.in-bank { grid-column: 4; }
  .in-card.in-wide { grid-column: 1 / span 3; }
}
.bk-up { display: grid; gap: 8px; } .bk-up textarea { width: 100%; height: 64px; resize: vertical; font-size: 12px; } .bk-up select { width: 100%; } /* 부가세 신고서 표·직접 넣기 칸이 좁지 않게 한 줄 전체 */
.in-card.in-wide .tbl-wrap { max-height: 180px; }
.in-card [data-vatbox] input, .in-card [data-vatbox] select { max-width: 100%; }
.in-virt { margin-top: 12px; padding-top: 10px; padding-bottom: 10px; }
.in-vhead { gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 4px; }
.in-vhead .btn { padding: 3px 10px; font-size: 12.5px; }
.in-vl { font-size: 13px; padding: 3px 8px; border-radius: 6px; margin-top: 3px; line-height: 1.6; }
.in-vl.bad { background: #fdecea; color: #8e1f15; } .in-vl.bad b { color: #b3261e; }
.in-vl.warn { background: #fff7e0; color: #6b5200; } .in-vl.warn b { color: #9a6b00; }
.in-vl.in-vok { color: #2e6b4f; font-size: 12.5px; padding-left: 8px; }
.in-vl .muted { font-weight: 400; }
.in-skip { padding: 0 8px; font-size: 12px; margin-left: 6px; }
.in-vhint { font-size: 12px; color: var(--muted); margin: 6px 0 0 8px; }
table.in-basis tr.click td { cursor: pointer; }
.in-why { font-size: 11.5px; font-weight: 400; color: var(--muted); margin-left: 4px; }
.in-imps table { font-size: 12.5px; }
/* (930-4)(930-5) 이월잔액 검증: 올리기·검증 접는 칸 · 거래처 줄 → 원장 */
details.in-carry { margin-bottom: 10px; }
details.in-carry .grid { margin-top: 6px; }
tr.vsub.click, tr.vsub-d.click { cursor: pointer; } tr.vsub.click:hover td, tr.vsub-d.click:hover td { background: #eef8fa; }
a.in-lwa { color: var(--brand); text-decoration: none; border-bottom: 1px dotted var(--brand); }
/* (930-2)(930-18) 통장내역: 위하고에 없음 표시 */
.badge.missing { background: #fdecea; color: #b3261e; }
/* 설정 › 사무소 공통 (관리자) */
.in-so-panel { margin-top: 12px; }
.in-so-panel h3 .muted { font-weight: 400; font-size: 13px; }
.in-so-key { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.in-so-key input { width: 320px; max-width: 100%; }
.in-so-note { font-size: 12px; margin: 4px 0 10px; }
.in-so-h { margin: 10px 0 6px; font-size: 14px; } .in-so-h .muted { font-weight: 400; font-size: 12.5px; }
.in-so-vt { max-height: 340px; } .in-so-vt td { padding: 3px 6px; } .in-so-vt input.in-so-n { width: 100%; min-width: 180px; } .in-so-vt input.in-so-c { width: 90px; }
.in-so-acts { margin-top: 6px; gap: 8px; align-items: center; }

/* v0.16.0 proc */
/* (930-10)(930-12) 할 일: 수지라 순서 단계 버튼 줄(할 것 · 처리) · 고른 단계 칸 · 태그 · 적요별 묶어 보기 · 정리 점검 창 · 전표 창 원천징수율 · 설정 자동 처리 규칙 */
.proc { grid-template-rows: auto auto auto auto minmax(140px, 1fr) auto auto; grid-template-areas: "tabs" "filter" "chips" "steps" "list" "lines" "reason"; }
.proc.side { grid-template-areas: "tabs tabs" "filter filter" "chips chips" "steps steps" "list side" "lines side" "reason side"; }
.proc > .pc2-steps { grid-area: steps; min-width: 0; }
.pc2-row { display: flex; gap: 4px; min-width: 0; overflow-x: auto; scrollbar-width: thin; }
.pc2-st { flex: 1 1 auto; min-width: 0; max-width: 190px; border: 1px solid var(--line); background: #fff; border-radius: 8px; padding: 2px 8px 3px; font: inherit; cursor: pointer; text-align: left; line-height: 1.25; color: var(--ink); }
.pc2-st:hover { border-color: var(--brand-2); }
.pc2-st .pc2-t { display: block; font-size: 12.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc2-st .pc2-c { display: block; font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc2-st .pc2-c b { color: var(--ink); font-weight: 700; }
.pc2-st.zero .pc2-todo b { color: var(--muted); font-weight: 400; }
.pc2-st .pc2-done { border-radius: 4px; padding: 0 3px; margin: 0 -3px; }
.pc2-st .pc2-done:hover { background: var(--soft); text-decoration: underline; }
.pc2-st.on { border-color: var(--brand); background: var(--soft); box-shadow: inset 0 -2px 0 var(--brand); }
.pc2-st.on .pc2-todo.on, .pc2-st.on .pc2-done.on { color: var(--brand); font-weight: 700; }
.pc2-st.on .pc2-done.on { background: #fff; }
.pc2-ctx { display: flex; align-items: center; gap: 6px; margin-top: 4px; padding: 3px 6px 3px 10px; border: 1px solid #c9dde2; background: #f4fafb; border-radius: 8px; font-size: 12.5px; min-width: 0; }
.pc2-ctx > b { white-space: nowrap; flex: none; }
.pc2-ctx .pc2-desc { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pc2-ctx .btn { padding: 2px 9px; font-size: 12.5px; }
@media (max-width: 1250px) { .pc2-ctx .btn .kbd { display: none; } }
.pc2-tag { display: inline-block; font-size: 11px; line-height: 16px; padding: 0 6px; border-radius: 999px; background: #e6f0ff; color: #0b5ea8; margin-right: 4px; white-space: nowrap; vertical-align: 1px; font-weight: 600; }
.pc2-tag.t2 { background: var(--mid-bg); color: var(--mid); }
.pc2-tag.dn { background: #eef2f3; color: var(--muted); font-weight: 500; }
.pc-acts-top #pc2Grp { margin-left: 10px; }
.pc2-gtbl tr.pc2-g td { vertical-align: top; }
.pc2-gtbl .pc2-tw { display: inline-block; width: 14px; color: var(--muted); font-size: 11px; }
.pc2-gtbl tr.pc2-mem td { background: #fafcfc; font-size: 12.5px; padding-top: 3px; padding-bottom: 3px; }
.pc2-gtbl tr.pc2-mem td.memo { padding-left: 26px; }
.pc2-gtbl .pill { margin-right: 2px; }
.pc2-lsum .pc2-lx { padding: 0 6px; font-size: 12px; }
tr.pc2-lrow td { background: #fafcfc; font-size: 12px; }
.pc2-hdlg .pc2-hhead { margin-bottom: 8px; } .pc2-hdlg .pc2-hhead > .grow { flex: 1; }
.pc2-hdlg .tab-badge { vertical-align: 1px; }
.gn-tbl tr.pc2-wh td { background: #f4fafb; font-size: 12.5px; padding: 3px 8px; }
.gn-tbl tr.pc2-wh input { width: 64px; padding: 2px 6px; text-align: right; }
.gn-tbl tr.pc2-wh .btn { padding: 1px 8px; font-size: 12px; }
.pc2-kwr { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 10px; padding: 8px 0; border-top: 1px solid var(--line); align-items: start; }
.pc2-kwd { font-size: 12px; }
.pc2-kchips { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.pc2-kchip { display: inline-flex; align-items: center; border: 1px solid #c9dde2; background: #f4fafb; border-radius: 999px; padding: 1px 4px 1px 10px; font-size: 12.5px; }
.pc2-kchip button { border: 0; background: none; cursor: pointer; color: var(--muted); padding: 0 4px; font-size: 13px; line-height: 1; }
.pc2-kchip button:hover { color: var(--lo); }
.pc2-kadd { width: 130px; padding: 2px 8px; font-size: 12.5px; border-style: dashed; }
.pc2-btbl { width: 100%; font-size: 12.5px; } .pc2-btbl td { padding: 3px 6px; border-bottom: 1px solid var(--line); } .pc2-btbl .btn { padding: 1px 8px; font-size: 12px; }
@media (max-width: 760px) { .pc2-kwr { grid-template-columns: 1fr; } }
@media (max-height: 820px) { .pc2-st { padding: 1px 7px 2px; } .pc2-ctx { margin-top: 3px; padding: 2px 6px 2px 10px; } }
/* v0.16.0 통합 점검 — 1366 폭에서 표 오른쪽 열이 잘리지 않게 (거래처 잔액 거래처명 · 자금일보 원인 칸 줄바꿈) */
@media (max-width: 1500px) {
  .gb-tbl td.gb-pn { max-width: 190px; }
  .gb-tbl th, .gb-tbl td { padding: 3px 5px; }
  .cash-tbl td.cash-nm { min-width: 110px; max-width: 150px; }
  .cash-tbl th, .cash-tbl td { padding-left: 5px; padding-right: 5px; }
  .cash-tbl td:last-child { min-width: 180px; white-space: normal; }
  #gbQ { width: 150px; }
  .gb-bar input[type=date] { width: 128px; }
}

/* v0.17 (1001-1) 적요별 묶어 보기 = 맞추는 화면: 위하고 잔액 줄 · 잔액 칸 · 고른 합계 바 · 월별 차이 · 1건 빼기 */
.pc2-bar { position: sticky; top: 0; z-index: 3; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; padding: 6px 10px; background: #f3f7f7; border-bottom: 1px solid var(--line, #d6e0e1); font-size: 12.5px; }
.pc2-bar.has-t { background: #0e4f57; color: #fff; flex-direction: column; align-items: stretch; }
.pc2-bar.has-t .muted { color: #cfe3e5; }
.pc2-bar .pcb-l1 { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.pc2-bar .pcb-rest { padding: 1px 8px; border-radius: 6px; background: #fff1d6; color: #7a4a00; }
.pc2-bar .pcb-rest.zero { background: #e3f2e7; color: #1d6b35; }
.pc2-bar.has-t .btn { color: inherit; }
.pc2-bar.has-t .btn.primary { background: #fff; color: #0e4f57; }
.pc2-bar .pcb-mon { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding-top: 4px; }
.pc2-bar .pcb-ml { margin-right: 4px; }
.pc2-bar .pcb-m { border: 0; border-radius: 6px; padding: 2px 8px; font: inherit; font-size: 12px; cursor: pointer; background: #135b64; color: #fff; }
.pc2-bar .pcb-m.neg { background: #b42318; }
.pc2-bar .pcb-m.pos { background: #7a5a12; }
.pc2-bar .pcb-m.on { outline: 2px solid #fff; }
.pc2-bar .pcb-shift { margin-left: auto; font-size: 12px; }
.pc2-gtbl tr.pc2-t td { background: #e8f0fb; }
.pc2-gtbl tr.pc2-t.sel td { background: #cfe0f7; }
.pc2-gtbl .pc2-tb { display: inline-block; padding: 0 6px; margin-right: 4px; border-radius: 8px; background: #1d4f9a; color: #fff; font-size: 11px; }
.pc2-gtbl tr.pc2-tm td { background: #f2f6fc; }
.pc2-gtbl tr.retire td { opacity: .78; }
.pc2-gtbl tr.pc2-odd td { background: #fff3d1; }
.pc2-gtbl tr.pc2-skip td { text-decoration: line-through; color: var(--muted, #8a9a9c); }
.pc2-gtbl tr.pc2-skip td input { text-decoration: none; }
.pc2-gtbl tr.pc2-dim td { opacity: .45; }
.pc2-gtbl tr.pc2-hit td { font-weight: 600; }
.pc2-gtbl td.pcb-ok { color: #1d6b35; font-weight: 700; }
.pc2-gtbl td.pcb-rest { color: #7a4a00; font-weight: 700; }
.pcb-reps { display: flex; flex-direction: column; gap: 2px; max-height: 220px; overflow: auto; border: 1px solid var(--line, #d6e0e1); border-radius: 6px; padding: 4px 8px; }
.pcb-rep { display: flex; gap: 6px; align-items: baseline; font-size: 13px; }
.pcb-rep .num { margin-left: auto; }

/* v0.17.1 (1002-②) 금액 칸 차액 꼬리표 — 칸 바로 위, 숫자는 칸과 오른쪽 끝·자릿수 맞춤 */
.amt-tag { position: fixed; z-index: 2147483000; pointer-events: none; box-sizing: border-box; padding: 2px 0 2px 8px; background: #fffbea; border: 1px solid #e2c766; border-radius: 6px;
  box-shadow: 0 3px 10px rgba(60, 50, 0, .18); color: #3b3000; line-height: 1.35; white-space: nowrap; font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; }
.amt-tag .r { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.amt-tag .k { font-size: .82em; color: #7a6a2a; font-weight: 400; }
.amt-tag b { font-weight: 700; letter-spacing: 0; }
.amt-tag .r.left b { color: #4b5a5f; } .amt-tag .r.left .k { color: #66777d; }
.amt-tag .r.ok .k { color: #1e7a45; font-weight: 700; font-size: .9em; }
.amt-tag .r.over b, .amt-tag .r.over .k { color: #b23b2e; font-weight: 700; }
.amt-tag .r.hint .k { font-size: .75em; color: #8a7b3a; }
.amt-tag::after { content: ''; position: absolute; right: 14px; bottom: -5px; width: 8px; height: 8px; background: #fffbea; border-right: 1px solid #e2c766; border-bottom: 1px solid #e2c766; transform: rotate(45deg); }
.amt-tag.below::after { bottom: auto; top: -5px; transform: rotate(225deg); }
input.num, input.e-amt, input.lw-am, #gnRows input[data-f=dr], #gnRows input[data-f=cr] { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; }

/* v0.17.2 (1002-W) 급여 › 사업·일용·기타소득 */
.wo-kinds { display: flex; flex-direction: column; gap: 4px; margin: 0 0 8px; }
.wo-k { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; font-size: 13px; background: #f7fafb; border: 1px solid var(--line); border-radius: 8px; padding: 4px 10px; }
.wo-k b { min-width: 118px; } .wo-k label { display: inline-flex; gap: 4px; align-items: center; }
.wo-k input[data-woa] { width: 170px; } .wo-k input[data-wop] { width: 200px; } .wo-k input.need { border-color: #d9534f; background: #fdf0ee; }
.wo-tbl tr.sel td { background: #eef8fa; }

/* v0.18.0 (1002-2) 할 일: 목록 ↔ 아래 전표 칸 경계 끌기 · 전표 칸 기본 약 1cm 더 높게 (150 → 188 · 낮은 화면 104 → 142) */
.proc { grid-template-rows: auto auto auto auto minmax(110px, 1fr) 8px auto auto; grid-template-areas: "tabs" "filter" "chips" "steps" "list" "split" "lines" "reason"; }
.proc.side { grid-template-areas: "tabs tabs" "filter filter" "chips chips" "steps steps" "list side" "split side" "lines side" "reason side"; }
.proc > .pc-split { grid-area: split; cursor: row-resize; border-radius: 4px; margin: -3px 30%; background: transparent; position: relative; }
.proc > .pc-split::after { content: ''; position: absolute; left: 50%; top: 3px; width: 44px; margin-left: -22px; height: 2px; border-radius: 2px; background: #c9d6da; }
.proc > .pc-split:hover, .proc > .pc-split.on { background: #d8eef3; }
.proc .pc-lines { height: var(--pc-lines-h, 188px); max-height: none; }
@media (max-height: 820px) { .proc .pc-lines { height: var(--pc-lines-h, 142px); max-height: none; } }
.proc.lines-off > .pc-split { display: none; }
/* v0.18.0 (1002-4) 모아보기 › 위하고 잔액 전체 보기 */
.pc2-tall { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 5px 10px; background: #fff; border-bottom: 1px solid var(--line, #d6e0e1); font-size: 12.5px; }
.pc2-tall .pcb-allbtn { padding: 3px 10px; font-size: 12.5px; }
.pc2-tall .pcb-allbtn.on { background: #1d4f9a; border-color: #1d4f9a; color: #fff; font-weight: 600; }
.pc2-tall .pcb-clss { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.pc2-tall .pcb-cls { border: 1px solid var(--line, #d6e0e1); background: #fff; border-radius: 12px; padding: 2px 9px; font-size: 12px; cursor: pointer; }
.pc2-tall .pcb-cls.on { background: #e8f0fb; border-color: #1d4f9a; color: #1d4f9a; }
.pc2-tall select { font-size: 12.5px; padding: 2px 4px; max-width: 260px; }
.pc2-gtbl thead th { top: var(--pc2bh, 0px); }

/* v0.18.6 (1005) 거래처 칸 대표자 */
.pc-ceo { font-size: 11px; font-weight: 400; }
/* v0.18.9 (1006) 받는 사람 구분 (급여)·(사업)·(기타)·(일용) */
.pk { font-size: 11px; font-weight: 600; margin-left: 1px; }
/* v0.19.4 (1007) 할 일 구분 칩 — 상태 칩 옆 */
.pk-chips { display: inline-flex; gap: 4px; align-items: center; } .pk-sep { width: 1px; height: 16px; background: var(--line); margin: 0 3px; }
.pc-chips .chip-f.pkf { padding: 2px 8px; font-weight: 600; } .chip-f.pkf.zero { opacity: .5; } .chip-f.pkf.on { color: #fff; } .pk-pay { color: #1f5fbf; } .pk-biz { color: #a35a00; } .pk-etc { color: #7a3fb0; } .pk-day { color: #1e7b4f; } .pk-x { color: var(--muted, #777); }
/* v0.20.0 (1007) 가상 코드 · 급여·세금 › 예수금 */
.vc { display: inline-block; font: 600 11px/1.5 ui-monospace, Menlo, Consolas, monospace; color: #6b4fa3; background: #f1ecfa; border: 1px solid #ddd0f2; border-radius: 4px; padding: 0 4px; margin-right: 2px; vertical-align: 1px; }
.vc:empty { display: none; }
.ys-notes { margin-top: 6px; display: grid; gap: 4px; }
.ys-notes .note { margin: 0; font-size: 12.5px; }
.ys-notes details > .note { margin-top: 4px; }
.ys-tbl th.ys-k { text-align: center; border-bottom: 1px solid var(--line, #ddd); }
.ys-tbl th.ys-k.ins { background: #f3f8f3; }
.ys-tbl th.ys-k .btn { padding: 0 6px; min-height: 0; line-height: 1.4; }
.ys-tbl td.num, .ys-tbl th.num { white-space: nowrap; }
.ys-tbl tfoot td { border-top: 2px solid var(--line, #ccc); background: #fafafa; position: sticky; bottom: 0; }
.ys-diff { color: #b5651d; font-weight: 700; cursor: help; }
.ys-map td, .ys-map th { padding: 4px 8px; }
.seg { display: inline-flex; gap: 0; }
.seg .btn { border-radius: 0; }
.seg .btn:first-child { border-radius: 6px 0 0 6px; }
.seg .btn:last-child { border-radius: 0 6px 6px 0; }
#ysPT tr.sel td { background: #eaf2ff; }
/* v0.20.3 (1007) 원장 창 외화 계좌: 통장 잔액 칸 = 외화 잔액 */
.lw-fx { font-size: 12px; color: #1f5fbf; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* v0.23.3 (1009) 위하고 통장 처리점·거래 구분·상대 사업자번호 — 적요 옆 흐린 글씨 */
.memo-x { color: var(--muted, #777); font-size: 11.5px; font-weight: 400; white-space: nowrap; }
/* v0.23.4 (1009 20:31 회계사님) 할 일 › 통장 화면 간결화 — 상단 줄 줄이고 그리드에 높이를 · 동선은 왼쪽으로 */
.top.docked { padding: 3px 12px; gap: 8px; }
.top.docked .menus { display: flex; align-items: stretch; gap: 0; padding: 0; margin-left: 6px; order: 0; }
.top.docked .menus button { border: 0; background: none; padding: 6px 10px; cursor: pointer; color: #d6e9ee; font-size: 13.5px; font-weight: 600; border-bottom: 3px solid transparent; white-space: nowrap; }
.top.docked .menus button:hover { color: #fff; }
.top.docked .menus button.on { color: #fff; border-bottom-color: #ffd166; }
.top.docked .menus .menu-set { margin-left: 0; font-weight: 500; }
.top.docked .menus .tab-badge { vertical-align: middle; }
.top.docked .company-pick { flex: 0 1 auto; }
.top.docked .brand .ver { display: inline; }
.tabs.docked .subs { border-top: 0; padding: 2px 10px; }
.tabs.docked .subs button { padding: 2px 11px; font-size: 13px; }
.scrhead.hidden { display: none; }
/* 통장 탭: 탭 줄 = 탭 + 상태 칩(왼쪽) · 거르기 줄 = 동작 단추(왼쪽) + 거르기 칸 · 단계는 한 줄 띠 */
.proc.cmp { grid-template-rows: auto auto auto minmax(110px, 1fr) 8px auto auto; grid-template-areas: "tabs" "filter" "steps" "list" "split" "lines" "reason"; gap: 4px; }
.proc.cmp.side { grid-template-areas: "tabs tabs" "filter filter" "steps steps" "list side" "split side" "lines side" "reason side"; }
.proc.cmp .pc-tabs { gap: 4px; }
.proc.cmp .pc-tabs > button[data-ev] { padding: 6px 11px; }
.proc.cmp .pc-sep { width: 1px; height: 18px; background: var(--line); margin: 0 6px; flex: none; }
.proc.cmp .pc-tabs .pc-learn { font-size: 12px; white-space: nowrap; margin-left: 6px; }
.proc.cmp .pc-tabs .pc-help { display: none; }
.proc.cmp .pc-tabs .pc-help-btn { display: inline-block; }
.proc.cmp.help-on .pc-tabs .pc-help { display: block; position: absolute; right: 0; top: 100%; z-index: 20; background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; box-shadow: 0 6px 18px rgba(0,0,0,.12); white-space: normal; max-width: 720px; }
.proc.cmp .pc-filter { gap: 6px; }
.proc.cmp .pc-filter .pc-acts-top { margin-left: 0; }
.proc.cmp .pc-filter .pc-sel { font-size: 12px; white-space: nowrap; }
.proc.cmp .pc-filter input, .proc.cmp .pc-filter select { padding: 4px 7px; }
.proc.cmp .pc-filter input[type=date] { width: 128px; }
.proc.cmp .pc-chips .chip-f, .proc.cmp .pc-tabs .chip-f { padding: 2px 8px; font-size: 12px; }
.proc.cmp .chip-f.warn { background: #fff3cd; border-color: #e6c76b; color: #6b4b00; }
.proc.cmp .pc2-st { flex: 0 0 auto; max-width: none; border-radius: 4px; padding: 1px 8px; display: inline-flex; gap: 6px; align-items: center; height: 24px; }
.proc.cmp .pc2-st .pc2-t, .proc.cmp .pc2-st .pc2-c { display: inline; font-size: 12px; }
.proc.cmp .pc2-st .pc2-c { font-size: 11.5px; }
.proc.cmp .pc2-row { gap: 4px; }
.proc.cmp .pc-list th { font-size: 12.5px; font-weight: 700; padding: 4px 8px; }
.proc.cmp .pc-list td { padding: 3px 8px; font-size: 12.5px; line-height: 1.35; }
.proc.cmp .pc-list td.memo .badge, .proc.cmp .pc-list td .pill { line-height: 1.3; }
.proc.cmp .pc-lines td, .proc.cmp .pc-lines th { padding: 3px 8px; font-size: 12.5px; }
.proc.cmp .pc-lines th { font-weight: 700; }
.proc.cmp .pc-more { display: inline-block; }
.proc.cmp .pc-more .dd-list { min-width: 200px; }
.proc.cmp .pc-more .dd-list .btn.on { background: var(--soft); color: var(--brand); font-weight: 600; }
.proc.cmp .pc-filter #pcQ { flex: 1 1 160px; min-width: 140px; max-width: 360px; }
.proc.cmp .pc-filter #pcMin, .proc.cmp .pc-filter #pcMax { width: 86px !important; }
.proc.cmp .pc-filter select#pcBank { max-width: 180px; }
.proc.cmp .pc-list td { padding: 2px 8px; }
.proc.cmp .pc-list th { padding: 3px 8px; }
.proc.cmp .pc-lines { height: var(--pc-lines-h, 118px); }
.pc2-st .pc2-sl { color: #b8c4c8; margin: 0 2px; }
.pc2-st .pc2-done { color: var(--muted); }

/* v0.23.6 (1010 회계사님) 제안 확정 키캡 · 세 단추 노출 · 표는 내용 너비로 왼쪽에 붙임(열 끌기·더블클릭·오른쪽 클릭은 grid.js 0.16.0 그대로) · 잔액 열은 계좌 하나일 때만 */
.kbd.key { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 17px; padding: 0 4px; font-size: 13px; line-height: 1; border-radius: 5px; }
.btn.primary .kbd.key { background: rgba(255,255,255,.14); }
.pc-acts-top #pc2Grp { margin-left: 0; }
.pc-acts-top .btn.on { background: var(--soft); color: var(--brand); border-color: var(--brand-2); font-weight: 600; }
.pc-list .pc-tbl:not(.gr-fixed) { width: max-content; max-width: none; min-width: 0; } /* v0.24.5 내용 너비 그대로 — 화면보다 넓으면 가로 스크롤 (칸이 잘려 …로 보이지 않게) */
.pc-list .pc-tbl td.memo { max-width: 520px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* v0.24.5 잔액 열은 숨기지 않고 안 그림 (pcShowBal) */

/* v0.24.0 (1010 회계사님) 묶어 보기 = 한 표 (pcgrp.js) */
.pcg-tbl td, .pcg-tbl th { white-space: nowrap; }
.pcg-tbl tr.pcg-g td { vertical-align: middle; }
.pcg-tbl tr.pcg-led td { background: #eef5f0; }
.pcg-tbl tr.pcg-led.under td:first-child { box-shadow: inset 3px 0 0 #9fc9ad; }
.pcg-tbl tr.pcg-led.sel td { background: #d9ecdf; }
.pcg-tbl tr.pcg-led.cur td { background: #dff0f3 !important; }
.pcg-tbl tr.pcg-x td { background: #f6faf7; color: #4a5a60; font-size: 12px; }
.pcg-tbl tr.pcg-none td { color: #9b1c1c; background: #fff8f6; font-size: 12.5px; }
.pcg-tbl tr.pcg-sep td { background: #f4f7f8; font-weight: 700; color: #3a4a50; border-top: 2px solid #cfd8dc; padding-top: 5px; padding-bottom: 5px; }
.pcg-tbl td.pre { color: #7a8a90; font-style: italic; }
.pcg-tbl td.memo.pcg-name { max-width: 460px; overflow: hidden; text-overflow: ellipsis; }
.pcg-tbl .btn.ghost.pcg-lw, .pcg-tbl tr.pcg-led .btn.ghost { padding: 0 6px; font-size: 11.5px; height: 20px; line-height: 18px; }
.pcg-rest { font-size: 11.5px; padding: 0 6px; border-radius: 6px; background: #fff1d6; color: #7a4a00; font-weight: 600; }
.pcg-rest.ok { background: #e3f2e7; color: #1d6b35; }
.pcg-rest.over { background: #fde2e2; color: #9b1c1c; }
.pcg-all { padding: 1px 8px; font-size: 12px; font-weight: 500; margin-left: 8px; }
.pcg-all.on { background: #1d4f9a; border-color: #1d4f9a; color: #fff; }
.pc-sel .pcg-btn { padding: 2px 8px; font-size: 12px; margin-left: 4px; }
.pcg-tbl tr.pcg-sep .pcb-cls { margin-left: 2px; }
.pcg-tbl tr.pcg-sep td { white-space: normal; }
.pcg-tbl tr.pcg-sep td > * { vertical-align: middle; }
.pcg-ready { font-weight: 400; font-size: 12px; margin-left: 14px; display: inline-flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.pcg-rd { display: inline-block; padding: 0 7px; border-radius: 6px; background: #eef2f3; color: #3a4a50; white-space: nowrap; }
.pcg-rd.warn { background: #fff1d6; color: #7a4a00; }
.pcg-rd.none { background: #f3f3f3; color: #8a9a9c; }
.pcg-tbl tr.pcg-l.sel td { background: #fff6dc; }
.pcg-tbl .lw-src { font-size: 11px; color: #1d4f9a; background: #e8f0fb; padding: 0 5px; border-radius: 4px; }
.pcg-tbl .lw-b { font-size: 11px; padding: 0 5px; border-radius: 4px; background: #eef2f3; }
/* v0.24.4 (1010 19:31 회계사님) 건별 통장 표: 어느 칸도 두 줄로 안 꺾임 — 넘치면 … (전체는 풍선) · 표가 넓으면 가로 스크롤 (열 폭은 끌어서) */
.pc-list .pc-tbl td, .pc-list .pc-tbl th { white-space: nowrap; }
.pc-list .pc-tbl td.ie-a { max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.pc-list .pc-tbl td.ie-p { max-width: 300px; overflow: hidden; text-overflow: ellipsis; }
.pc-list .pc-tbl td.ie-m { max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.pc-list .pc-tbl td.ie-a .pc2-tag, .pc-list .pc-tbl td.ie-a .badge { white-space: nowrap; }
input.dmd { font-variant-numeric: tabular-nums; text-align: center; }
/* v0.25.0 (1010 22:10·22:20·22:26 회계사님) 원천 대사 (whrecon.js) — 신고 ↔ 지급 한 표 · 칸 색 · 오른쪽 상세 · 아래 관련 통장 · 떠 있는 창 */
.whr-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 10px; align-items: start; }
.whr-wrap.win { grid-template-columns: minmax(0, 1fr) 340px; }
.whr-grid { overflow: auto; max-height: 52vh; }
.whr-wrap.win .whr-grid { max-height: none; }
.whr-tbl { width: max-content; min-width: 0; border-collapse: collapse; font-size: 12.5px; }
.whr-tbl th, .whr-tbl td { white-space: nowrap; padding: 3px 7px; border-bottom: 1px solid #edf1f2; }
.whr-tbl thead th { position: sticky; top: 0; background: #f4f7f8; z-index: 2; }
.whr-tbl thead tr:nth-child(2) th { top: 25px; font-weight: 500; color: #5a6a70; font-size: 11.5px; }
.whr-tbl th.whr-m, .whr-tbl th.whr-all { text-align: center; border-left: 1px solid #dfe5e8; }
.whr-tbl th.whr-all { background: #e9eff1; }
.whr-tbl td.whr-k { color: #3a4a50; font-weight: 600; }
.whr-tbl td.whr-l { min-width: 90px; }
/* 구분·항목은 왼쪽에 붙박이 (달이 많아 가로로 밀려도 이름이 보이게) */
.whr-tbl th:nth-child(1), .whr-tbl td.whr-k { position: sticky; left: 0; z-index: 3; background: #fff; width: 76px; min-width: 76px; max-width: 76px; overflow: hidden; text-overflow: ellipsis; }
.whr-tbl th:nth-child(2), .whr-tbl td.whr-l { position: sticky; left: 76px; z-index: 3; background: #fff; width: 104px; min-width: 104px; max-width: 104px; overflow: hidden; text-overflow: ellipsis; border-right: 1px solid #dfe5e8; }
.whr-tbl thead th:nth-child(1), .whr-tbl thead th:nth-child(2) { z-index: 4; background: #f4f7f8; }
.whr-tbl tr.sum td.whr-k, .whr-tbl tr.sum td.whr-l { background: #f7f9fa; }
.whr-tbl td.whr-c { font-variant-numeric: tabular-nums; cursor: pointer; min-width: 84px; }
.whr-tbl td.whr-c.n { border-left: 1px solid #dfe5e8; color: #3a4a50; }
.whr-tbl td.whr-c.p { font-weight: 600; }
.whr-tbl td.whr-c.cur { outline: 2px solid #1f5f6b; outline-offset: -2px; }
.whr-tbl tr.sum td { background: #f7f9fa; font-weight: 700; border-top: 1px solid #d9e0e3; border-bottom: 2px solid #d9e0e3; }
.whr-tbl tr.sum td.whr-c { cursor: default; }
.whr-tbl tr.sec-tax td.whr-k { color: #5b3aa0; }
.whr-tbl td.st-ok { background: #e3f2e7; color: #1d6b35; }
.whr-tbl td.st-near { background: #eef7ea; color: #3a6b2a; }
.whr-tbl td.st-diff { background: #fff1d6; color: #7a4a00; }
.whr-tbl td.st-prop { background: #e8f0fb; color: #1d4f9a; }
.whr-tbl td.st-none { background: #fde2e2; color: #9b1c1c; }
.whr-tbl .whr-pp { color: #1d4f9a; font-weight: 500; }
.whr-tbl .whr-none { font-weight: 500; font-size: 11.5px; }
.whr-tbl .whr-plus { color: #1d4f9a; font-weight: 700; margin-left: 1px; }
.whr-tbl small.whr-bulk { display: inline-block; margin-left: 5px; font-size: 10.5px; padding: 0 5px; border-radius: 6px; background: #fff; border: 1px solid #cfd8dc; color: #3a4a50; font-weight: 500; }
.whr-legend { font-size: 11.5px; display: inline-flex; gap: 8px; align-items: center; }
.whr-legend i { display: inline-block; width: 11px; height: 11px; border-radius: 3px; margin-right: 3px; vertical-align: -1px; }
.whr-legend i.st-ok { background: #cfe9d6; } .whr-legend i.st-near { background: #dcefd4; } .whr-legend i.st-diff { background: #ffe3a8; } .whr-legend i.st-prop { background: #cfe0f7; } .whr-legend i.st-none { background: #f8c6c6; }
.whr-side { border-left: 1px solid #e5eaec; padding-left: 10px; min-height: 120px; font-size: 13px; }
.whr-side .whr-hint { padding: 10px 4px; line-height: 1.5; }
.whr-det h4 { margin: 10px 0 4px; font-size: 12.5px; color: #3a4a50; }
.whr-dh { display: flex; align-items: center; gap: 6px; }
.whr-dn { margin-top: 4px; }
.whr-stc { font-size: 11px; padding: 0 7px; border-radius: 999px; }
.whr-stc.st-ok { background: #e3f2e7; color: #1d6b35; } .whr-stc.st-near { background: #eef7ea; color: #3a6b2a; } .whr-stc.st-diff { background: #fff1d6; color: #7a4a00; } .whr-stc.st-prop { background: #e8f0fb; color: #1d4f9a; } .whr-stc.st-none { background: #fde2e2; color: #9b1c1c; }
.whr-tx { display: flex; align-items: center; gap: 6px; padding: 3px 4px; border-bottom: 1px dashed #edf1f2; flex-wrap: wrap; }
.whr-tx.me { background: #fff9e8; }
.whr-tx .btn.sm { padding: 0 7px; font-size: 11.5px; height: 20px; line-height: 18px; margin-left: auto; }
.whr-tx .btn.sm + .btn.sm { margin-left: 0; }
.whr-det .lw-src { font-size: 11px; color: #1d4f9a; background: #e8f0fb; padding: 0 5px; border-radius: 4px; }
.whr-det .lw-src.wh { color: #5b3aa0; background: #efe9fb; }
.whr-bot { margin-top: 10px; }
.whr-bank { overflow: auto; max-height: 40vh; }
.whr-btbl { width: 100%; font-size: 12.5px; }
.whr-btbl th, .whr-btbl td { white-space: nowrap; }
.whr-btbl td.memo { max-width: 360px; overflow: hidden; text-overflow: ellipsis; }
.whr-btbl td.whr-ln { max-width: 520px; overflow: hidden; text-overflow: ellipsis; color: #3a4a50; }
.whr-btbl tr.sel td { background: #fff6dc; }
.whr-btbl tr.me td { box-shadow: inset 3px 0 0 #1f5f6b; }
.whr-btbl td.whr-ba .btn.sm { padding: 0 7px; font-size: 11.5px; height: 20px; line-height: 18px; margin-right: 3px; }
.whr-btbl .chip.st-suggest, .whr-btbl .chip.st-weak { background: #e8f0fb; color: #1d4f9a; }
.whr-btbl .chip.st-done, .whr-btbl .chip.st-exported, .whr-btbl .chip.st-booked { background: #e3f2e7; color: #1d6b35; }
.whr-btbl .chip.st-open { background: #fde2e2; color: #9b1c1c; }
.whr-at-tbl { width: 100%; margin: 8px 0; }
.whr-at-tbl input.num { text-align: right; }
.whr-at-t { padding: 6px 8px; background: #f4f7f8; border-radius: 8px; }
.whr-at-rest { margin: 6px 0 10px; }
.whr-at-rest.bad { color: #9b1c1c; }
dialog.whr-win { padding: 0; min-width: 720px; width: min(1500px, 96vw); height: 46vh; max-height: 86vh; } /* 처음엔 아래쪽 — 위 통장 목록을 보며 (옮기거나 늘린 자리는 기억) */
dialog.whr-win > .dlg-body { padding: 8px 10px; }
dialog.whr-win .whr-grid { max-height: calc(46vh - 70px); }
/* v0.25.1 (1011 회계사님) 떠 있는 창을 브라우저 창으로 (⧉) — 새 창(html.pop)은 머리글·메뉴 없이 그 창만 꽉 차게 */
dialog.float > .pop-btn { position: absolute; top: 5px; right: 38px; z-index: 50; width: 24px; height: 22px; line-height: 20px; padding: 0; border: 1px solid #b9d3d9; border-radius: 6px; background: #fff; color: #1f5f6b; font-size: 14px; cursor: pointer; opacity: .75; }
dialog.float > .pop-btn:hover { opacity: 1; background: #eaf3f5; }
dialog.float#gnWin > .pop-btn, dialog.float#fdWin > .pop-btn, dialog.float.whr-win > .pop-btn { right: 8px; }
html.pop header.top, html.pop #tabs, html.pop #main, html.pop #result, html.pop .menus, html.pop #subs { display: none !important; }
html.pop body { background: #fff; overflow: hidden; }
html.pop dialog.float, html.pop dialog.float[open] { position: fixed !important; inset: 0 !important; left: 0 !important; top: 0 !important; right: 0 !important; bottom: 0 !important; width: 100vw !important; height: 100vh !important; max-width: none !important; max-height: none !important; margin: 0 !important; border: 0; border-radius: 0; box-shadow: none; resize: none; }
html.pop dialog.float.whr-win .whr-grid, html.pop dialog.whr-win .whr-grid { max-height: calc(100vh - 64px) !important; }
html.pop dialog.float > .pop-btn { display: none; }

/* 2.1.0 통장2 — 거래처 기준 */
.b2 .b2-sw { border: 1px solid var(--line); background: #fff; border-radius: 4px; padding: 1px 8px; font: inherit; font-size: 12px; cursor: pointer; color: var(--ink); white-space: nowrap; }
.b2 .b2-sw.on { background: var(--soft); border-color: var(--brand); color: var(--brand); font-weight: 600; }
.b2 .b2-sws { display: flex; gap: 5px; align-items: center; min-width: 0; overflow-x: auto; }
.b2 .badge.bank-b2 { background: #fde2e2; color: #9b1c1c; } .b2 .badge.sale-b2 { background: #dcebf7; color: #1f5fbf; } .b2 .badge.buy-b2 { background: #e6f0e6; color: #1e7b4f; } .b2 .badge.oth-b2 { background: #ece6f5; color: #5a3d8a; }
.b2 .b2-tbl tr.b2-grp td { background: #f4f7f8; font-weight: 700; color: var(--brand); font-size: 12px; padding: 2px 8px; }
.b2 .b2-tbl tr.sel td { background: #fff6dc; }
.b2 .b2-tbl tr.cur td { box-shadow: inset 2px 0 0 var(--brand); }
.b2 .b2-tbl td, .b2 .b2-tbl th { padding: 2px 8px; font-size: 12.5px; white-space: nowrap; }
.b2 .b2-tbl th { font-weight: 700; }
.b2 .pill.sug { background: #e4ecef; color: var(--brand); } .b2 .pill.open { background: #fde2e2; color: #9b1c1c; } .b2 .pill.ok { background: #e6f0e6; color: #1e7b4f; }
.b2 .b2-tbl td.memo { max-width: 380px; overflow: hidden; text-overflow: ellipsis; }
.b2 .b2-tbl tr.cur td { box-shadow: none; } .b2 .b2-tbl tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--brand); }

/* 2.1.1 엔진 비교 · 정답지 검증 모드 탭 */
.pc-tabs > button[data-mode] { border: 0; background: none; padding: 6px 11px; font: inherit; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap; }
.pc-tabs > button[data-mode].on { color: var(--ink); font-weight: 700; border-bottom-color: var(--brand); }
.sh #shRange input[type=date] { font: inherit; font-size: 12.5px; padding: 2px 4px; border: 1px solid var(--line); border-radius: 4px; }
