/* 한글 줄바꿈: 단어(어절) 단위로 내려가고 글자 중간에서 잘리지 않게. 너무 긴 문자열(주소·번호)은 넘치지 않게 끊는다. */
body { word-break: keep-all; overflow-wrap: break-word; }

/* 공통 보정 (Tabler 위에 최소한만) */
:root {
  --tblr-font-sans-serif: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;
}
.num, td.num, .table td.text-end { font-variant-numeric: tabular-nums; }
input.number { text-align: right; }
.table-row[data-href] { cursor: pointer; }
.btn { white-space: nowrap; }
.sell-state { font-size: .75rem; }
/* 장부 상세의 좌측 제목 셀 */
.table th.table-active { width: 1%; white-space: nowrap; }
/* 주차장 배치도 */
.parking-map { width: 100%; height: auto; display: block; max-height: 640px; }
.parking-map .stall rect { transition: filter .1s; }
.parking-map .stall:hover rect, .parking-map .stall:focus rect { filter: brightness(.96); stroke-width: 2.5; }
.parking-map .s-code { font-weight: 700; font-size: 13px; }
.parking-map .s-sub { font-size: 11px; }

/* 좁은 카드 안에서도 정보 항목을 2열로 */
.datagrid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* ── 가독성: 기본 글씨 조금 크게, 제목은 굵고 분명하게 (Tabler 구성은 유지) ── */
:root { --tblr-body-font-size: .9375rem; }          /* 14px → 15px */
body { font-size: var(--tblr-body-font-size); }
.page-pretitle { font-size: .8125rem; letter-spacing: .02em; }
.page-title { font-size: 1.5rem; font-weight: 700; }

/* 카드 머리글: 옅은 배경 + 굵은 제목 + 아이콘 */
.card > .card-header { background: var(--tblr-bg-surface-tertiary, var(--tblr-gray-50)); }
.card-header .card-title { font-size: 1.0625rem; font-weight: 700; display: inline-flex; align-items: center; gap: .5rem; }
.card-header .card-title > .icon { width: 1.35rem; height: 1.35rem; color: var(--tblr-primary); stroke-width: 1.75; }

/* ── 카드 안 표의 마지막 줄 테두리 제거 (카드 모서리 밖으로 삐져나오던 줄) ── */
.card .card-table > :last-child > tr:last-child > * { border-bottom-width: 0; }
.card .card-table tfoot > tr > * { border-top: 1px solid var(--tblr-border-color); background: var(--tblr-bg-surface-secondary, transparent); }

/* ── 나란히 놓인 카드 높이 맞춤: .row-deck 안에서 카드 본문/표가 남는 높이를 채운다 ── */
.row-deck .card > .table-responsive { flex: 1 1 auto; }   /* 표가 남는 높이를 채우고 합계(footer)는 바닥에 */

/* ── 매입자 카드 ── */
.investor-card { transition: box-shadow .15s, border-color .15s; }
.investor-card:hover { border-color: var(--tblr-primary); box-shadow: var(--tblr-box-shadow-card-hover, 0 2px 8px rgba(0,0,0,.08)); }
.investor-add { border: 2px dashed var(--tblr-border-color); background: transparent; min-height: 100%; color: var(--tblr-secondary); }
.investor-add:hover { border-color: var(--tblr-primary); color: var(--tblr-primary); }

