{{-- Single exam card row. Shared by every section on the My Exams page so all rows render with the same shape regardless of bucket. Props: $app Application (approved, with post + post.quotas eager-loaded) $attempt ?ExamAttempt — latest attempt for this application, or null $tone CSS modifier class for the left-border accent: is-live | is-upnext | is-soon | is-done | '' (no accent) --}} @php $post = $app->post; $when = $post?->exam_login_enabled_at; $isDone = $attempt && ($attempt->isCompleted() || $attempt->status === 'in_review'); $inProg = $attempt && $attempt->isInProgress(); $isLive = !$isDone && !$inProg && $post && $post->exam_login_enabled && $when && $when->lte(now()); $isUpnext = !$isDone && !$inProg && !$isLive && $when && $when->gt(now()); // Render countdown intensity — anything within 2 hours is "soon". $isSoon = $isUpnext && $when->diffInHours(now()) <= 2; @endphp