
body[data-site-auth="locked"] > :not(#site-login-panel):not(header):not(style):not(script){display:none!important}
body[data-site-auth="locked"] > header{display:none!important}
#site-login-panel{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:var(--canvas);border:0;border-radius:0;overflow:auto}
#site-login-panel #admin-login{width:360px;max-width:calc(100vw - 32px);margin:auto}
#site-login-panel[hidden]{display:none}
.jh-brand-logo[role="button"]{cursor:pointer}

/* 9003: 경영현황 표 디자인 - 장헌산업대시보드_1026_v1 기준 (월별 손익·현금흐름 표와 제목줄만) */
.table-main { font-size: 13px; }
.cashflow-table col.activity-col { width: 36px; }
.cashflow-table col.item-col { width: 150px; }
.cashflow-table thead th:first-child { position: sticky; left: 0; z-index: 8; width: 186px; min-width: 186px; text-align: left; }
.cashflow-table tbody td:first-child, .cashflow-table .activity-cell { width: 36px; min-width: 36px; }
.cashflow-table .activity-cell { position: sticky; left: 0; z-index: 3; padding: 8px 5px; background: #e3eef7; border-right: 1px solid #cbdde9; color: #214767; text-align: center; vertical-align: middle; writing-mode: vertical-rl; letter-spacing: 0.12em; font-weight: 700; }
.cashflow-table .item-cell { position: sticky; left: 36px; z-index: 2; min-width: 0; background: #fff; text-align: left; font-weight: 400; }
.cashflow-table .cash-opening th, .cashflow-table .cash-opening td { background: #f1f6fa; font-weight: 700; }
.cashflow-table .cash-change th, .cashflow-table .cash-change td { background: #dceaf5; font-weight: 700; }
body > main:not(#profit-screen):not(#catalog-screen) > #left > .panel-head, body > main:not(#profit-screen):not(#catalog-screen) > #right > .panel-head { min-height: unset; padding: 12px 10px 9px; align-items: flex-start; flex-wrap: nowrap; border-bottom: 0; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head .title-inline { flex: 1 1 auto; min-width: 0; align-items: center; flex-wrap: nowrap; gap: 9px; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head h2 { flex: 0 0 auto; padding-left: 0; color: #1c4465; font-size: 18px; font-weight: 700; line-height: 20px; letter-spacing: -1px; white-space: nowrap; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head h2::before { content: none; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head .title-inline small { min-width: 0; overflow: hidden; color: #738899; font-size: 11px; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head .tools { flex: 0 0 auto; flex-wrap: nowrap; white-space: nowrap; }
body > main:not(#profit-screen):not(#catalog-screen) > #right { border-left: 0; }
body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head .tools > .info { padding: 0; border: 0; border-radius: 0; background: transparent; color: #71899c; font-size: 11px; font-weight: 400; line-height: 18px; }
body > main:not(#profit-screen):not(#catalog-screen) .jh-management-unit { display: inline-flex; margin-left: 3px; padding: 0 0 0 9px; border: 0; border-left: 1px solid #cbd8e2; border-radius: 0; background: transparent; color: #71899c; font-size: 11px; font-weight: 400; line-height: 18px; }
#income { table-layout: fixed; min-width: 760px; }
#income th:first-child { width: 210px; min-width: 210px; }
#income thead th:first-child { text-align: center; }
#income thead th:not(:first-child), #income tbody td { text-align: center; }
.cashflow-table thead th:not(:first-child), .cashflow-table tbody td { text-align: center; }
#income tbody tr.sum > th, #income tbody tr.sum > td, #income tbody tr.end > th, #income tbody tr.end > td { border-bottom: 1px solid #91a8b7; }
#income tbody tr.end > th, #income tbody tr.end > td { border-bottom-color: #91ad9e; }
.cashflow-table tbody tr.cash-opening > th, .cashflow-table tbody tr.cash-opening > td, .cashflow-table tbody tr.cash-subtotal > th, .cashflow-table tbody tr.cash-subtotal > td, .cashflow-table tbody th.activity-cell { border-bottom: 1px solid #91a8b7; }
.cashflow-table tbody tr.cash-ending > th, .cashflow-table tbody tr.cash-ending > td { border-bottom: 1px solid #91ad9e; }
#income thead th, .cashflow-table thead th { height: 36px; padding: 7px 6px; border-top: 1px solid #3f6c88; border-bottom: 1px solid #d6e4ee; background: #dfeaf3; color: #214767; font-size: 11px; font-weight: 700; line-height: 16px; box-shadow: inset 0 1px 0 #fff; }
#income thead th:first-child, .cashflow-table thead th:first-child { border-top-left-radius: 8px; }
#income thead th:last-child, .cashflow-table thead th:last-child { border-top-right-radius: 8px; }
@media (min-width: 2200px) { #income, .cashflow-table { font-size: 14px; } }
@media (min-width: 2200px) { #income thead th, .cashflow-table thead th { font-size: 13px; } }
@media (min-width: 2200px) { .cashflow-table col.item-col { width: 180px; } }
@media (min-width: 2200px) { .cashflow-table thead th:first-child { width: 216px; min-width: 216px; } }
@media (min-width: 2200px) { body > main:not(#profit-screen):not(#catalog-screen) > section > .panel-head .tools > .info, body > main:not(#profit-screen):not(#catalog-screen) .jh-management-unit { font-size: 12px; } }
#income, .cashflow-table { background: transparent; }
#income tbody tr:not(.sum):not(.end) > *, .cashflow-table tbody tr:not(.cash-opening):not(.cash-change):not(.cash-subtotal):not(.cash-ending) > :not(.activity-cell) { background: #fff; }
#income tbody tr:not(.sum):not(.end):hover > *, .cashflow-table tbody tr:not(.cash-opening):not(.cash-change):not(.cash-subtotal):not(.cash-ending):hover > :not(.activity-cell) { background: #f2f7fb; }
#income tbody tr.sum:hover > *, .cashflow-table tbody tr.cash-opening:hover > :not(.activity-cell), .cashflow-table tbody tr.cash-subtotal:hover > :not(.activity-cell) { background: #e1edf6; }
.cashflow-table tbody tr.cash-change:hover > :not(.activity-cell) { background: #cfe2ef; }
#income tbody tr.end:hover > *, .cashflow-table tbody tr.cash-ending:hover > :not(.activity-cell) { background: #dcefe6; }

/* 9003: 장헌산업(staff) 로그인은 변경 이력관리·이력 보기 숨김 (서버도 403) */
body:not([data-admin-role="integrator"]) [data-admin-section="history"],body:not([data-admin-role="integrator"]) .integrator-only{display:none!important}

/* 9003: 관리자 콘솔 팝업 — 아래 화면(프로젝트 현황·경영현황)은 그대로, 위에 띄우고 바깥은 어둡게 */
body[data-review-page="admin"]{overflow:hidden}
body[data-review-page="admin"] #admin-console{position:fixed;top:58px;left:24px;right:24px;bottom:16px;z-index:1500;display:flex;flex-direction:column;min-height:0;height:auto;overflow:hidden;border:1px solid #bfd2df;border-radius:12px;box-shadow:0 0 0 100vmax rgba(14,34,52,.45),0 16px 48px rgba(0,0,0,.35)}
/* 9003: 경영현황 표 높이는 JS(syncManagementHeights)가 두 표를 같게 맞춘다 — 행은 표 안에서 고르게 늘어난다 */
#income tbody tr,#management-screen .cashflow-table tbody tr{height:auto}

/* 9003: 관리자 콘솔 전용 창 — 아래 화면 없이 콘솔만 창 가득 */
body[data-admin-window="1"] #admin-console{top:48px;left:0;right:0;bottom:0;border:0;border-radius:0;box-shadow:none}
body[data-admin-window="1"] #admin-open{display:none!important}
/* 9003: 장헌산업(staff) 로그인 — 현장 소장 인건비·항목별 계정 기준은 보기만 */
body:not([data-admin-role="integrator"]) [data-admin-membership]{display:none!important}

/* 9003: 항목별 계정 기준(보기 전용) */
.item-acct-summary{margin:8px 0 12px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.item-acct-table{border-collapse:collapse;width:100%;font-size:13px}
.item-acct-table th,.item-acct-table td{border:1px solid #d9dee5;padding:5px 8px;text-align:left;vertical-align:top}
.item-acct-table thead th{background:#f3f5f8;position:sticky;top:0}
.item-acct-table td.num{text-align:right;font-variant-numeric:tabular-nums}
.item-acct-table tr.item-acct-first td{border-top:2px solid #9aa5b4}
.item-acct-status{display:inline-block;padding:1px 7px;border-radius:9px;font-size:12px;white-space:nowrap}
.item-acct-ok{background:#e6f4ea;color:#1e6b35}.item-acct-check{background:#fff1d6;color:#8a5300}
.item-acct-none{background:#fde7e7;color:#a12020}.item-acct-out{background:#eceff3;color:#59636e}
.item-acct-grid th[scope=rowgroup]{background:#f8f9fb;vertical-align:middle}
.item-acct-chips{line-height:1.9}
.item-acct-label{font-weight:600;color:#3d4652;margin-right:2px}.item-acct-note{margin-left:6px;color:#4a5562;font-size:12.5px;line-height:1.5}
.item-acct-excluded{margin-top:14px}.item-acct-excluded>summary{cursor:pointer;font-weight:600;padding:8px 10px;background:#eceff3;border-radius:6px;color:#3d4652}
.item-acct-excluded[open]>summary{margin-bottom:8px}
.forecast-sub{display:block;font-size:10px;line-height:1.25;color:#5d7486;text-align:right;white-space:nowrap;letter-spacing:-.4px}.forecast-sub i{font-style:normal;font-size:9px}.forecast-open-month .forecast-sub{margin-bottom:1px}#admin-content .admin-forecast-table input[data-forecast-month]::placeholder,#admin-content .admin-forecast-table input.forecast-group-box::placeholder{color:#9aabb9;font-size:11px;-webkit-text-fill-color:#9aabb9}#admin-content .admin-forecast-table input.forecast-group-box{background:#eef3f7;color:#17324d;border-color:#d3dde6;cursor:default;-webkit-text-fill-color:#17324d;opacity:1}#admin-content table.admin-forecast-annual td.forecast-month-amount input{font-size:12px;letter-spacing:-.3px;padding:3px 1px}.forecast-open-month{background:#f6fafc}
.forecast-alerts{margin:6px 0 10px;padding:8px 12px;border:1px solid #f0c46b;background:#fff8e8;border-radius:6px}.forecast-alerts table{margin-top:6px;border-collapse:collapse}.forecast-alerts th,.forecast-alerts td{padding:3px 8px;border-bottom:1px solid #f0dfb5;text-align:left}.forecast-alerts td.num{text-align:right}.forecast-alert-over td{color:#a5541b;font-weight:600}
.item-acct-chip{display:inline-block;margin:2px 4px 2px 0;padding:1px 8px;border-radius:5px;border:1px solid transparent;font-size:12.5px;white-space:nowrap;cursor:default}
.item-acct-chip small{font-size:11.5px;opacity:.85}.item-acct-chip em{font-style:normal;font-size:11px;opacity:.8}
.item-acct-chip.item-acct-ok{border-color:#b7dcc2}.item-acct-chip.item-acct-check{border-color:#f0c46b;font-weight:600}
.item-acct-chip.item-acct-none{border-color:#f0b0b0;font-weight:600}.item-acct-chip.item-acct-out{border-color:#d5dae1}

/* 9003: 지출 전표 분개·수정 팝업 — 칸이 겹치지 않게(선택·입력 칸은 칸 너비에 맞춤) */
#cost-split-form .cost-split-table td{overflow:visible}
#cost-split-form .cost-split-table select,#cost-split-form .cost-split-table input{width:100%;max-width:100%;box-sizing:border-box;min-width:0}
#cost-split-form>label{display:inline-flex;gap:6px;align-items:center;margin:4px 12px 4px 0}
#cost-split-form>label input[name=description]{width:360px;max-width:60vw}

/* 9003: 전표 수정·분개 (프로젝트 현황 항목 팝업) */
.jh-voucher-edit,.jh-voucher-mark{font-size:12px;padding:1px 8px;border-radius:4px;border:1px solid #9fb6c8;background:#fff;color:#244b68;cursor:pointer}
#voucher-history{margin:12px 0;padding:10px 14px;border:1px solid #d8e2ea;border-radius:8px;background:#f7fafc}
#voucher-history h4{margin:0 0 6px}.jh-voucher-history{margin:0 0 8px 18px;padding:0;line-height:1.7}
#voucher-edit-dialog{width:860px;max-width:94vw;max-height:88vh;padding:22px;border:1px solid #bfd2df;border-radius:10px;overflow:auto;color:#244b68}
#voucher-edit-dialog table{width:100%;border-collapse:collapse;table-layout:fixed;margin:10px 0;font-size:13px}
#voucher-edit-dialog th,#voucher-edit-dialog td{padding:5px 8px;border-bottom:1px solid #dce6ee;text-align:left;vertical-align:middle}
.voucher-edit-source th{width:12%;background:#f3f6f9}
.voucher-edit-parts select,.voucher-edit-parts input{width:100%;box-sizing:border-box;min-width:0}
.voucher-edit-parts input{text-align:right}.voucher-edit-parts td.num{text-align:right}
.voucher-edit-rest td{background:#f7f9fb;color:#4a5562}
/* 분개 차액 줄: 긴 설명은 칸 안에서 줄바꿈, 금액은 오른쪽 정렬(겹침 방지) */
.voucher-edit-rest td:first-child{white-space:normal;overflow-wrap:anywhere;overflow:hidden}
#voucher-rest-amount{text-align:right;white-space:nowrap}
.voucher-edit-modes{display:flex;gap:6px;margin:8px 0}.voucher-edit-modes button[aria-pressed=true]{background:#244b68;color:#fff}
.voucher-edit-actions{margin-top:12px;}
.admin-cost-viewonly{margin:6px 0 10px;color:#4a5562;font-size:13px}
/* 9003: 나뉜 전표 한 장 = 두 줄 */
.voucher-edit-cards tbody.voucher-card{border:1px solid #c9d7e3}
.voucher-edit-cards tbody.voucher-card tr:first-child td,.voucher-edit-cards tbody.voucher-card tr:first-child th{border-top:2px solid #9fb6c8}
.voucher-edit-cards th{background:#f3f6f9;font-weight:600;white-space:nowrap}
.voucher-edit-cards select,.voucher-edit-cards input{width:100%;box-sizing:border-box;min-width:0}
.voucher-edit-cards input.voucher-amount{text-align:right}.voucher-fixed{display:block;text-align:right}
.voucher-edit-cards td.num{text-align:right}
.voucher-edit-history{margin-top:14px;padding:10px 14px;border:1px solid #d8e2ea;border-radius:8px;background:#f7fafc}
.voucher-edit-history h4{margin:0 0 6px}.voucher-edit-history ol{margin:0 0 8px 18px;padding:0;line-height:1.7}
/* 9003: 항목 팝업 표 */
.cost-row-tools{display:flex;gap:12px;align-items:center;margin-left:auto}
.cost-row-tools input[type=search]{width:240px;padding:4px 8px}
.jh-voucher-table.jh-by-account{table-layout:fixed;width:100%}
.jh-voucher-table.jh-by-account td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jh-voucher-table.jh-by-account td:nth-child(1){text-align:center;color:#6b7785}
.jh-voucher-table.jh-by-account td:nth-child(5){text-align:right}
tr.jh-struck td{color:#9aa3ad;filter:blur(.4px);opacity:.6}
tr.jh-struck td:not(:last-child){text-decoration:line-through}
tr.jh-struck td:last-child{filter:none;opacity:1}
tr.jh-split-child td{background:#fbfcfe;font-size:12.5px}
tr.jh-split-child .jh-split-to{color:#244b68}
tr.jh-split-child.jh-elsewhere td{color:#9aa3ad;filter:blur(.4px);opacity:.6}
.jh-split-kind{font-size:11.5px;color:#7a4c00}
.jh-voucher-mark{background:#fff3c4!important;border-color:#e9c45a!important;color:#6b4a00!important}
.jh-voucher-mark.jh-voucher-excluded{background:#f6ecfa!important;border-color:#a865c9!important;color:#7b2d8e!important}
/* 모든 팝업: 닫기(×)는 오른쪽 위, 저장·닫기 버튼은 오른쪽 */
dialog>.dialog-close,dialog>button.dialog-close{position:absolute!important;top:12px!important;right:14px!important;left:auto!important;margin:0!important}
#voucher-edit-dialog{position:fixed}
.voucher-edit-actions,.admin-edit-actions{display:flex;justify-content:flex-end;gap:6px}
#cost-split-form>button[type=submit]{float:right}
/* 9003: 신규 프로젝트 입력 등 폼의 저장 버튼은 오른쪽 */
#project-create-form{display:flow-root}
#project-create-form>button[type=submit]{float:right;margin-left:auto}
#project-create-form>#project-create-message{clear:both}
/* 9003: 항목 팝업 표 정렬·선 — 제목 가운데, No·날짜·거래처 가운데, 적요 왼쪽, 공급가액 오른쪽, 비고 가운데. 옅은 파란 선 */
#cost-row-content .jh-voucher-table.jh-by-account{border-collapse:collapse;border:1px solid #cfe0ee}
#cost-row-content .jh-by-account th,#cost-row-content .jh-by-account td{border:1px solid #dbe8f3}
#cost-row-content .jh-by-account thead th{text-align:center}
#cost-row-content .jh-by-account td:nth-child(1),#cost-row-content .jh-by-account td:nth-child(2),#cost-row-content .jh-by-account td:nth-child(3){text-align:center}
#cost-row-content .jh-by-account td:nth-child(4){text-align:left}
#cost-row-content .jh-by-account td:nth-child(5){text-align:right}
#cost-row-content .jh-by-account td:nth-child(6){text-align:center}
/* 9003: 변경 이력관리 — 하단 시험 계산·계산 기록은 숨김, 표 열 너비 고정 */
#admin-test-preview,#admin-workflow{display:none!important}
.admin-change-history{table-layout:fixed;width:100%}
.admin-change-history td,.admin-change-history th{overflow-wrap:anywhere;vertical-align:top}
.admin-change-history td:nth-child(1),.admin-change-history td:nth-child(10){text-align:center}
#history-undo-selected{margin-left:8px}
/* 9003: 통합 사업 펼침 화살표가 보이게 */
#admin-content .admin-project-cost-table thead tr:first-child th:nth-child(1){width:58px}
#admin-content .admin-forecast-table .forecast-col-1 .admin-group-toggle{float:left;margin:1px 4px 0 0}
#residual-sort{font:inherit;font-weight:600;background:none;border:0;cursor:pointer;color:inherit}
/* 9003: 월별 예상 매출 툴팁 — 사업명 오른쪽에 금액 */
#profit-screen .jh-forecast-tip-name{display:flex;align-items:center;gap:6px}
#profit-screen .jh-forecast-tip-name b{margin-left:auto;padding-left:12px;font-weight:600;white-space:nowrap}
/* 9005: 항목 팝업 — 계정 버튼 줄, 글씨 14px·줄 높이 원래(39px)의 80%(31px) */
#cost-row-content .jh-account-chips{display:flex;flex-wrap:wrap;gap:4px 6px;margin:2px 0 8px;position:sticky;top:0;z-index:2;background:#fff;padding:4px 0}
/* 12번: 계정 버튼 줄은 한 줄(넘치면 옆으로 넘김), 표 머리는 버튼 줄 아래에 고정 */
.jh-account-chips{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}
#cost-row-content{--jh-chip-h:0px}
#cost-row-content:has(.jh-account-chips){--jh-chip-h:40px}
#cost-row-content table thead th{position:sticky;top:var(--jh-chip-h);z-index:1;background:#f4f8fb}
#cost-row-content .jh-account-chip{font:inherit;font-size:13px;padding:3px 8px;border:1px solid #b9cbd9;border-radius:12px;background:#fff;color:#244b68;cursor:pointer;white-space:nowrap}
#cost-row-content .jh-account-chip small{font-size:12px;color:#5d7387}
#cost-row-content .jh-account-chip.is-on{background:#244b68;border-color:#244b68;color:#fff}
#cost-row-content .jh-account-chip.is-on small{color:#dbe8f3}
#cost-row-dialog #cost-row-content table{font-size:14px}
#cost-row-dialog #cost-row-content table tbody td,#cost-row-dialog #cost-row-content table tbody th,#cost-row-dialog #cost-row-content table thead th{font-size:14px!important}
#cost-row-dialog #cost-row-content td,#cost-row-dialog #cost-row-content th{padding:5px 7px 4px;line-height:20px}
#cost-row-content .jh-voucher-table caption{font-size:14px;padding:6px 0 4px}
#cost-row-content .jh-voucher-edit,#cost-row-content .jh-voucher-mark{font-size:13px!important;padding:0 7px!important;line-height:18px!important;min-height:0!important;height:auto!important}
/* 9005: 특이사항 이전 기록 — 오른쪽 [수정] [×] */
#profit-screen .jh-note-actions{margin-left:auto;display:inline-flex;gap:4px}
#profit-screen .jh-note-actions button{font:inherit;font-size:11px;line-height:18px;padding:0 7px;border:1px solid #b9cbd9;border-radius:3px;background:#fff;color:#244b68;cursor:pointer}
#profit-screen .jh-note-actions [data-note-delete]{color:#b23b3b;border-color:#e2b8b8;font-size:13px;padding:0 6px}
#profit-screen .jh-note-actions button:hover{background:#eef4f9}
/* 9005: 항목 팝업 — 계정을 바꿔도 흰 창 크기·위치 그대로(높이 고정), 머리줄은 넘치면 줄바꿈(X와 겹치지 않게) */
#cost-row-dialog[open]{height:90vh}
#cost-row-dialog .cost-row-heading{flex-wrap:wrap;overflow:visible;row-gap:8px;padding-right:44px}
/* 9005: 관리자 표 글씨 14px에 맞춘 줄 높이 */
#admin-content table.admin-revenue-overview :is(th,td){height:24px;line-height:20px}
#admin-content table.admin-revenue-overview thead th{height:26px}
#admin-content table.admin-revenue-overview thead tr:nth-child(2) th{top:26px}
#admin-content .admin-month-table :is(th,td){height:34px}
/* 9005: 월별 예상 매출 — 계약 기간 밖의 달은 회색으로 막힌 입력칸 */
#admin-content table.admin-forecast-table td.forecast-outside{background:#fff;color:inherit}
#admin-content table.admin-forecast-table input.forecast-outside-input{background:#e3e7eb;border-color:#d0d6dc;cursor:not-allowed}
/* 9005: 프로젝트·항목별 원가 — 글씨 14px에서 금액이 다 보이게 금액 칸 120px(넓은 화면은 한 화면, 좁으면 가로 스크롤), No·시공코드·약칭은 왼쪽 고정 */
#admin-content .admin-project-cost-table{min-width:1938px}
#admin-content .admin-project-cost-table thead tr:first-child th:nth-child(3){width:200px}
#admin-content .admin-project-cost-table :is(td,thead tr:first-child th):where(:nth-child(-n+3)){position:sticky;z-index:2}
#admin-content .admin-project-cost-table thead tr:first-child th:where(:nth-child(-n+3)){z-index:4}
#admin-content .admin-project-cost-table .admin-revenue-group td:where(:nth-child(-n+3)){background:#e6f3eb}
#admin-content .admin-project-cost-table :is(td,thead tr:first-child th):where(:nth-child(1)){left:0}
#admin-content .admin-project-cost-table :is(td,thead tr:first-child th):where(:nth-child(2)){left:58px}
#admin-content .admin-project-cost-table :is(td,thead tr:first-child th):where(:nth-child(3)){left:154px;box-shadow:inset -2px 0 0 #c9d6e0}
/* 9005: 신규 프로젝트 생성 — 오른쪽 위 버튼, 입력 창(제목 + 4줄: 왼쪽 제목 · 오른쪽 입력칸) */
#admin-content .admin-project-add-buttons{display:flex;gap:6px;margin-left:auto}
#admin-content .admin-project-add-buttons button{padding:5px 12px;border:1px solid #b9cad7;border-radius:4px;background:#fff;color:#244f6c;cursor:pointer;font-size:13px}
#admin-content button.admin-project-create-new{padding:5px 12px;border:1px solid #244f6c;border-radius:4px;background:#244f6c;color:#fff;font-weight:700;cursor:pointer;font-size:13px}
#admin-content button.admin-project-create-new:disabled{opacity:.45;cursor:not-allowed}
#admin-content #forecast-project-add{margin-left:auto}
#admin-edit-dialog .project-create-rows{display:grid;gap:10px;margin:18px 0 14px;min-width:460px}
#admin-edit-dialog .project-create-row{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:10px;font-size:14px}
#admin-edit-dialog .project-create-row span{font-weight:700;color:#244f6c;white-space:nowrap}
#admin-edit-dialog .project-create-row input{min-width:0;padding:7px 8px;font-size:14px;border:1px solid #b9cad7;border-radius:4px}
#admin-edit-dialog .project-create-row input[name="contract_supply_krw"]{text-align:right;font-variant-numeric:tabular-nums}
#admin-edit-dialog .project-create-row em{font-style:normal;color:#617589}
#admin-edit-dialog .project-create-actions{display:flex;justify-content:flex-end}
#admin-edit-dialog .project-create-actions button{padding:6px 18px;font-size:14px}
/* 9005: 관리자 콘솔이 left/right 24px인데 width:100%가 남아 오른쪽 24px가 화면 밖으로 잘리던 것 */
body[data-review-page="admin"] #admin-console{width:auto}
/* 9005: 월별 예상 매출 — 글씨 13px, 칸 여백 줄여 1~12월이 한 화면에 */
#admin-content table.admin-forecast-table,#admin-content table.admin-forecast-table :is(th,td,input,span,button){font-size:13px!important}
#admin-content table.admin-forecast-annual :is(th,td){padding:2px 3px}
#admin-content table.admin-forecast-annual input{padding:3px 3px}
/* 9005: 프로젝트·항목별 원가 — 수기 입력(노랑)만 색, 나머지 색·링크 모양 없음 */
#admin-content .admin-project-cost-table .cost-direct-group,#admin-content .admin-project-cost-table .cost-indirect-group{background:#eaf0f5}
#admin-content .admin-project-cost-table .factory-empty{background:transparent;color:inherit;font-weight:400}
#admin-content .admin-project-cost-table .factory-empty button{font-weight:400}
#admin-content .admin-project-cost-table tr.admin-revenue-group,#admin-content .admin-project-cost-table tr.admin-revenue-group td,#admin-content .admin-project-cost-table .admin-project-member-open td,#admin-content .admin-project-cost-table td:where(:nth-child(-n+3)){background:#fff}
#admin-content .admin-project-cost-table td.cost-input-changed{background:#fff0b5}
#admin-content .admin-project-cost-table td button{border:0;color:inherit;text-decoration:none;font-weight:400;cursor:pointer;background:transparent}
#admin-content .admin-project-cost-table td button:hover{background:#eef4f9}
/* 9005: 원가 칸 팝업 — 위 한 줄(검색 · 정렬 · 건수 · 금액), 표는 한 줄씩(넘치면 …) */
#admin-edit-dialog.cost-popup-dialog{width:min(1100px,94vw)}
#admin-edit-dialog .cost-popup-bar{display:flex;align-items:center;gap:14px;flex-wrap:nowrap;white-space:nowrap}
#admin-edit-dialog #cost-popup-total{font-weight:700;color:#244f6c}
#admin-edit-dialog table.cost-popup-lines{table-layout:fixed;width:100%}
#admin-edit-dialog table.cost-popup-lines td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px!important;padding:5px 7px 4px;line-height:20px}
#admin-edit-dialog table.cost-popup-lines th{font-size:14px!important;text-align:center}
#admin-edit-dialog table.cost-popup-lines td:nth-child(1),#admin-edit-dialog table.cost-popup-lines td:nth-child(2){text-align:center}
#admin-edit-dialog table.cost-popup-lines td:nth-child(3),#admin-edit-dialog table.cost-popup-lines td:nth-child(4),#admin-edit-dialog table.cost-popup-lines td:nth-child(5){text-align:left}
/* 9005: 데이터 입력 현황 — 수기 입력·미입력은 톤을 낮추고, 자료 있음(건수)은 색 없음 */
#admin-content .input-state-modified{background:#faf3dc;color:#76642f}
#admin-content .input-state-missing{background:#f5e8e8;color:#8a5050}
#admin-content .input-state-present{background:transparent;color:inherit}
/* 9005: 투입 M/H 표 — 투입시간은 숫자라 오른쪽 정렬 */
#cost-row-content .jh-mh-table td:nth-child(4){text-align:right}
#cost-row-content table.jh-mh-table{table-layout:fixed;width:100%}
#cost-row-dialog table.jh-mh-table th:nth-child(1){width:10%}#cost-row-dialog table.jh-mh-table th:nth-child(2){width:15%}#cost-row-dialog table.jh-mh-table th:nth-child(3){width:20%}#cost-row-dialog table.jh-mh-table th:nth-child(4){width:20%}#cost-row-dialog table.jh-mh-table th:nth-child(5){width:25%}#cost-row-dialog table.jh-mh-table th:nth-child(6){width:10%}
/* 9005: 상세 머리 — 최신 특이사항은 버튼 왼쪽 밑줄 글자, 제목 줄은 한 줄 */
#profit-screen .jh-detail-drawer-buttons{display:flex;align-items:center;gap:10px;}
#profit-screen .jh-detail-drawer-buttons > .jh-latest-note{all:unset;display:inline-block;max-width:340px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#2c3e50;padding:0 2px 2px;border-bottom:1px solid #6f8193;cursor:default}
#profit-screen .jh-detail-drawer-buttons > .jh-latest-note[hidden]{display:none}
#profit-screen .jh-detail-heading{min-width:0}
#profit-screen .jh-detail-name-row{display:flex;align-items:baseline;flex-wrap:nowrap;white-space:nowrap;min-width:0;overflow:hidden}
#profit-screen .jh-detail-name-row h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#profit-screen .jh-detail-name-row #jh-detail-contract{white-space:nowrap;flex-shrink:0}
/* 9005: 특이사항 있음 = 노란 버튼(간접비 '설계' 색 #c8a063 계열), 최신 내용 밑줄도 같은 색 */
#profit-screen .jh-detail-drawer-buttons .jh-notes-button.has-notes:not([aria-expanded="true"]){background:#f8efdf;border-color:#c8a063;color:#8a6a32;font-weight:600}
#profit-screen .jh-detail-drawer-buttons .jh-notes-button.has-notes .jh-notes-count{background:#c8a063;color:#fff;font-weight:600}
#profit-screen .jh-detail-drawer-buttons > .jh-latest-note{border-bottom-color:#c8a063}
/* 2026-10-28 사용자 요청 글씨 크기(두 번째): 눈금·85% 표식·손익 10pt = 13.33px, 범례 9.5pt = 12.67px (색은 그대로).
   손익 영역 글자는 그래프 안에서 0.9025배로 그려지므로 13.33 ÷ 0.9025 = 14.77px */
#profit-screen .jh-chart-title #jh-chart-sub{font-size:10.67px!important}
#profit-screen .jh-chart-title{display:flex!important;align-items:baseline!important}  /* 부제목을 제목 글자 아래선에 맞춤 */
#profit-screen #jh-chart-svg .jh-axis-text,#profit-screen #jh-chart-svg .jh-threshold-value{font-size:13.33px!important}
#profit-screen svg .jh-profit-zone-label,#profit-screen svg .jh-zone-inline-content .jh-profit-zone-label{font-size:14.77px!important}
#profit-screen .jh-chart-legend span{font-size:12.67px!important}
#profit-screen #jh-trajectory-caption:empty::before{content:none}
/* 2026-10-28 상세 창 머리: 계약기간 숨김, 교량 정보 버튼, 최신 특이사항은 남는 폭까지(넘치면 …) */
#profit-screen #jh-detail-contract{display:none}
#admin-content table.admin-bridge-table{border-collapse:collapse;font-size:12px;min-width:0!important}
#admin-content table.admin-bridge-table{table-layout:fixed!important}
#admin-content table.admin-bridge-table th,#admin-content table.admin-bridge-table td{white-space:normal!important;word-break:keep-all;overflow-wrap:anywhere;max-width:none!important}  /* 같은 열너비, 긴 값은 칸 안에서 줄바꿈 */
#admin-content table.admin-bridge-table th,#admin-content table.admin-bridge-table td{border:1px solid #dfe7ee;padding:4px 7px;text-align:center}
#admin-content table.admin-bridge-table thead th{background:#eef4f8;color:#24455f;position:sticky;top:0;z-index:2}
#admin-content table.admin-bridge-table thead tr:nth-child(2) th{top:25px}
#admin-content table.admin-bridge-table td.bridge-left{text-align:left}
#admin-content table.admin-bridge-table td.bridge-num{text-align:right}
#admin-content table.admin-bridge-table .bridge-differs{text-decoration:underline dotted #bd4e58;text-underline-offset:3px;cursor:help}
#admin-content table.admin-bridge-table td.bridge-empty{color:#b3bec7}
#profit-screen .jh-detail-name-row h3 .jh-title-sub{font-size:calc(1em - 5.33px);letter-spacing:-0.5px}  /* 괄호 부분 4pt 작게 */
#profit-screen .jh-detail-heading{max-width:none!important;flex:0 0 auto!important}
#profit-screen .jh-detail-heading{padding-right:40px!important}
/* 교량 팝업 ERP 양식 */
.jh-bridge-dialog .jh-bridge-head h3 .jh-bridge-company{margin-left:2em;font-weight:500;font-size:14px;color:#40576a}
.jh-bridge-dialog .jh-bridge-card h4{display:flex;align-items:baseline;gap:2em;}
.jh-bridge-dialog .jh-bridge-card h4 .jh-bridge-method{font-weight:500;font-size:13px;color:#40576a}
.jh-bridge-dialog table.jh-bridge-spec{table-layout:fixed;}
.jh-bridge-dialog table.jh-bridge-spec col.jh-bridge-kind-col{width:110px}
.jh-bridge-dialog table.jh-bridge-spec tr.jh-bridge-group th{background:#eef4f8;color:#24455f;font-weight:600}
.jh-bridge-dialog table.jh-bridge-spec td.jh-bridge-none{color:#6d7f8d}
.jh-bridge-dialog table.jh-bridge-spec tr[title]{cursor:help}
/* 관리자 교량 정보: 목록 줄 클릭, 출처 선택·직접 입력 창 */
#admin-content table.admin-bridge-table tr.bridge-row{cursor:pointer}
#admin-content table.admin-bridge-table tr.bridge-row:hover td{background:#f4f8fb}
#admin-content table.admin-bridge-table td.bridge-differs-cell{text-decoration:underline dotted #bd4e58;text-underline-offset:3px}
#admin-content table.admin-bridge-table td.bridge-source{color:#40576a}
.jh-bridge-editor{width:min(1180px,95vw)}
.jh-bridge-dialog .jh-bridge-choices{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 8px;font-size:13px}
.jh-bridge-dialog .jh-bridge-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jh-bridge-dialog .jh-bridge-option{border:1px solid #dfe7ee;border-radius:6px;padding:6px 8px;background:#fff}
.jh-bridge-dialog .jh-bridge-option.is-used{border-color:#5d8eae;box-shadow:0 0 0 1px #5d8eae inset}
.jh-bridge-dialog .jh-bridge-option.is-edit{margin-top:10px;border-color:#c8a063}
.jh-bridge-dialog .jh-bridge-option table.jh-bridge-spec col.jh-bridge-kind-col{width:60px}
.jh-bridge-dialog .jh-bridge-option table.jh-bridge-spec th,.jh-bridge-dialog .jh-bridge-option table.jh-bridge-spec td{padding:4px 3px;font-size:12px}
.jh-bridge-dialog .jh-bridge-option-title{margin:0 0 6px;font-size:13px;font-weight:600;color:#24455f}
.jh-bridge-dialog .jh-bridge-option-title small{font-weight:400;color:#6d7f8d}
.jh-bridge-dialog .jh-bridge-option-title b{color:#2f6f99;margin-left:4px}
.jh-bridge-dialog input.jh-bridge-input{width:100%;box-sizing:border-box;border:1px solid #c9d6e0;border-radius:3px;padding:3px 4px;text-align:center;font:inherit}
.jh-bridge-dialog td.jh-bridge-row-buttons{text-align:left}
.jh-bridge-dialog table.jh-bridge-ref{margin-bottom:6px}
.jh-bridge-dialog table.jh-bridge-ref th{background:#eef4f8;color:#24455f;font-weight:600}
.jh-bridge-dialog table.jh-bridge-spec tr.jh-bridge-differs-row td{text-decoration:underline dotted #bd4e58;text-underline-offset:3px}
.jh-bridge-dialog details.jh-bridge-each > summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:8px}
.jh-bridge-dialog details.jh-bridge-each > summary::before{content:'▶';font-size:11px;color:#6d7f8d}
.jh-bridge-dialog details.jh-bridge-each[open] > summary::before{content:'▼'}
.jh-bridge-dialog details.jh-bridge-each > summary h4{margin:0}
.jh-bridge-dialog details.jh-bridge-each[open] > summary{margin-bottom:8px}  /* 우측 여백 20 → 40px (좌측 그대로) */
#profit-screen #jh-detail-project{cursor:pointer;min-width:0!important}  /* 박스 폭 = 글자 폭 + 여백, 약어 클릭 = 교량 정보 */
#profit-screen #jh-detail-project:hover .jh-title-text,#profit-screen #jh-detail-project:focus-visible .jh-title-text{text-decoration:underline;text-underline-offset:4px}
#profit-screen .jh-detail-drawer-buttons{flex:1 1 auto!important;min-width:0!important;justify-content:flex-end}
#profit-screen .jh-detail-drawer-buttons .jh-latest-note,#profit-screen .jh-latest-note{max-width:none!important;flex:0 1 auto;min-width:0}
.jh-bridge-dialog{width:min(1180px,95vw);height:min(760px,90vh);padding:0;border:1px solid #c9d5df;border-radius:10px}
.jh-bridge-dialog .jh-bridge-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e3eaf0;background:#f4f8fb}
.jh-bridge-dialog .jh-bridge-head h3{margin:0;font-size:16px;color:#1c4465}
.jh-bridge-dialog .jh-bridge-close{border:0;background:none;font-size:22px;cursor:pointer;color:#555}
.jh-bridge-dialog .jh-bridge-body{padding:14px 18px;overflow:auto;max-height:calc(100% - 60px)}
.jh-bridge-dialog .jh-bridge-card{margin:0 0 18px;padding:12px 14px;border:1px solid #dfe7ee;border-radius:8px;background:#fbfdfe}
.jh-bridge-dialog .jh-bridge-card h4{margin:0 0 6px;font-size:15px;color:#1c4465}
.jh-bridge-dialog .jh-bridge-card h4 small{font-weight:400;color:#6d7f8d;font-size:12px;margin-left:6px}
.jh-bridge-dialog .jh-bridge-meta{margin:0 0 8px;font-size:12px;color:#40576a}
.jh-bridge-dialog table.jh-bridge-section{border-collapse:collapse;margin:0 0 8px;font-size:12px;width:100%}
.jh-bridge-dialog table.jh-bridge-section caption{text-align:left;font-weight:700;color:#24455f;padding:2px 0}
.jh-bridge-dialog table.jh-bridge-section th,.jh-bridge-dialog table.jh-bridge-section td{border:1px solid #dfe7ee;padding:4px 6px;text-align:center;white-space:nowrap}
.jh-bridge-dialog table.jh-bridge-section th{background:#eef4f8;color:#24455f;font-weight:600}
.jh-bridge-dialog .jh-bridge-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jh-bridge-dialog .jh-bridge-differs{text-decoration:underline dotted #bd4e58;text-underline-offset:3px;cursor:help}
.jh-bridge-dialog td.jh-bridge-empty{color:#b3bec7}
.jh-bridge-dialog .jh-bridge-note{font-size:11px;color:#7d8992;margin:4px 0 0}
.jh-bridge-dialog table.jh-bridge-spec{border-collapse:collapse;margin:0 0 8px;font-size:12.5px;width:100%}
.jh-bridge-dialog table.jh-bridge-spec th,.jh-bridge-dialog table.jh-bridge-spec td{border:1px solid #d6e0e8;padding:5px 8px;text-align:center;white-space:nowrap}
.jh-bridge-dialog table.jh-bridge-spec thead th,.jh-bridge-dialog table.jh-bridge-spec th.jh-bridge-kind,.jh-bridge-dialog table.jh-bridge-type th{background:#e9f0f5;color:#24455f;font-weight:700}
.jh-bridge-dialog table.jh-bridge-type td{text-align:left;font-weight:700;color:#1c4465}
.jh-bridge-dialog .jh-bridge-caption{margin:10px 0 4px;font-weight:700;color:#1c4465;font-size:13px}
.jh-bridge-dialog details.jh-bridge-more{margin-top:6px}
.jh-bridge-dialog details.jh-bridge-more summary{cursor:pointer;color:#5d7486;font-size:12px;margin-bottom:6px}
/* 업데이트 히스토리(변경 이력관리): 날짜 목록 + 보고서 한 장 */
#admin-content .admin-update-history-button{margin-left:10px;font-size:12px;padding:3px 10px;border:1px solid #9fb8cb;border-radius:4px;background:#f4f8fb;color:#1c4465;cursor:pointer;vertical-align:middle}
dialog.admin-update-history{width:min(1240px,96vw);height:min(860px,92vh);padding:0;border:1px solid #c9d5df;border-radius:10px}
.admin-update-history-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #e3eaf0;background:#f4f8fb}
.admin-update-history-head h3{margin:0;font-size:16px;color:#1c4465}
.admin-update-history-close{border:0;background:none;font-size:22px;cursor:pointer;color:#555}
.admin-update-history-body{display:grid;grid-template-columns:220px 1fr;height:calc(100% - 52px)}
.admin-update-history-list{border-right:1px solid #e3eaf0;overflow:auto;padding:8px}
.admin-update-history-list button{display:block;width:100%;text-align:left;border:1px solid #dfe7ee;border-radius:6px;background:#fff;padding:6px 8px;margin:0 0 6px;cursor:pointer}
.admin-update-history-list button[aria-current="true"]{border-color:#5d8eae;background:#eef4f8}
.admin-update-history-list button small{display:block;color:#6d7f8d;font-size:11px}
.admin-update-history-page{width:100%;height:100%;border:0}
/* 통합 사업 펼침 화살표: 어느 표에서든 초록 바탕(프로젝트·항목별 원가에서 투명해 안 보이던 것) */
#admin-content .admin-group-toggle{background:#1f8a4c!important;color:#fff!important}
#admin-content .admin-group-toggle[aria-expanded="true"]{background:#155d36!important}
/* 월별 예상 매출 칸의 작은 줄(이월·실적·예상·→ 이월): 한 줄에 이름+금액 하나씩, 82px 칸에 들어가게 금액 11.5px·칸 안쪽 여백까지 사용(위 13px!important 규칙보다 우선, 2026-11-02) */
#admin-content table.admin-forecast-table td.forecast-month-amount span.forecast-sub{white-space:nowrap;font-size:11.5px!important;letter-spacing:-.5px;margin:0 -3px}#admin-content table.admin-forecast-table td.forecast-month-amount span.forecast-sub i{font-size:8.5px;letter-spacing:-.5px;margin-right:1px}
