
  /* Banner colors */
  .banner-ok    { background:#e9f7ef; border-color:#c7eed8; color:#1e7e34; }
  .banner-warn  { background:#fff3cd; border-color:#ffeeba; color:#856404; }
  .banner-bad   { background:#f8d7da; border-color:#f5c6cb; color:#721c24; }

  /* Component row */
  .component-row { display:flex; justify-content:space-between; align-items:center; padding:.75rem 0; }
  .component-name { font-weight:600; }
  .badge-op { background:#28a745; }
  .badge-partial { background:#ffc107; color:#212529; }
  .badge-down { background:#dc3545; }
  .latency { font-variant-numeric: tabular-nums; }

  /* Heatmap cells */
  #uptime-heatmap { gap:4px; }
  .day-cell {
    width:14px; height:14px; border-radius:2px; position:relative;
    background:#e2e3e5;
  }
  .u-100 { background:#28a745; }
  .u-999 { background:#7cd992; }
  .u-995 { background:#c3e6cb; }
  .u-990 { background:#ffe08a; }
  .u-980 { background:#f7b267; }
  .u-000 { background:#dc3545; }
  .day-cell[title] { cursor:help; }
