/* ══════════════════════════════════════════════════════════
   features-ledger.css — 장부 섹션 (.ldg-)
   현황·매출·매입·재고·이익 리포트 + 공용(테이블/pill/모달/그리드)
   ══════════════════════════════════════════════════════════ */

.ldg-loading{padding:40px;text-align:center;color:var(--text3);}
.ldg-hint{font-size:11.5px;color:var(--text3);}
.ldg-hint.warn{color:var(--amber);}
.ldg-link{color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-style:dotted;}
.ldg-go{color:var(--accent);font-weight:700;font-size:12px;cursor:pointer;}
.ldg-up{color:var(--green);font-size:11.5px;}
.ldg-dn{color:#e11d48;font-size:11.5px;}

/* ── 헤더 ── */
.ldg-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.ldg-head h2{font-size:19px;margin:0;}
.ldg-head-sp{flex:1;}

/* ── 버튼 ── */
.ldg-btn{display:inline-flex;align-items:center;gap:5px;border-radius:8px;font-size:12.5px;font-weight:600;
  padding:7px 13px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;white-space:nowrap;font-family:inherit;}
.ldg-btn:hover{border-color:var(--accent);color:var(--accent-text);}
.ldg-btn.pri{background:var(--accent);border-color:var(--accent);color:#fff;}
.ldg-btn.pri:hover{opacity:.9;color:#fff;}
.ldg-btn.danger{color:#e11d48;border-color:var(--red);}
.ldg-btn.sm{padding:3px 9px;font-size:12px;}
.ldg-btn:disabled{opacity:.45;cursor:not-allowed;}

/* ── 탭 / 세그먼트 / 칩 ── */
.ldg-tabs{display:flex;gap:4px;border-bottom:2px solid var(--border);margin-bottom:12px;flex-wrap:wrap;}
.ldg-tabs span{padding:7px 15px;font-size:13px;color:var(--text2);border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;}
.ldg-tabs span.on{color:var(--accent);border-color:var(--accent);font-weight:700;}
.ldg-seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;font-size:12.5px;}
.ldg-seg span{padding:6px 14px;color:var(--text2);background:var(--surface);cursor:pointer;white-space:nowrap;}
.ldg-seg span.on{background:var(--accent);color:#fff;font-weight:600;}
.ldg-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:4px 11px;border-radius:20px;
  border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;white-space:nowrap;}
.ldg-chip.on{background:var(--amber-light);border-color:var(--amber);color:var(--amber);font-weight:700;}
.ldg-chip-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0 10px;}
.ldg-filters{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap;align-items:center;}

/* ── pill ── */
.ldg-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap;}
.ldg-pill.ok{background:var(--green-light);color:var(--green);}
.ldg-pill.no{background:var(--surface2);color:var(--text3);}
.ldg-pill.warn{background:var(--amber-light);color:var(--amber);}
.ldg-pill.bad{background:var(--red-light);color:#e11d48;}
.ldg-pill.info{background:var(--accent-light);color:var(--accent-text);}
.ldg-src{font-size:10.5px;color:var(--text3);border:1px solid var(--border);border-radius:4px;padding:0 5px;vertical-align:1px;}

/* ── 테이블 ── */
.ldg-tbl-scroll{overflow-x:auto;border-radius:10px;}

/* 목록 테이블 헤더 고정 — 컨테이너를 세로 스크롤 영역으로 만들고 thead sticky.
   모달 내부 그리드·미리보기 테이블(body 에 append)은 페이지 스코프라 영향 없음. */
#page-ldg-usage .ldg-tbl-scroll,
#page-ldg-moves .ldg-tbl-scroll,
#page-ldg-stock .ldg-tbl-scroll,
#page-ldg-sales .ldg-tbl-scroll,
#page-ldg-shipcheck .ldg-tbl-scroll,
#page-ldg-purchases .ldg-tbl-scroll{max-height:calc(100vh - 185px);overflow:auto;}
/* 매출 목록만 하단에 페이지 이동 줄이 있어, 그만큼 더 빼야 페이지 자체가 넘치지 않는다
   (안 그러면 표 스크롤 + 페이지 스크롤 두 개가 동시에 생김) */
#page-ldg-sales .ldg-tbl-scroll{max-height:calc(100vh - 232px);}
/* .ldg-tbl 의 overflow:hidden(둥근 모서리용)은 sticky 조상 클리핑을 유발 → 목록에선 해제
   (모서리 라운드는 .ldg-tbl-scroll 이 담당) */
#page-ldg-usage .ldg-tbl,
#page-ldg-moves .ldg-tbl,
#page-ldg-stock .ldg-tbl,
#page-ldg-sales .ldg-tbl,
#page-ldg-shipcheck .ldg-tbl,
#page-ldg-purchases .ldg-tbl{overflow:visible;}
#page-ldg-usage .ldg-tbl thead th,
#page-ldg-moves .ldg-tbl thead th,
#page-ldg-stock .ldg-tbl thead th,
#page-ldg-sales .ldg-tbl thead th,
#page-ldg-shipcheck .ldg-tbl thead th,
#page-ldg-purchases .ldg-tbl thead th{position:sticky;top:0;z-index:5;box-shadow:inset 0 -1px 0 var(--border);}
.ldg-tbl{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;font-size:13px;}
.ldg-tbl th{background:var(--surface2);color:var(--text2);font-weight:600;font-size:12px;text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);white-space:nowrap;}
.ldg-tbl td{padding:8px 10px;border-bottom:1px solid #e7edf2;vertical-align:middle;white-space:nowrap;}
.ldg-tbl tbody tr:last-child td{border-bottom:0;}
.ldg-tbl tbody tr:hover td{background:#f5f9fb;}
.ldg-tbl td.r,.ldg-tbl th.r{text-align:right;font-variant-numeric:tabular-nums;}
.ldg-tbl td.neg{color:#e11d48;font-weight:700;}
.ldg-td-items{max-width:260px;overflow:hidden;text-overflow:ellipsis;}
.ldg-th-sort{cursor:pointer;user-select:none;white-space:nowrap;}
.ldg-th-sort:hover{color:var(--accent);}
.ldg-empty{text-align:center;color:var(--text3);padding:28px 10px !important;}
.ldg-row-return td{background:#fff7f7;}
.ldg-row-draft td{background:#fffdf4;}
.ldg-row-bad td{background:var(--red-light);}
.ldg-lot-row td{background:#f8fbfc;font-size:12px;color:var(--text2);}
.ldg-cost-link{border-bottom:1.5px dotted var(--accent);cursor:pointer;}
.ldg-cost-link.warn{border-color:var(--amber);}

/* ── KPI / 경고 / 패널 ── */
.ldg-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:12px;}
.ldg-kpi{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;}
.ldg-kpi-lb{font-size:12px;color:var(--text2);}
.ldg-kpi-v{font-size:21px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.ldg-kpi-d{font-size:11.5px;color:var(--text3);}
.ldg-alerts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.ldg-alert{display:flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--border);
  border-left:4px solid var(--amber);border-radius:8px;padding:8px 12px;font-size:12.5px;font-weight:600;color:var(--text2);cursor:pointer;flex-wrap:wrap;}
.ldg-alert.red{border-left-color:var(--red);}
.ldg-alert b{color:var(--text);}
.ldg-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media (max-width:900px){.ldg-two-col{grid-template-columns:1fr;}}
.ldg-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;min-width:0;}
.ldg-panel h4{margin:0 0 8px;font-size:13px;color:var(--text2);}

/* ── 타임라인 ── */
.ldg-tl{list-style:none;margin:0;padding:0;font-size:12.5px;}
.ldg-tl li{display:flex;gap:8px;padding:6px 0;border-bottom:1px dashed #e2e8f0;align-items:center;flex-wrap:wrap;}
.ldg-tl li:last-child{border-bottom:0;}
.ldg-tl-d{color:var(--text3);width:44px;flex:none;font-variant-numeric:tabular-nums;}
.ldg-tl-q{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;}
.ldg-tl-q.in{color:var(--green);}
.ldg-tl-q.out{color:#e11d48;}
.ldg-tl-scroll{max-height:380px;overflow-y:auto;}

/* ── 입력 요소 ── */
.ldg-inp{border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px;background:var(--surface);color:var(--text);min-height:32px;font-family:inherit;box-sizing:border-box;width:100%;}
.ldg-inp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-light);}
.ldg-inp.r{text-align:right;font-variant-numeric:tabular-nums;}
.ldg-inp-static{display:flex;align-items:center;background:var(--surface2);color:var(--text2);}
select.ldg-inp{width:auto;min-width:120px;}
input[type="date"].ldg-inp{width:auto;}
input[type="file"].ldg-inp{padding:4px;}
textarea.ldg-inp{width:100%;resize:vertical;font-family:inherit;}

/* ── 모달 ── */
.ldg-modal{min-width:340px;max-width:560px;}
.ldg-modal.wide{max-width:860px;width:min(860px,92vw);}
.ldg-modal h3{margin:0 0 12px;font-size:16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.ldg-modal-foot{display:flex;align-items:center;gap:8px;margin-top:16px;flex-wrap:wrap;}
.ldg-form-row{display:flex;gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.ldg-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
@media (max-width:600px){.ldg-form-grid{grid-template-columns:1fr;}}
.ldg-fld{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ldg-fld label{font-size:11.5px;font-weight:600;color:var(--text2);}
.ldg-totals{font-size:13px;font-variant-numeric:tabular-nums;}
.ldg-detail-meta{font-size:13px;color:var(--text2);margin-bottom:10px;}
.ldg-detail-sum{font-size:13px;margin-top:10px;font-variant-numeric:tabular-nums;}
.ldg-opt-row{display:flex;gap:6px;align-items:center;margin-bottom:6px;}

/* ── 목록 페이지 이동 ── */
.ldg-pager{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px;}

/* ── 그리드(입력 표) ── */
.ldg-grid td{padding:5px 6px;}
.ldg-grid .ldg-inp{min-height:30px;padding:4px 8px;}

/* ── 자동완성 ── */
.ldg-ac{position:relative;}
.ldg-ac-list{position:absolute;top:100%;left:0;right:0;z-index:2000;border:1px solid var(--accent);border-radius:8px;
  background:var(--surface);box-shadow:0 6px 18px rgba(14,116,144,.15);font-size:13px;overflow:hidden;margin-top:3px;max-height:260px;overflow-y:auto;}
.ldg-ac-list div{padding:6px 10px;display:flex;gap:8px;align-items:baseline;cursor:pointer;white-space:normal;line-height:1.45;}
.ldg-ac-list div .ldg-hint,.ldg-ac-list div .ldg-src{flex:none;}
.ldg-ac-list div:hover{background:var(--accent-light);}

/* ── 원가 구성 ── */
.ldg-cost-box{background:var(--surface2);border-radius:8px;padding:10px 12px;margin-bottom:8px;font-size:13px;}
.ldg-cost-tbl{width:100%;border-collapse:collapse;margin-top:6px;font-size:12.5px;}
.ldg-cost-tbl td{padding:3px 0;font-variant-numeric:tabular-nums;}
.ldg-cost-tbl td.r{text-align:right;}
.ldg-cost-tbl tr.warn td{color:var(--amber);}
.ldg-cost-tbl tr.tot td{border-top:1px solid var(--border);font-weight:700;padding-top:5px;}
.ldg-return-mark{color:#e11d48;font-weight:700;font-size:12px;}

/* ── 엑셀 복붙 오버레이 ── */
.ldg-paste-back{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1200;display:flex;align-items:center;justify-content:center;}
.ldg-paste-box{background:var(--surface);border-radius:12px;padding:16px 18px;width:min(520px,92vw);box-shadow:0 10px 40px rgba(0,0,0,.25);}
.ldg-paste-box h4{margin:0 0 8px;font-size:14px;}
