.cal.cal-ten-days { min-width: 1000px; }
.cal-ten-days > .grid { grid-template-columns: repeat(10, minmax(0, 1fr)); }
.cal .cal-day { min-height: 6.5rem; }
.cal-week .cal-day { min-height: 18rem; }
.cal-compact .cal-day { min-height: 7rem; }
.cal-today { background: rgba(245, 158, 11, .08); }
.cal-today .cal-num { background: #f59e0b; color: #fff; font-weight: 600; }
.dark .cal-today { background: rgba(245, 158, 11, .12); }

.pchip { width: 12rem; transition: opacity .12s, box-shadow .12s; }
.pchip > div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 좁은 화면(백로그) — 칩 압축: 원천 줄 숨김·폭 축소 (내용은 툴팁·모달로) */
@media (max-width: 640px) {
  .pchip { width: 8.5rem; padding: .25rem .5rem; }
  .pchip .src { display: none; }
}
/* 트리 안내선 — 행마다 깊이별 세로 점선 조각 + 라벨로 들어가는 가로 점선.
   점선 간격은 border-dashed 가 너무 촘촘해 그라데이션으로 직접(6px 선 / 5px 빈칸).
   품목명은 선보다 14px 오른쪽에서 시작해 선이 글자 밑을 지나지 않는다. */
.tguide { position: absolute; pointer-events: none; --tg: #9ca3af; }
.dark .tguide { --tg: #6b7280; }
.tguide.pass, .tguide.mid, .tguide.last, .tguide.down {
  width: 1.5px; background: repeating-linear-gradient(to bottom, var(--tg) 0 6px, transparent 6px 11px); }
.tguide.pass, .tguide.mid { top: -6px; bottom: -6px; }
.tguide.last { top: -6px; height: 21px; }
.tguide.down { top: 18px; bottom: -6px; }
.tguide.stub { top: 14px; width: 22px; height: 1.5px;
  background: repeating-linear-gradient(to right, var(--tg) 0 6px, transparent 6px 11px); }
.pchip.clickable:hover { filter: brightness(1.06); }
.flow-on .pchip:not(.hl):not(.hl-up):not(.hl-down) { opacity: .35; }
.pchip.hl      { box-shadow: 0 0 0 2px currentColor; }
.pchip.hl-up   { box-shadow: 0 0 0 2px #3b82f6; }
.pchip.hl-down { box-shadow: 0 0 0 2px #a855f7; }
.pchip .src { font-size: .7rem; line-height: 1rem; }
