Дмитрий Бравиков: Остается посмотреть rod0 и ESC, если это функции, то может в них какие-то "хаки" с прямым доступом в память используются. Сомнительно, но все же.
Попробуйте перед until сделать вывод в файл (дописыванием) переменных N, T, K может еще каких-то, чтобы убедиться что переменная в цикле действительно меняется.
Я к тому что если в gzip жать средствами php, то есть вероятность выдать в поток сначала какие-то символы (например перенос строки в одном из include файлов), потом начать захват контента ob_start и в конце уже вывести сжатый контент. В итоге мы получим некорректный gzip сжатый документ.
Хотя сейчас вроде мигает но не так (мигает из-за разметки, а не из-за ошибки).
Когда я писал ответ - в Хроме у меня четко мигала ошибка, похожая на ошибку в FireFox.
А он в общем-то ни на что не жалуется.
Я не совсем понял механизм возникновения этой ошибки.
Попробуйте открыть "Инструменты разработчика", в них по умолчанию стоит "Disable cache".
И походите по ссылкам - увидите как страничка "моргает" чтоли. В это время (когда она моргает) высвечивается ошибка и пропадает.
Из подозрительного только Transfer-Encoding: chunked - может быть браузер, получая данные "порциями" в какой-то момент интерпретирует их как "не могу раскодировать", но позже получает их целиком. Однако установив эмулацию низкой скорости соединения - ничего не прояснилось.
Ошибку, скрин которой я приложил - у меня выдал FireFox, но повторить не получается.
Алексей Николаев: Я привык считать что "*" берет "по максимуму", а для того чтобы умерить аппетит используется "*?". Возможно это стереотип из других языков.
daminik00: Чтобы работала высота - должен быть контейнер, относительно которого она бы считалась - https://jsfiddle.net/2gz619vt/7/ - без этого у вас как бы документ не на весь экран, а по размеру кнопок.
daminik00: Не заметил ответа, так как он не в моей ветке.
У вас все как написано - так и работает - ширина кнопок ровно 50%, левый отступ 25%.
Что у вас не получается.