/* 브랜드: TruckMaster 는 파란색 굵게 */
.brand-mark { color: var(--tblr-primary); font-weight: 800; letter-spacing: -.02em; line-height: 1.1; }
[data-bs-theme="dark"] .brand-mark { color: #4dabf7; }      /* 어두운 사이드바에서 잘 보이는 밝은 파랑 */
.brand-sub { font-size: .9375rem; font-weight: 600; opacity: .85; margin-top: .15rem; }

/* 매물 메모: 메모지처럼 눈에 띄게 */
.memo-card { border-color: var(--tblr-yellow); }
.memo-card > .card-header { background: var(--tblr-yellow-lt); }
.memo-card > .card-header .card-title > .icon { color: var(--tblr-yellow); }
.memo-text { white-space: pre-wrap; font-size: 1.0625rem; line-height: 1.65; min-height: 4.5rem; cursor: text; border-radius: var(--tblr-border-radius); padding: .25rem .35rem; margin: -.25rem -.35rem; }
.memo-text:hover, .memo-text:focus { background: var(--tblr-yellow-lt); outline: none; }
.memo-empty { color: var(--tblr-secondary); font-size: .9375rem; }
.memo-input { font-size: 1.0625rem; line-height: 1.65; resize: vertical; }

/* 정산: 확정(잠금)된 줄 */
.form-control.is-locked, .input-group-flat .form-control.is-locked, .input-group-flat:has(.is-locked) .input-group-text { background-color: var(--tblr-bg-surface-secondary) !important; color: var(--tblr-secondary); }
tr.row-locked > td { background: var(--tblr-green-lt); }
tr.row-locked .btn-confirm { background-color: var(--tblr-secondary-lt); color: var(--tblr-body-color); border-color: transparent; }
tr.row-locked .btn-confirm:hover { background-color: var(--tblr-bg-surface-tertiary); }

/* 지출·수입 엑셀식 표: 좁은 반반 카드에서도 가로 스크롤 없이 */
.table.sheet { table-layout: fixed; width: 100%; }
.table.sheet th, .table.sheet td { padding: .25rem .25rem; }
.table.sheet th:first-child, .table.sheet td:first-child { padding-left: .75rem; }
.table.sheet th:last-child, .table.sheet td:last-child { padding-right: .5rem; }
.table.sheet .form-control-flush { padding: .3rem .35rem; border-radius: 4px; min-width: 0; width: 100%; text-overflow: ellipsis; }
.table.sheet .form-select.form-control-flush { padding-right: .35rem; background-image: none; }
.table.sheet input[type=date] { font-variant-numeric: tabular-nums; }
.table.sheet input[type=date]::-webkit-calendar-picker-indicator { display: none; }
.table.sheet input[type=date]::-webkit-inner-spin-button { display: none; }
.table.sheet .form-control-flush:hover { background: var(--tblr-bg-surface-secondary); }
.table.sheet .form-control-flush:focus { background: var(--tblr-bg-surface); box-shadow: 0 0 0 2px var(--tblr-primary); }
.table.sheet .form-control-flush.is-invalid { box-shadow: 0 0 0 2px var(--tblr-danger); }
.table.sheet tr.row-error td { background: rgba(var(--tblr-danger-rgb), .05); }
.table.sheet .sheet-new-row { background: var(--tblr-bg-surface-tertiary, rgba(0,0,0,.02)); }
.table.sheet .sheet-act { text-align: center; padding-left: 0; padding-right: .25rem; }
.table.sheet .sheet-del { width: 26px; height: 26px; min-height: 0; padding: 0; }
.table.sheet .sheet-act .btn-list { flex-direction: column; gap: 2px; }
.table.sheet .form-control-flush { font-size: .875rem; }
.table.sheet .sheet-act { padding-right: .15rem; }
/* 매물 상세: 지출·수입 표가 넉넉하도록 왼쪽 정보 열을 조금 좁게 (26 : 74) */
@media (min-width: 992px) {
  .detail-side { flex: 0 0 auto; width: 26%; }
  .detail-main { flex: 0 0 auto; width: 74%; }
}
.table.sheet .form-select.form-control-flush { text-overflow: clip; padding-left: .25rem; padding-right: .1rem; }
.table.sheet .sheet-del { color: var(--tblr-gray-400); }
.table.sheet .sheet-del:hover { color: var(--tblr-danger); background: transparent; }
/* 열 정렬: 머리글은 가운데, 지출자·날짜 칸도 가운데 */
.table.sheet thead th { text-align: center; }
.table.sheet select[name=man], .table.sheet input[name=date] { text-align: center; text-align-last: center; }
/* 새 줄: 아직 입력 전인 빈 칸임이 보이도록 점선 테두리 + 옅은 안내 문구 */
.table.sheet tr.sheet-new-row td { background: transparent; border-top: 1px dashed var(--tblr-border-color-dark, #c8d0da); }
/* 좁은 칸에서도 날짜·금액이 다 보이도록 칸 안쪽 여백 최소화 */
.table.sheet td { padding-left: .1rem; padding-right: .1rem; }
.table.sheet .form-control-flush { padding-left: .2rem; padding-right: .2rem; }
.table.sheet td:first-child { padding-left: .6rem; }
.table.sheet input[name=date] { font-size: .8125rem; letter-spacing: -.01em; }
/* 삭제: 버튼 상자 없이 X 만 */
.table.sheet .sheet-del { all: unset; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; cursor: pointer; color: var(--tblr-gray-400); border-radius: 0; }
.table.sheet .sheet-del:hover { color: var(--tblr-danger); background: none; }
.table.sheet .sheet-del:focus-visible { outline: 2px solid var(--tblr-primary); outline-offset: 1px; }

/* 새 줄: Tabler 기본 입력칸(form-control) 그대로. 비어 있을 땐 점선·옅은 바탕, 누르거나 값이 들어가면 원래 흰 입력칸 */
.table.sheet .sheet-new-input { padding: .3rem .2rem; font-size: .875rem; line-height: 1.25rem; min-width: 0; width: 100%; text-overflow: ellipsis; }
.table.sheet select.sheet-new-input { background-image: none; padding-right: .2rem; text-overflow: clip; }
.table.sheet tr.sheet-new-row .sheet-new-input:placeholder-shown,
.table.sheet tr.sheet-new-row select.sheet-new-input:has(option[value=""]:checked) {
  border-style: dashed; background-color: var(--tblr-bg-surface-secondary); box-shadow: none; color: var(--tblr-gray-400);
}
.table.sheet tr.sheet-new-row .sheet-new-input:focus { border-style: solid; background-color: var(--tblr-bg-forms); color: var(--tblr-body-color); }
.table.sheet tr.sheet-new-row input[name=part]:placeholder-shown::placeholder,
.table.sheet tr.sheet-new-row input[name=reason]:placeholder-shown::placeholder { color: var(--tblr-primary); opacity: .85; }
.table.sheet tr.sheet-new-row .sheet-new-input:focus::placeholder { color: var(--tblr-gray-400); }
/* 표 안의 오류 칸: Tabler 기본 X 아이콘 없이 빨간 테두리만 */
.table.sheet .is-invalid { background-image: none !important; padding-right: .2rem !important; }
/* 저장된 줄에서 칸을 비우면: 흰 바탕 + 빨간 테두리 입력칸으로 남긴다 (flush 의 투명 처리를 덮어씀) */
.table.sheet .form-control-flush.is-invalid {
  background: var(--tblr-bg-forms) !important; border: 1px solid var(--tblr-danger) !important;
  border-radius: var(--tblr-border-radius); box-shadow: none !important;
}
.table.sheet .form-control-flush.is-invalid:focus { box-shadow: 0 0 0 3px rgba(var(--tblr-danger-rgb), .2) !important; }
/* 상세 화면 상단 매물 삭제: 상자·호버 없이 빨간 쓰레기통만 (다른 버튼과 같은 높이) */
.btn-plain-danger, .btn-plain-danger:hover, .btn-plain-danger:focus, .btn-plain-danger:active {
  color: var(--tblr-danger) !important; background: transparent !important; border-color: transparent !important; box-shadow: none !important;
}
.won-hint { padding-right: 1rem; }
/* 달력 머리글의 "년" 글자: 년·월 버튼과 같은 크기, 연도 바로 뒤에 붙임 */
.vc-header__suffix { font-size: 1rem; font-weight: 500; color: var(--tblr-body-color); margin-left: -.35rem; margin-right: .2rem; }

/* ===== 모바일 (768px 미만). PC 화면에는 영향 없음 ===== */
@media (max-width: 767.98px) {
  /* 페이지 머리글: 제목 한 줄 -> 그 아래 버튼 줄 */
  .page-header .row > .col-auto { flex: 0 0 100%; width: 100%; max-width: 100%; margin-left: 0 !important; }
  .page-header .row > .col-auto.btn-list,
  .page-header .row > .col-auto > .btn-list { justify-content: flex-start; }
  .page-header .page-title { font-size: 1.25rem; line-height: 1.3; }

  /* 카드 머리글: 제목은 한 줄로, 옆의 안내 문구·검색칸은 아래 줄로 */
  .card-header { flex-wrap: wrap; row-gap: .35rem; }
  .card-header .card-title { white-space: nowrap; }
  .card-header > .card-actions.small { flex: 0 0 100%; margin-left: 0; text-align: left; white-space: normal; }
  .card-header > form.ms-auto { flex: 0 0 100%; margin-left: 0 !important; }
  .card-header > form.ms-auto .input-icon, .card-header > form.ms-auto .form-control { width: 100% !important; max-width: 100% !important; }

  /* 지출·수입 표: 칸이 너무 좁아지지 않게 최소 폭을 두고, 카드 안에서 옆으로 밀어 보기 */
  .table.sheet { min-width: 520px; }
}
