@import url("../renewal-tokens.css?v=20260902d");
/* ═══════════════════════════════════════════════════════════════
   PropVis 디자인 리뉴얼 — 공적장부(landdoc) 4페이지 재도색
   대상: menu/landdoc/address.html · my-history.html · admin.html
         · personal-archive.html (/landdoc/archive — 2026-09-01 R18 합류)
   근거: docs/design/README-design-renewal.md 2절 (A안 토큰)
        docs/design/prototype-toss-interactive-2026-07-28.html
        #page-landdoc / #page-landdochist / #page-landdocadmin

   원칙: landdoc 페이지는 naviBar 없는 독립 셸 → 기존 셸(main-box +
   container/dashboard) 유지, 기존 클래스 어휘 그대로 토큰 재도색.
   JS(unified-issue.js·admin.js·pdf-viewer.js)가 참조하는
   셀렉터·클래스는 전부 보존 — 이 파일은 시각 속성만 정의한다.
   head 안에서 페이지 인라인 <style>보다 뒤에 로드되어
   동일 특이도 규칙을 이긴다 (로드 순서 변경 금지).
   ═══════════════════════════════════════════════════════════════ */

:root {
  --ld-bg: var(--rn-bg);
  --ld-text: var(--rn-text);
  --ld-text-sub: var(--rn-text-sub);
  --ld-text-dim: var(--rn-text-dim);
  --ld-text-faint: var(--rn-text-faint);
  --ld-card-bg: var(--rn-card-bg);
  --ld-border: var(--rn-border);
  --ld-border-soft: var(--rn-border-soft);
  --ld-input-border: var(--rn-input-border);
  --ld-brand: var(--rn-brand);
  --ld-brand-hover: var(--rn-brand-hover);
  --ld-brand-soft: var(--rn-brand-soft);
  --ld-brand-faint: var(--rn-brand-faint);
  --ld-brand-border: var(--rn-brand-border);
  --ld-st-err: var(--rn-st-unmatched);
  --ld-st-blue: var(--rn-st-matched);
  --ld-st-green: var(--rn-st-done);
  --ld-st-wait: var(--rn-st-wait);
  --ld-grey: var(--rn-grey);
  --ld-grey-hover: var(--rn-grey-hover);
  --ld-grey-text: var(--rn-grey-text);
  --ld-blue-soft: var(--rn-st-matched-soft);
  --ld-green-soft: var(--rn-st-done-soft);
  --ld-wait-soft: var(--rn-st-wait-soft);
  --ld-err-soft: var(--rn-st-unmatched-soft);
}

/* ─── 1. 베이스 셸 ─── */
body {
  background: var(--ld-bg);
  color: var(--ld-text);
  font-family: "Pretendard", -apple-system, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
  font-size: 13.5px;
  line-height: 1.5;
}
.main-box { background: var(--ld-bg); min-height: 100vh; }

/* control.css:41 `button:hover{background:#570400;color:#fff}` 누출 차단 — renewal-skin.css:108 과 같은 역할.
   naviBar 페이지는 스킨이 덮어주지만 공적장부는 스킨을 안 거치므로 여기서 한 번 리셋한다.
   클래스별 hover(.btn-primary/.search-btn/.seg-btn/.btn-icon…)는 특이도가 높아 그대로 이긴다. (검수 G4 D2)
   ⚠️ 배경만 리셋한다 — color 까지 지정했더니 .search-btn/.btn-primary 처럼 base 에만 흰 글자를 둔 브랜드 버튼이
   hover 시 회색 글자가 되어 안 보였다(재측정 REG-1, 대비 1.37). 글자색은 각 버튼 규칙이 정한다. */
button:hover { background: var(--ld-grey-hover); }

/* 포커스 링 통일 (폴리시 A-7) — 입력은 자체 보더 하이라이트라 제외 */
:is(button, select, a):focus-visible {
  outline: 2px solid var(--ld-brand);
  outline-offset: 2px;
}
input:focus-visible { outline: none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ─── 2. 페이지 헤드 (프로토타입 .head/.hsub 상당) ─── */
.ld-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 6px 0 18px;
}
.ld-head h3 {
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -.025em;
  color: var(--ld-text);
  margin: 0;
  line-height: 1.3;
}
.ld-hsub { font-size: 14px; font-weight: 500; color: var(--ld-text-sub); margin-top: 6px; }
.ld-hsub b { color: var(--ld-text); font-weight: 800; }

