/* ── index 페이지 ── */
#main { padding: 20px 16px; max-width: 1200px; margin: 0 auto; }

/* 통계 */
#stats { display: grid; grid-template-columns: repeat(5,1fr); gap: 12px; margin-bottom: 20px; }
.stat-card {
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 16px;
  display: flex; align-items: center; gap: 14px;
}
.stat-icon { font-size: 22px; width: 44px; height: 44px; border-radius: 10px;
  background: var(--bg3); display: flex; align-items: center; justify-content: center; }
.stat-num  { font-size: 24px; font-weight: 700; line-height: 1; }
.stat-lbl  { font-size: 12px; color: var(--text2); margin-top: 2px; }

/* 필터/검색 */
#filter-bar {
  display: flex; align-items: center; gap: 10px; margin-bottom: 16px; flex-wrap: wrap;
}
.search-wrap { position: relative; flex: 1; min-width: 200px; }
.search-wrap i { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--text2); }
.search-wrap input { padding-left: 32px; }
.ftabs { display: flex; gap: 4px; flex-wrap: wrap; }
.ftab {
  padding: 7px 14px; border-radius: var(--radius-s);
  font-size: 12px; font-weight: 600; color: var(--text2);
  border: 1px solid transparent; display: inline-flex; align-items: center; gap: 5px;
}
.ftab.active { background: var(--bg2); border-color: var(--border); color: var(--text); }
.ftab:hover:not(.active) { color: var(--text); }
/* 탭별 고유 색상 */
.ftab-completed.active { background: rgba(16,185,129,.12); border-color: rgba(16,185,129,.35); color: #34d399; }
.ftab-completed:hover:not(.active) { color: #34d399; }
.ftab-paused.active    { background: rgba(245,158,11,.12); border-color: rgba(245,158,11,.35); color: #fbbf24; }
.ftab-paused:hover:not(.active)    { color: #fbbf24; }
.ftab-dropout.active   { background: rgba(239,68,68,.12);  border-color: rgba(239,68,68,.35);  color: #f87171; }
.ftab-dropout:hover:not(.active)   { color: #f87171; }
.ftab-dropout2.active  { background: rgba(239,68,68,.08);  border-color: rgba(239,68,68,.25);  color: #fca5a5; }
.ftab-dropout2:hover:not(.active)  { color: #fca5a5; }
/* 탈락/보류/완료 탭일 때 카드 약간 흐리게 */
.filter-completed .proj-card,
.filter-paused    .proj-card,
.filter-dropout   .proj-card,
.filter-dropout2  .proj-card {
  opacity: .88;
}
/* 탈락 카드 — 왼쪽 색상바 위에 사선 패턴 */
.proj-card.status-dropout  .proj-color,
.proj-card.status-dropout2 .proj-color {
  background-image: repeating-linear-gradient(
    -45deg, transparent, transparent 3px, rgba(0,0,0,.3) 3px, rgba(0,0,0,.3) 5px
  ) !important;
}

/* 프로젝트 그리드 */
#project-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr)); gap: 14px; }

.proj-card {
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--radius); overflow: hidden; cursor: pointer;
  transition: transform .15s, border-color .15s;
}
.proj-card:hover { transform: translateY(-2px); border-color: var(--accent); }
.proj-card-top { height: 5px; }
.proj-card-body { padding: 14px; }
.proj-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 10px; }
.proj-name   { font-size: 15px; font-weight: 700; }
.proj-client { font-size: 12px; color: var(--text2); margin-top: 3px; }
.proj-actions { display: flex; gap: 4px; }
.proj-action { padding: 5px 8px; border-radius: 6px; font-size: 12px; color: var(--text2); background: var(--bg3); }
.proj-action:hover { color: var(--text); }

.proj-step-row {
  display: flex; align-items: center; gap: 8px;
  background: var(--bg3); border-radius: 8px; padding: 8px 10px; margin-bottom: 10px;
}
.proj-step-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.proj-step-lbl  { font-size: 11px; color: var(--text2); }
.proj-step-name { font-size: 13px; font-weight: 600; flex: 1; }
.proj-step-num  { font-size: 11px; color: var(--text2); font-family: monospace; }

.proj-progress-row { display: flex; justify-content: space-between; font-size: 11px; color: var(--text2); margin-bottom: 4px; }
.proj-pct { font-weight: 700; }
.mini-flow { display: flex; gap: 2px; margin-bottom: 10px; }
.mini-seg { flex: 1; height: 4px; border-radius: 2px; background: var(--bg3); }
.mini-seg.done    { background: var(--green); }
.mini-seg.current { background: var(--accent); }

.proj-card-foot {
  padding: 10px 14px; border-top: 1px solid var(--border);
  display: flex; justify-content: space-between; align-items: center;
  font-size: 12px; color: var(--text2);
}

/* 프로젝트 카드 (index.js 렌더 구조) */
.proj-top {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 14px 14px 10px;
}
.proj-color {
  width: 4px; border-radius: 2px; align-self: stretch; flex-shrink: 0; min-height: 36px;
}
.proj-info { flex: 1; min-width: 0; }
.proj-meta {
  display: flex; align-items: center; gap: 8px;
  padding: 0 14px 8px; flex-wrap: wrap;
}
.proj-step { font-size: 11px; color: var(--text2); display: flex; align-items: center; gap: 4px; }
.proj-step i { color: var(--accent); }
.proj-dates {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 14px; border-top: 1px solid var(--border);
  font-size: 11px; color: var(--text2); flex-wrap: wrap; gap: 4px;
}
.proj-amount { font-weight: 600; color: var(--text2); }

/* ── 프로젝트 카드 금액 행 (견적/계약/수금) ── */
.proj-amt-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 6px 14px 4px;
  border-top: 1px solid var(--border);
}
/* 금액 행이 있을 때 dates 의 border-top 제거 */
.proj-amt-row + .proj-dates { border-top: none; padding-top: 4px; }
.proj-amt-item {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; padding: 2px 8px; border-radius: 20px;
  white-space: nowrap;
}
.proj-amt-item i { font-size: 10px; }
.proj-amt-item strong { font-weight: 700; }
/* 견적 — 파란 계열 */
.proj-amt-quote {
  background: rgba(99,102,241,.10);
  color: #6366f1;
  border: 1px solid rgba(99,102,241,.25);
}
/* 계약 — 초록 계열 */
.proj-amt-contract {
  background: rgba(16,185,129,.10);
  color: #059669;
  border: 1px solid rgba(16,185,129,.25);
}
/* 수금 — 주황 계열 */
.proj-amt-collected {
  background: rgba(249,115,22,.10);
  color: #ea580c;
  border: 1px solid rgba(249,115,22,.25);
}

.proj-memo {
  padding: 6px 14px 10px;
  font-size: 11px; color: var(--text2); line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.proj-card .proj-actions { display: flex; gap: 4px; flex-shrink: 0; }

/* 빈 상태 */
#empty-state {
  text-align: center; padding: 60px 20px; color: var(--text2);
  display: none;
}
#empty-state i { font-size: 48px; margin-bottom: 16px; display: block; }
#empty-state p { font-size: 16px; font-weight: 600; margin-bottom: 8px; color: var(--text); }

/* ═══════════════════════════════════════════
   색상 피커 — 레이블 포함 동적 렌더링 방식
═══════════════════════════════════════════ */
.color-picker {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
}
.cp-item {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 6px 8px; border-radius: 8px;
  border: 2px solid transparent; cursor: pointer;
  transition: border-color .15s, background .15s;
  min-width: 60px;
}
.cp-item.active { border-color: var(--accent); background: rgba(99,102,241,.08); }
.cp-item:hover  { background: var(--bg3); }
.cp-item .cp-btn {
  width: 28px; height: 28px; border-radius: 50%;
  border: 3px solid transparent; transition: border .15s;
  flex-shrink: 0; cursor: pointer;
}
.cp-item.active .cp-btn { border-color: #fff; box-shadow: 0 0 0 2px var(--accent); }
.cp-label {
  font-size: 9px; color: var(--text2); text-align: center;
  line-height: 1.2; max-width: 64px; word-break: keep-all;
  pointer-events: none;
}
.cp-label-edit {
  pointer-events: auto; cursor: text; outline: none;
  border-bottom: 1px dashed var(--text2); min-width: 40px;
}
.cp-label-edit:focus { border-color: var(--accent); color: var(--text); }

/* 프로젝트 카드 고객유형 배지 */
.proj-type-badge {
  display: inline-flex; align-items: center;
  border-radius: 20px; padding: 2px 8px;
  font-size: 10px; font-weight: 600; white-space: nowrap;
}
.proj-color {
  width: 4px; border-radius: 2px; align-self: stretch;
  flex-shrink: 0; min-height: 36px;
  position: relative; overflow: visible;
}
.proj-color-label {
  display: none; /* 색상 바에 텍스트 숨김 — 메타 행에 배지로 표시 */
}

/* ═══════════════════════════════════════════
   담당자 행 — 카드 내 계약담당자 + 단계담당자
═══════════════════════════════════════════ */
.proj-owners-row {
  display: flex; align-items: center; gap: 6px;
  padding: 4px 14px 8px; flex-wrap: wrap;
}
.proj-owner-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(245,158,11,.12); color: #f59e0b;
  border: 1px solid rgba(245,158,11,.25);
  border-radius: 20px; padding: 2px 8px;
  font-size: 11px; font-weight: 600; white-space: nowrap;
}
.proj-owner-badge i { font-size: 10px; }
.proj-step-owner-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(99,102,241,.12); color: #818cf8;
  border: 1px solid rgba(99,102,241,.25);
  border-radius: 20px; padding: 2px 8px;
  font-size: 11px; font-weight: 600; white-space: nowrap;
}
.proj-step-owner-badge i { font-size: 10px; }

/* ── 현재단계명 인라인 텍스트 ── */
.proj-step-title-text {
  color: var(--text2); font-weight: 400; font-size: 10px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 140px; display: inline-block; vertical-align: middle;
}

/* ── 최종단계 부담당자 배지 ── */
.proj-last-sub-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(16,185,129,.10); color: #10b981;
  border: 1px solid rgba(16,185,129,.25);
  border-radius: 20px; padding: 2px 8px;
  font-size: 11px; font-weight: 600; white-space: nowrap;
}
.proj-last-sub-badge i { font-size: 10px; }
.proj-last-sub-step {
  font-size: 9px; font-weight: 400;
  color: rgba(16,185,129,.75); margin-left: 2px;
}

/* ════════════════════════════════════════════
   업무목록 블록 (프로젝트 카드 내 단계 tasks)
════════════════════════════════════════════ */
.ptask-block {
  margin: 0 14px 8px;
  background: var(--bg3);
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--border);
}
.ptask-header {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 10px 4px;
  flex-wrap: wrap;
}
.ptask-step-lbl {
  font-size: 11px; font-weight: 700; flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ptask-owner {
  font-size: 10px; color: #a5b4fc;
  background: rgba(99,102,241,.12);
  border: 1px solid rgba(99,102,241,.22);
  border-radius: 20px; padding: 1px 7px;
  white-space: nowrap; flex-shrink: 0;
}
.ptask-owner i { font-size: 9px; }
.ptask-pct {
  font-size: 10px; color: var(--text2); flex-shrink: 0;
}
.ptask-bar {
  height: 3px; background: var(--border); margin: 0 10px 6px;
  border-radius: 2px; overflow: hidden;
}
.ptask-bar-fill { height: 100%; border-radius: 2px; transition: width .3s; }
.ptask-list { padding: 0 8px 4px; }
.ptask-item {
  display: flex; align-items: flex-start; gap: 6px;
  padding: 3px 2px;
  border-bottom: 1px solid rgba(255,255,255,.03);
}
.ptask-item:last-child { border-bottom: none; }
.ptask-icon { flex-shrink: 0; font-size: 11px; margin-top: 1px; }
.ptask-text {
  font-size: 11px; color: var(--text); line-height: 1.4;
  flex: 1; min-width: 0;
}
.ptask-done .ptask-text {
  color: var(--text2); text-decoration: line-through;
}
.ptask-date {
  font-size: 9px; color: var(--text3, var(--text2));
  flex-shrink: 0; margin-top: 2px; white-space: nowrap;
}
.ptask-more {
  font-size: 10px; color: var(--accent);
  padding: 4px 10px 6px;
  cursor: pointer; opacity: .8;
}
.ptask-more:hover { opacity: 1; }

/* ── 담당자 현황 버튼 ── */
.btn-owner-report {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: var(--radius-s);
  font-size: 12px; font-weight: 600;
  background: rgba(245,158,11,.15); color: #f59e0b;
  border: 1px solid rgba(245,158,11,.3);
  white-space: nowrap; flex-shrink: 0;
  transition: background .15s;
}
.btn-owner-report:hover { background: rgba(245,158,11,.25); }

/* ═══════════════════════════════════════════
   계약담당자별 현황 모달
═══════════════════════════════════════════ */
.or-modal {
  max-width: 720px; width: 95vw;
  max-height: 88vh; display: flex; flex-direction: column;
  padding: 0; overflow: hidden;
}
.or-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 18px 20px 14px; border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.or-title {
  font-size: 16px; font-weight: 700; display: flex; align-items: center; gap: 8px;
}
.or-title i { color: #f59e0b; }

/* 합계 요약 바 */
.or-grand {
  display: flex; gap: 20px; flex-wrap: wrap;
  padding: 12px 20px; background: var(--bg3);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.or-grand-item {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text2);
}
.or-grand-item i { color: var(--accent); font-size: 11px; }
.or-grand-item strong { font-size: 14px; font-weight: 700; color: var(--text); }
.or-green { color: #10b981 !important; }
.or-pct   { color: var(--text); }
.or-hi    { color: #10b981 !important; }
.or-mid   { color: #f59e0b !important; }

/* 스크롤 영역 */
.or-scroll {
  flex: 1; overflow-y: auto; overflow-x: auto;
}

/* 메인 테이블 */
.or-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.or-table thead th {
  position: sticky; top: 0; z-index: 1;
  background: var(--bg3); color: var(--text2);
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
  padding: 9px 14px; border-bottom: 1px solid var(--border);
}
.or-th-owner { text-align: left; min-width: 130px; }
.or-th-num   { text-align: right; min-width: 90px; }

/* 담당자 행 */
.or-owner-row {
  cursor: pointer;
  background: var(--bg2);
  transition: background .12s;
}
.or-owner-row:hover { background: var(--bg3); }
.or-owner-row td {
  padding: 11px 14px; border-bottom: 1px solid var(--border);
}
.or-owner-name {
  font-size: 13px; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 8px;
}
.or-owner-name i:first-child { color: #f59e0b; font-size: 12px; }
.or-chevron {
  font-size: 10px; color: var(--text2);
  transition: transform .2s; margin-left: auto;
}
.or-owner-block.expanded .or-chevron { transform: rotate(180deg); }
.or-cnt      { color: var(--text2); font-size: 12px; text-align: right; }
.or-contract { font-weight: 700; color: var(--text); text-align: right; }
.or-collect-val { font-weight: 700; color: #10b981; text-align: right; }
.or-num { text-align: right; }

/* 수금률 바 */
.or-ratio-wrap {
  background: var(--bg3); border-radius: 99px;
  height: 5px; width: 60px; overflow: hidden;
  display: inline-block; vertical-align: middle; margin-right: 6px;
}
.or-ratio-bar {
  height: 100%; background: #10b981; border-radius: 99px;
  transition: width .3s;
}
.or-ratio-pct {
  font-size: 11px; font-weight: 700; color: var(--text2);
  vertical-align: middle;
}

/* 상세 행 (접힘/펼침) */
.or-detail-row { display: none; }
.or-owner-block.expanded .or-detail-row { display: table-row; }
.or-detail-row td {
  padding: 0; background: rgba(15,23,42,.4);
  border-bottom: 2px solid var(--border);
}

/* 프로젝트 서브 테이블 */
.or-proj-table {
  width: 100%; border-collapse: collapse; font-size: 12px;
}
.or-proj-row td {
  padding: 8px 14px 8px 28px; border-bottom: 1px solid rgba(255,255,255,.04);
}
.or-proj-row:last-child td { border-bottom: none; }
/* 행 전체 클릭 hover */
.or-proj-clickrow:hover td { background: rgba(99,102,241,.08); }
.or-proj-name a {
  color: var(--accent); cursor: pointer; text-decoration: none;
  font-weight: 600;
}
.or-proj-name a:hover { text-decoration: underline; }
.or-collected { color: #10b981; font-weight: 600; }

/* 상태 배지 (소형) */
.or-badge {
  display: inline-block; font-size: 10px; font-weight: 700;
  padding: 1px 6px; border-radius: 20px;
}
/* 상태별 배지 색상 */
.or-badge-active    { background: rgba(99,102,241,.2);  color: #818cf8; }
.or-badge-completed { background: rgba(16,185,129,.2);  color: #34d399; }
.or-badge-paused    { background: rgba(245,158,11,.2);  color: #fbbf24; }
.or-badge-dropout   { background: rgba(239,68,68,.2);   color: #f87171; }
.or-badge-dropout2  { background: rgba(239,68,68,.12);  color: #fca5a5; }

/* ═══════════════════════════════════════════
   기간 필터 바
═══════════════════════════════════════════ */
.or-period-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 16px 10px;
  background: var(--bg3);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

/* 단위 버튼 그룹 */
.or-unit-group {
  display: flex; gap: 0; border: 1px solid var(--border);
  border-radius: var(--radius-s); overflow: hidden; flex-shrink: 0;
}
.or-unit-btn {
  padding: 6px 12px; font-size: 11px; font-weight: 600;
  color: var(--text2); background: var(--bg2);
  border: none; border-right: 1px solid var(--border);
  cursor: pointer; transition: background .12s, color .12s;
  display: flex; align-items: center; gap: 4px; white-space: nowrap;
}
.or-unit-btn:last-child { border-right: none; }
.or-unit-btn:hover { background: var(--bg3); color: var(--text); }
.or-unit-btn.or-unit-active {
  background: var(--accent); color: #fff;
}

/* 날짜 입력 */
.or-date-range {
  display: flex; align-items: center; gap: 6px; flex-shrink: 0;
}
.or-date-input {
  padding: 5px 8px; font-size: 12px;
  background: var(--bg2); color: var(--text);
  border: 1px solid var(--border); border-radius: var(--radius-s);
  outline: none; cursor: pointer;
  transition: border-color .15s;
}
.or-date-input:focus { border-color: var(--accent); }
.or-date-sep { font-size: 11px; color: var(--text2); flex-shrink: 0; }

/* 기간 레이블 */
.or-period-label {
  font-size: 11px; font-weight: 700; color: var(--accent);
  margin-left: auto; white-space: nowrap;
  background: rgba(99,102,241,.12);
  padding: 3px 8px; border-radius: 20px;
  border: 1px solid rgba(99,102,241,.2);
}

/* 프로젝트 날짜 보조 텍스트 */
.or-proj-date {
  display: block; font-size: 10px; color: var(--text2);
  margin-top: 1px; font-weight: 400;
}

/* ── 탭 바 ── */
.or-tabs {
  display: flex; gap: 0;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.or-tab {
  flex: 1; padding: 11px 16px; font-size: 13px; font-weight: 600;
  color: var(--text2); background: transparent;
  border: none; border-bottom: 2px solid transparent;
  cursor: pointer; transition: color .15s, border-color .15s;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.or-tab:hover { color: var(--text); }
.or-tab.or-tab-active {
  color: var(--accent); border-bottom-color: var(--accent);
  background: rgba(99,102,241,.06);
}

/* ── 수금 단계 배지 ── */
.or-stage-badge {
  display: inline-block; font-size: 9px; font-weight: 700;
  padding: 1px 5px; border-radius: 4px;
  margin-right: 3px; vertical-align: middle;
  letter-spacing: .02em;
}
.or-stage-done    { background: rgba(16,185,129,.18); color: #10b981; border: 1px solid rgba(16,185,129,.3); }
.or-stage-mid     { background: rgba(99,102,241,.18); color: #818cf8; border: 1px solid rgba(99,102,241,.3); }
.or-stage-partial { background: rgba(245,158,11,.18);  color: #f59e0b; border: 1px solid rgba(245,158,11,.3); }
.or-stage-none    { background: rgba(100,116,139,.15); color: #64748b; border: 1px solid rgba(100,116,139,.2); }

/* ── 프로젝트 수금률 소수 텍스트 ── */
.or-proj-ratio { font-size: 10px; color: var(--text2); margin-left: 2px; }

/* ── 견적 뷰 수주율 바 (보라색) ── */
.or-ratio-bar-quote { background: #6366f1; }

/* ── 합계 항목 미수금 색상 ── */
.or-yellow { color: #f59e0b !important; }

/* 모바일 */
@media (max-width: 600px) {
  #stats { grid-template-columns: repeat(2,1fr); }
  #project-grid { grid-template-columns: 1fr; }
  #filter-bar { flex-wrap: wrap; }
  .btn-owner-report .btn-text { display: none; }
  .or-modal { max-width: 100vw; width: 100vw; max-height: 95vh; border-radius: 14px 14px 0 0; }
  .or-ratio-wrap { width: 40px; }
  .or-tab { font-size: 11px; padding: 9px 8px; }
  .or-period-bar { gap: 6px; padding: 8px 12px; }
  .or-unit-btn { padding: 5px 8px; font-size: 10px; }
  .or-date-input { font-size: 11px; padding: 4px 6px; }
  .or-period-label { font-size: 10px; }
  .btn-sort .sort-label-text { display: none; }
}

/* ═══════════════════════════════════════════
   정렬 드롭다운
═══════════════════════════════════════════ */
.sort-wrap {
  position: relative;
  flex-shrink: 0;
}

/* 정렬 버튼 */
.btn-sort {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; border-radius: var(--radius-s);
  font-size: 12px; font-weight: 600;
  background: var(--bg2); color: var(--text2);
  border: 1px solid var(--border);
  white-space: nowrap; cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  font-family: inherit;
}
.btn-sort:hover {
  background: var(--bg3); color: var(--text);
  border-color: var(--accent);
}

/* 드롭다운 패널 */
.sort-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 500;
  min-width: 170px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.35);
  padding: 4px;
  flex-direction: column;
}
.sort-dropdown.open { display: flex; }

/* 드롭다운 옵션 */
.sort-opt {
  display: flex; align-items: center; gap: 8px;
  padding: 9px 12px; border-radius: 7px;
  font-size: 13px; font-weight: 500;
  color: var(--text2); background: none; border: none;
  cursor: pointer; font-family: inherit;
  text-align: left; width: 100%;
  transition: background .1s, color .1s;
}
.sort-opt:hover {
  background: var(--bg3); color: var(--text);
}
.sort-opt.active {
  background: rgba(99,102,241,.15);
  color: var(--accent);
  font-weight: 700;
}
.sort-opt i {
  width: 14px; text-align: center;
  font-size: 12px; flex-shrink: 0;
}

/* ═══════════════════════════════════════════
   담당자별 정렬 — 그룹 헤더
═══════════════════════════════════════════ */
.sort-group-header {
  grid-column: 1 / -1;   /* 그리드 전체 너비 */
  display: flex; align-items: center; gap: 8px;
  padding: 10px 4px 6px;
  font-size: 13px; font-weight: 700;
  color: var(--text2);
  border-bottom: 1px solid var(--border);
  margin-bottom: 2px;
}
.sort-group-header i {
  color: #f59e0b; font-size: 13px;
}
.sort-group-cnt {
  margin-left: auto;
  font-size: 11px; font-weight: 600;
  color: var(--text3);
  background: var(--bg3);
  padding: 2px 8px; border-radius: 99px;
}
