/* ========== 日历模块 ========== */
.cal-container { display: flex; flex-direction: column; gap: 1rem; }
.cal-header { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 0; flex-wrap: wrap; gap: 0.5rem; }
.cal-nav { display: flex; gap: 0.5rem; align-items: center; }
.cal-nav button { padding: 0.4rem 0.7rem; }
.cal-title { font-size: 1.1rem; font-weight: 600; min-width: 140px; text-align: center; }
.cal-view-switch { display: flex; gap: 0.25rem; }
.cal-view-btn { padding: 0.3rem 0.6rem; border-radius: var(--tw-radius-sm); background: var(--tw-bg-secondary); border: 1px solid var(--tw-border); font-size: 0.8rem; cursor: pointer; }
.cal-view-btn.active { background: var(--tw-accent); color: #fff; border-color: var(--tw-accent); }

.cal-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; margin-bottom: 4px; }
.cal-weekdays span { text-align: center; font-size: 0.75rem; font-weight: 600; color: var(--tw-text-muted); padding: 0.3rem 0; }

.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-cell { position: relative; min-height: 60px; padding: 0.3rem; border-radius: var(--tw-radius-sm); border: 1px solid var(--tw-border); background: var(--tw-bg-card); cursor: pointer; transition: all 0.15s; }
.cal-cell:hover { background: var(--tw-bg-secondary); border-color: var(--tw-accent); }
.cal-cell.empty { background: transparent; border-color: transparent; cursor: default; }
.cal-cell.today { border-color: var(--tw-accent); box-shadow: 0 0 0 1px var(--tw-accent); }
.cal-cell.selected { background: var(--tw-accent); color: #fff; }
.cal-cell.selected .cal-date { color: #fff; }
.cal-date { font-size: 0.8rem; font-weight: 600; margin-bottom: 2px; }
.cal-dots { display: flex; gap: 2px; flex-wrap: wrap; }
.cal-dot { width: 6px; height: 6px; border-radius: 50%; }
.cal-dot-red { background: #ef4444; }
.cal-dot-green { background: #10b981; }
.cal-dot-blue { background: #3b82f6; }
.cal-dot-orange { background: #f59e0b; }

.cal-day-panel { padding: 0.8rem; border-radius: var(--tw-radius); background: var(--tw-bg-secondary); margin-top: 0.5rem; }
.cal-day-panel h4 { margin-bottom: 0.5rem; }
.cal-event-item { display: flex; align-items: center; gap: 0.4rem; padding: 0.3rem 0; font-size: 0.85rem; }
.cal-event-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

.cal-year { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; }
.cal-year-month { text-align: center; }
.cal-year-month h5 { font-size: 0.8rem; margin-bottom: 0.2rem; }
.cal-year-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.cal-year-cell { width: 100%; aspect-ratio: 1; border-radius: 1px; background: var(--tw-bg-secondary); font-size: 0.6rem; display: flex; align-items: center; justify-content: center; }

.cal-drag-hint { font-size: 0.75rem; color: var(--tw-text-muted); margin-top: 0.3rem; }

@media (max-width: 768px) {
  .cal-cell { min-height: 44px; padding: 0.15rem; }
  .cal-date { font-size: 0.7rem; }
  .cal-dot { width: 4px; height: 4px; }
  .cal-year { grid-template-columns: repeat(2, 1fr); }
}
