    /* ── Loading ─────────────────────────────────────────────── */
    .loading-overlay {
      position: absolute;
      inset: 0;
      background: color-mix(in srgb, var(--color-bg) 88%, transparent);
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 16px;
      z-index: 40;
    }
    .loading-heading {
      display: flex;
      align-items: center;
      gap: 12px;
      font-family: var(--font-heading); font-weight: var(--font-heading-weight);
      font-size: 18px;
      color: var(--color-text);
    }
    .spinner {
      width: 22px; height: 22px;
      border: 2px solid var(--color-divider);
      border-top-color: var(--color-accent);
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
      flex-shrink: 0;
    }
    @keyframes spin { to { transform: rotate(360deg); } }
    .loading-skeleton { display: flex; flex-direction: column; gap: 8px; width: min(360px, 70vw); }
    .loading-skeleton div {
      height: 22px;
      background: color-mix(in srgb, var(--color-text) 9%, transparent);
      animation: pulse 1.5s ease-in-out infinite;
    }
    .loading-skeleton div:nth-child(1) { width: 100%; }
    .loading-skeleton div:nth-child(2) { width: 82%; animation-delay: .15s; }
    .loading-skeleton div:nth-child(3) { width: 64%; animation-delay: .3s; }
    @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

    /* ── Leerzustand (Tag ohne Jobs) ────────────────────────────── */
    .day-empty {
      position: absolute;
      inset: 0;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 10px;
      color: var(--color-text-faint);
      font-size: 13px;
      text-align: center;
      padding: 20px;
    }

