/* 06-overrides.css — 61~81차 누적 덮어쓰기

   90차 정리 — 죽은 코드만 도려냈다. **살아 있는 선언은 한 줄도 자리를 옮기지 않았다.**
   ① 코드 어디에도 이름이 없는 선택자의 규칙 13개
   ② 같은 선택자가 뒤에서 같은 속성을 다시 선언해 이미 죽어 있던 선언 246개
   ③ 그래서 속이 빈 규칙 59개
   81,102자 → 69,932자. 화면 여덟 곳의 요소 11만 3천 개를 정리 전후로 비교해 차이 0 을 확인했다.

   순서를 바꾸지 않은 이유: 이 파일은 '나중에 쓴 것이 이긴다'에 기대어 쌓였다.
   화면별로 모아 옮기면 그 승패가 뒤집힌다. 찾기 쉬우라고 아래 목차를 둔다.

   ── 목차 (줄 번호는 정리 직후 기준) ──
     678  69차 — 전환 속도 접기 / 월별매출 접기 삭제
    1294  89차 예외② — 0%(빨강) → 100%(초록). 등급마다 같은 계열 안에서 옅게 흐른다.
*/
/* ============================================================
   61차 — 좌측 패널 통합 + 블루 디자인
   기존 규칙은 그대로 두고 이 블록만 덮어쓴다. 되돌리려면 이 블록만 지우면 된다.
   ============================================================ */
