/* 2026-11-04 온라인유입 카드 하늘색 테두리(.sb-card--online · .sb-compact-card--online) · 칸 안 나눔 줄(.sb-online-div) · 성과 칸 '구매 n · 렌탈 n'(.sb-perf-split) · 온라인 문의 줄(.sb-perf-split--online, 같은 회색) · 그중 이전 견적(.sb-perf-prev 주황) — 테두리만 색, 바탕 · 글자색은 그대로 — salesboard.js 유입처 거르기 */
/* 2026-10-23 유입처별 현황 이름 누름 글자(.sb-src-go) · 견적 목록 창(.sbls-*, salesboard-src.js) */
/* 2026-10-09 5-4(2차) 현황판: 카드 3줄(상태 = 태그), 담당자 칸 태그, 겹친 카드·담당자 규칙 합침, 모바일 = 상태 전환 버튼 + 고른 칸만 세로로 */
/* 2026-10-09 5-4(1차) 제목 구분: 상자 제목 = 연한 파랑 띠, 소제목 = 왼쪽 남색 세로줄 */
/* 2026-10-09 5-4(1차) 영업 현황: 성과 숫자 칸, 현황판 머리(주차 탭 = 전환 버튼, 챙길 일 = 필터 칩), 섹션 제목 14px, 고객·유입 모바일 줄 모양, 순위 색 없앰 */
/* 2026-10-09 5-0 죽은 규칙 정리: JS·HTML 에 없는 클래스만 가리키는 규칙 삭제 (지운규칙목록.txt) */
/* 2026-10-09 style.css 에서 분리 (원래 4181~5359줄) */
/* 2026-10-09 모바일 현황판 카드: 고객사명 첫 줄 표시 */
/* ══════════════════════════════════════════════════════════════════
   ■ 5-1 영업 현황판 (salesboard) — 2026-10-08
   ══════════════════════════════════════════════════════════════════ */

/* ── 현황판 래퍼 ── */
#sb-wrap {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 0;
  min-width: 0; /* 2026-10-09 모바일 가로 스크롤 */
}

/* ── 현황판 본체 ── */
.sb-board {
  background: #fff;
  overflow: hidden;
  min-width: 0; /* 2026-10-09 모바일 가로 스크롤 */
}

/* ── 현황판 헤더 (담당자 필터 + 칸 제목) ── */
.sb-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ds-sp-2) var(--ds-sp-3);
  padding: var(--ds-sp-3) var(--ds-sp-4);
  border-bottom: var(--ds-line) solid var(--ds-gray-200);
  background: #ffffff;
}
.sb-header-title { /* 머리 첫 줄 전체를 연한 파랑 띠로 (.sb-section-title 과 같은 모양) */
  flex: 0 0 calc(100% + 2 * var(--ds-sp-4));
  margin: calc(-1 * var(--ds-sp-3)) calc(-1 * var(--ds-sp-4)) var(--ds-sp-1);
  padding: 10px var(--ds-sp-4);
  background: var(--ds-primary-soft);
  border-bottom: var(--ds-line) solid #d6e4f2;
  font-size: var(--ds-fs-base);
  font-weight: 700;
  color: var(--ds-brand);
}

/* ── 담당자 칸 (2026-10-09 5-4 2차: 글자 기준표, 지연·F/U 미정은 태그) ── */
.sb-owner-name { font-size: var(--ds-fs-base); font-weight: 700; color: var(--ds-brand); line-height: 1.4; }
.sb-owner-kpi, .sb-owner-won, .sb-owner-act, .sb-owner-meta { font-size: var(--ds-fs-sm); color: var(--ds-gray-600); line-height: 1.6; }
.sb-owner-kpi { color: var(--ds-gray-900); }
.sb-owner-won--has { font-weight: 700; color: var(--ds-success); }
.sb-owner-won--zero { color: var(--ds-gray-400); }
.sb-owner-act--warn { font-weight: 700; color: var(--ds-warn); } /* 이번 주 활동 0 */
.sb-owner-meta .hsl-tag { margin-right: 2px; }

