.cal-card { background: var(--white); border: 1px solid var(--border); border-radius: 12px; padding: 1.25rem; margin-bottom: 2rem; }
.cal-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .6rem; margin-bottom: .75rem; }
.cal-title { font-size: 1rem; font-weight: 700; }
.cal-nav { display: flex; align-items: center; gap: .4rem; }
.cal-nav button { border: 1px solid var(--border); background: var(--white); border-radius: 8px; padding: .3rem .7rem; cursor: pointer; font-size: .85rem; }
.cal-nav button:hover { background: var(--blue-xl); }
.cal-month { min-width: 130px; text-align: center; font-weight: 700; font-size: .95rem; }
.cal-sum { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; font-size: .8rem; color: var(--gray); margin-bottom: .75rem; }
.cal-sum strong { color: var(--text); }
.cal-legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .75rem; color: var(--gray); align-items: center; margin-bottom: .6rem; }
.cal-legend label { display: flex; align-items: center; gap: .3rem; cursor: pointer; }
.cal-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: .3rem; }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal-dow { font-size: .7rem; font-weight: 700; color: var(--gray); text-align: center; padding: .2rem 0; text-transform: uppercase; }
.cal-day { min-height: 82px; border: 1px solid var(--border); border-radius: 8px; padding: .3rem .35rem; cursor: pointer; background: var(--white); overflow: hidden; display: flex; flex-direction: column; gap: 2px; }
.cal-day.empty { border: none; background: none; cursor: default; }
.cal-day:not(.empty):hover { border-color: var(--blue-l); }
.cal-day.today { border: 2px solid var(--blue-l); background: var(--blue-xl); }
.cal-day.sel { box-shadow: 0 0 0 2px var(--blue); }
.cal-day.weekend { background: var(--gray-l); }
.cal-num { font-size: .75rem; font-weight: 700; color: var(--gray); }
.cal-chip { font-size: .68rem; font-weight: 700; border-radius: 5px; padding: 1px 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-chip.p { background: var(--red-l); color: var(--red); }
.cal-chip.v { background: var(--blue-xl); color: var(--blue); }
.cal-chip.over { outline: 1.5px solid var(--red); }
.cal-chip.paid { background: var(--gray-l); color: var(--gray); font-weight: 600; text-decoration: line-through; }
.cal-list { margin-top: 1rem; border-top: 1px solid var(--border); padding-top: .8rem; }
.cal-list-title { font-weight: 700; font-size: .9rem; margin-bottom: .5rem; }
.cal-item { display: flex; align-items: center; gap: .6rem; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 8px; margin-bottom: .4rem; cursor: pointer; font-size: .85rem; flex-wrap: wrap; }
.cal-item:hover { background: var(--blue-xl); }
.cal-tag { font-size: .68rem; font-weight: 700; border-radius: 5px; padding: 1px 6px; }
.cal-tag.p { background: var(--red-l); color: var(--red); }
.cal-tag.v { background: var(--blue-xl); color: var(--blue); }
.cal-item .grow { flex: 1; min-width: 140px; }
.cal-item .sub { color: var(--gray); font-size: .75rem; }
@media (max-width: 640px) {
  .cal-day { min-height: 54px; padding: .2rem; }
  .cal-chip { font-size: 0; padding: 0; width: 100%; height: 7px; }
  .cal-chip.paid { text-decoration: none; }
}
.cal-chip.pl { background: #ede9fe; color: #6d28d9; }
.cal-chip.due { background: var(--amber-l,#fef3c7); color: #92400e; font-weight: 600; }
.cal-tag.pl { background: #ede9fe; color: #6d28d9; }
