    private function allowedAbsenceDates(): array
    {
        $todayStr = local_date(utc_now(), 'Y-m-d');
        try { $today = new \DateTimeImmutable($todayStr); } catch (\Throwable $e) { $today = new \DateTimeImmutable(); }

        $sy = (string)($this->schoolYear ?? '');
        $startYear = null; $endYear = null;
        if (preg_match('/^(\d{4})\D+(\d{4})$/', $sy, $m)) {
            $startYear = (int)$m[1];
            $endYear   = (int)$m[2];
        } else {
            $cy = (int)date('Y');
            $cm = (int)date('n');
            if ($cm >= 9) { // Sep-Dec
                $startYear = $cy;
                $endYear   = $cy + 1;
            } else {
                $startYear = $cy - 1;
                $endYear   = $cy;
            }
        }

        try {
            $start = new \DateTimeImmutable(sprintf('%04d-09-01', $startYear));
            $end   = new \DateTimeImmutable(sprintf('%04d-05-31', $endYear));
        } catch (\Throwable $e) {
            return [];
        }

        if ($start < $today) {
            $start = $today;
        }

        $dates = [];
        for ($cursor = $start; $cursor <= $end; $cursor = $cursor->modify('+1 day')) {
            if ((int)$cursor->format('w') === 0) { // Sunday
                $dates[] = $cursor->format('Y-m-d');
            }
        }
        return $dates;
    }

    /**
     * Admin self-service absence/vacation page (same features as teacher page)
     */
