/* ══════════════════════════════════════════════════════════
   쿠팡 PL 캘린더 (pl-calendar.js, .plcal-) — 품목 히스토리 날짜 월 달력
   종류 색 = 진행서 히스토리 탭 칩(.cp-hist-kind)과 같은 계열
   ══════════════════════════════════════════════════════════ */
.page#page-pl-calendar { max-width: none; width: 100%; padding: 16px 24px; }
.plcal-page { max-width: 1500px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.plcal-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 10px; }
.plcal-title { font-size: 18px; font-weight: 800; }
.plcal-sub { font-size: 12.5px; color: var(--text2); }
.plcal-nav { display: flex; align-items: center; gap: 6px; }
.plcal-month { font-size: 16px; min-width: 110px; text-align: center; }
.plcal-btn { height: 32px; min-width: 32px; padding: 0 10px; border: 1px solid var(--border); background: var(--surface); border-radius: 8px; font: inherit; font-size: 13px; cursor: pointer; color: var(--text); }
.plcal-btn:hover { border-color: var(--accent); color: var(--accent); }
.plcal-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between; }
.plcal-kinds { display: flex; flex-wrap: wrap; gap: 6px; }
.plcal-kind {
  border: 1px solid var(--border); background: var(--surface); color: var(--text3);
  border-radius: 999px; padding: 4px 11px; font: inherit; font-size: 12px; cursor: pointer;
}
.plcal-kind b { font-weight: 700; margin-left: 2px; }
.plcal-kind.on { color: #0f172a; border-color: transparent; }
.plcal-kind.on.is-change { background: #fce7f3; color: #9d174d; }
.plcal-kind.on.is-start  { background: #e2e8f0; color: #1e293b; }
.plcal-kind.on.is-stage  { background: #ccfbf1; color: #115e59; }
.plcal-kind.on.is-po     { background: #dbeafe; color: #1e40af; }
.plcal-kind.on.is-cert   { background: #fef3c7; color: #92400e; }
.plcal-kind.on.is-sample { background: #f3e8ff; color: #6b21a8; }
.plcal-filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.plcal-search { display: flex; align-items: center; gap: 6px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 0 10px; height: 32px; }
.plcal-search span { font-size: 12px; color: var(--text3); }
.plcal-search input { border: 0; outline: 0; font: inherit; font-size: 13px; width: 160px; background: transparent; }
.plcal-chk { display: flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--text2); cursor: pointer; }
.plcal-warn { font-size: 12px; color: #92400e; background: #fef3c7; border-radius: 8px; padding: 8px 12px; }
.plcal-empty { padding: 28px 12px; text-align: center; color: var(--text3); font-size: 13px; }

.plcal-grid {
  display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
  background: var(--surface); border: 1px solid var(--border); border-radius: 10px; overflow: hidden;
}
.plcal-dow { padding: 7px 8px; font-size: 12px; font-weight: 700; color: var(--text2); background: var(--surface2); border-bottom: 1px solid var(--border); text-align: center; }
.plcal-dow.is-sun, .plcal-dnum.is-sun { color: #be123c; }
.plcal-dow.is-sat, .plcal-dnum.is-sat { color: #1d4ed8; }
.plcal-cell {
  min-height: 112px; padding: 5px 6px 6px; border-right: 1px solid var(--surface2); border-bottom: 1px solid var(--surface2);
  display: flex; flex-direction: column; gap: 3px; min-width: 0; cursor: default;
}
.plcal-cell[onclick] { cursor: pointer; }
.plcal-cell[onclick]:hover { background: #f8fdff; }
.plcal-cell:nth-child(7n) { border-right: 0; }
.plcal-cell.is-out { background: #fafbfc; }
.plcal-cell.is-out > * { opacity: .55; }
.plcal-cell.is-today { box-shadow: inset 0 0 0 2px var(--accent); }
.plcal-dnum { font-size: 12px; font-weight: 700; color: var(--text2); }
.plcal-chip {
  display: block; width: 100%; text-align: left; border: 0; border-radius: 4px; padding: 2px 6px;
  font: inherit; font-size: 11.5px; line-height: 1.35; cursor: pointer;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: #eef2f5; color: #334155;
}
.plcal-chip i { font-style: normal; font-weight: 700; margin-right: 4px; opacity: .85; }
.plcal-chip:hover { filter: brightness(.95); }
.plcal-chip.is-change, .plcal-kind-badge.is-change { background: #fce7f3; color: #9d174d; }
.plcal-chip.is-resource, .plcal-kind-badge.is-resource { background: #ea580c; color: #fff; }
.plcal-chip.is-vendor,   .plcal-kind-badge.is-vendor   { background: #ffedd5; color: #9a3412; }
.plcal-chip.is-start,  .plcal-kind-badge.is-start  { background: #e2e8f0; color: #1e293b; }
.plcal-chip.is-stage,  .plcal-kind-badge.is-stage  { background: #ccfbf1; color: #115e59; }
.plcal-chip.is-po,     .plcal-kind-badge.is-po     { background: #dbeafe; color: #1e40af; }
.plcal-chip.is-cert,   .plcal-kind-badge.is-cert   { background: #fef3c7; color: #92400e; }
.plcal-chip.is-sample, .plcal-kind-badge.is-sample { background: #f3e8ff; color: #6b21a8; }
.plcal-more { border: 0; background: transparent; padding: 0 2px; font: inherit; font-size: 11.5px; color: var(--accent); text-align: left; cursor: pointer; }

/* 날짜 상세 모달 */
.plcal-day-list { display: flex; flex-direction: column; gap: 6px; max-height: 60vh; overflow-y: auto; }
.plcal-day-row {
  display: flex; align-items: flex-start; gap: 10px; width: 100%; text-align: left;
  padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); font: inherit; cursor: pointer;
}
.plcal-day-row:hover { border-color: var(--accent); background: #f0fdff; }
.plcal-kind-badge { flex: none; min-width: 64px; text-align: center; font-size: 11.5px; font-weight: 700; border-radius: 999px; padding: 2px 9px; }
.plcal-day-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; font-size: 13px; }
.plcal-day-sku { font-size: 11.5px; color: var(--text3); }
.plcal-day-text { font-size: 12.5px; color: var(--text2); }
.plcal-day-stage { flex: none; font-size: 11.5px; color: var(--text3); }

@media (max-width: 760px) {
  .page#page-pl-calendar { padding: 12px 16px; }
  .plcal-cell { min-height: 74px; padding: 4px; }
  .plcal-chip i { display: none; }
  .plcal-search input { width: 110px; }
}
/* 런칭 (sql/291) */
.plcal-kind.on.is-launch { background: #d1fae5; color: #065f46; }
.plcal-chip.is-launch, .plcal-kind-badge.is-launch { background: #d1fae5; color: #065f46; }

/* 기준 날짜 3종 — 다른 기록(옅은 색)보다 진하게 구분 (2026-10 사용자 요청)
   소싱 시작 = 남색 채움 · 런칭 예정 = 초록 점선(지났는데 미런칭이면 빨강 점선) · 실제 런칭 = 초록 채움 */
.plcal-chip.is-start, .plcal-kind-badge.is-start { background: #3730a3; color: #fff; }
.plcal-chip.is-launchplan, .plcal-kind-badge.is-launchplan { background: #f0fdf4; color: #047857; box-shadow: inset 0 0 0 1.5px #059669; border-radius: 4px; }
.plcal-chip.is-launchplan.is-late, .plcal-kind-badge.is-launchplan.is-late { background: #fff1f2; color: #be123c; box-shadow: inset 0 0 0 1.5px #be123c; }
.plcal-chip.is-launchplan { box-shadow: none; outline: 1.5px dashed #059669; outline-offset: -1.5px; }
.plcal-chip.is-launchplan.is-late { outline-color: #be123c; }
.plcal-chip.is-launched, .plcal-kind-badge.is-launched { background: #047857; color: #fff; }
.plcal-kind.on.is-start { background: #3730a3; color: #fff; }
.plcal-kind.on.is-launchplan { background: #f0fdf4; color: #047857; border: 1.5px dashed #059669; }
.plcal-kind.on.is-launched { background: #047857; color: #fff; }

/* 꽉 찬 화면 (2026-10 사용자 요청) — 페이지가 창 높이를 채우고 주(行)들이 남은 높이를 나눠 가짐.
   칸이 커지면 보이는 건수도 늘어남(pl-calendar.js _plcalCap). 내용이 넘치면 최소 110px 로 두고 페이지가 스크롤 */
.page#page-pl-calendar.active { display: flex; flex-direction: column; min-height: 100vh; box-sizing: border-box; }
#pl-calendar-root { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.plcal-page { flex: 1; max-width: none; width: 100%; }
#plcal-grid { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.plcal-grid { flex: 1; grid-template-rows: auto; grid-auto-rows: minmax(110px, 1fr); }
.plcal-cell { min-height: 0; overflow: hidden; }
/* 항목 클릭 이동 제거(2026-10) — 칩은 표시만(툴팁), 누르면 칸 클릭으로 그날 목록. 목록 행도 표시만 */
.plcal-chip { cursor: inherit; }
.plcal-chip:hover { filter: none; }
.plcal-day-row { cursor: default; }
.plcal-day-row:hover { border-color: var(--border); background: var(--surface); }

/* 캘린더 직접 입력·수정 (2026-10) — 폼 줄·버튼은 진행서 인증·검사 스타일(.cp-cert-form-row/.cp-cert-btn) 재사용 */
.plcal-add-btn {
  margin-left: auto; border: 1px solid var(--accent); background: #f0fdff; color: var(--accent);
  border-radius: 8px; padding: 5px 12px; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
}
.plcal-add-btn:hover { background: var(--accent); color: #fff; }
.plcal-day-acts { flex: none; display: flex; gap: 4px; margin-left: 6px; }
.plcal-pick { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.plcal-pick-list { display: flex; flex-direction: column; max-height: 220px; overflow-y: auto; border-radius: 8px; }
.plcal-pick-list:not(:empty) { border: 1px solid var(--border); }
.plcal-pick-row {
  display: flex; flex-direction: column; align-items: flex-start; gap: 0; width: 100%; text-align: left;
  border: 0; border-bottom: 1px solid var(--surface2); background: var(--surface); padding: 6px 10px; font: inherit; cursor: pointer;
}
.plcal-pick-row:last-child { border-bottom: 0; }
.plcal-pick-row:hover, .plcal-pick-row.on { background: #f0fdff; }
.plcal-pick-row b { font-size: 13px; }
.plcal-pick-row span { font-size: 11.5px; color: var(--text3); }
.plcal-seg { display: flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.plcal-seg button { border: 0; border-left: 1px solid var(--surface2); background: var(--surface); padding: 6px 12px; font: inherit; font-size: 12.5px; color: var(--text2); cursor: pointer; }
.plcal-seg button:first-child { border-left: 0; }
.plcal-seg button.on { background: var(--accent); color: #fff; font-weight: 600; }
.plcal-radio { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--text); cursor: pointer; margin-right: 10px; }
.plcal-hint { font-size: 11.5px; color: var(--text3); }
/* 공장확정·이너프랩 전달·보고서(2026-10-26 — 진행 체크 날짜) */
.plcal-kind.on.is-factory { background: #e0e7ff; color: #3730a3; }
.plcal-chip.is-factory, .plcal-kind-badge.is-factory { background: #e0e7ff; color: #3730a3; }
.plcal-kind.on.is-handoff { background: #fef9c3; color: #854d0e; }
.plcal-chip.is-handoff, .plcal-kind-badge.is-handoff { background: #fef9c3; color: #854d0e; }
