.transition-spring { transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); }
    .transition-fast { transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1); }
    .card-lift { transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); }
    .card-lift:hover { transform: translateY(-4px); box-shadow: 0 20px 60px rgba(0,0,0,0.06), 0 8px 20px rgba(0,0,0,0.02); }
    /* Entrance animation — PROGRESSIVE ENHANCEMENT ONLY.
       Visible by default; the fade-up runs only when motion is allowed. See the
       matching note in add_tasks.css: `opacity: 0` by default left the card
       permanently invisible under `prefers-reduced-motion: reduce`. */
    .fade-in-up { opacity: 1; }
    .fade-in-up-1 { animation-delay: 0.1s; }
    .fade-in-up-2 { animation-delay: 0.2s; }
    .fade-in-up-3 { animation-delay: 0.3s; }
    @media (prefers-reduced-motion: no-preference) {
      .fade-in-up { animation: fadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) both; }
    }
    @keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

    /* Task tag pills */
    .tag-pill { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 9999px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; }
    .tag-pill--work { background: #E0E7FF; color: #4338CA; }
    .tag-pill--learn { background: #DBEAFE; color: #2563EB; }
    .tag-pill--sport { background: #FCE7F3; color: #BE185D; }
    .tag-pill--personal { background: #FEF3C7; color: #92400E; }
    .tag-pill--high { background: #FEE2E2; color: #B91C1C; }
    .tag-pill--low { background: #ECFDF5; color: #065F46; }

    /* Task tag pills */
    .dark body { background-color: #0F172A; color: #F1F5F9; }
    .dark .bg-\[\#F8FAFC\] { background-color: #0F172A !important; }
    .dark .bg-white { background-color: #1E293B !important; }
    .dark .border-slate-100\/80, .dark .border-slate-100, .dark .border-slate-200, .dark .border-slate-200\/80 { border-color: #334155 !important; }
    .dark .text-slate-900 { color: #F8FAFC !important; }
    .dark .text-slate-700 { color: #CBD5E1 !important; }
/* #94A3B8 was 3.83:1 and #64748B was 2.85:1 on the #1E293B card background,
   both under the 4.5:1 required for small text. */
.dark .text-slate-500 { color: #CBD5E1 !important; }
.dark .text-slate-400 { color: #B6C2D4 !important; }

    .dark .bg-slate-50 { background-color: #0F172A !important; }
    .dark .bg-slate-100 { background-color: #334155 !important; }