/* ── 현황판 카드: 1줄 고객사·금액 / 2줄 유형·상태 태그·요청 아이콘 / 3줄 마지막 활동. 왼쪽 띠 = 지연 빨강, F/U 미정·재검토 주황 ── */
.sb-card {
  position: relative;
  margin-bottom: var(--ds-sp-2);
  padding: var(--ds-sp-2) 10px var(--ds-sp-2) var(--ds-sp-3);
  background: #ffffff;
  border: var(--ds-line) solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  overflow: hidden;
  cursor: pointer;
}
.sb-card::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: transparent; }
.sb-card--delay::before  { background: var(--ds-danger); }
.sb-card--nofu::before, .sb-card--review::before { background: var(--ds-warn); }
.sb-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--ds-sp-2); }
.sb-card-company { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--ds-fs-base); font-weight: 700; color: var(--ds-gray-900); }
.sb-card-amount { flex-shrink: 0; font-size: var(--ds-fs-base); font-weight: 700; color: var(--ds-gray-900); font-variant-numeric: tabular-nums; }
.sb-card-mid { display: flex; align-items: center; gap: 6px; min-height: 28px; margin-top: 2px; }
.sb-card-type { flex-shrink: 0; padding: 0 6px; border-radius: var(--ds-radius-sm); background: #f1f5f9; color: var(--ds-gray-600); font-size: var(--ds-fs-sm); font-weight: 600; line-height: 1.5; }
.sb-card-status { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--ds-fs-md); color: var(--ds-gray-600); }
.sb-card-mid .hsl-tag, .sb-card-mid .sp-status-badge { white-space: nowrap; }
.sb-card-unread { background: #fef9c3; color: #854d0e; } /* 요청 미확인 (모양은 .hsl-tag) */
.sb-card-comment-btn { flex-shrink: 0; width: 28px; height: 28px; margin-left: auto; padding: 0; border: none; background: none; color: var(--ds-gray-600); font-size: 18px; line-height: 1; cursor: pointer; }
.sb-card-act { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--ds-fs-sm); color: var(--ds-gray-600); }
.sb-card-act--none { color: var(--ds-gray-400); }

