{
  "id": "case-sdvig",
  "title": "СДВИГ — фестиваль независимой визуальной культуры",
  "shortTitle": "СДВИГ / айдентика события",
  "status": "Учебный концепт · рабочий комплект",
  "date": "2026-10-12",
  "discipline": [
    "Графический дизайн",
    "Коммуникационный дизайн",
    "Айдентика",
    "Информационный дизайн",
    "Подготовка печатных макетов"
  ],
  "fictional": true,
  "realClient": false,
  "realUsersTested": 0,
  "personalContributionToConfirm": true,
  "description": "Выразительная система для вымышленного культурного события: от модульного принципа и типографики до афиш, программы, навигации и билета. 14 редактируемых артбордов, SVG и векторные PDF.",
  "brief": {
    "problem": "Создать узнаваемый образ независимого фестиваля, который работает и в эмоциональном анонсе, и в утилитарной программе, и на навигации. Человек должен различать что происходит, когда и куда идти.",
    "scope": "Айдентика, коммуникационная система, адаптация в 9 типах носителей и рекомендации по дальнейшей проверке. Без сайта регистрации, реальных партнёров и коммерческих показателей.",
    "constraints": [
      "Вымышленное событие, без реальных спикеров и спонсоров.",
      "Редактируемый вектор и кириллическая типографика.",
      "Одна воспроизводимая графическая идея; ограниченная палитра.",
      "Информация на навигации важнее фирменного декоративного приёма.",
      "Печатные страницы с заданным trim и 3 мм bleed; RGB-профиль, согласование с типографией впереди."
    ],
    "successCriteria": [
      "На главной афише видны имя, формат, дата и место.",
      "Система узнаётся через знак, типографику и правило смещения даже при смене цвета.",
      "В программе время и место находятся по повторяющейся структуре.",
      "Навигация имеет однозначную стрелку и подпись.",
      "Исходники не сведены к картинкам; текст остаётся текстом."
    ]
  },
  "audienceHypotheses": [
    {
      "audience": "Начинающие и практикующие визуальные дизайнеры",
      "job": "Выбрать содержательное событие и понять, что можно сделать руками.",
      "need": "Темы, формат участия, конкретное время и место.",
      "evidence": "Рабочая гипотеза из учебного брифа; интервью не проводились."
    },
    {
      "audience": "Посетители, которым интересна современная визуальная культура",
      "job": "Найти понятную точку входа, не чувствуя необходимости быть профессионалом.",
      "need": "Простая терминология, ясный маршрут и доступная программа.",
      "evidence": "Рабочая гипотеза из учебного брифа; интервью не проводились."
    },
    {
      "audience": "Команда условного фестиваля",
      "job": "Быстро выпускать новые анонсы в одном стиле.",
      "need": "Правило сетки, ограниченные варианты и шаблоны с явными зонами информации.",
      "evidence": "Сценарий производства смоделирован; реальной команды-заказчика нет."
    }
  ],
  "visualIdea": "Сдвиг точки зрения переводится в конкретное действие: смысловой блок перемещается на один модуль сетки. Три прямоугольные ступени знака связывают идею, композицию и навигационные стрелки.",
  "designRules": [
    {
      "rule": "Шесть колонок и шаг в одну колонку",
      "implementation": "В афишах шириной 840 единиц рабочее поле 744, поля 48, шаг 124. Следующий выразительный блок начинается на x=48+124. В квадрате шаг масштабируется до 158,67, в story до 156.",
      "why": "Приём можно воспроизвести и проверить численно. Не возникает случайных отступов в каждом новом формате.",
      "limit": "Информационная программа и навигация имеют собственные фиксированные колонки; декоративное смещение там не должно замедлять чтение."
    },
    {
      "rule": "Два режима системы",
      "implementation": "Выразительный: крупные строки и одно смещение. Информационный: время, название, описание и место по повторяющемуся шаблону.",
      "why": "Плакату нужно привлекать внимание, программе — помогать искать. Одна визуальная метафора не заменяет архитектуру информации.",
      "limit": "Нельзя слепо переносить разорванное название и крупные модули в расписание."
    },
    {
      "rule": "Один доминирующий тезис",
      "implementation": "На каждом анонсе есть одна основная фраза; даты и место сгруппированы отдельно; программа разделена тонкими линиями.",
      "why": "Визуальная иерархия создаётся масштабом, весом, близостью и повторением.",
      "limit": "Реальную скорость прочтения нужно проверить; она не выведена из красоты композиции."
    },
    {
      "rule": "Контрастные пары, четыре основных цвета",
      "implementation": "Синий #163BF1, кислотный #E7FE48, тёплая бумага #F3F0E7, чёрный #161616. Цветовой акцент не используется в одиночку как код направления.",
      "why": "Синий даёт связность, кислотный выделяет сообщение, бумага разгружает информационные носители.",
      "limit": "Кислотный на бумажном фоне не использовать для текста. RGB-палитра не гарантирует неоновый эффект при печати CMYK."
    },
    {
      "rule": "Manrope 400 / 600 / 800",
      "implementation": "Кириллица; 800 для ключевого сообщения, 600 для метаданных, 400 для описаний. Только три начертания.",
      "why": "Один шрифт сохраняет характер без конфликта гарнитур. Лицензия OFL допускает распространение с комплектом.",
      "limit": "Словесный знак — типографическая композиция на базе Manrope, а не новый авторский шрифт."
    },
    {
      "rule": "Знак из трёх модулей",
      "implementation": "Каждая полоса 3u × u, шаг по x = u, шаг по y = 1,5u. Итоговая ширина 5u и высота 4u.",
      "why": "Геометрия редактируется базовыми фигурами, масштабируется без растра и повторяет главное композиционное правило.",
      "limit": "Минимальный физический размер ещё не подтверждён печатной пробой."
    }
  ],
  "appliedPatterns": [
    {
      "name": "Контраст и иерархия",
      "decision": "Размер и жирность отделяют ключевой тезис от дат и пояснений.",
      "artifact": "poster-01-festival",
      "proof": "Разные текстовые уровни в SVG; измеренные контрастные пары.",
      "notClaimed": "Не утверждается рост внимания или регистрации."
    },
    {
      "name": "Близость и повторение",
      "decision": "В расписании описание и место расположены рядом с названием; между событиями — разделитель.",
      "artifact": "program-day-1",
      "proof": "Одинаковая структура пяти строк в двух программах.",
      "notClaimed": "Нет пользовательского теста поиска события."
    },
    {
      "name": "Распознавание вместо догадки",
      "decision": "Стрелки и пиктограммы дублируются словами: вход, галерея, мастерская.",
      "artifact": "sign-directions",
      "proof": "Векторный макет со словесными обозначениями.",
      "notClaimed": "Не заявлена валидированная система общественной навигации."
    },
    {
      "name": "Согласованность и адаптивное правило",
      "decision": "Шаг смещения масштабируется между форматами; информационные носители сохраняют своё выравнивание.",
      "artifact": "identity-system",
      "proof": "14 артбордов из единой модели scene JSON.",
      "notClaimed": "Не выдаётся за универсальную формулу композиции."
    }
  ],
  "journey": [
    {
      "stage": "Заметить",
      "question": "Что это и почему мне интересно?",
      "touchpoint": "Афиша / квадратный анонс",
      "artifact": "poster-01-festival",
      "barrierHypothesis": "Название читается в две строки; часть аудитории может не собрать его сразу.",
      "verificationPlanned": "Показать афишу на 5 секунд пяти людям, спросить название и формат без подсказки."
    },
    {
      "stage": "Выбрать",
      "question": "Что я смогу посмотреть и попробовать?",
      "touchpoint": "Тематические афиши / story",
      "artifact": "poster-02-workshop",
      "barrierHypothesis": "Яркий стиль может восприниматься как событие только для профессионалов.",
      "verificationPlanned": "Попросить новичка пересказать предложение мастерской и объяснить, нужен ли опыт."
    },
    {
      "stage": "Спланировать",
      "question": "Во сколько прийти и что успею?",
      "touchpoint": "Двухдневная программа",
      "artifact": "program-day-1",
      "barrierHypothesis": "Время окончания и длительности теперь указаны; понятность планирования требует пользовательской проверки.",
      "verificationPlanned": "Проверить поиск времени и планирование двух активностей в готовой программе."
    },
    {
      "stage": "Сориентироваться",
      "question": "Где вход и нужный зал?",
      "touchpoint": "Стрелки / бейдж",
      "artifact": "sign-directions",
      "barrierHypothesis": "Реальная линия обзора и поток людей могут скрыть надписи.",
      "verificationPlanned": "Распечатать навигацию и пройти маршрут в реальном помещении; проверить направление на каждой развилке."
    },
    {
      "stage": "Унести идею",
      "question": "Что запомнить и попробовать после события?",
      "touchpoint": "Программа / билет",
      "artifact": "ticket-demo",
      "barrierHypothesis": "Нет продолжения коммуникации после посещения.",
      "verificationPlanned": "Добавить полезную памятку с одним творческим заданием; ссылку только после создания реального адресата."
    }
  ],
  "alternativesRejected": [
    {
      "option": "Градиенты и свободные органические пятна",
      "reason": "Не выражали именно сдвиг, создавали зависимость от декоративных уникальных иллюстраций; труднее воспроизвести на навигации.",
      "evidenceType": "Дизайнерское решение; A/B-теста нет."
    },
    {
      "option": "Смещение каждой строки текста",
      "reason": "Появлялся рваный левый край и терялась предсказуемость поиска. В финале смещаются смысловые блоки, а не весь текст.",
      "evidenceType": "Правило реализации, отражённое в макетах."
    },
    {
      "option": "Каждый тип активности кодируется только цветом",
      "reason": "Такое решение не объясняло бы направление без легенды и снижало бы доступность. В финале оставлены подписи и понятные стрелки.",
      "evidenceType": "Экспертная оценка, без аудитории."
    },
    {
      "option": "Один шаблон на все форматы",
      "reason": "Плакатная композиция ломала бы программу. В финале предусмотрены выразительный и информационный режимы.",
      "evidenceType": "Два реализованных режима."
    }
  ],
  "testsActuallyDone": {
    "date": "2026-10-12",
    "automatedChecksPassed": 44,
    "automatedChecksTotal": 44,
    "checks": [
      "Границы всех 373 примитивов в 14 артбордах.",
      "XML всех SVG, количество текстовых и геометрических слоёв.",
      "PDF: наличие текстовых слоёв и встроенных шрифтов, отсутствие изображений в работах.",
      "TrimBox и 3 мм BleedBox печатных носителей.",
      "Контраст пяти разрешённых пар; все превышают 4,5:1.",
      "Проверка кириллических текстов и дат в программе.",
      "Визуальный просмотр контактного листа всех носителей и отдельных крупных рендеров."
    ],
    "report": "assets/sdvig/evidence/qa-report.json"
  },
  "artifacts": [
    {
      "id": "poster-01-festival",
      "title": "Главная афиша",
      "purpose": "Задача: быстро сообщить имя события, его характер и даты. Крупная двухстрочная композиция и фиксированный информационный подвал.",
      "width": 840,
      "height": 1188,
      "type": "Print",
      "preview": "assets/sdvig/previews/poster-01-festival.png",
      "svg": "assets/sdvig/svg/poster-01-festival.svg",
      "pdf": "assets/sdvig/pdf/poster-01-festival.pdf",
      "print": {
        "trimMm": [
          420,
          594
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 19
    },
    {
      "id": "poster-02-workshop",
      "title": "Тематическая афиша мастерских",
      "purpose": "Задача: объяснить практический формат. Сдвигаются и слова, и собираемые модули; время мастерской вынесено в отдельную группу.",
      "width": 840,
      "height": 1188,
      "type": "Print",
      "preview": "assets/sdvig/previews/poster-02-workshop.png",
      "svg": "assets/sdvig/svg/poster-02-workshop.svg",
      "pdf": "assets/sdvig/pdf/poster-02-workshop.pdf",
      "print": {
        "trimMm": [
          420,
          594
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 24
    },
    {
      "id": "poster-03-talks",
      "title": "Тематическая афиша дискуссий",
      "purpose": "Задача: продать интерес через конкретные вопросы. Три смысловых блока повторяют движение знака.",
      "width": 840,
      "height": 1188,
      "type": "Print",
      "preview": "assets/sdvig/previews/poster-03-talks.png",
      "svg": "assets/sdvig/svg/poster-03-talks.svg",
      "pdf": "assets/sdvig/pdf/poster-03-talks.pdf",
      "print": {
        "trimMm": [
          420,
          594
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 19
    },
    {
      "id": "social-square",
      "title": "Анонс в ленте",
      "purpose": "Смысл сохраняется при квадратном кадрировании: короткий тезис, даты, город и три формата активности.",
      "width": 1080,
      "height": 1080,
      "type": "Digital",
      "preview": "assets/sdvig/previews/social-square.png",
      "svg": "assets/sdvig/svg/social-square.svg",
      "pdf": "assets/sdvig/pdf/social-square.pdf",
      "print": {
        "trimMm": null,
        "bleedMm": 0,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 17
    },
    {
      "id": "social-story",
      "title": "Вертикальный анонс",
      "purpose": "Ключевой контент размещён между y=250 и y=1620; верх и низ оставлены свободными. Это проектное допущение о безопасных зонах, не гарантия для любой платформы.",
      "width": 1080,
      "height": 1920,
      "type": "Digital",
      "preview": "assets/sdvig/previews/social-story.png",
      "svg": "assets/sdvig/svg/social-story.svg",
      "pdf": "assets/sdvig/pdf/social-story.pdf",
      "print": {
        "trimMm": null,
        "bleedMm": 0,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 24
    },
    {
      "id": "program-day-1",
      "title": "Программа первого дня",
      "purpose": "Информационный режим системы: постоянная колонка времени, событие, краткое описание, место. Все группы слева выровнены для поиска.",
      "width": 840,
      "height": 594,
      "type": "Print",
      "preview": "assets/sdvig/previews/program-day-1.png",
      "svg": "assets/sdvig/svg/program-day-1.svg",
      "pdf": "assets/sdvig/pdf/program-day-1.pdf",
      "print": {
        "trimMm": [
          297,
          210
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 43
    },
    {
      "id": "program-day-2",
      "title": "Программа второго дня",
      "purpose": "Та же структура адаптирована под новую последовательность; различение дней текстом и номером, а не одним цветом.",
      "width": 840,
      "height": 594,
      "type": "Print",
      "preview": "assets/sdvig/previews/program-day-2.png",
      "svg": "assets/sdvig/svg/program-day-2.svg",
      "pdf": "assets/sdvig/pdf/program-day-2.pdf",
      "print": {
        "trimMm": [
          297,
          210
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 43
    },
    {
      "id": "sign-entrance",
      "title": "Навигация ко входу",
      "purpose": "Крупное направление и слово «Вход». Дополнительная информация вторична. Размещение и расстояния требуют теста в помещении.",
      "width": 1200,
      "height": 600,
      "type": "Print",
      "preview": "assets/sdvig/previews/sign-entrance.png",
      "svg": "assets/sdvig/svg/sign-entrance.svg",
      "pdf": "assets/sdvig/pdf/sign-entrance.pdf",
      "print": {
        "trimMm": [
          600,
          300
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 15
    },
    {
      "id": "sign-directions",
      "title": "Навигация на развилке",
      "purpose": "Две строки содержат стрелку, назначение и этаж. Нельзя переносить цвета как единственную навигационную кодировку.",
      "width": 1200,
      "height": 600,
      "type": "Print",
      "preview": "assets/sdvig/previews/sign-directions.png",
      "svg": "assets/sdvig/svg/sign-directions.svg",
      "pdf": "assets/sdvig/pdf/sign-directions.pdf",
      "print": {
        "trimMm": [
          600,
          300
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 22
    },
    {
      "id": "badge-guest",
      "title": "Бейдж посетителя",
      "purpose": "Тип допуска читается крупно; зона под крепление обозначена визуально, без утверждения готового штампа/высечки.",
      "width": 600,
      "height": 900,
      "type": "Print",
      "preview": "assets/sdvig/previews/badge-guest.png",
      "svg": "assets/sdvig/svg/badge-guest.svg",
      "pdf": "assets/sdvig/pdf/badge-guest.pdf",
      "print": {
        "trimMm": [
          100,
          150
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 13
    },
    {
      "id": "ticket-demo",
      "title": "Демонстрационный билет",
      "purpose": "Отделены входная информация и контрольный корешок. Номер имеет префикс DEMO; QR-код не имитируется.",
      "width": 1000,
      "height": 400,
      "type": "Print",
      "preview": "assets/sdvig/previews/ticket-demo.png",
      "svg": "assets/sdvig/svg/ticket-demo.svg",
      "pdf": "assets/sdvig/pdf/ticket-demo.pdf",
      "print": {
        "trimMm": [
          200,
          80
        ],
        "bleedMm": 3,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 31
    },
    {
      "id": "identity-system",
      "title": "Правило, палитра и типографическая шкала",
      "purpose": "Показывает, как единый принцип управляет носителями, а не только отдельным плакатом.",
      "width": 1600,
      "height": 1200,
      "type": "System",
      "preview": "assets/sdvig/previews/identity-system.png",
      "svg": "assets/sdvig/svg/identity-system.svg",
      "pdf": "assets/sdvig/pdf/identity-system.pdf",
      "print": {
        "trimMm": null,
        "bleedMm": 0,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 45
    },
    {
      "id": "icons-system",
      "title": "Набор пиктограмм",
      "purpose": "Шесть прямоугольных пиктограмм сохраняют общий шаг. Каждая сопровождается словом; понимание незнакомых иконок не считается проверенным.",
      "width": 1200,
      "height": 800,
      "type": "System",
      "preview": "assets/sdvig/previews/icons-system.png",
      "svg": "assets/sdvig/svg/icons-system.svg",
      "pdf": "assets/sdvig/pdf/icons-system.pdf",
      "print": {
        "trimMm": null,
        "bleedMm": 0,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 44
    },
    {
      "id": "logo-lockups",
      "title": "Знак, слово и инверсии",
      "purpose": "Три ступени знака повторяют смещение композиции. Слово набрано Manrope; это не авторский шрифт.",
      "width": 1200,
      "height": 600,
      "type": "System",
      "preview": "assets/sdvig/previews/logo-lockups.png",
      "svg": "assets/sdvig/svg/logo-lockups.svg",
      "pdf": "assets/sdvig/pdf/logo-lockups.pdf",
      "print": {
        "trimMm": null,
        "bleedMm": 0,
        "colorSpace": "RGB",
        "pressReady": false
      },
      "editable": true,
      "nodeCount": 14
    }
  ],
  "cover": "assets/sdvig/previews/cover.png",
  "sceneFile": "assets/sdvig/design-scenes.json",
  "source": "assets/sdvig/source/build.py",
  "readme": "assets/sdvig/README.md",
  "pdfCollection": "assets/sdvig/pdf/SDVIG-all-artworks.pdf",
  "programPdf": "assets/sdvig/pdf/SDVIG-program.pdf",
  "assetPack": "assets/sdvig/SDVIG-source-pack.zip",
  "sources": [
    {
      "label": "Manrope / оригинальный проект",
      "url": "https://github.com/googlefonts/manrope",
      "usedFor": "Шрифт, авторство и происхождение гарнитуры; не визуальный референс для айдентики."
    },
    {
      "label": "Локальная лицензия Manrope",
      "path": "assets/sdvig/fonts/OFL.txt",
      "usedFor": "Условия распространения и встраивания."
    },
    {
      "label": "Исходная модель макетов",
      "path": "assets/sdvig/design-scenes.json",
      "usedFor": "Доказательство редактируемой геометрии и типографики."
    },
    {
      "label": "Протокол проверок",
      "path": "assets/sdvig/evidence/qa-report.json",
      "usedFor": "Отделяет выполненные технические проверки от будущих исследований."
    }
  ],
  "missingEvidence": [
    "Интервью и наблюдения за реальными пользователями.",
    "Тест узнаваемости названия и знака.",
    "Проверка физической навигации и читаемости на расстоянии.",
    "Реальная печатная проба и ICC-профиль типографии.",
    "Импорт SVG/Sketch в графический редактор.",
    "Личная авторская итерация владельца портфолио с сохранённым до/после."
  ],
  "nextPersonalTasks": [
    {
      "title": "Проверить гипотезу названия",
      "timeMinutes": 45,
      "steps": [
        "Показать основную афишу пяти людям на 5 секунд.",
        "Записать, как они прочитали название и что запомнили.",
        "Если две строки «СДВ / ИГ» мешают, сделать версию с цельным названием и сравнить повторно."
      ],
      "deliverable": "Пять анонимных записей, изменение макета, вывод с ограничениями."
    },
    {
      "title": "Сделать собственную коммуникационную итерацию",
      "timeMinutes": 60,
      "steps": [
        "Выбрать один новый смысловой повод: последний день, открытая мастерская или перенос зала.",
        "Создать новый пост и story по правилам сетки самостоятельно.",
        "Объяснить, какие ограничения пришлось изменить и почему."
      ],
      "deliverable": "Два новых исходника, экспорт, до/после, собственное решение."
    },
    {
      "title": "Испытать информационный режим",
      "timeMinutes": 45,
      "steps": [
        "Добавить длительности в программу.",
        "Попросить троих людей найти нужное время и место.",
        "Отдельно записать ошибки, а не только похвалу."
      ],
      "deliverable": "Таблица наблюдений и исправленная программа."
    },
    {
      "title": "Подготовить реальную печать одного плаката",
      "timeMinutes": 45,
      "steps": [
        "Выбрать типографию и запросить требования: профиль, bleed, допустимый чёрный и шрифты.",
        "Сравнить RGB-оригинал с согласованным цветопреобразованием.",
        "Заказать или сделать пробный отпечаток, отметить изменения."
      ],
      "deliverable": "PDF под конкретные требования + фото пробы; до этого не писать «готово к печати»."
    },
    {
      "title": "Подготовить защиту решения",
      "timeMinutes": 30,
      "steps": [
        "За 90 секунд назвать задачу, аудиторию-гипотезу и главное правило.",
        "Показать, где декоративный приём уступил удобству: программа и навигация.",
        "Честно отделить подготовленную базу от собственной итерации и проверки."
      ],
      "deliverable": "Аудио или текст питча + три ответа на вопросы о компромиссах."
    }
  ],
  "portfolioNarrative": {
    "opening": "Учебная айдентика фестиваля независимой визуальной культуры. Задача — связать эмоциональные анонсы и понятную навигацию одним воспроизводимым принципом.",
    "decision": "Принцип «сдвиг на один модуль» превратился в знак, композиционную сетку и набор правил. Для программы сделан информационный режим с постоянными колонками.",
    "proof": "Показаны 14 редактируемых носителей, параметры печатных страниц, исходники и технические проверки.",
    "honestOutcome": "Создан комплект и проверена его техническая целостность. Исследования аудитории, реальный запуск и бизнес-результаты отсутствуют.",
    "personalAuthorship": "База подготовлена при помощи ИИ. Перед публикацией в личном портфолио зафиксировать собственные решения, проверку и доработку; не присваивать ещё не выполненную исследовательскую работу."
  },
  "resumeSafeBullet": "Учебный кейс «СДВИГ»: система айдентики и 14 носителей в редактируемом векторе. Добавить в резюме после собственной итерации с указанием роли и использованных инструментов; не писать Adobe/Sketch как выполненную работу без реального редактирования в этих программах.",
  "presentationReady": true,
  "programDurationsAdded": true,
  "portfolioPresentation": "https://design-portfolio-lab.ehot2004.chatgpt.site/sdvig/portfolio/"
}