/* Status badges */
.badge { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 9999px; font-size: .75rem; font-weight: 600; white-space: nowrap; }
.badge-expired  { background: #fee2e2; color: #7f1d1d; }
.badge-critical { background: #fee2e2; color: #dc2626; }
.badge-warning  { background: #ffedd5; color: #c2410c; }
.badge-notice   { background: #fef9c3; color: #a16207; }
.badge-info     { background: #e0f2fe; color: #0369a1; }
.badge-ok       { background: #dcfce7; color: #15803d; }
.badge-unknown  { background: #f1f5f9; color: #475569; }

/* Row tinting */
tr.row-expired  td { background: #fff5f5; }
tr.row-critical td { background: #fff8f8; }
tr.row-warning  td { background: #fffbf5; }
tr.row-notice   td { background: #fffef0; }
tr.row-info     td { background: #f0f9ff; }
tr.row-ok       td { background: #f0fdf4; }

/* Calendar band colors */
.band-expired  { background: #ef4444; }
.band-critical { background: #f97316; }
.band-warning  { background: #f59e0b; }
.band-notice   { background: #eab308; }
.band-info     { background: #3b82f6; }
.band-ok       { background: #22c55e; }
.band-unknown  { background: #94a3b8; }

/* Map cell colors */
.map-expired  { background: #fca5a5; border-color: #ef4444; }
.map-critical { background: #fdba74; border-color: #f97316; }
.map-warning  { background: #fde68a; border-color: #f59e0b; }
.map-notice   { background: #fef08a; border-color: #eab308; }
.map-info     { background: #bae6fd; border-color: #3b82f6; }
.map-ok       { background: #bbf7d0; border-color: #22c55e; }
.map-renewing { background: #ddd6fe; border-color: #7c3aed; }
.map-none     { background: #f8fafc; border-color: #e2e8f0; color: #94a3b8; }

/* Month-grid calendar */
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); border-bottom: 1px solid #f1f5f9; }
.cal-grid:last-child { border-bottom: none; }
.cal-grid-header { background: #f8fafc; }
.cal-dow { padding: 6px 4px; text-align: center; font-size: .7rem; font-weight: 600; color: #94a3b8; text-transform: uppercase; letter-spacing: .04em; }
.cal-cell { min-height: 90px; padding: 4px 5px; border-right: 1px solid #f1f5f9; overflow: hidden; vertical-align: top; }
.cal-cell:last-child { border-right: none; }
.cal-cell-muted { background: #f8fafc; }
.cal-cell-today { background: #eff6ff; }
.cal-day-num { font-size: .75rem; font-weight: 600; color: #64748b; margin-bottom: 3px; width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; border-radius: 9999px; }
.cal-day-today { background: #3b82f6; color: #fff; }
.cal-chip { display: block; font-size: .6rem; font-weight: 600; color: #fff; border-radius: 3px; padding: 1px 4px; margin-bottom: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none; line-height: 1.5; }
.cal-chip:hover { opacity: .8; }
.cal-chip-more { display: block; font-size: .6rem; color: #94a3b8; padding: 1px 2px; }

/* Print */
@media print {
  nav, .no-print { display: none !important; }
  body { font-size: 11px; }
  .print-break { page-break-before: always; }
}

/* Flash messages */
.flash-success { background: #dcfce7; color: #15803d; border: 1px solid #bbf7d0; }
.flash-error   { background: #fee2e2; color: #b91c1c; border: 1px solid #fecaca; }