/* 2026-11-04 온라인유입 카드 = 하늘색 테두리만 (바탕 · 글자색은 다른 카드와 같음, 왼쪽 띠는 지연 · F/U 미정 표시 그대로), 칸 안 그 외 / 온라인 나눔 줄 */
.sb-perf-item .sb-perf-split { font-size: 11px; color: var(--ds-gray-400); text-align: right; white-space: nowrap; }
.sb-perf-item .sb-perf-prev { color: var(--ds-warn); }   /* 2026-11-04 (4) 그중 이전 견적 n건 */
.sb-card.sb-card--online { border-color: #38bdf8; }
.sb-compact-card.sb-compact-card--online { border-color: #38bdf8; }
.sb-online-div { display: flex; align-items: center; gap: 6px; margin: 10px 0 6px; font-size: 11px; font-weight: 700; color: var(--ds-gray-600); white-space: nowrap; }
.sb-online-div::before, .sb-online-div::after { content: ''; flex: 1; border-top: 1px dashed #7dd3fc; }

/* 실주·수주 한 줄 카드 */
.sb-compact-card {
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
  margin-bottom: var(--ds-sp-1); padding: 6px 10px;
  background: #ffffff; border: var(--ds-line) solid var(--ds-gray-200); border-radius: var(--ds-radius-md);
  cursor: pointer; overflow: hidden;
}
.sb-compact-company { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--ds-fs-md); font-weight: 700; color: var(--ds-gray-900); }
.sb-compact-meta { flex-shrink: 0; font-size: var(--ds-fs-sm); color: var(--ds-gray-600); white-space: nowrap; font-variant-numeric: tabular-nums; }
.sb-more-btn { padding: var(--ds-sp-1) 0; border: none; background: none; color: var(--ds-primary); font-size: var(--ds-fs-sm); text-align: left; cursor: pointer; }
@media (hover: hover) {
  .sb-card:hover, .sb-compact-card:hover { background: #f8faff; }
  .sb-card-comment-btn:hover { color: var(--ds-primary); }
  .sb-td-owner:hover { background: #f0f4ff; }
}

/* ── 빈 현황판 안내 ── */
.sb-empty {
  text-align: center;
  padding: 32px 16px;
  color: #94a3b8;
  font-size: 13px;
}

/* ── 로딩 ── */
.sb-loading {
  text-align: center;
  padding: 24px 16px;
  color: #94a3b8;
  font-size: 13px;
}

/* ── 모바일: 현황판 가로 스크롤 ── */
@media (max-width: 768px) {
  #sb-wrap { gap: 12px; }
  .sb-source-body { flex-direction: column; }
  .sb-source-left, .sb-source-right { min-width: 0; }
}

/* ══════════════════════════════════════════════════════════════════
   ■ 5-2 영업 현황판 추가 스타일 — 2026-10-08
   ══════════════════════════════════════════════════════════════════ */

/* ── 공통 섹션: 상자 제목 = 상자 맨 위 연한 파랑 띠 (.dash-card 여백만큼 바깥으로) ── */
.sb-section-title {
  display: flex;
  align-items: baseline;
  gap: var(--ds-sp-2);
  margin: calc(-1 * var(--ds-sp-4)) calc(-1 * var(--ds-sp-4)) var(--ds-sp-3);
  padding: 10px var(--ds-sp-4);
  background: var(--ds-primary-soft);
  border-bottom: var(--ds-line) solid #d6e4f2;
  border-radius: var(--ds-radius-lg) var(--ds-radius-lg) 0 0;
  font-size: var(--ds-fs-base);
  font-weight: 700;
  color: var(--ds-brand);
}
.sb-subsection-title {
  margin-bottom: var(--ds-sp-2);
  padding-left: var(--ds-sp-2);
  border-left: 3px solid var(--ds-brand);
  font-size: var(--ds-fs-md);
  font-weight: 700;
  color: var(--ds-brand);
}

/* ── 성과: 숫자 칸 4개 (모바일 2×2) ── */
.sb-perf-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--ds-sp-3);
}
.sb-perf-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--ds-sp-2) var(--ds-sp-3);
  background: var(--ds-gray-50);
  border-radius: var(--ds-radius-md);
  font-size: var(--ds-fs-sm);
  color: var(--ds-gray-600);
}
.sb-perf-item strong {
  font-size: var(--ds-fs-lg);
  font-weight: 700;
  color: var(--ds-gray-900);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.sb-perf-won strong { color: var(--ds-success); }
/* 제목 옆 기간·보조 설명 */
.sb-perf-period {
  font-size: var(--ds-fs-sm);
  font-weight: 400;
  color: var(--ds-gray-400);
  white-space: nowrap;
}

/* ── 챙길 일 = 현황판 머리의 필터 칩 (0건은 회색, 누르면 그 카드만) ── */
.sb-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ds-sp-2);
  margin-left: auto;
}
.sb-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 var(--ds-sp-3);
  border: var(--ds-line) solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  background: #ffffff;
  font-size: var(--ds-fs-md);
  color: var(--ds-gray-900);
  cursor: pointer;
}
.sb-chip-count {
  padding: 0 6px;
  border-radius: var(--ds-radius-sm);
  font-size: var(--ds-fs-sm);
  font-weight: 700;
  line-height: 1.5;
}
.sb-chip--delay  { border-color: #fca5a5; }
.sb-chip--delay  .sb-chip-count { background: #fef2f2; color: var(--ds-danger); }
.sb-chip--nofu, .sb-chip--review { border-color: #fdba74; }
.sb-chip--nofu .sb-chip-count, .sb-chip--review .sb-chip-count { background: #fff7ed; color: var(--ds-warn); }
.sb-chip--unread { border-color: #fde047; }
.sb-chip--unread .sb-chip-count { background: #fef9c3; color: #854d0e; }
.sb-chip.sb-chip--zero { border-color: var(--ds-gray-200); color: var(--ds-gray-400); }
.sb-chip--zero .sb-chip-count { background: #f1f5f9; color: var(--ds-gray-600); }
.sb-chip.sb-chip--active { border-color: var(--ds-primary); background: var(--ds-primary-soft); box-shadow: inset 0 0 0 1px var(--ds-primary); }
@media (hover: hover) { .sb-chip:hover { border-color: var(--ds-primary); } }

/* ── 현황판: dash-card 패딩 무효화 (그리드가 끝까지 뻗어야 함) ── */
.sb-board.dash-card { padding: 0; }

/* ── 현황판 범례 한 줄: 색 네모 + 상태 이름 (2026-10-09) ── */
.sb-board-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ds-sp-1) var(--ds-sp-3);
  padding: var(--ds-sp-2) var(--ds-sp-4);
  border-bottom: var(--ds-line) solid var(--ds-gray-200);
  background: #ffffff;
  font-size: var(--ds-fs-sm);
  color: var(--ds-gray-600);
}
.sb-board-legend span::before { content: '■ '; }
.sb-legend-delay::before  { color: var(--ds-danger); }
.sb-legend-warn::before   { color: var(--ds-warn); }
.sb-legend-normal::before { color: var(--ds-gray-400); }

/* ── 현황판 섹션 ── */
.sb-board { margin-bottom: 0; overflow: hidden; }
/* 선택된 담당자 행 강조 */
.sb-owner-cell--selected { background: #f0f7ff !important; }

/* ── 고객·유입 섹션 ── */
.sb-source-section {
  overflow: hidden;
}
.sb-source-body {
  display: flex;
  gap: var(--ds-sp-6);
}
.sb-source-left, .sb-source-right { flex: 1; min-width: 0; }
.sb-source-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--ds-fs-md);
}
.sb-source-table th {
  padding: 6px var(--ds-sp-2);
  border-bottom: var(--ds-line) solid var(--ds-gray-200);
  font-size: var(--ds-fs-sm);
  font-weight: 700;
  color: var(--ds-gray-600);
  text-align: left;
  white-space: nowrap;
}
.sb-source-table td {
  padding: var(--ds-sp-2);
  border-bottom: var(--ds-line) solid #f1f5f9;
  color: var(--ds-gray-900);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.sb-source-table tr:last-child td { border-bottom: none; }
.sb-source-table .tac, .sb-source-table .tar { text-align: right; }

/* ── 거래처별 현황 영업상태 칩 (dashboard.js _renderClientQuoteGroups) ── */
.cq-chip-progress { background: #eff6ff; color: #2563eb; border-color: #93c5fd; }
.cq-chip-hold     { background: #fffbeb; color: #d97706; border-color: #fcd34d; }
.cq-chip-won      { background: #f0fdf4; color: #16a34a; border-color: #86efac; }
.cq-chip-lost     { background: #f8fafc; color: #94a3b8; border-color: #cbd5e1; }

/* ── 상위 거래처 5곳 표: 순위는 회색 숫자만 ── */
.sb-top5-table .sb-rank {
  display: inline-block;
  min-width: 16px;
  margin-right: var(--ds-sp-1);
  color: var(--ds-gray-400);
}
.sb-new-badge {
  display: inline-block;
  margin-left: var(--ds-sp-1);
  padding: 0 6px;
  border-radius: var(--ds-radius-sm);
  background: #ecfdf5;
  color: var(--ds-success);
  font-size: var(--ds-fs-xs);
  font-weight: 700;
  line-height: 1.6;
  vertical-align: middle;
}

/* ── 담당자 선택 시 섹션 제목 옆 이름 표시 ── */
.sb-owner-label {
  font-size: 12px;
  font-weight: 500;
  color: #2563eb;
  margin-left: 2px;
}

/* 주차 칸 이름표 (월별 · 월 전체) */
.sb-wk-name { font-size: var(--ds-fs-md); font-weight: 700; color: var(--ds-brand); line-height: 1.3; }
.sb-wk-period { font-size: var(--ds-fs-sm); color: var(--ds-gray-400); line-height: 1.3; }

/* ── 모바일 5-3 보완 ── */
@media (max-width: 768px) {
  .sb-perf-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ds-sp-2); }
  .sb-section-title { margin: calc(-1 * var(--ds-sp-3)) calc(-1 * var(--ds-sp-3)) var(--ds-sp-3); padding: 10px var(--ds-sp-3); }
  .sb-header { padding: var(--ds-sp-3); }
  .sb-header-title { flex-basis: calc(100% + 2 * var(--ds-sp-3)); margin: calc(-1 * var(--ds-sp-3)) calc(-1 * var(--ds-sp-3)) var(--ds-sp-1); padding: 10px var(--ds-sp-3); }
}

/* ══════════════════════════════════════════════════════════════════
   ■ 7 주차 탭 — 2026-10-08
   ══════════════════════════════════════════════════════════════════ */

/* 주차 버튼 줄 — 2026-10-09 전환 버튼 모양 (기간 탭 .dash-period-tab 과 같음), 칸 넓이 같게. 날짜는 title */
.sb-week-tabs {
  display: inline-grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  height: 32px;
  background: #ffffff;
  border: var(--ds-line) solid var(--ds-primary);
  border-radius: var(--ds-radius-md);
  overflow: hidden;
}
.sb-week-tab {
  padding: 0 var(--ds-sp-4);
  border: none;
  border-radius: 0;
  background: transparent;
  color: var(--ds-primary);
  font-size: var(--ds-fs-md);
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
}
.sb-week-tab + .sb-week-tab { border-left: var(--ds-line) solid var(--ds-primary); }
.sb-week-tab--active { background: var(--ds-primary); color: #ffffff; font-weight: 500; }

/* 이전 주차 안내 (머리 줄 안 회색 글자) */
.sb-prev-banner {
  font-size: var(--ds-fs-sm);
  color: var(--ds-gray-600);
}
.sb-prev-banner-btn {
  padding: 0;
  border: none;
  background: none;
  color: var(--ds-primary);
  font-size: var(--ds-fs-sm);
  text-decoration: underline;
  cursor: pointer;
}

/* 모바일: 주차 탭 한 줄 전체, 날짜는 아랫줄 / 챙길 일 칩은 왼쪽부터 / 고객·유입 표는 회사마다 두 줄 */
@media (max-width: 768px) {
  .sb-week-tabs { display: grid; flex: 0 0 100%; height: 36px; }
  .sb-week-tab  { padding: 0 2px; }
  .sb-chips { margin-left: 0; }
  .sb-source-table thead { display: none; }
  .sb-source-table tr { display: flex; flex-wrap: wrap; column-gap: 6px; padding: var(--ds-sp-2) 0; border-bottom: var(--ds-line) solid #f1f5f9; }
  .sb-source-table tr:last-child { border-bottom: none; }
  .sb-source-table td { padding: 0; border: none; color: var(--ds-gray-600); }
  .sb-source-table td:first-child { flex: 0 0 100%; margin-bottom: 2px; color: var(--ds-gray-900); font-weight: 700; white-space: normal; }
  .sb-source-table td:nth-child(2)::before { content: '견적 '; }
  .sb-source-table td:nth-child(3)::before { content: '· '; }
  .sb-source-table td:nth-child(4) { margin-left: auto; }
  .sb-source-table td:nth-child(4)::before { content: '수주 '; }
  .sb-source-table td:nth-child(5)::before { content: '· '; }
  .sb-source-table td.sb-src-nil { display: none; }
}

/* ══════════════════════════════════════════════════════════════════
   ■ 5-5 현황판 table 구조 — 2026-10-08
   ══════════════════════════════════════════════════════════════════ */

/* 가로 스크롤 래퍼 — 표가 찌그러지지 않게 */
.sb-board-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%; /* 2026-10-09 모바일 가로 스크롤 */
}

/* 현황판 표 본체 */
.sb-board-table {
  table-layout: fixed;
  width: 100%;
  min-width: 900px;
  border-collapse: collapse;
  background: #ffffff;
}

/* thead 행 */
.sb-thead-tr {
  background: #ffffff;
  border-bottom: 1px solid #e8edf5;
}

/* thead th */
.sb-th {
  padding: var(--ds-sp-2) 10px;
  font-size: var(--ds-fs-sm);
  font-weight: 700;
  color: var(--ds-gray-600);
  text-align: center;
  border-left: 1px solid #f1f5f9;
  vertical-align: middle;
  white-space: nowrap;
}
.sb-th:first-child { border-left: none; text-align: left; }

/* tbody td 공통 */
.sb-td {
  padding: 10px;
  vertical-align: top;
  border-left: 1px solid #f1f5f9;
  background: #ffffff;
}
.sb-td:first-child { border-left: none; }

/* 담당자 이름 td */
.sb-td-owner {
  cursor: pointer;
  min-width: 180px;
}

/* 주차 td */
.sb-td-week {
  white-space: nowrap;
  background: #ffffff;
}
.sb-td-week .sb-wk-name  { display: block; }
.sb-td-week .sb-wk-period { display: block; }

/* 담당자 경계선 (담당자가 바뀌는 첫 번째 tr) */
.sb-tr-owner-top td {
  border-top: 1px solid #e2e8f0;
}

/* 같은 담당자 안 주차 구분선 (2번째↑ 주차 tr) */
.sb-tr-week-inner td {
  border-top: 1px dashed #eef2f7;
}

/* 카드가 칸 폭에 맞게 늘어나도록 */
.sb-board-table .sb-card {
  width: 100%;
  box-sizing: border-box;
}

/* 모바일 상태 전환 버튼 [진행중 N | 보류 N | 실주 N | 수주 N] — PC 에서는 숨김 */
.sb-col-switch { display: none; }

/* 모바일: 표를 세로로 풀어 담당자 띠 + 고른 상태 칸만 (옆으로 밀지 않음) */
@media (max-width: 768px) {
  .sb-col-switch {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); height: 36px;
    margin: var(--ds-sp-2) var(--ds-sp-3);
    border: var(--ds-line) solid var(--ds-primary); border-radius: var(--ds-radius-md); overflow: hidden;
  }
  .sb-col-btn { padding: 0; border: none; background: #ffffff; color: var(--ds-primary); font-size: var(--ds-fs-md); white-space: nowrap; cursor: pointer; }
  .sb-col-btn + .sb-col-btn { border-left: var(--ds-line) solid var(--ds-primary); }
  .sb-col-btn.active { background: var(--ds-primary); color: #ffffff; font-weight: 500; }
  .sb-board-table, .sb-board-table tbody, .sb-board-table tr, .sb-board-table td { display: block; width: auto; min-width: 0; }
  .sb-board-table colgroup, .sb-board-table thead, .sb-board-table .sb-tr--empty { display: none; }
  .sb-board-table .sb-td { padding: 0 var(--ds-sp-3); border: none; }
  .sb-board-table .sb-td-owner {
    display: flex; flex-wrap: wrap; align-items: baseline; column-gap: var(--ds-sp-2);
    padding: 10px var(--ds-sp-3); margin-bottom: var(--ds-sp-2);
    background: var(--ds-gray-50); border-top: var(--ds-line) solid var(--ds-gray-200); border-bottom: var(--ds-line) solid var(--ds-gray-200);
  }
  .sb-td-owner .sb-owner-name { flex: 0 0 100%; font-size: var(--ds-fs-lg); }
  .sb-board-table .sb-td-week { padding: var(--ds-sp-1) var(--ds-sp-3); }
  .sb-td-week .sb-wk-name, .sb-td-week .sb-wk-period { display: inline; margin-right: var(--ds-sp-1); }
  /* 고른 상태 칸만 보임. 실주·수주는 주차 구분 없음. 카드 없는 주차 이름표는 숨김 */
  .sb-td--in_progress, .sb-td--on_hold, .sb-td--lost, .sb-td--won { display: none !important; }
  .sb-board--col-in_progress .sb-td--in_progress:not(:empty), .sb-board--col-on_hold .sb-td--on_hold:not(:empty),
  .sb-board--col-lost .sb-td--lost:not(:empty), .sb-board--col-won .sb-td--won:not(:empty) { display: block !important; }
  .sb-board--col-lost .sb-td-week, .sb-board--col-won .sb-td-week,
  .sb-board--col-in_progress .sb-tr:has(> .sb-td--in_progress:empty) > .sb-td-week,
  .sb-board--col-on_hold .sb-tr:has(> .sb-td--on_hold:empty) > .sb-td-week { display: none; }
}

/* 모바일: 견적 이력 카드 목록 세로 스크롤 — 2026-10-09 */
@media (max-width: 768px) {
  .history-card-list {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ── 2026-10-23 유입처별 현황 → 견적 목록 창 (salesboard-src.js, 창 #modal-sbls). 모양은 고객사 창 .cd-* 를 같이 씀 ── */
.sb-src-go{background:none;border:none;padding:0;font:inherit;color:var(--ds-primary);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:3px;text-decoration-color:#bfdbfe;}
.sbls-modal{width:760px;}
.sbls-body{gap:0;}
.sbls-hint{font-size:var(--ds-fs-md);color:var(--ds-gray-600);margin:0 0 var(--ds-sp-2);word-break:keep-all;}
.sbls-row{display:grid;grid-template-columns:auto minmax(0,1fr) 112px 56px 150px;gap:var(--ds-sp-3);align-items:center;padding:var(--ds-sp-2) 0;border-bottom:var(--ds-line) solid var(--ds-gray-200);font-size:var(--ds-fs-base);}
.sbls-co{min-width:0;}
.sbls-co .cd-qnum{display:block;max-width:100%;font-weight:600;}
.sbls-meta{font-size:var(--ds-fs-sm);color:var(--ds-gray-400);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sbls-amt{text-align:right;font-weight:600;color:var(--ds-gray-900);font-variant-numeric:tabular-nums;}
.sbls-row .sp-status-badge{justify-self:end;}
.sbls-pick{display:flex;flex-direction:column;gap:4px;min-width:0;}
.sbls-pick .cd-in{height:32px;font-size:var(--ds-fs-md);padding:0 8px;}
.sbls-st{font-size:var(--ds-fs-xs);color:var(--ds-success);}
.sbls-st--busy{color:var(--ds-gray-400);}
.sbls-st--err{color:var(--ds-danger);}
.sbls-ro{font-size:var(--ds-fs-md);color:var(--ds-gray-400);text-align:right;}
.sbls-empty{padding:var(--ds-sp-4) 0;font-size:var(--ds-fs-md);color:var(--ds-gray-400);}
.sbls-foot{justify-content:flex-end;}
@media screen and (max-width:600px){
  .sbls-row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"g c b" "p p a";row-gap:6px;column-gap:var(--ds-sp-2);}
  .sbls-row .cd-qtag{grid-area:g;align-self:start;margin-top:3px;} .sbls-co{grid-area:c;} .sbls-row .sp-status-badge{grid-area:b;align-self:start;}
  .sbls-amt{grid-area:a;text-align:right;align-self:center;} .sbls-pick{grid-area:p;} .sbls-ro{grid-area:p;text-align:left;align-self:center;}
  .sbls-pick .cd-in{height:36px;font-size:var(--ds-fs-base);}
  .sbls-foot .cd-btn{flex:1;}
}
