Cross-device web framework