Чистые URL для кейсов: cases/slug/ вместо cases/slug.html, исправлены пути к ассетам

This commit is contained in:
Local Build committed 2026-08-15 16:37:54 +02:00
1 parent c66b9b856f
commit c4bfe5c9ee
43 files changed
+10703 -10489

No files matched your search

@@ -11,9 +11,9 @@
<script>
(function () {
var FONT_CSS = {
merriweather: "../assets/fonts/merriweather.css",
geologica: "../assets/fonts/geologica.css",
mono: "../assets/fonts/mono.css",
merriweather: "../../assets/fonts/merriweather.css",
geologica: "../../assets/fonts/geologica.css",
mono: "../../assets/fonts/mono.css",
};
try {
var t = JSON.parse(localStorage.getItem("siteThemeV1") || "{}");
@@ -89,20 +89,20 @@
})();
</script>
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../assets/favicon/site.webmanifest" />
<link rel="preload" href="../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../css/main.css" as="style" />
<link rel="preload" href="../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../js/main.js" />
<link rel="stylesheet" href="../css/main.css" />
<script src="../js/skill-connectors.js" defer></script>
<script type="module" src="../js/main.js"></script>
<link rel="icon" type="image/png" sizes="32x32" href="../../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../../assets/favicon/site.webmanifest" />
<link rel="preload" href="../../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../../css/main.css" as="style" />
<link rel="preload" href="../../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../../js/main.js" />
<link rel="stylesheet" href="../../css/main.css" />
<script src="../../js/skill-connectors.js" defer></script>
<script type="module" src="../../js/main.js"></script>
<link rel="stylesheet" href="../vendor/plyr/plyr.css" />
<link rel="stylesheet" href="../../vendor/plyr/plyr.css" />
<style>
.case-article {
@@ -179,7 +179,7 @@
<a class="skip-link" href="#case-main">К содержимому кейса</a>
<header class="header" data-theme-picker>
<div class="header__inner">
<a class="logo" href="../index.html" aria-label="На главную">НМ</a>
<a class="logo" href="../../index.html" aria-label="На главную">НМ</a>
<div class="header__cluster">
<nav class="nav" aria-label="Навигация по странице">
<a href="#contact">Контакты</a>
@@ -311,7 +311,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-assistant">
<a
class="mp-card mp-card--link mp-card--compact"
href="ai-assistant-figma.html"
href="../ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -326,7 +326,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="card-columns">
<a
class="mp-card mp-card--link mp-card--compact"
href="card-columns-obsidian.html"
href="../card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -341,7 +341,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="site-with-ai-ide">
<a
class="mp-card mp-card--link mp-card--compact"
href="site-with-ai-ide.html"
href="../site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
@@ -361,9 +361,9 @@
<div class="section__inner">
<h2 class="section__title">Контакты</h2>
<ul class="contact-grid">
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><button type="button" class="contact-card contact-card--action contact-card--brand-email" data-contact-copy data-email-b64="bmlrQG1hbWFkYWV2di5zaXRl" data-hint-default="Скопировать адрес" aria-label="Скопировать адрес электронной почты в буфер обмена"><span class="contact-card__corner contact-card__corner--copy" aria-hidden="true"></span><span class="contact-card__icon contact-card__icon--accent" aria-hidden="true"></span><span class="contact-card__body"><span class="contact-card__name">Почта</span><span class="contact-card__hint" data-contact-copy-hint>Скопировать адрес</span></span></button></li>
</ul>
</div>
@@ -377,19 +377,19 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
<aside class="cookie-notice glass-neutral" hidden data-cookie-notice>
<p class="cookie-notice__text">
Сайт использует cookie для комфортной работы. Подробнее — в
<a href="../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
<a href="../../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
</p>
<button type="button" class="btn btn--secondary btn--flat cookie-notice__accept" data-cookie-accept>
<span>Принять</span>
<span class="cookie-notice__accept-icon" aria-hidden="true">
<img src="../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
<img src="../../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
</span>
</button>
</aside>
@@ -11,9 +11,9 @@
<script>
(function () {
var FONT_CSS = {
merriweather: "../assets/fonts/merriweather.css",
geologica: "../assets/fonts/geologica.css",
mono: "../assets/fonts/mono.css",
merriweather: "../../assets/fonts/merriweather.css",
geologica: "../../assets/fonts/geologica.css",
mono: "../../assets/fonts/mono.css",
};
try {
var t = JSON.parse(localStorage.getItem("siteThemeV1") || "{}");
@@ -89,20 +89,20 @@
})();
</script>
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../assets/favicon/site.webmanifest" />
<link rel="preload" href="../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../css/main.css" as="style" />
<link rel="preload" href="../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../js/main.js" />
<link rel="stylesheet" href="../css/main.css" />
<script src="../js/skill-connectors.js" defer></script>
<script type="module" src="../js/main.js"></script>
<link rel="icon" type="image/png" sizes="32x32" href="../../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../../assets/favicon/site.webmanifest" />
<link rel="preload" href="../../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../../css/main.css" as="style" />
<link rel="preload" href="../../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../../js/main.js" />
<link rel="stylesheet" href="../../css/main.css" />
<script src="../../js/skill-connectors.js" defer></script>
<script type="module" src="../../js/main.js"></script>
<link rel="stylesheet" href="../vendor/plyr/plyr.css" />
<link rel="stylesheet" href="../../vendor/plyr/plyr.css" />
<style>
.case-article {
@@ -214,7 +214,7 @@
<a class="skip-link" href="#case-main">К содержимому кейса</a>
<header class="header" data-theme-picker>
<div class="header__inner">
<a class="logo" href="../index.html" aria-label="На главную">НМ</a>
<a class="logo" href="../../index.html" aria-label="На главную">НМ</a>
<div class="header__cluster">
<nav class="nav" aria-label="Навигация по странице">
<a href="#contact">Контакты</a>
@@ -318,7 +318,7 @@
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main-new.webp"
src="../../assets/ai-platform-primo-rpa/main-new.webp"
alt="Обновлённый редактор разметки датасета — главный экран сервиса после редизайна"
width="1200"
height="675"
@@ -383,7 +383,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main-new.webp"
src="../../assets/ai-platform-primo-rpa/main-new.webp"
alt="Главный экран AI Server с компактной верхней навигацией"
width="1200"
height="675"
@@ -398,7 +398,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-nlp.webp"
src="../../assets/ai-platform-primo-rpa/nav-project-nlp.webp"
alt="Внутренняя навигация NLP-проекта"
width="1200"
height="675"
@@ -410,7 +410,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-ocr.webp"
src="../../assets/ai-platform-primo-rpa/nav-project-ocr.webp"
alt="Внутренняя навигация OCR-проекта"
width="1200"
height="675"
@@ -430,7 +430,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
src="../../assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
alt="Крупный план вторичной навигации — пункты в форме стрелок"
width="1200"
height="675"
@@ -452,7 +452,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor.webp"
src="../../assets/ai-platform-primo-rpa/dataset-editor.webp"
alt="Редактор разметки датасета — размечаемый документ в центре, панели полей и инструментов по бокам"
width="1200"
height="675"
@@ -467,7 +467,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
src="../../assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
alt="Схематичный каркас редактора — центральная рабочая область и боковые панели"
width="1200"
height="675"
@@ -482,7 +482,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
src="../../assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
alt="Полноэкранный режим редактора с раскрытыми боковыми панелями"
width="1200"
height="675"
@@ -494,7 +494,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
src="../../assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
alt="Полноэкранный режим без панелей — только размечаемый документ и нижняя панель"
width="1200"
height="675"
@@ -506,7 +506,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
src="../../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
alt="Четыре варианта каркаса полноэкранного режима"
width="1200"
height="675"
@@ -518,7 +518,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
src="../../assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
alt="Нижняя панель инструментов — переключение между изображениями и быстрые действия разметки"
width="1200"
height="675"
@@ -541,12 +541,12 @@
controls
preload="metadata"
playsinline
poster="../assets/ai-platform-primo-rpa/fields-maping.webp"
poster="../../assets/ai-platform-primo-rpa/fields-maping.webp"
data-case-video-player
style="display: block; width: 100%; height: auto; margin: 0"
>
<source src="../assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="../assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
<source src="../../assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="../../assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -564,7 +564,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
src="../../assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
alt="Раздел обучения моделей — вертикальная лента карточек"
width="1200"
height="675"
@@ -579,7 +579,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
src="../../assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
alt="Карточка настройки обучения — матрица качества датасета и блок параметров запуска"
width="1200"
height="675"
@@ -602,7 +602,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
src="../../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
alt="Карточка запущенного процесса обучения — статус, прогресс и метрики"
width="1200"
height="675"
@@ -614,7 +614,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
src="../../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
alt="Каркас карточки процесса обучения"
width="1200"
height="675"
@@ -629,7 +629,7 @@
</p>
<figure class="case-media case-media--natural">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
src="../../assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
alt="Свёрнутая карточка обучения — одна строка с названием и статусом процесса"
width="1200"
height="675"
@@ -658,7 +658,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
src="../../assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
alt="Импорт датасета в модальном окне на отдельной странице"
width="1440"
height="1024"
@@ -673,7 +673,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
src="../../assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
alt="Заглушка активного импорта внутри проекта"
width="1200"
height="675"
@@ -735,11 +735,11 @@
<h2 class="section__title">Смотрите также</h2>
<ol class="mini-projects-grid" data-mini-projects-list>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-platform-primo-rpa">
<a class="mp-card mp-card--link mp-card--stack" href="ai-platform-primo-rpa.html" aria-label="Платформа для работы с AI — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../ai-platform-primo-rpa/" aria-label="Платформа для работы с AI — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/ai-platform-primo-rpa/cover.webp"
src="../../assets/ai-platform-primo-rpa/cover.webp"
alt=""
width="400"
height="225"
@@ -758,11 +758,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="lunacy">
<a class="mp-card mp-card--link mp-card--stack" href="lunacy.html" aria-label="Графический редактор Lunacy — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../lunacy/" aria-label="Графический редактор Lunacy — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/lunacy/cover.webp"
src="../../assets/lunacy/cover.webp"
alt=""
width="400"
height="225"
@@ -781,11 +781,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="manu-game-maker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="manu-game-maker.html" aria-label="Игровой движок MANU — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../manu-game-maker/" aria-label="Игровой движок MANU — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/manu-game-maker/cover.webp"
src="../../assets/manu-game-maker/cover.webp"
alt=""
width="400"
height="225"
@@ -804,11 +804,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="mobile-clinic-app" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="mobile-clinic-app.html" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../mobile-clinic-app/" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/mobile-clinic-app/cover.webp"
src="../../assets/mobile-clinic-app/cover.webp"
alt=""
width="400"
height="225"
@@ -827,11 +827,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="orc-automation-panel">
<a class="mp-card mp-card--link mp-card--stack" href="orc-automation-panel.html" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../orc-automation-panel/" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/orc-primo-rpa/cover.webp"
src="../../assets/orc-primo-rpa/cover.webp"
alt=""
width="400"
height="225"
@@ -849,11 +849,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="task-distribution-concept" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="task-distribution-concept.html" aria-label="Концепт сервиса распределения задач — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../task-distribution-concept/" aria-label="Концепт сервиса распределения задач — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/task-distribution-concept/cover.webp"
src="../../assets/task-distribution-concept/cover.webp"
alt=""
width="400"
height="225"
@@ -872,11 +872,11 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="task-tracker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="task-tracker.html" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="../task-tracker/" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/task-tracker/cover.webp"
src="../../assets/task-tracker/cover.webp"
alt=""
width="400"
height="225"
@@ -915,7 +915,7 @@
<div class="projects-carousel__track">
<div class="projects-carousel__spacer" aria-hidden="true"></div>
<article class="projects-carousel__item">
<a class="portfolio-card" href="orc-automation-panel.html">
<a class="portfolio-card" href="../orc-automation-panel/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Веб-панель для оркестрации автоматизаций</h3>
<p class="portfolio-card__summary">
@@ -931,7 +931,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/orc-primo-rpa/cover.webp"
data-defer-src="../../assets/orc-primo-rpa/cover.webp"
alt=""
width="400"
height="225"
@@ -941,7 +941,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="ai-platform-primo-rpa.html">
<a class="portfolio-card" href="../ai-platform-primo-rpa/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Платформа для работы с AI</h3>
<p class="portfolio-card__summary">
@@ -957,7 +957,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/ai-platform-primo-rpa/cover.webp"
data-defer-src="../../assets/ai-platform-primo-rpa/cover.webp"
alt=""
width="400"
height="225"
@@ -967,7 +967,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="task-tracker.html">
<a class="portfolio-card" href="../task-tracker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Таск-трекер для бек-офис системы</h3>
<p class="portfolio-card__summary">
@@ -983,7 +983,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/task-tracker/cover.webp"
data-defer-src="../../assets/task-tracker/cover.webp"
alt=""
width="400"
height="225"
@@ -993,7 +993,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="manu-game-maker.html">
<a class="portfolio-card" href="../manu-game-maker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Игровой движок MANU</h3>
<p class="portfolio-card__summary">
@@ -1009,7 +1009,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/manu-game-maker/cover.webp"
data-defer-src="../../assets/manu-game-maker/cover.webp"
alt=""
width="400"
height="225"
@@ -1019,7 +1019,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="lunacy.html">
<a class="portfolio-card" href="../lunacy/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Графический редактор Lunacy</h3>
<p class="portfolio-card__summary">
@@ -1035,7 +1035,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/lunacy/cover.webp"
data-defer-src="../../assets/lunacy/cover.webp"
alt=""
width="400"
height="225"
@@ -1045,7 +1045,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="mobile-clinic-app.html">
<a class="portfolio-card" href="../mobile-clinic-app/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Мобильное приложение для сети клиник</h3>
<p class="portfolio-card__summary">
@@ -1061,7 +1061,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/mobile-clinic-app/cover.webp"
data-defer-src="../../assets/mobile-clinic-app/cover.webp"
alt=""
width="400"
height="225"
@@ -1071,7 +1071,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="task-distribution-concept.html">
<a class="portfolio-card" href="../task-distribution-concept/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Концепт сервиса распределения задач</h3>
<p class="portfolio-card__summary">
@@ -1087,7 +1087,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/task-distribution-concept/cover.webp"
data-defer-src="../../assets/task-distribution-concept/cover.webp"
alt=""
width="400"
height="225"
@@ -1097,7 +1097,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="obsidian-plugin-columns-view.html">
<a class="portfolio-card" href="../obsidian-plugin-columns-view/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Колоночный вид — плагин для Obsidian</h3>
<p class="portfolio-card__summary">
@@ -1113,7 +1113,7 @@
<img
class="portfolio-card__image"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-defer-src="../assets/obsidian-plugin-columns-view/filter use.webp"
data-defer-src="../../assets/obsidian-plugin-columns-view/filter use.webp"
alt=""
width="400"
height="225"
@@ -1145,9 +1145,9 @@
<div class="section__inner">
<h2 class="section__title">Контакты</h2>
<ul class="contact-grid">
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><button type="button" class="contact-card contact-card--action contact-card--brand-email" data-contact-copy data-email-b64="bmlrQG1hbWFkYWV2di5zaXRl" data-hint-default="Скопировать адрес" aria-label="Скопировать адрес электронной почты в буфер обмена"><span class="contact-card__corner contact-card__corner--copy" aria-hidden="true"></span><span class="contact-card__icon contact-card__icon--accent" aria-hidden="true"></span><span class="contact-card__body"><span class="contact-card__name">Почта</span><span class="contact-card__hint" data-contact-copy-hint>Скопировать адрес</span></span></button></li>
</ul>
</div>
@@ -1161,19 +1161,19 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
<aside class="cookie-notice glass-neutral" hidden data-cookie-notice>
<p class="cookie-notice__text">
Сайт использует cookie для комфортной работы. Подробнее — в
<a href="../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
<a href="../../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
</p>
<button type="button" class="btn btn--secondary btn--flat cookie-notice__accept" data-cookie-accept>
<span>Принять</span>
<span class="cookie-notice__accept-icon" aria-hidden="true">
<img src="../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
<img src="../../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
</span>
</button>
</aside>
File diff suppressed because it is too large. Load diff
@@ -11,9 +11,9 @@
<script>
(function () {
var FONT_CSS = {
merriweather: "../assets/fonts/merriweather.css",
geologica: "../assets/fonts/geologica.css",
mono: "../assets/fonts/mono.css",
merriweather: "../../assets/fonts/merriweather.css",
geologica: "../../assets/fonts/geologica.css",
mono: "../../assets/fonts/mono.css",
};
try {
var t = JSON.parse(localStorage.getItem("siteThemeV1") || "{}");
@@ -89,20 +89,20 @@
})();
</script>
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../assets/favicon/site.webmanifest" />
<link rel="preload" href="../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../css/main.css" as="style" />
<link rel="preload" href="../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../js/main.js" />
<link rel="stylesheet" href="../css/main.css" />
<script src="../js/skill-connectors.js" defer></script>
<script type="module" src="../js/main.js"></script>
<link rel="icon" type="image/png" sizes="32x32" href="../../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../../assets/favicon/site.webmanifest" />
<link rel="preload" href="../../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../../css/main.css" as="style" />
<link rel="preload" href="../../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../../js/main.js" />
<link rel="stylesheet" href="../../css/main.css" />
<script src="../../js/skill-connectors.js" defer></script>
<script type="module" src="../../js/main.js"></script>
<link rel="stylesheet" href="../vendor/plyr/plyr.css" />
<link rel="stylesheet" href="../../vendor/plyr/plyr.css" />
<style>
.case-article {
@@ -179,7 +179,7 @@
<a class="skip-link" href="#case-main">К содержимому кейса</a>
<header class="header" data-theme-picker>
<div class="header__inner">
<a class="logo" href="../index.html" aria-label="На главную">НМ</a>
<a class="logo" href="../../index.html" aria-label="На главную">НМ</a>
<div class="header__cluster">
<nav class="nav" aria-label="Навигация по странице">
<a href="#contact">Контакты</a>
@@ -311,7 +311,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-assistant">
<a
class="mp-card mp-card--link mp-card--compact"
href="ai-assistant-figma.html"
href="../ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -326,7 +326,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="card-columns">
<a
class="mp-card mp-card--link mp-card--compact"
href="card-columns-obsidian.html"
href="../card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -341,7 +341,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="site-with-ai-ide">
<a
class="mp-card mp-card--link mp-card--compact"
href="site-with-ai-ide.html"
href="../site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
@@ -361,9 +361,9 @@
<div class="section__inner">
<h2 class="section__title">Контакты</h2>
<ul class="contact-grid">
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><button type="button" class="contact-card contact-card--action contact-card--brand-email" data-contact-copy data-email-b64="bmlrQG1hbWFkYWV2di5zaXRl" data-hint-default="Скопировать адрес" aria-label="Скопировать адрес электронной почты в буфер обмена"><span class="contact-card__corner contact-card__corner--copy" aria-hidden="true"></span><span class="contact-card__icon contact-card__icon--accent" aria-hidden="true"></span><span class="contact-card__body"><span class="contact-card__name">Почта</span><span class="contact-card__hint" data-contact-copy-hint>Скопировать адрес</span></span></button></li>
</ul>
</div>
@@ -377,19 +377,19 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
<aside class="cookie-notice glass-neutral" hidden data-cookie-notice>
<p class="cookie-notice__text">
Сайт использует cookie для комфортной работы. Подробнее — в
<a href="../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
<a href="../../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
</p>
<button type="button" class="btn btn--secondary btn--flat cookie-notice__accept" data-cookie-accept>
<span>Принять</span>
<span class="cookie-notice__accept-icon" aria-hidden="true">
<img src="../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
<img src="../../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
</span>
</button>
</aside>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -11,9 +11,9 @@
<script>
(function () {
var FONT_CSS = {
merriweather: "../assets/fonts/merriweather.css",
geologica: "../assets/fonts/geologica.css",
mono: "../assets/fonts/mono.css",
merriweather: "../../assets/fonts/merriweather.css",
geologica: "../../assets/fonts/geologica.css",
mono: "../../assets/fonts/mono.css",
};
try {
var t = JSON.parse(localStorage.getItem("siteThemeV1") || "{}");
@@ -89,20 +89,20 @@
})();
</script>
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../assets/favicon/site.webmanifest" />
<link rel="preload" href="../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../css/main.css" as="style" />
<link rel="preload" href="../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../js/main.js" />
<link rel="stylesheet" href="../css/main.css" />
<script src="../js/skill-connectors.js" defer></script>
<script type="module" src="../js/main.js"></script>
<link rel="icon" type="image/png" sizes="32x32" href="../../assets/favicon/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="../../assets/favicon/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../../assets/favicon/apple-touch-icon.png" />
<link rel="manifest" href="../../assets/favicon/site.webmanifest" />
<link rel="preload" href="../../assets/fonts/merriweather.css" as="style" />
<link rel="preload" href="../../css/main.css" as="style" />
<link rel="preload" href="../../js/skill-connectors.js" as="script" />
<link rel="modulepreload" href="../../js/main.js" />
<link rel="stylesheet" href="../../css/main.css" />
<script src="../../js/skill-connectors.js" defer></script>
<script type="module" src="../../js/main.js"></script>
<link rel="stylesheet" href="../vendor/plyr/plyr.css" />
<link rel="stylesheet" href="../../vendor/plyr/plyr.css" />
<style>
.case-article {
@@ -179,7 +179,7 @@
<a class="skip-link" href="#case-main">К содержимому кейса</a>
<header class="header" data-theme-picker>
<div class="header__inner">
<a class="logo" href="../index.html" aria-label="На главную">НМ</a>
<a class="logo" href="../../index.html" aria-label="На главную">НМ</a>
<div class="header__cluster">
<nav class="nav" aria-label="Навигация по странице">
<a href="#contact">Контакты</a>
@@ -311,7 +311,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-assistant">
<a
class="mp-card mp-card--link mp-card--compact"
href="ai-assistant-figma.html"
href="../ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -326,7 +326,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="card-columns">
<a
class="mp-card mp-card--link mp-card--compact"
href="card-columns-obsidian.html"
href="../card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -341,7 +341,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="site-with-ai-ide">
<a
class="mp-card mp-card--link mp-card--compact"
href="site-with-ai-ide.html"
href="../site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
@@ -361,9 +361,9 @@
<div class="section__inner">
<h2 class="section__title">Контакты</h2>
<ul class="contact-grid">
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Telegram</span><span class="contact-card__hint">Отвечу сегодня</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-vk" href="https://vk.com/mamadaevv" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/vk.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">ВКонтакте</span><span class="contact-card__hint">Стабильный коннект</span></span></a></li>
<li><a class="contact-card contact-card--link contact-card--brand-ya" href="https://yandex.ru/chat/p/727e71fa-89b5-44a8-90a5-851021631a1c?utm_source=invite" rel="noopener noreferrer"><span class="contact-card__corner" aria-hidden="true"></span><span class="contact-card__icon" aria-hidden="true"><img src="../../assets/shared/icons/yandex_telemost.svg" alt="" width="24" height="24" loading="eager" decoding="async" /></span><span class="contact-card__body"><span class="contact-card__name">Яндекс</span><span class="contact-card__hint">Да, тут тоже можно</span></span></a></li>
<li><button type="button" class="contact-card contact-card--action contact-card--brand-email" data-contact-copy data-email-b64="bmlrQG1hbWFkYWV2di5zaXRl" data-hint-default="Скопировать адрес" aria-label="Скопировать адрес электронной почты в буфер обмена"><span class="contact-card__corner contact-card__corner--copy" aria-hidden="true"></span><span class="contact-card__icon contact-card__icon--accent" aria-hidden="true"></span><span class="contact-card__body"><span class="contact-card__name">Почта</span><span class="contact-card__hint" data-contact-copy-hint>Скопировать адрес</span></span></button></li>
</ul>
</div>
@@ -377,19 +377,19 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="../../cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
<aside class="cookie-notice glass-neutral" hidden data-cookie-notice>
<p class="cookie-notice__text">
Сайт использует cookie для комфортной работы. Подробнее — в
<a href="../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
<a href="../../cookie-policy.html" data-cookie-policy-link>политике cookie</a>.
</p>
<button type="button" class="btn btn--secondary btn--flat cookie-notice__accept" data-cookie-accept>
<span>Принять</span>
<span class="cookie-notice__accept-icon" aria-hidden="true">
<img src="../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
<img src="../../assets/shared/icons/сookie.svg" alt="" width="20" height="20" loading="eager" decoding="async" />
</span>
</button>
</aside>
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -321,7 +321,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+19 -19
View File
@@ -303,7 +303,7 @@
<h2 class="section__title">Портфолио</h2>
<ol class="mini-projects-grid" data-mini-projects-list>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="ai-platform-primo-rpa">
<a class="mp-card mp-card--link mp-card--stack" href="cases/ai-platform-primo-rpa.html" aria-label="Платформа для работы с AI — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/ai-platform-primo-rpa/" aria-label="Платформа для работы с AI — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -326,7 +326,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="lunacy">
<a class="mp-card mp-card--link mp-card--stack" href="cases/lunacy.html" aria-label="Графический редактор Lunacy — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/lunacy/" aria-label="Графический редактор Lunacy — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -349,7 +349,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="manu-game-maker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="cases/manu-game-maker.html" aria-label="Игровой движок MANU — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/manu-game-maker/" aria-label="Игровой движок MANU — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -372,7 +372,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="mobile-clinic-app" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="cases/mobile-clinic-app.html" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/mobile-clinic-app/" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -395,7 +395,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="orc-automation-panel">
<a class="mp-card mp-card--link mp-card--stack" href="cases/orc-automation-panel.html" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/orc-automation-panel/" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -417,7 +417,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="task-distribution-concept" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="cases/task-distribution-concept.html" aria-label="Концепт сервиса распределения задач — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/task-distribution-concept/" aria-label="Концепт сервиса распределения задач — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -440,7 +440,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="task-tracker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="cases/task-tracker.html" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="cases/task-tracker/" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -482,7 +482,7 @@
<div class="projects-carousel__track">
<div class="projects-carousel__spacer" aria-hidden="true"></div>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/orc-automation-panel.html">
<a class="portfolio-card" href="cases/orc-automation-panel/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Веб-панель для оркестрации автоматизаций</h3>
<p class="portfolio-card__summary">
@@ -508,7 +508,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/ai-platform-primo-rpa.html">
<a class="portfolio-card" href="cases/ai-platform-primo-rpa/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Платформа для работы с AI</h3>
<p class="portfolio-card__summary">
@@ -534,7 +534,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/task-tracker.html">
<a class="portfolio-card" href="cases/task-tracker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Таск-трекер для бек-офис системы</h3>
<p class="portfolio-card__summary">
@@ -560,7 +560,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/manu-game-maker.html">
<a class="portfolio-card" href="cases/manu-game-maker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Игровой движок MANU</h3>
<p class="portfolio-card__summary">
@@ -586,7 +586,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/lunacy.html">
<a class="portfolio-card" href="cases/lunacy/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Графический редактор Lunacy</h3>
<p class="portfolio-card__summary">
@@ -612,7 +612,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/mobile-clinic-app.html">
<a class="portfolio-card" href="cases/mobile-clinic-app/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Мобильное приложение для сети клиник</h3>
<p class="portfolio-card__summary">
@@ -638,7 +638,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/task-distribution-concept.html">
<a class="portfolio-card" href="cases/task-distribution-concept/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Концепт сервиса распределения задач</h3>
<p class="portfolio-card__summary">
@@ -664,7 +664,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="cases/obsidian-plugin-columns-view.html">
<a class="portfolio-card" href="cases/obsidian-plugin-columns-view/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Колоночный вид — плагин для Obsidian</h3>
<p class="portfolio-card__summary">
@@ -1290,7 +1290,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/ai-assistant-figma.html"
href="cases/ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -1305,7 +1305,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/card-columns-obsidian.html"
href="cases/card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -1320,7 +1320,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/site-with-ai-ide.html"
href="cases/site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
@@ -1357,7 +1357,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+1 -1
View File
@@ -630,7 +630,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+1 -1
View File
@@ -700,7 +700,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+1 -1
View File
@@ -780,7 +780,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+1 -1
View File
@@ -962,7 +962,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+1 -1
View File
@@ -494,7 +494,7 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+23 -9
View File
@@ -66,8 +66,9 @@ function ensureDir(dirPath) {
/** На странице кейса убираем из HTML карусели карточку со ссылкой на текущий файл (href уже с подставленным casesPrefix). */
function stripCurrentCasePortfolioCarouselItem(html, omitHrefBasename) {
if (!omitHrefBasename) return html;
const hrefDouble = `href="${omitHrefBasename}"`;
const hrefSingle = `href='${omitHrefBasename}'`;
const slug = omitHrefBasename.replace(/\.html$/, "");
const hrefDouble = `href="${slug}/"`;
const hrefSingle = `href='${slug}/'`;
const itemClass = "projects-carousel__item";
let search = 0;
while (true) {
@@ -98,19 +99,32 @@ function build() {
for (const pagePath of pageFiles) {
const rel = path.relative(srcPagesDir, pagePath);
const outPath = path.join(outDir, rel);
const relNorm = rel.split(path.sep).join("/");
const pageDirRel = path.dirname(rel);
const depth = pageDirRel === "." ? 0 : pageDirRel.split(path.sep).length;
const isCase = relNorm.startsWith("cases/");
const vars = {
assetPrefix: depth === 0 ? "" : "../".repeat(depth),
casesPrefix: depth === 0 ? "cases/" : "",
};
let outPath;
let vars;
if (isCase) {
const slug = path.basename(pagePath, ".html");
outPath = path.join(outDir, "cases", slug, "index.html");
vars = {
assetPrefix: "../../",
casesPrefix: "../",
};
} else {
outPath = path.join(outDir, rel);
vars = {
assetPrefix: depth === 0 ? "" : "../".repeat(depth),
casesPrefix: depth === 0 ? "cases/" : "",
};
}
const source = readUtf8(pagePath);
let rendered = renderTemplate(source, partials, vars);
const relNorm = rel.split(path.sep).join("/");
if (relNorm.startsWith("cases/")) {
if (isCase) {
const omitFile = path.basename(pagePath);
rendered = stripCurrentCasePortfolioCarouselItem(rendered, omitFile);
}
+13 -13
View File
@@ -191,12 +191,12 @@
controls
preload="metadata"
playsinline
poster="../assets/ai-platform-primo-rpa/fields-maping.webp"
poster="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webp"
data-case-video-player
style="display: block; width: 100%; height: auto; margin: 0"
>
<source src="../assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="../assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -217,7 +217,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-editor.webp"
alt="Редактор датасета — текущая версия интерфейса"
width="1200"
height="675"
@@ -229,7 +229,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor-old.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-editor-old.webp"
alt="Редактор датасета — предыдущая версия для сравнения"
width="1200"
height="675"
@@ -241,7 +241,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-lerning.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-lerning.webp"
alt="Экран обучения модели по датасету"
width="1200"
height="675"
@@ -253,7 +253,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-quality.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-quality.webp"
alt="Контроль качества модели после обучения"
width="1200"
height="675"
@@ -270,7 +270,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in-project-inference.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in-project-inference.webp"
alt="Интерфейс inference модели внутри проекта"
width="1200"
height="675"
@@ -284,7 +284,7 @@
<div class="case-media-tall" data-case-tall-root>
<div class="case-media-tall__clip" id="ai-case-tall-inference-full" data-case-tall-clip>
<img
src="../assets/ai-platform-primo-rpa/in-project-inference-full.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in-project-inference-full.webp"
alt="Inference в проекте — полный экран интерфейса"
width="1200"
loading="lazy"
@@ -311,7 +311,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in-project-inference-old.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in-project-inference-old.webp"
alt="Предыдущая версия экрана inference в проекте"
width="1200"
height="675"
@@ -340,7 +340,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
alt="Модальное окно импорта датасета на отдельном экране"
width="1440"
height="1024"
@@ -352,7 +352,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
alt="Полноэкранный режим с боковыми панелями"
width="1200"
height="675"
@@ -364,7 +364,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
alt="Полноэкранный режим без отвлекающих панелей"
width="1200"
height="675"
+21 -21
View File
@@ -130,7 +130,7 @@
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main-new.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/main-new.webp"
alt="Обновлённый редактор разметки датасета — главный экран сервиса после редизайна"
width="1200"
height="675"
@@ -195,7 +195,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main-new.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/main-new.webp"
alt="Главный экран AI Server с компактной верхней навигацией"
width="1200"
height="675"
@@ -210,7 +210,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-nlp.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-project-nlp.webp"
alt="Внутренняя навигация NLP-проекта"
width="1200"
height="675"
@@ -222,7 +222,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-ocr.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-project-ocr.webp"
alt="Внутренняя навигация OCR-проекта"
width="1200"
height="675"
@@ -242,7 +242,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
alt="Крупный план вторичной навигации — пункты в форме стрелок"
width="1200"
height="675"
@@ -264,7 +264,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-editor.webp"
alt="Редактор разметки датасета — размечаемый документ в центре, панели полей и инструментов по бокам"
width="1200"
height="675"
@@ -279,7 +279,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
alt="Схематичный каркас редактора — центральная рабочая область и боковые панели"
width="1200"
height="675"
@@ -294,7 +294,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
alt="Полноэкранный режим редактора с раскрытыми боковыми панелями"
width="1200"
height="675"
@@ -306,7 +306,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
alt="Полноэкранный режим без панелей — только размечаемый документ и нижняя панель"
width="1200"
height="675"
@@ -318,7 +318,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
alt="Четыре варианта каркаса полноэкранного режима"
width="1200"
height="675"
@@ -330,7 +330,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
alt="Нижняя панель инструментов — переключение между изображениями и быстрые действия разметки"
width="1200"
height="675"
@@ -353,12 +353,12 @@
controls
preload="metadata"
playsinline
poster="../assets/ai-platform-primo-rpa/fields-maping.webp"
poster="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webp"
data-case-video-player
style="display: block; width: 100%; height: auto; margin: 0"
>
<source src="../assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="../assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -376,7 +376,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
alt="Раздел обучения моделей — вертикальная лента карточек"
width="1200"
height="675"
@@ -391,7 +391,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
alt="Карточка настройки обучения — матрица качества датасета и блок параметров запуска"
width="1200"
height="675"
@@ -414,7 +414,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
alt="Карточка запущенного процесса обучения — статус, прогресс и метрики"
width="1200"
height="675"
@@ -426,7 +426,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
alt="Каркас карточки процесса обучения"
width="1200"
height="675"
@@ -441,7 +441,7 @@
</p>
<figure class="case-media case-media--natural">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
alt="Свёрнутая карточка обучения — одна строка с названием и статусом процесса"
width="1200"
height="675"
@@ -470,7 +470,7 @@
</aside>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
alt="Импорт датасета в модальном окне на отдельной странице"
width="1440"
height="1024"
@@ -485,7 +485,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
alt="Заглушка активного импорта внутри проекта"
width="1200"
height="675"
+25 -25
View File
@@ -180,7 +180,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/main.webp"
alt="Предыдущая главная навигация сервиса AI Server"
width="2520"
height="1680"
@@ -192,7 +192,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/main-new.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/main-new.webp"
alt="Обновлённая главная навигация сервиса AI Server"
width="1920"
height="1080"
@@ -211,7 +211,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-nlp.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-project-nlp.webp"
alt="Навигация внутри NLP-проекта и главная навигация сервиса"
width="1920"
height="302"
@@ -223,7 +223,7 @@
</figure>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/nav-project-ocr.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-project-ocr.webp"
alt="Навигация внутри OCR-проекта и главная навигация сервиса"
width="1920"
height="302"
@@ -238,7 +238,7 @@
</p>
<figure class="case-media">
<img
src="../assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/nav-secondary-detail_view.webp"
alt="Вторичная навигация проекта со стрелочной формой пунктов"
width="924"
height="101"
@@ -254,7 +254,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor-old.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-editor-old.webp"
alt="Редактор датасета — предыдущая версия для сравнения"
width="1200"
height="675"
@@ -269,7 +269,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset-editor.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset-editor.webp"
alt="Редактор датасета — текущая версия интерфейса"
width="1200"
height="675"
@@ -284,7 +284,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-default_mode.webp"
alt="Вайрфрейм редактора датасета — режим по умолчанию"
width="1200"
height="675"
@@ -301,7 +301,7 @@
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-with-panels.webp"
alt="Полноэкранный режим с боковыми панелями"
loading="lazy"
decoding="async"
@@ -310,7 +310,7 @@
</div>
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/full-screen-mode-zen.webp"
alt="Полноэкранный режим без отвлекающих панелей"
loading="lazy"
decoding="async"
@@ -324,7 +324,7 @@
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-both_panels.webp"
alt="Вайрфрейм zen mode — обе панели"
loading="lazy"
decoding="async"
@@ -333,7 +333,7 @@
</div>
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode.webp"
alt="Вайрфрейм zen mode"
loading="lazy"
decoding="async"
@@ -342,7 +342,7 @@
</div>
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-left_panel.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-left_panel.webp"
alt="Вайрфрейм zen mode — левая панель"
loading="lazy"
decoding="async"
@@ -351,7 +351,7 @@
</div>
<div class="case-media-gallery__item">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-right_panel.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-wireframe-zen_mode-right_panel.webp"
alt="Вайрфрейм zen mode — правая панель"
loading="lazy"
decoding="async"
@@ -366,7 +366,7 @@
</p>
<figure class="case-media case-media--content">
<img
src="../assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/dataset_editor-main_toolbar.webp"
alt="Главная панель инструментов редактора датасета"
width="1200"
height="675"
@@ -383,7 +383,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-overview.webp"
alt="Обзор карточек настройки обучения в проекте"
width="1920"
height="740"
@@ -398,7 +398,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-new.webp"
alt="Карточка настройки обучения"
width="1306"
height="1104"
@@ -424,7 +424,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-learning_process.webp"
alt="Карточка процесса обучения модели"
width="1306"
height="1066"
@@ -439,7 +439,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-learning_process_wireframe.webp"
alt="Вайрфрейм карточки процесса обучения"
width="1306"
height="1066"
@@ -454,7 +454,7 @@
</p>
<figure class="case-media case-media--content">
<img
src="../assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/in_project-learn-card-сollapsed.webp"
alt="Свёрнутая карточка настройки обучения"
width="1306"
height="102"
@@ -481,12 +481,12 @@
controls
preload="metadata"
playsinline
poster="../assets/ai-platform-primo-rpa/fields-maping.webp"
poster="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webp"
data-case-video-player
style="display: block; width: 100%; height: auto; margin: 0"
>
<source src="../assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="../assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/ai-platform-primo-rpa/fields-maping.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -505,7 +505,7 @@
</p>
<figure class="case-media case-media--wide">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/fullscreen_modal-import_dataset.webp"
alt="Модальное окно импорта датасета на отдельном экране"
width="1440"
height="1024"
@@ -520,7 +520,7 @@
</p>
<figure class="case-media case-media--content">
<img
src="../assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
src="{{assetPrefix}}assets/ai-platform-primo-rpa/fullscreen_modal-in_project-import_dataset.webp"
alt="Импорт датасета внутри проекта"
width="1920"
height="740"
+6 -6
View File
@@ -667,9 +667,9 @@
</ul>
<p class="section__prose">
Навыки: мозаика на широком экране — см.
<a href="../index.html#skills">главную, #skills</a>. Портфолио: карусель на
<a href="../../index.html#skills">главную, #skills</a>. Портфолио: карусель на
<code>100vw</code> с <code>--projects-card-width</code> и JS-прокруткой — на главной
<a href="../index.html#projects">#projects</a>.
<a href="../../index.html#projects">#projects</a>.
</p>
<h3>Wide в кейсах</h3>
@@ -738,7 +738,7 @@
<div class="portfolio-card__cover" aria-hidden="true">
<img
class="portfolio-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="400"
height="225"
@@ -797,7 +797,7 @@
<a class="contact-card contact-card--link contact-card--brand-tg" href="https://t.me/mamadaevv" rel="noopener noreferrer">
<span class="contact-card__corner" aria-hidden="true"></span>
<span class="contact-card__icon" aria-hidden="true">
<img src="../assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" />
<img src="{{assetPrefix}}assets/shared/icons/tg.svg" alt="" width="24" height="24" loading="eager" decoding="async" />
</span>
<span class="contact-card__body">
<span class="contact-card__name">contact-card--link</span>
@@ -845,7 +845,7 @@
Живой эталон со всеми вариантами — на отдельной странице; оттуда копируют куски при сборке нового кейса.
</p>
<p>
<a class="btn btn--secondary btn--flat" href="template-elements-demo.html">Демо элементов кейса</a>
<a class="btn btn--secondary btn--flat" href="template-elements-demo/">Демо элементов кейса</a>
</p>
</div>
@@ -856,7 +856,7 @@
раскладка вынесены на отдельную страницу.
</p>
<p>
<a class="btn btn--secondary btn--flat" href="mini-projects-showcase.html">Каталог карточек активности</a>
<a class="btn btn--secondary btn--flat" href="mini-projects-showcase/">Каталог карточек активности</a>
</p>
</div>
</div>
+38 -38
View File
@@ -119,7 +119,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Обзор приложения Lunacy"
data-src="../assets/lunacy/Lunacy_app_overview.webp"
data-src="{{assetPrefix}}assets/lunacy/Lunacy_app_overview.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -134,7 +134,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Настройки blob на холсте"
data-src="../assets/lunacy/blob_settings_on_canvas.webp"
data-src="{{assetPrefix}}assets/lunacy/blob_settings_on_canvas.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -149,7 +149,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Модальное окно сравнения компонентов"
data-src="../assets/lunacy/compare_components_modal_window.webp"
data-src="{{assetPrefix}}assets/lunacy/compare_components_modal_window.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -160,7 +160,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Индикатор обновления компонентов в панели"
data-src="../assets/lunacy/components_update_indicator_location_panel.webp"
data-src="{{assetPrefix}}assets/lunacy/components_update_indicator_location_panel.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -175,7 +175,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Модальное окно: создать прототип на холсте"
data-src="../assets/lunacy/modal_window_for_prototype_create_on_canvas.webp"
data-src="{{assetPrefix}}assets/lunacy/modal_window_for_prototype_create_on_canvas.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -186,7 +186,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Модальное окно: состояния панели прототипа"
data-src="../assets/lunacy/modal_window_for_prototype_panel_states.webp"
data-src="{{assetPrefix}}assets/lunacy/modal_window_for_prototype_panel_states.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -201,7 +201,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Shadow Pro: панель настроек"
data-src="../assets/lunacy/shadow_pro_settings_panel.webp"
data-src="{{assetPrefix}}assets/lunacy/shadow_pro_settings_panel.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -212,7 +212,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Shadow Pro: идеи"
data-src="../assets/lunacy/shadow_pro_settings_ideas.webp"
data-src="{{assetPrefix}}assets/lunacy/shadow_pro_settings_ideas.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -223,7 +223,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Shadow Pro: модалка, авто включено"
data-src="../assets/lunacy/shadow_pro_settings_modal_auto_on.webp"
data-src="{{assetPrefix}}assets/lunacy/shadow_pro_settings_modal_auto_on.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -234,7 +234,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Shadow Pro: модалка, авто выключено"
data-src="../assets/lunacy/shadow_pro_settings_modal_auto-off.webp"
data-src="{{assetPrefix}}assets/lunacy/shadow_pro_settings_modal_auto-off.webp"
loading="lazy"
decoding="async"
data-image-viewer
@@ -251,31 +251,31 @@
<figure class="case-media case-media-gallery" style="--case-gallery-cols: 3">
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v1" data-src="../assets/lunacy/blob_settings_panel_v1.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v1" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v1.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v2" data-src="../assets/lunacy/blob_settings_panel_v2.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v2" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v2.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v3" data-src="../assets/lunacy/blob_settings_panel_v3.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v3" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v3.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v4" data-src="../assets/lunacy/blob_settings_panel_v4.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v4" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v4.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v5" data-src="../assets/lunacy/blob_settings_panel_v5.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v5" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v5.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v6" data-src="../assets/lunacy/blob_settings_panel_v6.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v6" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v6.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v7" data-src="../assets/lunacy/blob_settings_panel_v7.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v7" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v7.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v8" data-src="../assets/lunacy/blob_settings_panel_v8.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v8" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v8.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v9" data-src="../assets/lunacy/blob_settings_panel_v9.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="blob panel v9" data-src="{{assetPrefix}}assets/lunacy/blob_settings_panel_v9.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
</div>
<figcaption>Девять версий подряд: читать слева направо, сверху вниз.</figcaption>
@@ -290,58 +290,58 @@
<figure class="case-media case-media-gallery" style="--case-gallery-cols: 4">
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v1" data-src="../assets/lunacy/slider_v1.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v1" data-src="{{assetPrefix}}assets/lunacy/slider_v1.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v2" data-src="../assets/lunacy/slider_v2.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v2" data-src="{{assetPrefix}}assets/lunacy/slider_v2.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v3" data-src="../assets/lunacy/slider_v3.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v3" data-src="{{assetPrefix}}assets/lunacy/slider_v3.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v4" data-src="../assets/lunacy/slider_v4.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v4" data-src="{{assetPrefix}}assets/lunacy/slider_v4.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v5" data-src="../assets/lunacy/slider_v5.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v5" data-src="{{assetPrefix}}assets/lunacy/slider_v5.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v6" data-src="../assets/lunacy/slider_v6.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v6" data-src="{{assetPrefix}}assets/lunacy/slider_v6.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v7" data-src="../assets/lunacy/slider_v7.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v7" data-src="{{assetPrefix}}assets/lunacy/slider_v7.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v8" data-src="../assets/lunacy/slider_v8.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v8" data-src="{{assetPrefix}}assets/lunacy/slider_v8.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v9" data-src="../assets/lunacy/slider_v9.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v9" data-src="{{assetPrefix}}assets/lunacy/slider_v9.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v10" data-src="../assets/lunacy/slider_v10.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v10" data-src="{{assetPrefix}}assets/lunacy/slider_v10.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v11" data-src="../assets/lunacy/slider_v11.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v11" data-src="{{assetPrefix}}assets/lunacy/slider_v11.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v12" data-src="../assets/lunacy/slider_v12.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v12" data-src="{{assetPrefix}}assets/lunacy/slider_v12.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v13" data-src="../assets/lunacy/slider_v13.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v13" data-src="{{assetPrefix}}assets/lunacy/slider_v13.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider 14" data-src="../assets/lunacy/slider_14.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider 14" data-src="{{assetPrefix}}assets/lunacy/slider_14.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v15" data-src="../assets/lunacy/slider_v15.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v15" data-src="{{assetPrefix}}assets/lunacy/slider_v15.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v16" data-src="../assets/lunacy/slider_v16.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v16" data-src="{{assetPrefix}}assets/lunacy/slider_v16.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v17" data-src="../assets/lunacy/slider_v17.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v17" data-src="{{assetPrefix}}assets/lunacy/slider_v17.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v18" data-src="../assets/lunacy/slider_v18.webp" loading="lazy" decoding="async" data-image-viewer />
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="slider v18" data-src="{{assetPrefix}}assets/lunacy/slider_v18.webp" loading="lazy" decoding="async" data-image-viewer />
</div>
</div>
<figcaption>Восемнадцать вариантов слайдера плюс отдельный кадр <code>slider_14</code> между v13 и v15.</figcaption>
@@ -354,7 +354,7 @@
<img
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
alt="Все слайдеры: общий вид"
data-src="../assets/lunacy/sliders_all_set.webp"
data-src="{{assetPrefix}}assets/lunacy/sliders_all_set.webp"
loading="lazy"
decoding="async"
data-image-viewer
+1 -1
View File
@@ -94,7 +94,7 @@
<h2>Обложка</h2>
<figure class="case-media case-media--wide">
<img
src="../assets/manu-game-maker/cover.webp"
src="{{assetPrefix}}assets/manu-game-maker/cover.webp"
alt="Интерфейс игрового движка MANU — обложка кейса"
width="1200"
height="675"
+5 -5
View File
@@ -483,7 +483,7 @@
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="560"
height="315"
@@ -508,7 +508,7 @@
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="560"
height="315"
@@ -533,7 +533,7 @@
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="560"
height="315"
@@ -558,7 +558,7 @@
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="560"
height="315"
@@ -583,7 +583,7 @@
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
src="../assets/shared/placeholder.webp"
src="{{assetPrefix}}assets/shared/placeholder.webp"
alt=""
width="560"
height="315"
+1 -1
View File
@@ -94,7 +94,7 @@
<h2>Обложка</h2>
<figure class="case-media case-media--wide">
<img
src="../assets/mobile-clinic-app/cover.webp"
src="{{assetPrefix}}assets/mobile-clinic-app/cover.webp"
alt="Мобильное приложение для сети клиник — обложка кейса"
width="1200"
height="675"
@@ -112,9 +112,9 @@
<h3>Фильтр использования</h3>
<figure class="case-media">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/obsidian-plugin-columns-view/filter use.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="../assets/obsidian-plugin-columns-view/filter use.webm" type="video/webm" />
<source src="../assets/obsidian-plugin-columns-view/filter use.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/obsidian-plugin-columns-view/filter use.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="{{assetPrefix}}assets/obsidian-plugin-columns-view/filter use.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/obsidian-plugin-columns-view/filter use.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -124,9 +124,9 @@
<h3>Конфигурация отображения</h3>
<figure class="case-media">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/obsidian-plugin-columns-view/view configure.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="../assets/obsidian-plugin-columns-view/view configure.webm" type="video/webm" />
<source src="../assets/obsidian-plugin-columns-view/view configure.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/obsidian-plugin-columns-view/view configure.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="{{assetPrefix}}assets/obsidian-plugin-columns-view/view configure.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/obsidian-plugin-columns-view/view configure.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
+2 -2
View File
@@ -204,7 +204,7 @@
<h3>Было</h3>
<figure class="case-media case-media--wide">
<img
src="../assets/orc-primo-rpa/projects--table-old.webp"
src="{{assetPrefix}}assets/orc-primo-rpa/projects--table-old.webp"
alt="Список проектов в оркестраторе — предыдущая версия таблицы"
width="1919"
height="867"
@@ -217,7 +217,7 @@
<h3>Стало</h3>
<figure class="case-media case-media--wide">
<img
src="../assets/orc-primo-rpa/projects--table-new.webp"
src="{{assetPrefix}}assets/orc-primo-rpa/projects--table-new.webp"
alt="Список проектов в оркестраторе — обновлённая таблица"
width="1366"
height="768"
@@ -94,7 +94,7 @@
<h2>Обложка</h2>
<figure class="case-media case-media--wide">
<img
src="../assets/task-distribution-concept/cover.webp"
src="{{assetPrefix}}assets/task-distribution-concept/cover.webp"
alt="Концепт сервиса распределения задач — обложка кейса"
width="1200"
height="675"
+30 -30
View File
@@ -127,7 +127,7 @@
<h2 id="referensy">Референсы</h2>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/refs.webp" alt="Референсы" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/refs.webp" alt="Референсы" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<ul>
<li>Таск-трекеры (Trello, Monday, YouTrack и др.)</li>
@@ -139,9 +139,9 @@
<h3 id="skrinkast">Скринкаст</h3>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/task-tracker/full_preview.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="../assets/task-tracker/full_preview.webm" type="video/webm" />
<source src="../assets/task-tracker/full_preview.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/task-tracker/full_preview.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="{{assetPrefix}}assets/task-tracker/full_preview.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/task-tracker/full_preview.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -154,7 +154,7 @@
rel="noopener noreferrer"
>
<span class="case-link-card__media">
<img src="../assets/task-tracker/tab_all-tasks.webp" alt="Превью прототипа Figma" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/tab_all-tasks.webp" alt="Превью прототипа Figma" width="1200" height="800" loading="lazy" decoding="async" />
</span>
<span class="case-link-card__body">
<span class="case-link-card__title">Прототип Figma</span>
@@ -173,21 +173,21 @@
<h3 id="tabs">Вкладки (Tabs)</h3>
<p class="section__prose">На вкладке <strong>All tasks</strong> сотрудник может ознакомиться со всеми доступными задачами.</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/tab_all-tasks.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/tab_all-tasks.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<p class="section__prose">
На вкладке <strong>My tasks</strong> отображаются только те задачи, что закреплены за текущим сотрудником. Группировка идёт по статусам задач (статус в карточке задачи скрыт).
</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/tab_my-tasks.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/tab_my-tasks.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<p class="section__prose">На вкладке <strong>Task by assign</strong> отображены все задачи c разбивкой по исполнителю.</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/tab_tasks-by-assign.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/tab_tasks-by-assign.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<p class="section__prose">В правой части имеются опции для текущей вкладки.</p>
<figure class="case-media case-media--natural">
<img src="../assets/task-tracker/actions_for_page.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/actions_for_page.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" />
</figure>
<p class="section__prose">
Все изменения сохраняются после ухода с вкладки и после закрытия всей страницы <strong>Tasks</strong>. Эти настройки индивидуальны и каждый сотрудник может настроить страницу как ему удобно.
@@ -212,7 +212,7 @@
Разные виды отображения одних и тех же задач могут быть полезны для разных контекстов использования страницы <strong>Tasks</strong> и также в угоду личным предпочтениям сотрудника, что повышает его эффективность. Сотрудник, которого не раздражает интерфейс работает продуктивнее и приносит больше пользы.
</p>
<figure class="case-media case-media--natural">
<img src="../assets/task-tracker/dropdown_menu_for_views.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/dropdown_menu_for_views.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" />
</figure>
<aside class="case-callout" data-callout>
<span class="case-callout__emoji case-callout__emoji--pulse" aria-hidden="true">💡</span>
@@ -224,19 +224,19 @@
Вид <strong>Board</strong> позволяет удобнее работать с функцией Drag&amp;Drop (см. ниже). Также визуально легче определить кол-во задач в категории, подразумеваю что это может быть полезно. В случае использования группировки задач по статусам выполнения, перемещение карточек слева направо создаёт естественное горизонтальное течение задач из точки А в точку Б.
</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/view_board.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/view_board.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<p class="section__prose">
Вид <strong>List</strong> позволяет увидеть больше информации на меньшей площади экрана. При этом этот вид визуально и функционально легче табличного вида, а значит меньше когнитивной нагрузки на пользователя. Также здесь все заголовки задач начинаются в крайнем левом положении, поэтому становится легко <em>пробежаться глазами</em> по списку.
</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/view_list.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/view_list.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<p class="section__prose">
Вид <strong>Table</strong> позволяет сразу же работать со всеми полями задачи, без раскрытия её в модальном окне или отдельной странице. Таблица подразумевает пользовательскую настройку ширины и порядка столбцов, что может быть удобно в некоторых кейсах использования.
</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/view_table.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/view_table.webp" alt="Untitled" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<aside class="case-callout" data-callout>
<span class="case-callout__emoji case-callout__emoji--pulse" aria-hidden="true">💡</span>
@@ -246,9 +246,9 @@
</aside>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/task-tracker/expand-collapse_group.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="../assets/task-tracker/expand-collapse_group.webm" type="video/webm" />
<source src="../assets/task-tracker/expand-collapse_group.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/task-tracker/expand-collapse_group.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="{{assetPrefix}}assets/task-tracker/expand-collapse_group.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/task-tracker/expand-collapse_group.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -261,7 +261,7 @@
rel="noopener noreferrer"
>
<span class="case-link-card__media">
<img src="../assets/task-tracker/view_board.webp" alt="Превью прототипа вида Board" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/view_board.webp" alt="Превью прототипа вида Board" width="1200" height="800" loading="lazy" decoding="async" />
</span>
<span class="case-link-card__body">
<span class="case-link-card__title">Прототип в Figma</span>
@@ -278,9 +278,9 @@
<p class="section__prose"><strong>Board view</strong></p>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/task-tracker/drag-drop-item_board-view.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="../assets/task-tracker/drag-drop-item_board-view.webm" type="video/webm" />
<source src="../assets/task-tracker/drag-drop-item_board-view.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/task-tracker/drag-drop-item_board-view.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-item_board-view.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-item_board-view.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -293,7 +293,7 @@
rel="noopener noreferrer"
>
<span class="case-link-card__media" aria-hidden="true">
<img src="../assets/task-tracker/view_board.webp" alt="" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/view_board.webp" alt="" width="1200" height="800" loading="lazy" decoding="async" />
</span>
<span class="case-link-card__body">
<span class="case-link-card__title">Прототип в Figma</span>
@@ -305,9 +305,9 @@
<p class="section__prose"><strong>List view</strong></p>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/task-tracker/drag-drop-item_list-view.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="../assets/task-tracker/drag-drop-item_list-view.webm" type="video/webm" />
<source src="../assets/task-tracker/drag-drop-item_list-view.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/task-tracker/drag-drop-item_list-view.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-item_list-view.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-item_list-view.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -320,7 +320,7 @@
rel="noopener noreferrer"
>
<span class="case-link-card__media" aria-hidden="true">
<img src="../assets/task-tracker/view_list.webp" alt="" width="1200" height="800" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/task-tracker/view_list.webp" alt="" width="1200" height="800" loading="lazy" decoding="async" />
</span>
<span class="case-link-card__body">
<span class="case-link-card__title">Прототип в Figma</span>
@@ -335,9 +335,9 @@
</p>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/task-tracker/drag-drop-action_example.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="../assets/task-tracker/drag-drop-action_example.webm" type="video/webm" />
<source src="../assets/task-tracker/drag-drop-action_example.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/task-tracker/drag-drop-action_example.webp" data-case-video-player style="display: block; width: 100%; height: auto; margin: 0">
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-action_example.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/task-tracker/drag-drop-action_example.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
@@ -369,7 +369,7 @@
</p>
<p class="section__prose">Светлая цветная тема</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/light_theme_color.webp" alt="Светлая цветная тема" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/light_theme_color.webp" alt="Светлая цветная тема" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<div class="case-links-grid">
<a
@@ -390,7 +390,7 @@
</div>
<p class="section__prose">Нейтральная тёмная тема</p>
<figure class="case-media case-media--wide">
<img src="../assets/task-tracker/dark_theme.webp" alt="Нейтральная тёмная тема" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/task-tracker/dark_theme.webp" alt="Нейтральная тёмная тема" width="1200" height="800" loading="lazy" decoding="async" data-image-viewer />
</figure>
<div class="case-links-grid">
<a
+22 -22
View File
@@ -107,7 +107,7 @@
<div class="case-links-grid">
<a class="case-link-card" href="https://www.examples.com/" target="_blank" rel="noopener noreferrer">
<span class="case-link-card__media" aria-hidden="true">
<img src="../assets/template-elements-demo/wallpaper-1.jpg" alt="" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/template-elements-demo/wallpaper-1.jpg" alt="" loading="lazy" decoding="async" />
</span>
<span class="case-link-card__body">
<span class="case-link-card__title">Источник с превью</span>
@@ -129,19 +129,19 @@
<h3>Картинка: 50% от оригинала (без превью)</h3>
<figure class="case-media case-media--natural">
<img src="../assets/template-elements-demo/hello.gif" alt="Демо GIF в натуральном размере" loading="lazy" decoding="async" />
<img src="{{assetPrefix}}assets/template-elements-demo/hello.gif" alt="Демо GIF в натуральном размере" loading="lazy" decoding="async" />
<figcaption>Изображение в уменьшенном натуральном размере, по центру.</figcaption>
</figure>
<h3>Картинка: по ширине контента (с превью)</h3>
<figure class="case-media case-media--content">
<img src="../assets/template-elements-demo/wallpaper-1.jpg" alt="Демо изображения по ширине контента" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/wallpaper-1.jpg" alt="Демо изображения по ширине контента" loading="lazy" decoding="async" data-image-viewer />
<figcaption>Изображение по ширине контента. Клик открывает viewer.</figcaption>
</figure>
<h3>Картинка: чуть шире контента (с превью)</h3>
<figure class="case-media case-media--wide">
<img src="../assets/template-elements-demo/wallpaper-1.jpg" alt="Демо изображения шире контента" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/wallpaper-1.jpg" alt="Демо изображения шире контента" loading="lazy" decoding="async" data-image-viewer />
<figcaption>Изображение немного выходит за пределы контентной колонки.</figcaption>
</figure>
@@ -153,7 +153,7 @@
<div class="case-media-tall" data-case-tall-root>
<div class="case-media-tall__clip" id="template-demo-tall-clip" data-case-tall-clip>
<img
src="../assets/template-elements-demo/img-long.webp"
src="{{assetPrefix}}assets/template-elements-demo/img-long.webp"
alt="Демо: длинный вертикальный скрин интерфейса"
width="1200"
loading="lazy"
@@ -186,25 +186,25 @@
<figure class="case-media case-media-gallery" style="--case-gallery-cols: 3">
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-1.webp" alt="Демо миниатюра 1" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-1.webp" alt="Демо миниатюра 1" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-2.webp" alt="Демо миниатюра 2" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-2.webp" alt="Демо миниатюра 2" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-3.webp" alt="Демо миниатюра 3" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-3.webp" alt="Демо миниатюра 3" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-4.webp" alt="Демо миниатюра 4" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-4.webp" alt="Демо миниатюра 4" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-5.webp" alt="Демо миниатюра 5" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-5.webp" alt="Демо миниатюра 5" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-6.webp" alt="Демо миниатюра 6" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-6.webp" alt="Демо миниатюра 6" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-7.webp" alt="Демо миниатюра 7" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-7.webp" alt="Демо миниатюра 7" loading="lazy" decoding="async" data-image-viewer />
</div>
</div>
<figcaption>Сетка в колонке статьи; на этом примере три колонки на десктопе.</figcaption>
@@ -217,25 +217,25 @@
<figure class="case-media case-media-gallery case-media-gallery--wide" style="--case-gallery-cols: 2">
<div class="case-media-gallery__grid">
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-1.webp" alt="Wide-сетка, кадр 1" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-1.webp" alt="Wide-сетка, кадр 1" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-2.webp" alt="Wide-сетка, кадр 2" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-2.webp" alt="Wide-сетка, кадр 2" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-3.webp" alt="Wide-сетка, кадр 3" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-3.webp" alt="Wide-сетка, кадр 3" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-4.webp" alt="Wide-сетка, кадр 4" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-4.webp" alt="Wide-сетка, кадр 4" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-5.webp" alt="Wide-сетка, кадр 5" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-5.webp" alt="Wide-сетка, кадр 5" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-6.webp" alt="Wide-сетка, кадр 6" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-6.webp" alt="Wide-сетка, кадр 6" loading="lazy" decoding="async" data-image-viewer />
</div>
<div class="case-media-gallery__item">
<img src="../assets/template-elements-demo/small-image-7.webp" alt="Wide-сетка, кадр 7" loading="lazy" decoding="async" data-image-viewer />
<img src="{{assetPrefix}}assets/template-elements-demo/small-image-7.webp" alt="Wide-сетка, кадр 7" loading="lazy" decoding="async" data-image-viewer />
</div>
</div>
<figcaption>Ширина как у wide-картинки; на узком экране wide-обёртка схлопывается в 100% ширины колонки (см. медиазапросы).</figcaption>
@@ -252,9 +252,9 @@
<h3>Видео: карточка с тенью и фиксированными малыми углами</h3>
<figure class="case-media" style="margin: 0.85rem 0 1.2rem">
<div class="case-video-shell">
<video controls preload="metadata" playsinline poster="../assets/template-elements-demo/video-1.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="../assets/template-elements-demo/video-1.webm" type="video/webm" />
<source src="../assets/template-elements-demo/video-1.mp4" type="video/mp4" />
<video controls preload="metadata" playsinline poster="{{assetPrefix}}assets/template-elements-demo/video-1.webp" data-case-video-player style="display: block; width: 100%; height: auto">
<source src="{{assetPrefix}}assets/template-elements-demo/video-1.webm" type="video/webm" />
<source src="{{assetPrefix}}assets/template-elements-demo/video-1.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
</div>
+1 -1
View File
@@ -2,6 +2,6 @@
<div class="footer__inner">
<span class="footer__chunk footer__chunk--date">© 2026<span class="footer__sep" aria-hidden="true"> · </span></span>
<span class="footer__chunk footer__chunk--main">Дизайн и разработка сайта — Николай Мамадаев</span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="{{assetPrefix}}cases/design-system.html">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="{{assetPrefix}}cookie-policy.html">Политика cookie</a></span>
<span class="footer__chunk footer__chunk--meta footer__attr"><span class="footer__sep" aria-hidden="true"> · </span><a href="{{assetPrefix}}cases/design-system/">Design System</a><span class="footer__sep" aria-hidden="true"> · </span><a href="{{assetPrefix}}cookie-policy.html">Политика cookie</a></span>
</div>
</footer>
+3 -3
View File
@@ -5,7 +5,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-assistant">
<a
class="mp-card mp-card--link mp-card--compact"
href="{{casesPrefix}}ai-assistant-figma.html"
href="{{casesPrefix}}ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -20,7 +20,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="card-columns">
<a
class="mp-card mp-card--link mp-card--compact"
href="{{casesPrefix}}card-columns-obsidian.html"
href="{{casesPrefix}}card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -35,7 +35,7 @@
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="site-with-ai-ide">
<a
class="mp-card mp-card--link mp-card--compact"
href="{{casesPrefix}}site-with-ai-ide.html"
href="{{casesPrefix}}site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
+3 -3
View File
@@ -111,7 +111,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/ai-assistant-figma.html"
href="cases/ai-assistant-figma/"
aria-label="AI assistant — открыть кейс"
>
<div class="mp-card__body">
@@ -126,7 +126,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/card-columns-obsidian.html"
href="cases/card-columns-obsidian/"
aria-label="Card Columns — открыть кейс"
>
<div class="mp-card__body">
@@ -141,7 +141,7 @@
<li class="mini-projects-grid__item" data-mp-cells="2">
<a
class="mp-card mp-card--link mp-card--compact"
href="cases/site-with-ai-ide.html"
href="cases/site-with-ai-ide/"
aria-label="Этот сайт — открыть кейс"
>
<div class="mp-card__body">
+7 -7
View File
@@ -3,7 +3,7 @@
<h2 class="section__title">Смотрите также</h2>
<ol class="mini-projects-grid" data-mini-projects-list>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="ai-platform-primo-rpa">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}ai-platform-primo-rpa.html" aria-label="Платформа для работы с AI — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}ai-platform-primo-rpa/" aria-label="Платформа для работы с AI — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -26,7 +26,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="lunacy">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}lunacy.html" aria-label="Графический редактор Lunacy — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}lunacy/" aria-label="Графический редактор Lunacy — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -49,7 +49,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="manu-game-maker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}manu-game-maker.html" aria-label="Игровой движок MANU — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}manu-game-maker/" aria-label="Игровой движок MANU — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -72,7 +72,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="mobile-clinic-app" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}mobile-clinic-app.html" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}mobile-clinic-app/" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -95,7 +95,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="orc-automation-panel">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}orc-automation-panel.html" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}orc-automation-panel/" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -117,7 +117,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="task-distribution-concept" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-distribution-concept.html" aria-label="Концепт сервиса распределения задач — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-distribution-concept/" aria-label="Концепт сервиса распределения задач — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -140,7 +140,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="3" data-related-slug="task-tracker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-tracker.html" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-tracker/" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
+7 -7
View File
@@ -3,7 +3,7 @@
<h2 class="section__title">Портфолио</h2>
<ol class="mini-projects-grid" data-mini-projects-list>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="ai-platform-primo-rpa">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}ai-platform-primo-rpa.html" aria-label="Платформа для работы с AI — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}ai-platform-primo-rpa/" aria-label="Платформа для работы с AI — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -26,7 +26,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="lunacy">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}lunacy.html" aria-label="Графический редактор Lunacy — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}lunacy/" aria-label="Графический редактор Lunacy — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -49,7 +49,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="manu-game-maker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}manu-game-maker.html" aria-label="Игровой движок MANU — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}manu-game-maker/" aria-label="Игровой движок MANU — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -72,7 +72,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="mobile-clinic-app" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}mobile-clinic-app.html" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}mobile-clinic-app/" aria-label="Мобильное приложение для сети клиник — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -95,7 +95,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="orc-automation-panel">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}orc-automation-panel.html" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}orc-automation-panel/" aria-label="Веб-панель для оркестрации автоматизаций — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -117,7 +117,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="task-distribution-concept" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-distribution-concept.html" aria-label="Концепт сервиса распределения задач — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-distribution-concept/" aria-label="Концепт сервиса распределения задач — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
@@ -140,7 +140,7 @@
</a>
</li>
<li class="mini-projects-grid__item" data-mp-cells="2" data-related-slug="task-tracker" hidden>
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-tracker.html" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<a class="mp-card mp-card--link mp-card--stack" href="{{casesPrefix}}task-tracker/" aria-label="Таск-трекер для бек-офис системы — открыть кейс">
<div class="mp-card__media" aria-hidden="true">
<img
class="mp-card__image"
+8 -8
View File
@@ -16,7 +16,7 @@
<div class="projects-carousel__track">
<div class="projects-carousel__spacer" aria-hidden="true"></div>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}orc-automation-panel.html">
<a class="portfolio-card" href="{{casesPrefix}}orc-automation-panel/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Веб-панель для оркестрации автоматизаций</h3>
<p class="portfolio-card__summary">
@@ -42,7 +42,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}ai-platform-primo-rpa.html">
<a class="portfolio-card" href="{{casesPrefix}}ai-platform-primo-rpa/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Платформа для работы с AI</h3>
<p class="portfolio-card__summary">
@@ -68,7 +68,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}task-tracker.html">
<a class="portfolio-card" href="{{casesPrefix}}task-tracker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Таск-трекер для бек-офис системы</h3>
<p class="portfolio-card__summary">
@@ -94,7 +94,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}manu-game-maker.html">
<a class="portfolio-card" href="{{casesPrefix}}manu-game-maker/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Игровой движок MANU</h3>
<p class="portfolio-card__summary">
@@ -120,7 +120,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}lunacy.html">
<a class="portfolio-card" href="{{casesPrefix}}lunacy/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Графический редактор Lunacy</h3>
<p class="portfolio-card__summary">
@@ -146,7 +146,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}mobile-clinic-app.html">
<a class="portfolio-card" href="{{casesPrefix}}mobile-clinic-app/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Мобильное приложение для сети клиник</h3>
<p class="portfolio-card__summary">
@@ -172,7 +172,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}task-distribution-concept.html">
<a class="portfolio-card" href="{{casesPrefix}}task-distribution-concept/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Концепт сервиса распределения задач</h3>
<p class="portfolio-card__summary">
@@ -198,7 +198,7 @@
</a>
</article>
<article class="projects-carousel__item">
<a class="portfolio-card" href="{{casesPrefix}}obsidian-plugin-columns-view.html">
<a class="portfolio-card" href="{{casesPrefix}}obsidian-plugin-columns-view/">
<div class="portfolio-card__body">
<h3 class="portfolio-card__title">Колоночный вид — плагин для Obsidian</h3>
<p class="portfolio-card__summary">