:root{
  --n-line:#e4e9f2;
  --n-sh1:0 1px 2px rgba(22,34,60,.04), 0 2px 10px rgba(22,34,60,.05);
  --n-sh2:0 2px 4px rgba(22,34,60,.05), 0 12px 30px rgba(22,34,60,.08);
  --n-shb:0 6px 18px rgba(76,100,166,.28);
  --n-ease:cubic-bezier(.22,1,.36,1);
}
body{ background:#e4e9f2; }

/* --- 레이아웃: 사이드바가 위아래를 관통한다 --- */
.app{
  grid-template-rows:auto 1fr;
  grid-template-areas:"sidebar header" "sidebar main";
  background:var(--n-line);
}
/* 헤더 · 사이드바 사이 구분선 제거 — 한 덩어리로 보이게 */
header{
  background:transparent; border-bottom:0;
}
main{ background:transparent; }

aside{
  background:transparent; border-right:0;
  display:flex; flex-direction:column; gap:0;
}
.side-grp{ font-weight:800; color:#9aa6bd; letter-spacing:.13em;
}

/* --- 탭 → 세로 메뉴 --- */
.top-tabs{
  grid-area:auto; background:transparent; border-bottom:0; padding:0;
  display:flex; flex-direction:column; gap:var(--sp-1);
}
.tab-btn{
  position:relative; display:flex; align-items:center; gap:var(--sp-3); width:100%;
  padding:9px 12px; border-radius:var(--radius-lg); border:0; background:transparent; cursor:pointer;
  font-family:inherit; font-size:var(--fs-4); font-weight:700; color:var(--n-ink2); text-align:left;
  transition:all .28s var(--n-ease);
}
.tab-btn::after{ display:none; }
.tab-btn:hover{ background:rgba(255,255,255,.66); color:#212529; }
.tab-btn.active{ background:#fff; color:var(--primary-press); box-shadow:0 2px 10px rgba(22,34,60,.10); }
.tab-btn.active::before{
  content:''; position:absolute; left:0; top:50%; margin-top:-9px; width:3px; height:18px;
  border-radius:0 var(--radius-xs) var(--radius-xs) 0; background:var(--primary);
}

/* --- 액션 버튼 --- */
.upload-area{ display:flex; flex-direction:column; align-items:stretch; gap:var(--sp-3); }
.upload-area .btn.btn-hd, .upload-area .download-dropdown{ width:100%; }
.btn.btn-hd{
  border:1px solid rgba(22,34,60,.08); background:rgba(255,255,255,.74); color:var(--text);
  transition:transform .28s var(--n-ease), box-shadow .28s var(--n-ease), background .28s var(--n-ease);
}
/* 색이 없는 버튼에만 흰 배경 호버 — 그라데이션 버튼을 덮어쓰지 않도록 :not() 으로 좁힌다 */
.btn.btn-hd:not(.btn-sales):not(.btn-pdf):hover{
  background:#fff; color:#212529; transform:translateY(-1.5px); box-shadow:var(--n-sh1);
}
.btn.btn-hd.btn-pdf{
  border:0; color:#fff; background:var(--primary); background-size:190% 190%; background-position:0% 50%;
  box-shadow:var(--n-shb);
  transition:background-position .55s var(--n-ease), transform .28s var(--n-ease), box-shadow .28s var(--n-ease);
}
.btn.btn-hd.btn-pdf:hover{
  background:var(--primary); background-size:190% 190%; background-position:100% 50%;
  color:#fff; transform:translateY(-2px); box-shadow:0 10px 24px rgba(76,100,166,.40);
}
.btn.btn-hd.btn-sales{
  border:0; color:#fff; background:#f7941e;
  box-shadow:0 6px 16px rgba(247,148,30,.28);
}
.btn.btn-hd.btn-sales:hover{
  background:#fbb040; color:#fff;
  transform:translateY(-2px); box-shadow:0 10px 24px rgba(247,148,30,.38);
}
.download-menu{ top:calc(100% + 5px); }

/* --- 조회 조건 트리 --- */
.filter-block.tree{ margin-bottom:2px; }
.tree-hd{
  display:flex; align-items:center; gap:var(--sp-3); width:100%; border:0; background:transparent; cursor:pointer; border-radius:var(--radius-md);
  font-family:inherit; font-weight:700; color:var(--n-ink2); text-align:left;
  transition:background .28s var(--n-ease), color .28s var(--n-ease);
}
.tree-hd:hover{ background:rgba(255,255,255,.66); color:#212529; }
.tree-hd .car{ width:13px; height:13px; flex:none; color:var(--n-ink3); transition:transform .28s var(--n-ease); }
.tree.open .tree-hd .car{ transform:rotate(90deg); }
.tree-hd .sp{ flex:1; }
.tree-hd .cur{
  font-size:var(--fs-1); font-weight:800; color:var(--primary-press); background:#eef2f9;
  padding:3px 7px; border-radius:var(--radius-sm); max-width:92px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.tree-body{ max-height:0; overflow:hidden; opacity:0;
  transition:max-height .38s var(--n-ease), opacity .28s var(--n-ease); }
.tree.open .tree-body{ max-height:520px; opacity:1; }

/* 알약 — 전체는 한 줄, 나머지는 작게 */
aside .pill-grid, aside .pill-group{ flex-wrap:wrap; }
aside .pill{ cursor:pointer; flex:none !important;
  border:1px solid rgba(22,34,60,.09); background:rgba(255,255,255,.74);
  font-family:inherit; font-weight:700; color:var(--n-ink2);
  transition:all .22s var(--n-ease);
}
aside .pill:not(.active):hover{
  background:#fff; color:#212529; transform:translateY(-1.5px); box-shadow:0 2px 8px rgba(22,34,60,.10);
}
aside .pill.active{
  border-color:transparent; color:#fff;
  background:var(--primary); background-size:180% 180%; background-position:0% 50%;
  box-shadow:var(--n-shb);
}
aside .pill.active:hover{
  background:var(--primary); background-size:180% 180%; background-position:100% 50%; color:#fff;
}
.gubun-lock-note{ flex-basis:100%; }
.reset-link{ display:inline-block; color:var(--primary); }
.side-foot .user-wrap{ display:block !important; width:100%; }
.side-foot .user-chip{
  width:100%; height:auto; padding:9px 11px; border-radius:var(--radius-lg); justify-content:flex-start;
  border:1px solid rgba(22,34,60,.08); background:rgba(255,255,255,.74);
}
.side-foot .user-chip:hover{ background:#fff; color:#212529; }
.side-foot .user-menu{ left:0; right:auto; bottom:calc(100% + 6px); top:auto; }

/* --- 본문 카드 --- */
main .card, .weekly-card, .checklist-card, .stats-card{
  background:#fff; border:0; box-shadow:var(--n-sh1);
  transition:box-shadow .28s var(--n-ease);
}
main .card:hover, .stats-card:hover{ box-shadow:var(--n-sh2); }

/* PDF 캡처 시에는 사이드바를 숨긴 채 본문만 인쇄한다(기존 규칙 유지) */
.app.pdf-export-mode{ background:#fff; }

/* ============================================================
   62차 — 로그인 리뉴얼 / 헤더 우상단 액션 / 알약 정렬 / 본문 테마
   ============================================================ */

/* ---------- ① 로그인 · 회원가입 ----------
   107차에 여기 있던 로그인 덮어쓰기를 전부 걷어냈다. 화면을 덮는 그라데이션과
   backdrop-filter 가 글자를 칠 때마다 다시 계산돼 버벅였기 때문이다.
   최종 모양은 `styles/02-auth.css` 에 있고, 포털 본화면과 같은 납작한 결(토큰 · 1px 선 · 옅은 그림자)을 쓴다.
   ---------------------------------------- */

/* ---------- ④ 헤더 우상단 액션 (3버튼 동일 크기) ---------- */
header{
  flex-direction:row; align-items:center; justify-content:space-between;
  padding:16px 24px 8px; gap:var(--sp-5); flex-wrap:nowrap;
}
.head-actions{ display:flex; align-items:center; gap:var(--sp-3); flex:none; }
.head-actions .upload-area{ flex-direction:row; align-items:center; gap:var(--sp-3); width:auto; }
.head-actions .upload-area .btn.btn-hd,
.head-actions .upload-area .download-dropdown{ width:auto; }
.btn.btn-hd{
  width:122px; min-width:122px; height:38px; padding:0; border-radius:var(--radius-lg);
  justify-content:center; text-align:center; font-size:var(--fs-3); font-weight:700;
}
/* ⑥ File Upload 도 같은 결로 — 연한 블루 틴트 */
.btn.btn-hd#uploadBtn{
  box-shadow:none;
}
.btn.btn-hd#uploadBtn:hover{ transform:translateY(-2px); box-shadow:var(--n-sh1);
}
.download-menu{ left:auto; right:0; }

/* ---------- ⑤ 사용자 : 원형 아바타 ---------- */
.user-wrap{ display:inline-block !important; }
.user-chip #userChipName,
.user-chip #userChipRole{ display:none; }
.user-menu{ left:auto; right:0; top:calc(100% + 8px); bottom:auto; }
.head-actions #nasBox{ margin-left:2px; }

/* ---------- ⑬ 화면(탭) 영역 — 라운드 퍼플블루 패널 ---------- */
#sideTabs{
  border-radius:var(--radius-xl); padding:6px;
}

/* ---------- ⑧~⑫ 알약 격자 정렬 ---------- */
aside .pill-grid, aside .pill-group{ display:grid !important; }
#yearGroup{ grid-template-columns:repeat(3,1fr); }
#monthGroup{ grid-template-columns:repeat(3,1fr); }
#gubunGroup{ grid-template-columns:repeat(2,1fr); }
#repGroup{ grid-template-columns:repeat(2,1fr); }
aside .pill{
  width:auto; min-width:0; text-align:center;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
aside .pill[data-value="all"]{
  grid-column:1 / -1 !important; flex-basis:auto !important; width:auto;
}
.gubun-lock-note{ grid-column:1 / -1; margin-bottom:6px; }

/* ---------- ⑭ 본문 테마 ---------- */
main{ padding:10px 24px 20px; }
.card, .weekly-card, .checklist-card, .stats-card{
  background:#fff; border:0 !important; border-radius:var(--radius-xl); box-shadow:var(--n-sh1);
}

/* 표 */
main table th, .stats-table-wrap table th, .rpt-table th{
  background:#eef2f9 !important; color:var(--n-ink3) !important;
  border-bottom:1px solid var(--n-line) !important; font-weight:800;
}
main table td, .stats-table-wrap table td{ border-bottom:1px solid #e4e9f2; }
main tbody tr{ transition:background .22s var(--n-ease); }
.total-row td{ background:#eef2f9 !important; font-weight:800; }

/* KPI 스트립 · 수치 카드 */
.strip, .kpi, .kpi-card{ border-radius:var(--radius-xl); border:0; box-shadow:var(--n-sh1); background:#fff; }
.strip:hover, .kpi:hover{ box-shadow:var(--n-sh2); transform:translateY(-3px); }
.strip, .kpi{ transition:transform .28s var(--n-ease), box-shadow .28s var(--n-ease); }
.num, .big{ letter-spacing:-.6px; }

/* 본문 안 일반 버튼 */
main .btn, .pipeline-tab-btn, .adm-b{
  border-radius:var(--radius-md); border:1px solid rgba(22,34,60,.09); background:#fff; color:var(--text);
  transition:all .22s var(--n-ease);
}
main .btn:hover, .pipeline-tab-btn:hover, .adm-b:hover{
  background:#fff; color:#212529; transform:translateY(-1.5px); box-shadow:var(--n-sh1);
}

/* 스크롤 막대 — 96차에 03-components.css 한 곳으로 모았다.
   여기서 굵기와 색을 다시 잡던 규칙을 지웠다. 남겨두면 '굴릴 때만 보이기' 가 깨진다. */

/* 모달 */
.report-modal-box, .adm-box, .upload-modal-box{ border-radius:var(--radius-xl); box-shadow:0 22px 60px rgba(22,34,60,.22); }

/* ============================================================
   63차 — 사이드바 압축 / 로그인 v1 동일화 / 본문 테마 심화
   ============================================================ */
:root{
  /* ⑫ 리얼 블랙 대신 아주 진한 그레이 — 72차에 #212529 로 통일 */ --n-ink2:#57627a; --n-ink3:#8e99ae;
}

/* ---------- ⑬⑭ 로그인 ----------
   107차 — 위 ① 과 같은 이유로 걷어냈다. 최종 모양은 `styles/02-auth.css` 에 있다.
   ---------------------------------------- */

/* ---------- ⑦ FHD 에서 사이드바 스크롤이 생기지 않도록 압축 ---------- */
.app{ grid-template-columns:238px 1fr; }
aside{ padding:16px 11px 12px; overflow-y:auto; }
.side-grp{ font-size:9.5px; margin:12px 0 5px; padding:0 10px; }
.side-grp:first-of-type{ margin-top:2px; }
.tree-hd{ padding:7px 10px; font-size:var(--fs-2); }
.tree-inner{ padding:2px 3px 8px 20px; }
aside .pill-grid, aside .pill-group{ gap:var(--sp-2); }
aside .pill{ padding:6px 4px; font-size:var(--fs-1); border-radius:var(--radius-md); }
aside .pill[data-value="all"]{ padding:6px 4px; font-size:var(--fs-2); }
.reset-link{ margin:8px 0 0 10px; font-size:var(--fs-1); }

/* ---------- ②  화면 영역 배경 채도 상향 ---------- */
#sideTabs{
  background:#d5ddee;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}

/* ---------- ③④ 알약 배열 ---------- */
/* 연도 : 개수가 2개든 3개든 좌우를 꽉 채운다 */
#yearGroup{ display:flex !important; flex-wrap:wrap; }
#yearGroup .pill{ flex:1 1 0 !important; min-width:56px; }

/* ---------- ⑪⑫ 글자색 : 리얼 블랙 대신 진한 그레이 ---------- */
.btn.btn-hd:not(.btn-sales):not(.btn-pdf):hover,
.tab-btn:hover, .tree-hd:hover,
aside .pill:not(.active):hover,
main .btn:hover, .pipeline-tab-btn:hover, .adm-b:hover,
.user-chip:hover{ color:var(--text); }
.btn.btn-hd#uploadBtn:hover{ color:var(--text); }
/* ⑪ File Upload 글자 굵기·크기를 나머지와 완전히 동일하게 */
.btn.btn-hd, .btn.btn-hd#uploadBtn{
  font-size:var(--fs-3); font-weight:700; letter-spacing:-.1px; font-family:inherit;
}
.btn.btn-hd#uploadBtn:hover{
  background:rgba(255,255,255,.95);
}
.head-actions .btn.btn-hd.btn-sales,
.head-actions .btn.btn-hd.btn-pdf{ border-color:rgba(255,255,255,.34); }

/* ---------- ⑨ 좌우 카드 높이 맞추기 ---------- */
.dash-kpi, .dash-mid, .dash-bottom, .weekly-top, .weekly-bottom, .stats-grid{ align-items:stretch; }
.dash-kpi > *, .dash-mid > *, .dash-bottom > *,
.weekly-top > *, .weekly-bottom > *{ min-height:0; }
main .card, .weekly-card, .checklist-card, .stats-card{
  display:flex; flex-direction:column; height:100%;
}
main .card > .scroll-y, .weekly-card > .scroll-y, .stats-card .stats-body{ flex:1; min-height:0; }

/* ---------- ⑩ 본문 : 시안 v1 결로 ---------- */
main .card, .weekly-card, .checklist-card, .stats-card{ border-radius:var(--radius-xl); padding:0; }
.card-title, .title-with-icon{
  font-size:var(--fs-4); font-weight:800; color:var(--text); letter-spacing:-.2px;
}
.section-icon{ color:#6b82be; }

/* 표 */
main table{ border-collapse:collapse; font-size:var(--fs-3); }
main table th{
  background:#eef2f9 !important; color:var(--n-ink3) !important; font-size:var(--fs-1); font-weight:800;
  padding:9px 12px !important; border-bottom:1px solid #e4e9f2 !important; border-top:0 !important;
}
main table td{
  padding:10px 12px !important; border-bottom:1px solid #e4e9f2 !important; color:var(--text);
}
main tbody tr:last-child td{ border-bottom:0 !important; }
main tbody tr:hover{ background:#eef2f9; }
main table .num{ font-variant-numeric:tabular-nums; font-weight:800; }
.sortable:hover{ color:#6b82be; }

/* 상태 배지 */
main .pill, main .badge, .st, .stage-badge{
  border-radius:var(--radius-full); font-size:var(--fs-1); font-weight:800; padding:4px 10px;
}

/* KPI 스트립 */
.strip{ border-radius:var(--radius-xl); padding:16px 18px; }
.strip .big, .big{ letter-spacing:-1px; font-weight:800; color:var(--text); }
.strip .pct, .pct{ font-weight:800; }

/* 빈 상태 · 안내문 */
.no-rows, .note, .empty-state p{ color:var(--n-ink3); }
.empty-state h2{ color:var(--text); }

/* ============================================================
   64차 — 표 · 탭 (첨부 레퍼런스 스타일)
     · 표  : 여백 넉넉한 행, 아주 옅은 구분선, 알약 상태 배지, 행 호버
     · 탭  : 카드 상단에 붙는 세그먼트. 활성 탭만 흰색으로 떠오름 + 건수 칩
   ============================================================ */

/* ---------- 탭 (파이프라인 · 통계 등 카드 안 탭) ---------- */

/* ---------- 표 ---------- */
main table, .stats-table-wrap table, .rpt-table{
  width:100%; border-collapse:separate; border-spacing:0; font-size:var(--fs-3);
}
main table thead th{
  position:sticky; top:0; z-index:2; letter-spacing:.01em; text-align:left; white-space:nowrap;
  border-top:0 !important; border-left:0 !important; border-right:0 !important;
}
main table tbody td{ color:#212529; vertical-align:middle;
  border:0 !important; border-bottom:1px solid #eef2f9 !important;
}
main table tbody tr{ transition:background .18s var(--n-ease); }
main table td.num, main table th.num{ text-align:right; font-variant-numeric:tabular-nums; }
main table td.num{ font-weight:800; }
/* 첫 열은 이름·코드가 오는 자리 — 살짝 강조 */
main table tbody td:first-child{ font-weight:700; }
main .total-row td{ font-weight:800; color:#212529;
  border-top:1px solid #e4e9f2 !important; border-bottom:0 !important;
}
main table .no-rows td{ text-align:center; color:#8e99ae; font-weight:700; }

/* 정렬 가능한 헤더 */
main table th.sortable{ cursor:pointer; user-select:none; }
main table th.sortable:hover{ color:#6b82be !important; }
main table th.sorted-asc, main table th.sorted-desc{ color:#6b82be !important; }

/* 상태 배지 — 옅은 배경 + 점 + 진한 글자 */
main td .pill, main td .badge, main td .stage-badge, main td .st,
main td [class*="stage-"], main td [class*="st-"]{
  display:inline-flex; align-items:center; gap:var(--sp-2);
  padding:4px 10px 4px 8px; border-radius:var(--radius-full);
  font-size:var(--fs-1); font-weight:800; line-height:1.6; white-space:nowrap;
}
main td .pill::before, main td .badge::before, main td .stage-badge::before{
  content:''; width:5px; height:5px; border-radius:50%; background:currentColor; flex:none; opacity:.85;
}

/* 표를 감싸는 스크롤 영역 */
main .scroll-y, .stats-table-wrap, .rep-table-wrap, .table-scroll{ border-radius:0 0 var(--radius-xl) var(--radius-xl); }

/* ============================================================
   65차 — 표 밀도 / 탭 통일 / 차트 / 로그인 성능
   ============================================================ */

/* ---------- ⑬ 로그인 성능 ----------
   65차에 오로라 애니메이션만 껐지만 backdrop-filter 는 남아 글자를 칠 때마다
   다시 계산돼 여전히 버벅였다. 107차에 레이어를 통째로 걷어내며 이 블록도 없앴다(위 ①).
   ---------------------------------------- */

/* ---------- ③ 헤더 버튼 : 글래스 제거, 사이드바 알약과 같은 결 ---------- */
.head-actions .btn.btn-hd{
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
  border:1px solid rgba(22,34,60,.09);
  background:rgba(255,255,255,.78);
  box-shadow:none;
  color:var(--text);
}
.btn.btn-hd#uploadBtn{
  background:rgba(255,255,255,.78); border:1px solid rgba(22,34,60,.09); color:var(--text);
}
.head-actions .btn.btn-hd:not(.btn-sales):not(.btn-pdf):hover,
.btn.btn-hd#uploadBtn:hover{
  background:#fff; color:var(--text); transform:translateY(-1.5px);
  box-shadow:0 2px 8px rgba(22,34,60,.10);
}
.head-actions .btn.btn-hd.btn-pdf{
  border:0; color:#fff; background:var(--primary); box-shadow:var(--n-shb);
}
.head-actions .btn.btn-hd.btn-sales{
  border:0; color:#fff; background:#f7941e;
  box-shadow:0 6px 16px rgba(247,148,30,.28);
}

/* ---------- ⑥ 헤더 제목 아이콘 ---------- */
header h1{ display:flex; align-items:center; gap:var(--sp-4); }

/* ---------- ① 좌우 섹션 상단 정렬 ---------- */
main{ padding-top:16px; }
header{ padding-top:14px; padding-bottom:6px; }

/* ---------- ② 주 : 한 줄에 하나씩 ---------- */
#weekGroup{ grid-template-columns:1fr !important; }
main table tbody td{ padding:7px 12px !important; line-height:1.45; }
main table td:first-child, main table th:first-child{ padding-left:14px !important; }
main table td:last-child,  main table th:last-child{ padding-right:14px !important; }
main td .pill, main td .badge, main td .stage-badge, main td .st{
  padding:3px 9px 3px 7px; font-size:10px;
}
main table .no-rows td{ padding:18px 12px !important; }
table.cross-table tr.row-highlight td:first-child{ border-left:3px solid #6b82be !important; color:#6b82be; font-weight:800;
}
/* 매출이익 행은 강조 없이 평범하게 */
table.cross-table tr.row-highlight.row-profit td:first-child{
  background:transparent !important; border-left:3px solid transparent !important;
  color:var(--text); font-weight:700;
}
.row-toggle-hint, .prevyear-toggle{ color:#6b82be; }

/* ---------- ⑩⑪⑫ 카드 제목 : 알약 배경 제거 → 탭 형태로 통일 ---------- */
.card h3 .title-with-icon{
  padding:0 !important; border-radius:0 !important; background:transparent !important;
  color:var(--text) !important; font-size:var(--fs-4); font-weight:800;
  overflow:visible; white-space:nowrap;
}
.card h3 .title-with-icon .section-icon{ color:#6b82be !important; }
.card h3{
  display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap;
  padding:14px 18px 10px; margin:0; font-size:var(--fs-4);
}
/* ⑫ 건수는 제목 바로 옆에 칩으로 */
.card h3 .count, .card h3 .cnt, .title-with-icon .count{
  display:inline-block; min-width:20px; padding:2px 8px; border-radius:var(--radius-full);
  background:#e4e9f2; color:#6b82be; font-size:var(--fs-1); font-weight:800; line-height:1.5;
  margin-left:2px; overflow:visible;
}
/* ⑩ 미선택 탭은 회색, 선택 탭만 강조 */
.pipeline-tab-btn:hover{ transform:none; box-shadow:none; background:#eef2f9 !important; color:var(--text); }
.pipeline-tab-btn .count{
  display:inline-block; min-width:20px; padding:2px 7px; border-radius:var(--radius-full); font-size:var(--fs-1); font-weight:800; line-height:1.5;
  margin-left:1px; opacity:1; background:#e4e9f2; color:#8e99ae; }
.bar-track, .track, .progress, .bar-bg{
  height:9px !important; border-radius:var(--radius-full) !important; background:#e4e9f2 !important; overflow:hidden;
}

/* ---------- ⑧ 원형(도넛) 차트 ---------- */
.chart-wrap{ padding:6px 8px 10px; }
.chart-wrap canvas{ border-radius:0; }

/* ============================================================
   66차 — 탭 알약 배경 제거 / 좌우 상단 정렬 / 통계 KPI · 달성률 / 표 실선 구분
   ============================================================ */

/* ---------- ① 탭 뒤 회색 알약 · 그림자 제거 ---------- */
.pipeline-tab-header{
    justify-content:flex-start;
    flex-wrap:wrap;
  display:flex;
  margin:0 0 8px !important; gap:var(--sp-4); align-items:flex-end;
  border-bottom:1px solid #e4e9f2; padding:0 4px;
}

/* ---------- ③ 통계 총매출~갱신 카드 (시안 v1 KPI 카드) ---------- */
.strip-item::after{
  content:''; position:absolute; right:-28px; top:-28px; width:104px; height:104px; border-radius:50%;
  background:#eef2f9; opacity:.55; transition:transform .5s var(--n-ease); z-index:0;
}
.strip-item:nth-child(2)::after{ background:#eef2f9; }
.strip-item:nth-child(3)::after{ background:#ecfdf5; }
.strip-item:hover::after{ transform:scale(1.35); }
.strip-item > *{ position:relative; z-index:1; }
.strip-sub .yoy.up{ color:#059669; } .strip-sub .yoy.down{ color:#e11d48; }
.strip-tag{ display:inline-block; vertical-align:1px;
  font-size:10px; font-weight:800; padding:2px 7px; border-radius:var(--radius-sm);
  background:#eef2f9; color:#6b82be; margin-left:5px;
}
.strip-share{ flex:none; padding-bottom:2px; margin-left:auto; text-align:right; }
.strip-share-v{ font-size:var(--fs-4); font-weight:800; color:#6b82be; }
.strip-share-l{ font-size:var(--fs-1); color:var(--n-ink3); font-weight:700; }

/* ---------- ④ 담당자별 달성률 (시안 v1 막대) ---------- */

/* ---------- ⑤ 표 : 줄무늬 대신 실선 구분 ---------- */
tbody tr:nth-child(even) td{ background:transparent !important; }
main table tbody tr td{ border-bottom:1px solid #e4e9f2 !important; }
main table tbody tr:last-child td{ border-bottom:0 !important; }
main table tbody tr:hover td{ background:#eef2f9 !important; }
main .total-row td{ background:#eef2f9 !important; }
table.cross-table tbody tr td{ border-bottom:1px solid #e4e9f2 !important; }
table.cross-table tr.row-highlight td{ background:transparent !important; }
table.cross-table tr.row-highlight td:first-child{ background:#eef2f9 !important; }

/* ============================================================
   67차 — KPI 정렬 / 사이드바 정렬 / 필터초기화 제거 / 달성률 표 복구 / 건수 위치
   ============================================================ */

/* ---------- ① KPI 카드 : 전년 동기 문구 위치를 카드마다 똑같이 ----------
   총매출 카드에는 우측 '총매출 대비' 블록이 없어 값 줄의 높이가 달랐다.
   값 줄 높이를 고정하고 보조문구를 아래에 붙여 세 카드의 기준선을 맞춘다. */
.strip-item .big{ font-size:var(--fs-8); font-weight:800; letter-spacing:-1px; color:var(--text); line-height:1.15; }

/* ---------- ② 사이드바 : '화면' 라벨을 뺀 만큼 다시 맞춤 ----------
   헤더(패딩14 + 제목34 + 패딩6 = 54) + 본문 위 패딩 16 = 첫 카드 상단 70px */
aside{ padding-top:70px !important; }

/* ---------- ③ 필터 초기화 버튼 제거 ---------- */
.reset-link, #resetFilters{ display:none !important; }

/* ---------- ④ 개인별 목표 달성률 : 표 구조 그대로, 막대만 테마 적용 ---------- */
.rep-achieve-card .rp-row:hover td{ background:#eef2f9 !important; }
.rep-achieve-card .rp-bar, .rep-achieve-card .rp-track{
  height:8px !important; border-radius:var(--radius-full) !important;
  background:#e4e9f2 !important; overflow:hidden;
}
.rep-achieve-card .rp-fill, .rep-achieve-card .rp-bar > span, .rep-achieve-card .rp-bar > i{
  height:100% !important; border-radius:var(--radius-full) !important;
}
.rep-achieve-card .rp-pct{ font-weight:800; font-variant-numeric:tabular-nums; }
.rep-achieve-card .rp-dot{ display:inline-block !important; }

/* ---------- ⑤ 건수는 제목 바로 옆에 ----------
   .card h3 가 space-between 이라 건수가 오른쪽 끝으로 밀려 있었다. */
.card h3{ justify-content:flex-start !important; }
.card h3 .count, .card h3 .cnt{ margin-left:4px !important; }
/* 제목 오른쪽에 놓아야 하는 것(기간 배지·설정 버튼 등)은 따로 밀어낸다 */
.card h3 > .btn, .card h3 > .pill-badge, .card h3 > .period,
.card h3 > .card-head-right{ margin-left:auto; }

/* ============================================================
   68차 — 탭 활성 강조 / 표 머리행 / 미선택 붉은 행 복구
   ============================================================ */

/* ---------- ① 선택된 탭은 '전체' 알약처럼 채운다 ---------- */
.pipeline-tab-btn.active .count{
  background:rgba(255,255,255,.24) !important; color:#fff !important;
}
.pipeline-tab-btn{
    white-space:nowrap;
  position:relative; display:inline-flex; align-items:center; gap:var(--sp-3);
  padding:10px 15px 11px; border:1px solid transparent; border-bottom:0; cursor:pointer;
  font-family:inherit; font-size:var(--fs-3); font-weight:700;
  transition:background .22s var(--n-ease), color .22s var(--n-ease), box-shadow .22s var(--n-ease); background:transparent !important; color:#8e99ae; border-radius:var(--radius-lg) var(--radius-lg) 0 0; }

/* ---------- ② 표 머리행 : 배경 없이 선으로만 구분 ---------- */
main table thead th{
  background:transparent !important;
  color:var(--n-ink2) !important;
  font-size:var(--fs-3) !important; font-weight:800 !important;
  border-bottom:2px solid #d5ddee !important;
  padding:9px 12px !important;
}
main table thead th.sortable:hover{ color:#6b82be !important; }
main table tbody tr:first-child td{ padding-top:9px !important; }

/* ---------- ⑤ 영업구분 미선택 행이 붉게 안 나오던 문제 ----------
   66차에서 줄무늬를 지우려고 넣은
     tbody tr:nth-child(even) td{ background:transparent !important; }
   이 짝수 행의 경고색까지 덮어써서, 같은 미선택 건인데 어떤 줄은 붉고
   어떤 줄은 흰색으로 보였다. 경고 행은 그 규칙에서 빼고 우선순위를 올린다. */
tbody tr:nth-child(even):not(.row-cat-unset) td{ background:transparent !important; }
table.review-table > tbody > tr.row-cat-unset > td,
table.pipeline-table > tbody > tr.row-cat-unset > td{
  background:#fef2f2 !important; color:#b91c1c !important;
}
table.review-table > tbody > tr.row-cat-unset:hover > td,
table.pipeline-table > tbody > tr.row-cat-unset:hover > td{ background:#fee2e2 !important; }
tr.row-cat-unset > td select.sales-cat-sel{ border-color:#f87171; color:#b91c1c; font-weight:800; background:#fff; }

/* 69차 — 전환 속도 접기 / 월별매출 접기 삭제 */
.fold-hint{ font-size:var(--fs-1); font-weight:800; color:#6b82be; }
#statSpeedCard .note{ display:none; }
#statSpeedCard.open .note{ display:block; }
tr.toggle-row{ display:none !important; }

/* 빠른 필터 칩 */

/* 타임라인 목록 */

/* 우선순위 배지(시안 C) — 클릭하면 높음 → 보통 → 낮음 순환 */

/* D-day 배지 */

/* 담당자 — 아바타 없이 이름 전체로 표시 */

/* 입력 영역 */

/* 사이드 — 오늘 처리할 일 */

@media (max-height:1200px){
}
/* PDF 캡처 시에는 목록을 전부 펼쳐서 담는다 */

/* ============================================================
   72차 — 아이콘 / 통계 차트 재구성 / 전달사항 시안 정합
   ============================================================ */

/* ---------- 1-1 사이드 메뉴 아이콘 ---------- */
.tb-ic{ display:inline-flex; flex:none; opacity:.85; }
.tb-ic svg{ width:17px; height:17px; }
.tb-tx{ flex:1; min-width:0; }

/* ---------- 1-1 통계 KPI 카드 아이콘 ---------- */
.strip-ic.ic-total{ background:#eafaf2; color:#0f9d6b; }
.strip-ic.ic-plus { background:#e4e9f2; color:#6b82be; }
.strip-ic.ic-renew{ background:#eef2f9; color:#6b82be; }
@media (max-height:1200px){ }

/* ---------- 1-4 카드 안 미니 탭 ---------- */
.mini-tabs{ display:inline-flex; gap:var(--sp-1); padding:3px; border-radius:var(--radius-md); background:var(--surface2); flex:none; }
.mini-tab{
  font-family:inherit; cursor:pointer; border:0; background:transparent; color:var(--muted);
  padding:4px 12px; border-radius:var(--radius-md); font-size:var(--fs-3); font-weight:800; line-height:1.3; transition:.14s;
}
.mini-tab:hover{ color:var(--primary); }
.mini-tab.active{ background:var(--card); color:var(--primary); box-shadow:0 1px 3px rgba(15,23,42,.12); }

/* ---------- 1-5-4·1-5-5 차트 위 / 표 아래 + 반폭 2열 ---------- */
.stats-body.stacked{ gap:var(--sp-4); }
@media (max-height:1200px){
}

/* ---------- 1-2 '기타' 통합 행 ---------- */
.etc-mark{
  margin-left:7px; padding:1px 7px; border-radius:var(--radius-full); background:var(--surface2);
  color:var(--muted); font-size:var(--fs-1); font-weight:800; vertical-align:1px;
}
tr.has-detail-tip td:first-child{ cursor:help; }
tr.has-detail-tip:hover .etc-mark{ background:var(--primary-light); color:var(--primary-press); }
@media (max-height:1200px){ }

/* 좌우 여백 — 칩·그룹 라벨·행의 시작선을 카드 제목과 맞춘다 */

/* 칩 — 시안의 알약 형태 */

/* 입력줄 — 시안과 동일한 라운드 입력 + 파란 [추가] */

/* 사이드 위젯 축소 (첨부5) */
.forecast-band .fc-head, .forecast-band .fc-bar{ display:none !important; }

/* ---------- ② 전망 지표 4장 : 라벨 → 값 → 보조설명 순서를 4장 모두 동일하게 ---------- */
.forecast-band{ padding:0; border:0; background:transparent; box-shadow:none; }
.fc-metric > *{ position:relative; z-index:1; }
.fc-metric.tone-blue  { --fc-c:#6b82be; --fc-bg:#e4e9f2; }
.fc-metric.tone-violet{ --fc-c:#6b82be; --fc-bg:#eef2f9; }
.fc-metric.tone-green { --fc-c:#0f9d6b; --fc-bg:#e7f8f1; }
.fc-metric.tone-amber { --fc-c:#b45309; --fc-bg:#fff5e6; }
@media (max-height:1200px){
}
.stats-card .stats-body.stacked{ gap:var(--sp-5); }
@media (max-height:1200px){
}

/* ---------- ④ 주간보고 파이프라인 탭 상단 파란 선 제거 ---------- */
.pipeline-tab-btn.active::after{
  content:''; position:absolute; left:14px; right:14px; top:0; height:2.5px; border-radius:0 0 var(--radius-xs) var(--radius-xs);
  background:var(--primary); display:none !important; }

/* ---------- ⑤ 통계 보고서 3페이지 ---------- */
.rpt-pg{
  display:block; width:735px; padding:0 0 26px;
  position:relative; box-sizing:border-box; background:#fff;
}
.rpt-pg + .rpt-pg{ margin-top:26px; }
.rpt-pageno{ right:0; bottom:2px; font-size:var(--fs-1); font-weight:700; color:#9ca3af;
}

/* ---------- ⑥ (101차에 비었다 — 전달사항 규칙은 09-checklist.css 로 옮겼다) ---------- */

/* ============================================================
   74차 — 요청사항 반영
   ① 통계 : 제품 카드 차트 폭 정상화
   ② 통계 : 판매 채널 · 리셀러 기여도 통합 카드
   ③ 통계 : 전망 지표 4개를 카드 → 한 줄 인라인 스트립으로 (위계 차등)
   ④ 대시보드 : 개인별 달성률 ↔ 제품별 영업구분 행 높이 일치
   ⑤ 전달사항 : 좌측 여백 확대 · 입력줄 점선 원 제거
   ⑥ 주간보고 : 탭 우측 세로선 제거
   ⑦ 고객사 CRM 기록 팝업
   ============================================================ */

/* ---------- ① 제품 카드 차트가 300px 기본 크기로 남아 있던 문제 ----------
   .stats-body 기본값이 2열 grid 라 stacked 로 바꾼 뒤에도 캔버스가 예전 폭을 물고 있었다.
   폭을 명시하고, 렌더 직후 resize 를 한 번 더 태운다(JS 쪽 kickChartResize). */
.stats-body.stacked{ display:flex !important; flex-direction:column; width:100%; }
.stats-body.stacked > *{ width:100%; min-width:0; }
.stats-body.stacked .chart-wrap{ width:100%; min-width:0; height:270px; }
.stats-body.stacked .chart-wrap canvas{ width:100% !important; }
.stats-body.stacked .stats-table-wrap{ width:100%; max-height:none; overflow-y:visible; }
@media (max-height:1200px){
  .stats-body.stacked .chart-wrap{ height:228px; }
  .stats-body.stacked .stats-table-wrap{ max-height:260px; overflow-y:auto; }
}
.chart-dot{ display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:8px; vertical-align:-1px; }
.chart-in{ display:inline-block; width:18px; }
table.stat-table tr.chart-top td{ font-weight:800; }
table.stat-table tr.chart-sub td{ color:var(--text-secondary); }
table.stat-table tr.chart-sub td:first-child{ padding-left:14px; }
table.stat-table tr.chart-sub td.big{ font-weight:700; font-size:var(--fs-4); }

/* ---------- ③ 전망 4지표 : 카드 → 한 줄 인라인 스트립 ---------- */
.forecast-band{ margin-bottom:12px; }
.fc-metrics{
  display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:0;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden;
}
.fc-metric:first-child{ border-left:0; }
.fc-metric::before{ content:''; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--fc-c,#94a3b8); display:none; }
.fc-metric::after{
  content:''; position:absolute; right:-26px; top:-26px; width:86px; height:86px; border-radius:50%;
  background:var(--fc-bg,transparent); opacity:.55; pointer-events:none; display:none; }
.fc-split > div{ display:flex; align-items:center; font-weight:700; color:var(--muted); white-space:nowrap; justify-content:flex-start; font-size:var(--fs-1); gap:var(--sp-2); }
.fc-split b{ color:var(--text); font-weight:800; font-variant-numeric:tabular-nums; margin-left:auto; }
@media (max-height:1200px){
}

/* ---------- ④ 대시보드 두 표의 행 높이 일치 ---------- */
.rep-achieve-card table.rep-table tbody tr,
.stage-card table.rep-table tbody tr{ height:42px; }
.rep-achieve-card table.rep-table tbody td,
.stage-card table.rep-table tbody td{ height:42px; padding-top:0; padding-bottom:0; vertical-align:middle; }
.rep-achieve-card table.rep-table thead th,
.stage-card table.rep-table thead th{ height:38px; padding-top:0; padding-bottom:0; vertical-align:middle; }
@media (max-height:1200px){
  .rep-achieve-card table.rep-table tbody tr, .stage-card table.rep-table tbody tr,
  .rep-achieve-card table.rep-table tbody td, .stage-card table.rep-table tbody td{ height:37px; }
  .rep-achieve-card table.rep-table thead th, .stage-card table.rep-table thead th{ height:34px; }
}   /* 입력줄 왼쪽 점선 동그라미 제거 */

/* ---------- ⑥ 주간보고 탭 우측 세로선 제거 ---------- */
.pipeline-tab-btn, .pipeline-tab-btn.active{ border:0 !important; }
.pipeline-tab-btn.active{
  background:var(--primary) !important; color:#fff !important;
  border-color:transparent !important; box-shadow:none !important; }
.pipeline-tab-btn::before, .pipeline-tab-btn::after,
.pipeline-tab-btn.active::before, .pipeline-tab-btn.active::after{ display:none !important; content:none !important; }
.pipeline-tabs{
    display:flex;
    flex:none;
  background:transparent !important; border-radius:0 !important; padding:0 !important; gap:var(--sp-1) !important; border:0 !important; box-shadow:none !important; }
.pipeline-tabs > *:not(:last-child){ border-right:0 !important; }
.cust-link:hover{ border-bottom-color:var(--primary); }
.report-modal-box.cust-box{ width:min(1080px, 94vw); max-height:86vh; display:flex; flex-direction:column; }
.cust-box .report-modal-head{ display:flex; align-items:center; gap:var(--sp-4); flex-wrap:wrap; }
.cust-sub{ font-size:var(--fs-3); font-weight:700; color:var(--muted); }
.cust-sub b{ color:var(--text); }
.cust-body{ flex:1; min-height:0; overflow:auto; padding:6px 18px 4px; }
table.cust-table{ font-size:var(--fs-4); }
table.cust-table th{ position:sticky; top:0; z-index:1; background:var(--card); }
table.cust-table tr.cust-done td{ background:#f3fbf7; }
table.cust-table tr.cust-done:hover td{ background:#e7f8f1; }
.cust-empty{ padding:40px 0; text-align:center; color:var(--muted); font-size:var(--fs-5); }

/* ============================================================
   75차 — 요청사항 반영
   ① 카드 호버 시 들리는 효과 제거
   ② 클릭 가능한 텍스트는 링크 아이콘으로 표시(점선 밑줄 제거)
   ③ 전망 스트립 높이 절반 · 파이프라인 클릭
   ④ KPI 카드 : 아이콘 좌측 중앙 · 텍스트 우측
   ⑤ 판매 채널 카드 반폭 · '그 외 N곳' 펼침
   ⑥ 제품 2개 카드의 표 높이 일치
   ============================================================ */

/* ---------- ① 호버 시 카드가 들리지 않게 ---------- */
.card:hover, main .card:hover, .stats-card:hover, .weekly-card:hover, .checklist-card:hover{
  transform:none !important;
}
.card, main .card, .stats-card, .weekly-card, .checklist-card{ transition:box-shadow .15s ease; }

/* ---------- ② 클릭 가능한 텍스트 : 링크 아이콘 ---------- */
.cust-link{ align-items:center; gap:var(--sp-1);
}
.cust-link::after{ flex:none;
}
.cust-link:hover{ color:var(--primary); }
.cust-link:hover::after{ opacity:1; }
:root{
  --link-ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M14 4h6v6'/><path d='M20 4 11 13'/><path d='M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/></svg>");
}
/* 대시보드 개인별 달성률 — 담당자 행도 클릭 가능하므로 같은 표시를 준다 */
.rep-achieve-card tbody tr td:first-child{ position:relative; }
.rep-achieve-card tbody tr td:first-child::after{
  content:''; display:inline-block; width:11px; height:11px; margin-left:6px; opacity:.38; vertical-align:-1px;
  background:currentColor; -webkit-mask:var(--link-ic) center/contain no-repeat; mask:var(--link-ic) center/contain no-repeat;
}
.rep-achieve-card tbody tr:hover td:first-child::after{ opacity:1; color:var(--primary); }

/* ---------- ③ 전망 스트립 : 높이 절반 · 한 줄 ---------- */
.fc-sp .sw{ width:7px; height:7px; border-radius:var(--radius-xs); margin:0 1px 0 0; align-self:center; }
.fc-sp .sw.etc{ background:#94a3b8; }
#fcPipeMetric{ cursor:pointer; }
#fcPipeMetric:hover{ background:#eef2f9; }
#fcPipeMetric:hover .fc-more{ background:var(--primary); color:#fff; border-color:transparent; }
.fc-note{ margin-top:6px; }
@media (max-height:1200px){
}

/* ---------- ④ KPI 카드 : 아이콘 좌 · 텍스트 우 ---------- */
.strip-label{ font-size:var(--fs-2); font-weight:700; color:var(--n-ink3); margin-bottom:2px; }
.strip-sub{ font-size:var(--fs-1); font-weight:700; color:var(--n-ink3); display:block; margin-top:1px; }
@media (max-height:1200px){
  .strip-value{ font-size:25px; }
}

/* ---------- ⑤ 판매 채널 카드(반폭) · 그 외 펼침 ---------- */
.chart-wrap.chan{ height:52px !important; }
tr.chart-more td{ cursor:pointer; }
.chart-more-link{ color:var(--primary); text-decoration:none; font-weight:800; }
.chart-more-link:hover{ text-decoration:underline; }
table.stat-table tr.chart-rest td{ color:var(--muted); font-weight:700; }
table.stat-table tr.chart-rest td.big{ font-size:var(--fs-4); font-weight:700; }

/* ---------- ⑥ 제품 2개 카드 : 표 높이 일치 ---------- */
.stats-body.stacked:not(.chan-body) .stats-table-wrap{ min-height:302px; max-height:302px; overflow-y:auto; }
.stats-body.stacked:not(.chan-body) table.stat-table tbody tr{ height:38px; }
.stats-body.stacked:not(.chan-body) table.stat-table tbody td{ height:38px; padding-top:0; padding-bottom:0; vertical-align:middle; }
@media (max-height:1200px){
  .stats-body.stacked:not(.chan-body) .stats-table-wrap{ min-height:258px; max-height:258px; }
  .stats-body.stacked:not(.chan-body) table.stat-table tbody tr,
  .stats-body.stacked:not(.chan-body) table.stat-table tbody td{ height:34px; }
}

/* ============================================================
   76차 — 요청사항 반영
   ① 주간보고 표 : 고객사명 글자 크기·굵기 원복 / 사용자수 굵기 제거
   ② KPI 카드 : 텍스트 왼쪽 · 아이콘 오른쪽(크게)
   ③ 전망 카드 : 라벨 위 / 값+설명 아래 / 분해 칩은 우측 세로
   ④ 판매구분 비중 : 도넛 → 일자 누적 막대, 표에 색상 점, 채널 카드와 높이 통일
   ============================================================ */

/* ---------- ① 표 안 링크·숫자 타이포 ---------- */
/* inline-flex 로 두면 셀 안에서 줄·글자 크기가 달라 보인다 → 흐름은 그대로 두고 아이콘만 붙인다 */
.cust-link{
  display:inline; font:inherit; color:inherit; letter-spacing:inherit;
  text-decoration:none; border-bottom:0; cursor:pointer;
}
.cust-link::after{
  content:''; display:inline-block; width:11px; height:11px; margin-left:5px; vertical-align:-1px;
  opacity:.42; background:currentColor;
  -webkit-mask:var(--link-ic) center/contain no-repeat; mask:var(--link-ic) center/contain no-repeat;
}
main table tbody td .cust-link{ font-weight:400 !important; font-size:inherit !important; }
main table tbody td:first-child .cust-link{ font-weight:700 !important; }   /* 첫 열일 때만 기존 강조 유지 */
/* 사용자수 등 보조 숫자는 굵게 하지 않는다(매출액만 강조) */
main table td.num.num-plain{ font-weight:500 !important; }

/* ---------- ② KPI 카드 : 텍스트 왼쪽 · 아이콘 오른쪽 ---------- */
.strip-ic svg{ width:25px; height:25px; }
@media (max-height:1200px){
  .strip-item{ padding:11px 16px; gap:var(--sp-4); }
  .strip-ic{ width:44px; height:44px; border-radius:var(--radius-lg); }
  .strip-ic svg{ width:22px; height:22px; }
}

/* ---------- ③ 전망 카드 : 2줄 + 우측 분해 칩 ---------- */
.fc-m-label{ margin-bottom:2px; letter-spacing:.01em; flex:none; display:block; margin:0 0 2px; font-size:var(--fs-1); font-weight:800; color:var(--muted); }
.fc-m-row{ justify-content:space-between; display:flex; align-items:baseline; gap:var(--sp-3); min-width:0; }
.fc-m-value{ font-variant-numeric:tabular-nums; line-height:1.1; color:var(--fc-c,var(--text)); margin:0; font-weight:800; letter-spacing:-.4px; flex:none; font-size:var(--fs-7); }
.fc-m-sub{ margin-top:2px; font-weight:700; color:var(--muted); margin:0; flex:1 1 auto; min-width:0; font-size:var(--fs-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fc-sp{ color:var(--muted); display:flex; align-items:center; gap:var(--sp-2); font-size:var(--fs-1); white-space:nowrap; }
.fc-sp .k{ color:var(--muted); font-weight:700; }
.fc-sp b{ font-weight:800; color:var(--text); }
.fc-sp em{ font-style:normal; font-weight:800; color:var(--primary); min-width:38px; text-align:right; }
@media (max-height:1200px){
  .fc-metric{ min-height:82px; padding:7px 13px; gap:var(--sp-4); }
  .fc-m-value{ font-size:17px; }
}

/* ---------- ④ 판매구분 비중 = 판매 채널 카드와 동일 규격 ---------- */
.chan-body .chart-wrap.chan{ height:52px !important; }
.chan-body .stats-table-wrap{ min-height:250px; max-height:250px; overflow-y:auto; }
@media (max-height:1200px){
  .chan-body .stats-table-wrap{ min-height:212px; max-height:212px; }
}

/* ============================================================
   77차 — 76차 배치가 안 먹던 원인 수정 + 차트 높이 일치

   이전 차수에 남아 있던 flex-direction:column 을 76차가 display·align-items 만 다시
   선언하며 되돌리지 않아 세로 배치가 유지됐다. 방향을 명시적으로 row 로 되돌린다.
   ============================================================ */

/* ---------- KPI 카드 : 텍스트 왼쪽 · 아이콘 오른쪽 ---------- */
.strip-item{ overflow:hidden;
  background:#fff; border:0 !important; border-radius:var(--radius-xl);
  box-shadow:var(--n-sh1);
  transition:transform .28s var(--n-ease), box-shadow .28s var(--n-ease); position:relative;
  display:flex !important; flex-direction:row !important; align-items:center !important;
  gap:var(--sp-5); padding:14px 20px;
}
.strip-item:hover{ box-shadow:var(--n-sh2); transform:none !important; }          /* 카드 들림 효과 제거(75차 규칙 누락분) */
.strip-main{ order:1; flex:1 1 auto; min-width:0; }
.strip-ic{
  display:inline-flex; align-items:center; justify-content:center; margin-bottom:9px; width:52px; height:52px; border-radius:var(--radius-xl); order:2; flex:none; align-self:center; margin:0; }
.strip-row{ justify-content:space-between; min-height:40px; display:flex; align-items:flex-end; gap:var(--sp-4); }
.strip-value{ font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.5px; font-size:29px; line-height:1.1; }

/* ---------- 전망 카드 : 왼쪽 본문 · 오른쪽 분해 칩 ---------- */
.fc-metric{
  position:relative; border:0; border-radius:0; background:transparent;
  border-left:1px solid var(--border-soft); overflow:hidden; min-height:0; padding:9px 16px;
  display:flex !important; flex-direction:row !important; align-items:center !important;
  justify-content:flex-start; gap:var(--sp-5); flex-wrap:nowrap; text-align:left;
}
.fc-m-main{ order:1; flex:1 1 auto; min-width:0; }
.fc-split{ padding-bottom:2px; margin-top:8px; padding-top:8px; text-align:left; border-top:0; align-items:baseline; display:flex; flex-direction:column; gap:var(--sp-1); margin:0; padding:0; border:0; order:2; flex:none; align-self:center; }
.fc-more{ font-size:var(--fs-1); font-weight:800; color:var(--primary);
  border:1px solid rgba(76,100,166,.28); border-radius:var(--radius-full); padding:1px 9px; white-space:nowrap; order:3; flex:none; align-self:center; margin-left:0; }
#fcPipeMetric .fc-m-main{ flex:0 1 auto; }

/* ---------- 제품별 영업구분 차트 : 범례만큼 더 키워 옆 카드와 높이 일치 ----------
   같은 270px 를 줘도 이 차트만 하단 범례(신규/업그레이드/기타)가 자리를 먹어
   실제 막대 영역이 짧아 보였다. */
.stats-body.stacked .chart-wrap.has-legend{ height:306px; }
@media (max-height:1200px){
  .stats-body.stacked .chart-wrap.has-legend{ height:262px; }
}
.rpt-etc{
  display:inline-block; padding:0 6px; border-radius:var(--radius-full); background:#e4e9f2;
  color:#6b7280; font-size:9.5px; font-weight:800; vertical-align:1px;
}
.rpt-mini{ color:#6b7280; font-weight:700; font-size:9.5px; }
.rpt-table tr.rpt-total td{ border-top:1.5px solid #e5e7eb; font-weight:800; background:#eef2f9; }
.rpt-table tr.rpt-zero td{ color:#9ca3af; }
.rpt-table tr.rpt-indent td:first-child{ padding-left:22px; color:#6b7280; font-weight:700; }
.rpt-bars{ margin:0 0 10px; }

/* ============================================================
   79차 — 전달사항 3단(전달사항 / 달력·완료항목 / 요약) + 헤더 사용자 칩
   ============================================================ */

/* ---------- 레이아웃 : 전달사항 칸을 좁히고 가운데 열을 새로 둔다 ---------- */
@media (max-height:1200px){ }

/* ---------- 완료 항목 카드 ---------- */
@media (max-height:1200px){ }

/* ---------- 헤더 사용자 칩 ---------- */
.user-chip:hover{
  transform:none; box-shadow:0 4px 14px rgba(22,34,60,.10); border-color:rgba(76,100,166,.30); color:var(--text);
}
.user-chip .u-txt{
  display:flex; flex-direction:column; align-items:flex-start; gap:1px; min-width:0; line-height:1.15;
}
.user-chip .u-out{
  flex:none; margin-left:auto; display:grid; place-items:center; width:20px; height:20px;
  color:var(--faint); border-radius:var(--radius-sm); transition:.14s;
}
.user-chip .u-out svg{ width:15px; height:15px; }
.user-chip:hover .u-out{ color:var(--primary); background:#eef2f9; }

/* ============================================================
   80차 — 요청사항 반영
   ① 개인별 목표 달성률 : 앞 3열 좁게 · 달성률 막대 길게 · 차오르는 애니메이션
   ② 주간보고 표 : 최소 5행 보이게 행 높이 축소
   ③ 헤더 칩 : 이름 전체 + 관리자/일반, 소속 제거
   ④ 전달사항 : 달력 축소 · 달력:완료 1:1 · 달력 하단 입력 제거 · 완료 접기 제거 · 입력줄 위로
   ⑤ 통계 PDF : 빈 공간 제거 · 3쪽 재구성
   ============================================================ */

/* ---------- ① 개인별 목표 달성률 ---------- */
.rep-achieve-card table.rep-table th:nth-child(1), .rep-achieve-card table.rep-table td:nth-child(1){ width:88px; }
.rep-achieve-card table.rep-table th:nth-child(4), .rep-achieve-card table.rep-table td:nth-child(4){ width:auto; }
.rep-achieve-card table.rep-table td, .rep-achieve-card table.rep-table th{ padding-left:7px; padding-right:7px; }
.rep-achieve-card .rp-pct-cell{ display:flex; align-items:center; gap:var(--sp-4); justify-content:flex-end; width:100%; }
.rep-achieve-card .rp-mini{
  order:1; flex:1 1 auto; min-width:90px; height:9px; border-radius:var(--radius-full);
  background:#e4e9f2; overflow:hidden; display:block;
}
.rep-achieve-card .rp-mini > i{
  display:block; height:100%; border-radius:var(--radius-full); width:0;
  background:var(--rate-60);
  transition:width .9s cubic-bezier(.22,1,.36,1);
}
/* 89차 예외② — 0%(빨강) → 100%(초록). 등급마다 같은 계열 안에서 옅게 흐른다. */
.rep-achieve-card .rp-row.lv-a100 .rp-mini > i{ background:var(--rate-100); }
.rep-achieve-card .rp-row.lv-a80  .rp-mini > i{ background:var(--rate-80); }
.rep-achieve-card .rp-row.lv-a60  .rp-mini > i{ background:var(--rate-60); }
.rep-achieve-card .rp-row.lv-a40  .rp-mini > i{ background:var(--rate-40); }
.rep-achieve-card .rp-row.lv-a0   .rp-mini > i{ background:var(--rate-0); }
.rep-achieve-card .rp-pct{ order:2; flex:none; min-width:50px; text-align:right; }
html.no-motion .rep-achieve-card .rp-mini > i{ transition:none; }
.weekly-grid main table thead th{ padding-top:8px !important; padding-bottom:8px !important; }
@media (max-height:1200px){
}

/* ---------- ③ 헤더 칩 : 이름 전체 ---------- */
.user-chip .u-sub{
  display:flex; align-items:center; gap:0; font-size:9.5px; font-weight:700; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:none; }

/* ---------- ④ 전달사항 : 달력 축소 · 1:1 · 입력줄 위로 ---------- */
@media (max-height:1200px){
}
/* 입력줄이 필터 바로 아래로 올라왔다 */

/* ---------- ⑤ 통계 PDF : 강제 여백 제거 ---------- */
.rpt-pg{ min-height:0; padding-bottom:22px; }
.rpt-pg .rpt-sec + .rpt-sec{ margin-top:14px; }
.rpt-pg .rpt-two{ margin-top:6px; }
.rpt-kpis{ margin:12px 0 4px; }
.rpt-headline{ margin:12px 0 4px; padding:10px 15px; }
.rpt-pageno{ position:static; margin-top:12px; text-align:right; }

/* ============================================================
   81차 — 요청사항 반영
   ① 헤더 칩 : 이름·권한이 안 보이던 문제(62차 display:none 잔존)
   ② 개인별 달성률 : 목표·달성매출 열 20% 확대
   ③ 주간보고 표 : 6행
   ④ 전달사항 : 달력 구분선을 격자 바로 아래로 · 그 아래 선택 날짜 목록 · 담당자 그라데이션 칩
   ============================================================ */

/* ---------- ① 헤더 칩 : 62차의 아이콘 전용 규칙이 이름을 숨기고 있었다 ---------- */
.user-chip #userChipName{ display:block !important; }
.user-chip #userChipRole{ display:inline !important; }
.user-chip{ font-size:var(--fs-5);
  transition:transform .28s var(--n-ease), box-shadow .28s var(--n-ease);
  width:auto; height:38px; padding:0 10px 0 6px; border-radius:var(--radius-lg);
  display:inline-flex; align-items:center; gap:var(--sp-3); justify-content:flex-start;
  border:1px solid rgba(22,34,60,.10); background:var(--card); box-shadow:var(--n-sh1); font-weight:700; min-width:132px; color:var(--text) !important; }
.user-chip .u-name{
  display:block; font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:none; font-size:var(--fs-3); color:var(--text) !important; }
.user-chip .u-badge{
  display:inline; padding:0; border-radius:0; font-weight:700; font-size:10px; color:var(--muted) !important; background:transparent !important; }
.user-chip:hover .u-name{ color:var(--primary) !important; }
.user-chip .u-ini{
  display:grid; place-items:center; flex:none; width:28px; height:28px; border-radius:var(--radius-md); font-size:var(--fs-3); font-weight:800; line-height:1;
  background:#6b82be; color:#fff !important; }

/* ---------- ② 목표·달성 매출 열 20% 확대 ---------- */
.rep-achieve-card table.rep-table th:nth-child(2), .rep-achieve-card table.rep-table td:nth-child(2){ width:89px; }
.rep-achieve-card table.rep-table th:nth-child(3), .rep-achieve-card table.rep-table td:nth-child(3){ width:98px; }

/* ---------- ③ 주간보고 표 6행 ---------- */
.weekly-grid main table tbody td, .weekly-grid table.review-table tbody td,
.weekly-grid table.pipeline-table tbody td, .weekly-grid table.pipeline-review-table tbody td{
  padding-top:5px !important; padding-bottom:5px !important; line-height:1.3;
}
.weekly-grid table.review-table > tbody.scroll-y,
.weekly-grid table.pipeline-table > tbody.scroll-y,
.weekly-grid table.pipeline-review-table > tbody.scroll-y{
  height:222px !important; min-height:222px !important; max-height:222px !important;
}
.weekly-grid .sales-cat-sel{ padding-top:1px; padding-bottom:1px; }
.weekly-grid .stage-pill{ padding-top:1px !important; padding-bottom:1px !important; }
@media (max-height:1200px){
  .weekly-grid main table tbody td{ padding-top:4px !important; padding-bottom:4px !important; }
  .weekly-grid table.review-table > tbody.scroll-y,
  .weekly-grid table.pipeline-table > tbody.scroll-y,
  .weekly-grid table.pipeline-review-table > tbody.scroll-y{
    height:198px !important; min-height:198px !important; max-height:198px !important;
  }
}

/* ---------- ④-1 달력 구분선을 격자 바로 아래로 ---------- */                                  /* 격자가 늘어나 구분선을 아래로 밀던 문제 */

/* ---------- ④-3 담당자 그라데이션 칩 ---------- */
