Write validateFiles(files, { maxBytes, accept, maxCount }). Each file is { name, size, type }. accept is a list such as ["image/*", ".pdf", "text/plain"]: a leading dot matches the file extension (case-insensitive), a trailing /* matches the type prefix, anything else must equal the type. An empty or missing list allows everything. Return { accepted, rejected }, where rejected holds { name, reason }. Check in this order and report the first failure: "wrong type", "too large", then "too many files". Only accepted files count toward maxCount.