/* 상단 관리/이력 버튼 — 프로토타입 .btn._grey */
.landdoc-admin-bar { display: flex; justify-content: flex-end; align-items: center; padding: 0; margin: 0; }
.landdoc-admin-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 11px 18px;
  background: var(--ld-grey);
  color: var(--ld-grey-text);
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: background .15s ease;
  cursor: pointer;
}
.landdoc-admin-btn:hover {
  background: var(--ld-grey-hover);
  border-color: transparent;
  transform: none;
  box-shadow: none;
}
.landdoc-admin-btn .material-symbols-outlined { font-size: 17px; }

/* ─── 3. 카드 ─── */
.card {
  background: var(--ld-card-bg);
  border: 1px solid var(--ld-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(34, 30, 28, .04);
  padding: 20px 22px;
  margin-bottom: 14px;
}
.card-title {
  font-size: 13px;
  font-weight: 750;
  color: var(--ld-text-dim);
  margin-bottom: 12px;
  padding-bottom: 0;
  border-bottom: none;
}

/* STEP 배지 */
.step-indicator { margin-bottom: 18px; }
.step-badge {
  background: var(--ld-brand-soft);
  color: var(--ld-brand);
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 11.5px;
  font-weight: 750;
}
.step-label { font-size: 13px; color: var(--ld-text-sub); }

/* ─── 4. 버튼 ─── */
.btn {
  border-radius: 10px;
  padding: 11px 18px;
  font-size: 13px;
  font-weight: 700;
  font-family: inherit;
}
.btn:active { transform: scale(.98); }
.btn-primary { background-color: var(--ld-brand); color: #fff; }
.btn-primary:hover { background-color: var(--ld-brand-hover); color: #fff; }   /* REG-1: 글자색 명시 */
.btn-secondary { background-color: var(--ld-grey); color: var(--ld-grey-text); }
.btn-secondary:hover { background-color: var(--ld-grey-hover); }
.btn-sm { padding: 6px 12px; font-size: 12px; border-radius: 8px; }
.btn-lg { padding: 14px 40px; font-size: 15px; }
/* disabled — control.css:44 `button:disabled{background:none;color:#222;font-weight:400}` 가 배경을 지워
   발급하기(#btnIssueAll)가 텍스트 버튼처럼 보였다(검수 G4 D8). 공통 규격(renewal.css:162 .vbtn:disabled)
   대로 모양·색은 유지하고 opacity .45 로만 흐리게. hover 변형(:disabled:hover)까지 잠근다 */
.btn:disabled, .btn:disabled:hover { opacity: .45; cursor: not-allowed; font-weight: 700; }
.btn-primary:disabled, .btn-primary:disabled:hover { background-color: var(--ld-brand); color: #fff; border: none; }
.btn-secondary:disabled, .btn-secondary:disabled:hover { background-color: var(--ld-grey); color: var(--ld-grey-text); border: none; }

/* 서류행 소형 액션 — 프로토타입 .mbtn(흰 바탕 + 보더) 문법으로 변환.
   클래스명은 unified-issue.js 생성 그대로 보존 */
.btn-success.btn-sm,
.btn-warning.btn-sm,
.btn-danger.btn-sm,
.btn-summary.btn-sm,
.btn-secondary.btn-sm {
  background: #fff;
  border: 1px solid var(--ld-input-border);
}
.btn-success.btn-sm { color: var(--ld-st-green); }
.btn-success.btn-sm:hover { border-color: var(--ld-st-green); background: var(--ld-green-soft); }
.btn-warning.btn-sm { color: var(--ld-st-wait); }
.btn-warning.btn-sm:hover { border-color: var(--ld-st-wait); background: var(--ld-wait-soft); }
.btn-danger.btn-sm { color: var(--ld-st-err); }
.btn-danger.btn-sm:hover { border-color: var(--ld-st-err); background: var(--ld-err-soft); }
.btn-summary.btn-sm { color: var(--ld-grey-text); }
.btn-summary.btn-sm:hover { border-color: var(--rn-border-hover); background: var(--ld-grey); }
.btn-secondary.btn-sm { color: var(--ld-grey-text); }
.btn-secondary.btn-sm:hover { border-color: var(--rn-border-hover); background: var(--ld-grey); }
.btn-primary.btn-sm {
  background: var(--ld-brand-faint);
  border: 1px solid var(--ld-brand-border);
  color: var(--ld-brand);
}
.btn-primary.btn-sm:hover { background: var(--ld-brand-soft); }
/* 대형 변형(모달 등)은 원래 솔리드 유지 */
.btn-success:not(.btn-sm) { background-color: var(--ld-st-green); color: #fff; }
.btn-success:not(.btn-sm):hover { background-color: #196541; }
.btn-warning:not(.btn-sm) { background-color: var(--ld-st-wait); color: #fff; }
.btn-warning:not(.btn-sm):hover { background-color: #9A5518; }
.btn-danger:not(.btn-sm) { background-color: var(--ld-st-err); color: #fff; }
.btn-danger:not(.btn-sm):hover { background-color: #A93E37; }

/* ─── 5. STEP 1: 주소 검색 ─── */
/* 지번/도로명 탭 → 프로토타입 .seg (알약 세그먼트) */
.search-tabs {
  display: inline-flex;
  background: var(--ld-grey);
  border-radius: 10px;
  padding: 4px;
  gap: 2px;
  margin-bottom: 12px;
}
.search-tab {
  flex: 0 0 auto;
  padding: 8px 20px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--ld-text-dim);
  font-size: 13px;
  font-weight: 700;
}
.search-tab:first-child, .search-tab:last-child { border-radius: 6px; border-right: none; }
.search-tab.active {
  background: var(--ld-card-bg);
  color: var(--ld-brand);
  border-color: transparent;
  box-shadow: 0 1px 4px rgba(34, 30, 28, .08);
}
/* 탭 hover — 비활성은 세그먼트 그룹 안에서 살짝 진해지고, 활성은 마우스가 올라가도 그대로 (R16) */
.search-tab:hover:not(.active) { background: var(--ld-grey-hover); color: var(--ld-grey-text); }
.search-tab.active:hover { background: var(--ld-card-bg); color: var(--ld-brand); }

.search-input-wrap input {
  border: 1px solid var(--ld-input-border);
  border-radius: 10px;
  background: #fff;
  color: var(--ld-text);
  font-size: 13.5px;
}
.search-input-wrap input:focus {
  border-color: var(--ld-brand);
  box-shadow: 0 0 0 3px rgba(129, 43, 39, .08);
}
.search-input-wrap input::placeholder { color: var(--ld-text-faint); }
.search-btn { background: var(--ld-brand); border-radius: 10px; font-weight: 700; }
.search-btn:hover { background: var(--ld-brand-hover); color: #fff; }   /* REG-1: 글자색 명시 */

.search-guide {
  background: var(--ld-bg);
  border-radius: 10px;
  color: var(--ld-text-sub);
  font-size: 12.5px;
}
.guide-example { color: var(--ld-text-dim); }

.address-input-wrap input {
  border: 1px solid var(--ld-input-border);
  border-radius: 10px;
  background: var(--ld-bg);
  color: var(--ld-text);
}
.address-input-wrap input:focus { border-color: var(--ld-brand); }
.address-detail {
  background: var(--ld-bg);
  border-radius: 10px;
  color: var(--ld-text-sub);
}

.search-results { border: 1px solid var(--ld-border); border-radius: 10px; }
.results-header {
  background: var(--ld-bg);
  border-bottom: 1px solid var(--ld-border);
  color: var(--ld-text-dim);
}
.result-item { border-bottom: 1px solid var(--ld-border-soft); }
.result-item:hover { background: var(--ld-bg); }
.result-road { color: var(--ld-text); font-weight: 700; }
.result-jibun { color: var(--ld-text-dim); }
.result-bldnm { color: var(--ld-brand); }
.result-zipcode { color: var(--ld-text-faint); }
.search-loading, .search-empty { color: var(--ld-text-sub); }
.search-empty-tip { color: var(--ld-text-dim); }

/* 동·호수 */
.form-group label { color: var(--ld-text-dim); font-size: 11.5px; font-weight: 750; }
.form-group input, .form-group select {
  border: 1px solid var(--ld-input-border);
  border-radius: 10px;
  color: var(--ld-text);
  font-size: 13.5px;
}
.form-group input:focus, .form-group select:focus { border-color: var(--ld-brand); }
#complex-label { color: var(--ld-brand) !important; }

/* ─── 6. STEP 2: 통합 서류 발급 ─── */
.issue-toolbar { background: var(--ld-bg); border-radius: 10px; }
.issue-toolbar .select-all-label { color: var(--ld-grey-text); font-size: 13px; }
.issue-toolbar .select-all-wrap input[type="checkbox"] { accent-color: var(--ld-brand); }
.issue-toolbar .cost-display { color: var(--ld-text-sub); font-size: 13px; }
.issue-toolbar .cost-display .cost-amount { color: var(--ld-brand); font-variant-numeric: tabular-nums; }
.paid-warning { background: var(--ld-wait-soft); color: var(--ld-st-wait); border-radius: 8px; }

.doc-category-header { border-bottom: 1px solid var(--ld-border); }
.doc-category-title { color: var(--ld-text); font-weight: 750; }

.doc-row { border: 1px solid var(--ld-border); border-radius: 12px; }
.doc-row:hover { border-color: var(--rn-border-hover); }
.doc-row.checked { border-color: var(--ld-brand); background: var(--ld-brand-faint); }
.doc-row.disabled { background: var(--ld-bg); }
.doc-row-checkbox input[type="checkbox"] { accent-color: var(--ld-brand); }
.doc-row-name { color: var(--ld-text); font-weight: 750; }

.price-badge { border-radius: 6px; font-weight: 700; }
.price-badge.paid { background: var(--ld-wait-soft); color: var(--ld-st-wait); }
.price-badge.free { background: var(--ld-grey); color: var(--ld-grey-text); }
.coming-soon-badge { background: var(--ld-grey); color: var(--ld-text-dim); border-radius: 6px; }

.doc-sub-options { color: var(--ld-grey-text); }
.doc-sub-options input[type="checkbox"] { accent-color: var(--ld-brand); }
.doc-reopen-date { color: var(--ld-text-dim); }
.doc-reopen-date .date-val { color: var(--ld-brand); }

/* 커스텀 드롭다운 */
.dd-trigger {
  border: 1px solid var(--ld-input-border);
  box-shadow: none;
  border-radius: 8px;
  color: var(--ld-text);
}
.dd-trigger:hover { box-shadow: none; border-color: var(--rn-border-hover); }
.dd-trigger .arrow { color: var(--ld-brand); }
.custom-dropdown.open .dd-trigger { box-shadow: 0 2px 10px rgba(34, 30, 28, .10); }
.dd-menu {
  border: 1px solid var(--ld-border);
  border-radius: 10px;
  box-shadow: 0 8px 30px rgba(34, 30, 28, .12);
}
.dd-menu .dd-item { color: var(--ld-text); }
.dd-menu .dd-item:hover { background: var(--ld-bg); }
.dd-menu .dd-item.selected { color: var(--ld-brand); }

/* 발급 진행 — 프로토타입 .pbar */
.progress-bar-wrap { height: 7px; border-radius: 999px; background: var(--ld-grey); }
.progress-bar { background: var(--ld-brand); border-radius: 999px; }
.progress-text { color: var(--ld-brand); }
.spinner-sm { border-color: var(--ld-border); border-top-color: var(--ld-brand); }

/* 인라인 요약 */
.inline-summary { background: var(--ld-bg); border-top: 1px dashed var(--ld-border); }
.inline-summary-title { color: var(--ld-brand); }
.btn-copy { background: var(--ld-grey); color: var(--ld-grey-text); border-radius: 8px; }
.btn-copy:hover { background: var(--ld-grey-hover); }
.btn-copy .copy-feedback { background: var(--ld-brand); }
.summary-text { color: var(--ld-text); font-family: inherit; }
.summary-row { border-bottom: 1px solid var(--ld-border-soft); }
.summary-label { color: var(--ld-grey-text); }
.summary-value { color: var(--ld-text); }

/* ─── 7. 모달 (비용/이력/공용) ─── */
.modal-box { border-radius: 12px; box-shadow: 0 8px 40px rgba(34, 30, 28, .18); }
.modal-title { color: var(--ld-text); font-weight: 800; letter-spacing: -.015em; }
.modal-subtitle { color: var(--ld-text-sub); }
.modal-cost-list { border: 1px solid var(--ld-border); border-radius: 10px; }
.modal-cost-item { border-bottom: 1px solid var(--ld-border-soft); }
.modal-cost-item.total { background: var(--ld-bg); }
.modal-cost-item .cost-val { color: var(--ld-brand); font-variant-numeric: tabular-nums; }
.modal-cost-item .cost-val.free { color: var(--ld-grey-text); }
.modal-notice { background: var(--ld-brand-faint); color: var(--ld-brand-hover); border-radius: 8px; }

/* ─── 8. 이력·관리자·보관함 대시보드 셸 ─── */
/* 셸 골격 — 이력·관리자는 인라인 <style> 에 같은 값이 있고, 보관함(R18)은 여기서만 받는다 */
.dashboard { max-width: 1200px; margin: 24px auto; padding: 0 16px; }
.ld-headacts { display: flex; gap: 8px; align-items: center; }
.dashboard h1 {
  color: var(--ld-text);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -.025em;
  margin-bottom: 18px;
}
.back-link { display: inline-block; color: var(--ld-text-dim); font-size: 12px; font-weight: 750; margin-bottom: 8px; text-decoration: none; }
.back-link:hover { color: var(--ld-brand); }
.ld-head h1 { margin-bottom: 0; }

/* 필터 바 */
.filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 24px; flex-wrap: wrap; }
.filter-bar input, .filter-bar select {
  height: 40px;
  box-sizing: border-box;
  padding: 0 12px;
  border: 1px solid var(--ld-input-border);
  border-radius: 10px;
  font-size: 13px;
  color: var(--ld-text);
  font-family: inherit;
  background: var(--ld-card-bg);
}
.filter-bar input::placeholder { color: var(--ld-text-faint); }

/* select 커스텀 셰브론 — 직원관리 표 select(employees.css:107-115) 규격을 그대로 (검수 G4 D7: 공적장부 4곳만
   브라우저 기본 화살표). 데이터 URI 안에서는 var() 를 못 쓰므로 그 파일과 같은 값(#837D76)을 둔다.
   대상: 이력·관리자 .filter-bar select · 조회 동/호 .form-group select · 운영 탭 실패대장 필터(.log-section select) */
.filter-bar select, .form-group select, .log-section select {
  appearance: none; -webkit-appearance: none;
  padding-right: 34px;
  background-color: var(--ld-card-bg);
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%23837D76' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 14px;
  cursor: pointer;
}
.filter-bar select:hover, .form-group select:hover, .log-section select:hover { border-color: var(--rn-border-hover); }
.filter-bar input:focus, .filter-bar select:focus { border-color: var(--ld-brand); outline: none; }
/* 발급 대상 건물 선특정 드롭다운(unified-issue.js renderBuildingSelect 동적 생성 —
   .form-group 밖(#subopts-registry-building)이라 위 셰브론 규칙 사각. 동일 규격 부여 (2026-09-02 M10) */
#building-select {
  height: 32px; padding: 0 30px 0 10px;
  border: 1px solid var(--ld-input-border); border-radius: 9px;
  color: var(--ld-text); font-family: inherit;
  appearance: none; -webkit-appearance: none;
  background-color: var(--ld-card-bg);
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%23837D76' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; background-size: 14px;
  cursor: pointer;
}
#building-select:hover { border-color: var(--rn-border-hover); }
#building-select:focus { border-color: var(--ld-brand); outline: none; }

/* 날짜 세그먼트 → 프로토타입 .seg */
.seg-group {
  border: none;
  background: var(--ld-grey);
  border-radius: 10px;
  padding: 4px;
  gap: 2px;
  overflow: visible;
}
.seg-btn {
  padding: 7px 16px;
  background: transparent;
  color: var(--ld-text-dim);
  border-right: none;
  border-radius: 6px;
  font-size: 12.5px;
  font-weight: 700;
}
.seg-btn.active { background: #fff; color: var(--ld-brand); box-shadow: 0 1px 4px rgba(34, 30, 28, .08); }
.seg-btn:hover:not(.active) { background: var(--ld-grey-hover); color: var(--ld-grey-text); }

/* 합계 배지 */
.count-badge { background: var(--ld-brand); font-variant-numeric: tabular-nums; }

/* 카드형 섹션 */
.log-section, .stat-card {
  background: var(--ld-card-bg);
  border: 1px solid var(--ld-border);
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(34, 30, 28, .04);
  padding: 24px;
  margin-bottom: 32px;
}
.log-section h3 { color: var(--ld-text-dim); font-size: 13px; font-weight: 750; }
.stat-card h3 {
  color: var(--ld-text-dim);
  font-size: 13px;
  font-weight: 750;
  border-bottom: 1px solid var(--ld-border-soft);
}

/* ═══ 공통 표 규격 합류 (2026-09-01, 검수 G4 D6 / g2 §표) ═══
   기준: renewal.css:218-291 (입금 내역 표). 값을 그대로 복제한다 — renewal.css 는 전역 파일(WP-DS)이고
   공적장부는 .rn 스코프 밖이라 셀렉터 목록에 넣어도 닿지 않기 때문.
   th 11.5/750 dim · 투명 배경 · 아래 1px soft · 12·14·8 / td 13px · 11·14 · tabular / 행 hover --ld-bg
   정렬: 기본 가운데(헤더=본문) · 주소 열(.addr-cell)만 좌측 — 08-28 표 정렬 규칙 */
.log-section:has(> .log-table),
.stat-card:has(> .stat-table) { padding: 6px 8px; }
.log-section:has(> .log-table) > h3,
.stat-card:has(> .stat-table) > h3 { padding: 12px 14px 4px; margin: 0 0 4px; }
.stat-card:has(> .stat-table) > h3 { padding-bottom: 8px; margin-bottom: 0; }

.log-table, .stat-table {
  width: 100%;
  border: none;
  border-collapse: collapse;
  background: none;
  font-size: 13px;
}
.log-table thead, .stat-table thead { background: transparent; color: var(--ld-text-dim); }
.log-table thead th, .stat-table thead th {
  font-size: 11.5px;
  font-weight: 750;
  letter-spacing: .02em;
  color: var(--ld-text-dim);
  background: none;
  border: none;
  border-bottom: 1px solid var(--ld-border-soft);
  padding: 12px 14px 8px;
  white-space: nowrap;
  text-align: center;
}
.log-table tbody, .stat-table tbody { background: transparent; color: var(--ld-text); }
.log-table tbody td, .stat-table tbody td {
  padding: 11px 14px;
  border: none;
  border-bottom: 1px solid var(--ld-border-soft);
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
  text-align: center;
  min-height: 0;
}
.log-table tbody tr:last-child td, .stat-table tbody tr:last-child td { border-bottom: none; }
.log-table tbody td::after, .stat-table tbody td::after { content: none; display: none; }
.log-table tbody tr:hover td, .stat-table tbody tr:hover td { background: var(--ld-bg); }
/* 주소·제목 열은 좌측 — 헤더와 본문에 같은 클래스를 붙여 정렬을 맞춘다 */
.log-table th.addr-cell, .log-table td.addr-cell { text-align: left; }
/* 상태·발급 배지 글꼴을 표 본문에 맞춤 (인라인 0.8rem → 11.5px) */
.log-table .badge-new, .log-table .badge-reuse, .log-table .badge-partial, .log-table .badge-fail { font-size: 11.5px; padding: 2px 8px; }

/* style.css:23 이 셀마다 그리는 회색 세로 막대(#d9d9d9) 제거 — 리뉴얼 표는 가로 구분선만 쓴다.
   공적장부 페이지는 naviBar 를 거치지 않아 renewal-skin.css 가 로드되지 않으므로 여기서 처리한다.
   (2026-08-06) */
table:not(.calendarTable) tbody td:not(:last-child)::after { display: none; }
table tbody tr:last-child td { border-bottom-color: var(--ld-border-soft); }

/* 발급 유형 배지 — 상태색 토큰 (A-2 계열) */
.badge-new { background: var(--ld-green-soft); color: var(--ld-st-green); border-radius: 6px; font-weight: 700; }
.badge-reuse { background: var(--ld-blue-soft); color: var(--ld-st-blue); border-radius: 6px; font-weight: 700; }
.badge-partial { background: var(--ld-wait-soft); color: var(--ld-st-wait); border-radius: 6px; font-weight: 700; }
.badge-fail { background: var(--ld-err-soft); color: var(--ld-st-err); border-radius: 6px; font-weight: 700; }

/* 서비스 색 */
.service-REGISTRY { color: var(--ld-brand); }
.service-BUILDING { color: var(--ld-st-wait); }
.service-LAND { color: var(--ld-st-green); }
.service-LAND_USE { color: var(--ld-st-blue); }
.prop-type { color: var(--ld-text-dim); }

/* PDF 아이콘 버튼 — SVG 프레젠테이션 속성(stroke)을 CSS로 재도색 */
.btn-icon:hover { background: var(--ld-grey); }
.btn-icon svg, .btn-icon svg * { stroke: var(--ld-grey-text); }
.btn-dl { background: var(--ld-brand); border-radius: 6px; }
.btn-dl:hover { background: var(--ld-brand-hover); color: #fff; }   /* REG-1 잠재: 글자색 명시 */

/* 관리자 탭 — 프로토타입 .tabs (언더라인) */
.tab-nav { border-bottom: 1px solid var(--ld-border); gap: 8px; }
.tab-btn {
  color: var(--ld-text-faint);
  font-size: 14px;
  font-weight: 700;
  padding: 10px 14px;
  border-bottom: 2.5px solid transparent;
  margin-bottom: -1px;
}
.tab-btn.active { color: var(--ld-text); border-bottom-color: var(--ld-text); }
/* 언더라인 탭은 배경이 생기지 않는다 — 글자색만 진해진다 (R16) */
.tab-btn:hover { background: transparent; }
.tab-btn:hover:not(.active) { color: var(--ld-grey-text); }
.tab-btn.active:hover { color: var(--ld-text); }

/* ─── 9. 로딩 오버레이 (발급 파이프라인 — 구조 보존, 톤만) ─── */
#loading-overlay { background: rgba(34, 30, 28, .62); }

/* ─── 10. 보관함 /landdoc/archive 전용 (R18, 2026-09-01) ───
   헤드·필터·표는 위 공통 어휘(.ld-head/.filter-bar/.log-section/.log-table)를 그대로 쓰고,
   이 화면에만 있는 요소(검색어 폭·건수·종류 배지·빈 행·페이저)만 여기서 정한다. 색은 전부 토큰. */
.arch-keyword { flex: 1; min-width: 220px; }
.arch-count { font-size: 13px; color: var(--ld-text-sub); margin-bottom: 10px; font-variant-numeric: tabular-nums; }
.arch-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--ld-brand-soft);
  color: var(--ld-brand);
  font-size: 11.5px;
  font-weight: 700;
  white-space: nowrap;
}
.log-table td.arch-empty {
  text-align: center;
  padding: 34px 10px;
  color: var(--ld-text-dim);
  font-size: 12.5px;
}
/* 페이저 — 대시보드 공통 .rn-pgn(renewal.css:537) 규격 미러: 26px·보더 없음·활성=브랜드 채움 */
.arch-pager { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: 4px; }
.arch-pager:empty { display: none; }
.arch-pager button {
  min-width: 26px; height: 26px; padding: 0 6px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: none; border-radius: 8px;
  font-size: 12px; font-weight: 700; font-family: inherit;
  color: var(--ld-grey-text); cursor: pointer;
}
.arch-pager button:hover { background: var(--ld-border-soft); color: var(--ld-grey-text); }
.arch-pager button.on, .arch-pager button.on:hover { background: var(--ld-brand); color: #fff; cursor: default; }
.arch-pager button:disabled, .arch-pager button:disabled:hover { background: none; color: var(--ld-text-faint); cursor: default; opacity: 1; }

/* ─── 11. 관리자 운영 탭(#tab-ops) + 검수 대기 배지 (2026-09-01, admin.html 인라인에서 이동) ───
   원본은 Tailwind 팔레트(slate/red/green/amber/orange) 리터럴이었다 — 검수 G4 D5. 같은 의미의 토큰으로 옮긴다:
   ink→text · sub→text-dim · line→border-soft · bg→bg · red→st-err(+err-soft) · green→st-green(+green-soft)
   · amber/orange→st-wait(+wait-soft) · slate 배지→grey/grey-text. 표(th/td/hover)는 위 공통 규격이 그대로 적용되도록
   ID 스코프 규칙을 두지 않는다. 클래스명은 admin.js 가 생성하므로 전부 보존. */
.pending-review-badge {
  display: inline-block; margin-left: auto; align-self: center;
  padding: 4px 12px; border-radius: 999px;
  background: var(--ld-wait-soft); color: var(--ld-st-wait);
  font-size: 12px; font-weight: 750; cursor: pointer;
}
.pending-review-badge:hover { background: var(--ld-wait-soft); filter: brightness(.96); }

#tab-ops { --ops-radius: 8px; }
#tab-ops .log-section h3 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
#tab-ops .log-section h3 a { color: var(--ld-brand); font-weight: 700; text-decoration: none; }
#tab-ops .log-section h3 a:hover { text-decoration: underline; }
#tab-ops select {
  height: 32px; padding: 0 34px 0 10px;
  border: 1px solid var(--ld-input-border); border-radius: var(--ops-radius);
  font-size: 12.5px; color: var(--ld-text); font-family: inherit;
}
#tab-ops input[type=text] {
  padding: 7px 10px;
  border: 1px solid var(--ld-input-border); border-radius: var(--ops-radius);
  font-size: 12.5px; color: var(--ld-text); font-family: inherit;
}
#tab-ops input[type=text]:focus { border-color: var(--ld-brand); outline: none; }
/* flat + radius 버튼 3계열 — 공통 Primary / Secondary(그레이) / 위험 톤 */
#tab-ops .ops-btn {
  border: none; border-radius: var(--ops-radius); padding: 7px 14px;
  font-size: 12.5px; font-weight: 700; font-family: inherit; cursor: pointer;
  transition: background .12s, color .12s, transform .05s;
}
#tab-ops .ops-btn:active { transform: translateY(1px); }
#tab-ops .ops-btn.primary { background: var(--ld-brand); color: #fff; }
#tab-ops .ops-btn.primary:hover { background: var(--ld-brand-hover); color: #fff; }
#tab-ops .ops-btn.danger { background: var(--rn-danger-faint); color: var(--ld-st-err); border: 1px solid var(--rn-danger-border); }
#tab-ops .ops-btn.danger:hover { background: var(--ld-st-err); color: #fff; border-color: var(--ld-st-err); }
#tab-ops .ops-btn.ghost { background: var(--ld-grey); color: var(--ld-grey-text); }
#tab-ops .ops-btn.ghost:hover { background: var(--ld-grey-hover); color: var(--ld-grey-text); }
#tab-ops .ops-btn:disabled, #tab-ops .ops-btn:disabled:hover { opacity: .45; cursor: not-allowed; }
#tab-ops .ops-btn.ghost:disabled, #tab-ops .ops-btn.ghost:disabled:hover { background: var(--ld-grey); color: var(--ld-grey-text); border: none; }
#tab-ops .ops-btn.danger:disabled, #tab-ops .ops-btn.danger:disabled:hover { background: var(--rn-danger-faint); color: var(--ld-st-err); border: 1px solid var(--rn-danger-border); }
#tab-ops .ops-btn.primary:disabled, #tab-ops .ops-btn.primary:disabled:hover { background: var(--ld-brand); color: #fff; border: none; }
/* 상태 배지 — 공통 상태 칩 규격(연배경 + 상태색 글자 · radius 6) */
#tab-ops .ops-badge { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 11.5px; font-weight: 700; white-space: nowrap; }
#tab-ops .ops-badge.pending   { background: var(--ld-wait-soft);  color: var(--ld-st-wait); }
#tab-ops .ops-badge.confirmed { background: var(--ld-green-soft); color: var(--ld-st-green); }
#tab-ops .ops-badge.rejected  { background: var(--ld-err-soft);   color: var(--ld-st-err); }
#tab-ops .ops-badge.unmatched { background: var(--ld-grey);       color: var(--ld-grey-text); }
#tab-ops .ops-badge.changed   { background: var(--ld-wait-soft);  color: var(--ld-st-wait); }
#tab-ops .ops-badge.open      { background: var(--ld-err-soft);   color: var(--ld-st-err); }
#tab-ops .ops-badge.resolved  { background: var(--ld-green-soft); color: var(--ld-st-green); }
/* 검수 상세 인라인 패널 */
#tab-ops .ops-detail {
  background: var(--ld-bg); border: 1px solid var(--ld-border-soft);
  border-radius: var(--ops-radius); padding: 14px 16px; margin: 4px 0 8px;
  text-align: left;
}
#tab-ops .ops-detail h4 { font-size: 13px; font-weight: 750; color: var(--ld-text); margin: 10px 0 6px; }
#tab-ops .ops-diff {
  color: var(--ld-st-wait); font-size: 12px;
  background: var(--ld-wait-soft); border: 1px solid var(--ld-border);
  border-radius: var(--ops-radius); padding: 8px 10px; margin-bottom: 8px; word-break: break-all;
}
#tab-ops .ops-error { color: var(--ld-st-err); font-size: 12.5px; margin-top: 6px; }
#tab-ops .ops-inline-memo { display: inline-flex; gap: 6px; align-items: center; margin-left: 6px; }

/* select 열림 목록 option — .rn 스코프 밖 페이지용 이식 (2026-09-02 5차 5Y-6, renewal.css:53 동일 규칙) */
select option { font-family: inherit; font-size: 13px; color: var(--rn-text, #221E1C); background: var(--rn-card-bg, #fff); }
select option:checked { color: var(--rn-brand, #812B27); font-weight: 700; }

/* select 열림 목록 라운드 — renewal.css 전역 블록의 landdoc 이식 (2026-09-02) */
@supports selector(::picker(select)) {
  /* 2026-09-03 민수님 지적: base-select 는 네이티브 위젯이 아니라 일반 박스로 그려져 고정 높이 안에서 글자가 위로 붙었다
     (계좌 등록 팝업 은행명/계좌 유형, 직원관리 등 전 페이지). display 는 그대로 두고 블록 정렬만 가운데로. */
  select { appearance: base-select !important; align-content: center; } /* 폴백 appearance:none 제압 (2026-09-02) */
  select::picker-icon { display: none; }
  select::picker(select) {
    appearance: base-select;
    border: 1px solid var(--rn-border, #EBE7E2); border-radius: 10px;
    background: var(--rn-card-bg, #fff); box-shadow: var(--rn-shadow-pop, 0 14px 34px rgba(34,30,28,.16));
    padding: 5px; margin-top: 4px;
  }
  select option { border-radius: 7px; padding: 8px 12px; }
  select option:hover { background: var(--rn-bg, #F8F7F5); }
}
