Алексей замер, уставившись в экран ноутбука жены. Квартира утопала в мягком свете настольной лампы, отбрасывающей длинные тени на стопки книг по маркетингу и кружку с остывшим чаем, где лимонная цедра еще плавала ленивыми кругами. Запах свежесваренного кофе витал в воздухе, смешиваясь с легким ароматом ее духов – сандал и ваниль, который всегда напоминал ему о их первой встрече в маленьком кафе на Арбате. Он всего лишь хотел проверить почту, пока она в душе, но файл "alibi.py" открылся сам, как будто поджидал его. Курсор мигал над строками кода на Python, а комментарии врезались в сознание острее ножа: "// Функция: отправка фиктивных SMS от имени мужа на номер любовника для создания алиби". Ниже – "// Удаленное стирание истории звонков в определенные даты". Руки Алексея похолодели, пальцы замерли над клавиатурой. Он не знал, что Маша умеет программировать. Она всегда говорила, что ее работа – сплошной креатив, дизайн баннеров и посты в соцсетях. А это... это был цифровой призрак ее двойной жизни.
Сердце заколотилось, эхом отдаваясь в ушах. Он прокрутил код вверх: импорты библиотек для SMS-шлюзов, API телефонии, таймеры. Все аккуратно, с отступами, как у профессионала. "Кто ты такая?" – подумал он, и пальцы сами потянулись к кнопке запуска. Нет, стоп. Дверь ванной скрипнула, пар вырвался наружу, неся с собой запах геля для душа с ароматом лаванды. Маша вышла, завернутая в белое полотенце, волосы мокрые, капли стекают по плечам. Ее глаза, обычно теплые, карие, с золотыми искорками, на миг расширились, увидев его у ноутбука.
– Леш, ты что там копаешь? – голос ровный, но в нем скользнула нотка тревоги, которую она тут же спрятала за улыбкой. Она подошла ближе, босиком по паркету, ступни оставляли влажные следы.
Алексей резко захлопнул ноутбук, но поздно – она все видела. Его лицо горело, горло сжалось. "Скажи, что это шутка", – молил он про себя.
– Просто... почту проверял. А это что? – он кивнул на ноутбук, стараясь звучать спокойно, но голос предательски дрогнул.
Маша замерла, полотенце чуть соскользнуло, она поправила его быстрым движением. Ее губы сжались в тонкую линию, глаза забегали по комнате – на окно с видом на заснеженный двор, на их общую фотографию на полке, где они улыбаются на море в Турции. Воздух между ними сгустился, как перед грозой.
– Леш, это... работа. Клиент попросил скрипт для теста безопасности. Ничего такого.
Он рассмеялся, но смех вышел горьким, хриплым. Встал, отодвинув стул с лязгом по полу.
– Тест безопасности? Отправка SMS от моего имени любовнику? Маша, ты серьезно? Кто он?
Она отвернулась, подошла к окну, прижалась лбом к холодному стеклу. Снег за окном падал пушистыми хлопьями, уличные фонари размножали огни в лужах. В комнате повисла тишина, прерываемая только тиканьем часов на стене – подарок от ее родителей на свадьбу.
– Никто. Это паранойя. Давай поговорим нормально.
Но Алексей уже не слушал. Он схватил телефон, открыл историю звонков. Последние недели – все чисто, подозрительно чисто. Вспомнил, как она поздно возвращалась с "работы", как телефон всегда на беззвучном, как иногда вздрагивала от уведомлений. Вчера вечером, пока она спала, он заметил странный запах – не ее духи, а что-то мужское, одеколон с ноткой кедра. А теперь этот код. Все сошлось.
Они сели за кухонный стол, напротив друг друга. Чашки с чаем остыли окончательно. Маша сцепила пальцы, ногти – ярко-красные, только что сделанный маникюр – побелели от давления.
– Хорошо, Леш. Я расскажу. Но обещай, не кричи.
Он кивнул, хотя внутри бушевала буря. Она начала тихо, глядя в стол.
– Это началось полгода назад. Ты помнишь, как я потеряла проект? Большой заказ ушел конкурентам. Я была в отчаянии. А потом встретила Диму на фриланс-форуме. Он IT-шник, помог с кодом для одного клиента. Стал советовать, поддерживать. Переписка... ну, переросла.
Алексей почувствовал, как мир рушится. Дима. Имя ударило, как пощечина. Он представил их вместе – в каком-нибудь кафе, или хуже, в отеле. Но код... она программировала алиби. Умная, предусмотрительная.
– И этот скрипт? Ты стирала следы?
Маша кивнула, слезы блеснули в глазах, но она сдержалась, вытерла щеку тыльной стороной ладони.
– Да. Не хотела, чтобы ты узнал. SMS – чтобы он думал, что я с тобой, когда на самом деле... Леш, прости. Это ошибка. Дима – просто отдушина. Ты всегда в своих поездках, проектах. Я одна.
Он встал, прошелся по кухне, чувствуя, как пол уходит из-под ног. Запах ее шампуня теперь казался удушливым. Вспомнил их свадьбу – она в белом платье, смех гостей, тосты. Пять лет. А под этим – скрипт на Python.
– Алиби для него или для меня? Ты любишь его?
Она покачала головой, резко.
– Нет! Это была иллюзия контроля. Я сама себя запутала. Удалила все, вчера. Скрипт – эксперимент, никогда не запускала по-настоящему.
Но он проверил. Открыл ноутбук снова, несмотря на ее протесты. Запустил трассировку – логи показывали активацию. Три месяца назад, ночь на 15-е. Тогда она сказала, что засиделась на работе. Сердце сжалось в комок.
Весь вечер они говорили. Голоса то повышались, то срывались на шепот. Она плакала, уткнувшись в его плечо, он гладил ее волосы, но внутри – пустота. За окном снег валил стеной, заглушая звуки города. Москва затихла, как будто подождет их развязки.
Ночью Алексей не спал. Лежал, глядя в потолок, слушая ее ровное дыхание. Утром она ушла на работу рано, оставив записку: "Поговорим вечером. Люблю". Он сидел с ноутбуком, разбирая код строка за строкой. Понял, как он работает: поддельные сообщения с его номера, стирание метаданных через облако. Гениально и страшно. Решил – позвонит Диме. Номер нашел в логах.
Трубку взял молодой голос, уверенный.
– Алло?
– Дима? Это Алексей, муж Маши.
Пауза. Дыхание участилось.
– Что? Откуда номер?
– Не важно. Знаю про вас. И про скрипты.
Смех, нервный.
– Бред. Она сама все придумала.
Но голос выдал – страх. Алексей не кричал, говорил спокойно, ледяным тоном.
– Закончи это. Больше не звони. Иначе покажу все – логи, код. Полиция разберется с хакерством.
Повесил. Руки дрожали, но облегчение пришло волной.
Вечером Маша вернулась с цветами – розы, алые, как ее вина. Глаза красные, опухшие.
– Дима позвонил. Сказал, все кончено. Леш, прости меня. Я напишу код, чтобы стереть все следы навсегда. Для нас.
Они обнялись. Не страстно, но крепко. За окном таял снег, капли стекали по стеклу, как слезы. Алексей закрыл ноутбук навсегда. Но в глубине души знал: цифровые тени не исчезают полностью. Иногда, открывая ее компьютер, он ловил себя на мысли – а вдруг новый скрипт?
Прошли недели. Маша изменилась – больше дома, меньше телефона. Они гуляли по парку Горького, держась за руки, ели мороженое, смеялись над мелочами. Однажды вечером она показала новый код – приложение для напоминаний о совместных планах. "Для нас", – сказала она, улыбаясь искренне.
Алексей поверил. Почти. Но в тихие ночи, когда город засыпал под гул машин вдали, он вспоминал тот файл. Двойная жизнь – не только ее, но и его теперь. Бдительность стала новой нормой. Любовь выжила, но с привкусом кода – четкого, безжалостного, как Python.
Они поехали на выходные за город, в домик у озера. Лес шумел, вода плескалась о берег, запах хвои кружил голову. Вечером у костра Маша прижалась к нему.
– Леш, я счастлива. Спасибо, что не ушел.
Он поцеловал ее в макушку.
– Мы справимся. Главное – правда.
Но в кармане телефон пискнул – уведомление от ее скрипта. Она забыла отключить. "Алиби обновлено". Сердце екнуло. Или показалось? Он улыбнулся в темноту. Пусть. Пока что.
(Продолжение разворачивается в их тихой борьбе с тенями прошлого. Маша пишет новый код – для защиты семьи. Алексей учится доверять. Но однажды...)
Нет, это конец. Они нашли баланс. В реальной жизни коды ломаются, но сердца чинятся. Медленно, с усилиями. И Москва, с ее снегами и огнями, стала свидетелем их новой главы.