feat(fonts): preset Sans uses Medeo Sans (replaces Geologica + PT Sans)

This commit is contained in:
Nikolay Mamadaev committed 2026-10-29 18:20:45 +02:00
1 parent cd5aefbb14
commit e5bead9104
106 files changed
+603 -589

No files matched your search

@@ -0,0 +1,37 @@
# Горизонтальный лэйаут карточек портфолио — план реализации
> **Для Hermes:** реализовывать после подтверждения Николая; не создавать новый компонент или новые классы-модификаторы.
**Цель:** расширить существующие `.mp-card--stack` и `.mp-card--link` горизонтальным лэйаутом — текст слева, изображение справа.
**Подход:** использовать текущую структуру `.mp-card` и её дочерние `.mp-card__body` / `.mp-card__media`, сохраняя `.mp-card--link` для ссылочного поведения. Изменить существующие стили стека так, чтобы карточка получила горизонтальную компоновку; сохранить прежний вариант для текущих потребителей и сделать новый вид адаптивным. Показать существующий класс в каталоге дизайн-системы.
**Стек:** HTML, CSS, существующая сборка страниц.
---
### Задача 1: Расширить существующий стек горизонтальным лэйаутом
**Цель:** расположить текстовый блок слева, изображение справа и адаптировать раскладку к узким экранам, не создавая новый компонент или модификатор.
**Файлы:**
- Изменить: `public/css/main.css` (стили `.mp-card` и его существующих layout-модификаторов около строк 3433–3498; проверить правила `.mp-card__media` и связанные responsive-правила перед изменением).
**Проверка:** проверить области применения `.mp-card--stack` и `.mp-card--link`; исключить регрессии других карточек и выполнить `npm run build:pages`.
### Задача 2: Обновить демонстрацию существующей карточки
**Цель:** показать горизонтальный лэйаут существующего `.mp-card--stack` + `.mp-card--link` в каталоге дизайн-системы и обновить подпись.
**Файлы:**
- Изменить: `src/pages/cases/design-system.html` (демо карточки портфолио около строк 756–802).
**Проверка:** собрать страницы и проверить пример на широком и узком экранах.
### Задача 3: Проверить результат и зафиксировать
**Цель:** проверить новый лэйаут и прежних потребителей карточек.
**Проверка:** `npm run build:pages`, открыть собранный каталог через dev-сервер, проверить responsive-вид; выполнить `git diff --check` и осмотреть diff. После успешной проверки создать локальный git commit согласно `AGENTS.md`; не пушить.
**Открытый вопрос:** `.mp-card--stack` задействован также вне каталога портфолио; при реализации нужно сохранить существующий стековый вариант там, где он уже используется, добавив горизонтальный лэйаут в рамках уже существующих классов, без нового имени класса.
+1 -1
View File
@@ -47,7 +47,7 @@
| `data-font` | Стек | Назначение |
|---|---|---|
| `merriweather` | Merriweather + Alice | По умолчанию. Alice — проза, Merriweather — заголовки |
| `geologica` | Geologica + PT Sans | Гротеск + нейтральная проза |
| `medeo` | Medeo Sans | Гротеск, интерфейс и проза |
| `mono` | Source Code Pro + PT Mono | Моноширинный |
### Шкала
+3 -3
View File
@@ -2,7 +2,7 @@
## Генерация PDF
Скрипт `scripts/generate-resume-pdf.mjs` открывает `resume/` через Puppeteer, применяет шрифт geologica (PT Sans), убирает подложку/обводку блока `.resume-doc` и сохраняет PDF.
Скрипт `scripts/generate-resume-pdf.mjs` открывает `resume/` через Puppeteer, применяет шрифт medeo (Medeo Sans), убирает подложку/обводку блока `.resume-doc` и сохраняет PDF.
**Важно**: скрипт требует запущенный dev-сервер (`npm run serve` → `localhost:4175`).
@@ -15,12 +15,12 @@ npm run generate:resume-pdf
или вручную:
```bash
node scripts/generate-resume-pdf.mjs http://localhost:4175/resume/ geologica
node scripts/generate-resume-pdf.mjs http://localhost:4175/resume/ medeo
```
Параметры:
- `[url]` — URL страницы (по умолчанию `http://localhost:4175/resume/`)
- `[font]` — ID шрифта: `geologica`, `merriweather`, `mono` (по умолчанию `geologica`)
- `[font]` — ID шрифта: `medeo`, `merriweather`, `mono` (по умолчанию `medeo`)
### Выходной файл
+51 -51
View File
@@ -1,51 +1,51 @@
# Локальные vendor-ассеты (шрифты и Plyr)
Сайт не использует Google Fonts и jsDelivr в рантайме. Файлы лежат в `public/` и попадают на хостинг через git push.
## Что где
| Путь | Содержимое |
|------|------------|
| `public/assets/fonts/*.css` | Три пресета темы: `merriweather`, `geologica`, `mono` |
| `public/assets/fonts/files/*.woff2` | Файлы шрифтов (из `@fontsource/*`) |
| `public/vendor/plyr/` | `plyr.css`, `plyr.min.mjs` (из `plyr@3.8.4`) |
Подключение:
- Шрифты — inline `theme-init-script` и [`theme-fonts.js`](../public/js/modules/theme/theme-fonts.js).
- CSS Plyr — partial [`src/partials/head-plyr.html`](../src/partials/head-plyr.html) только на страницах с `video[data-case-video-player]`.
- JS Plyr — [`video-player.js`](../public/js/modules/cases/video-player.js).
## Обновление
```bash
npm install
npm run vendor:copy
```
Скрипт: [`scripts/copy-vendor.mjs`](../scripts/copy-vendor.mjs). Пересобирает `public/assets/fonts/` и `public/vendor/plyr/` из `node_modules`.
Полная сборка (vendor + HTML):
```bash
npm run build
```
Только HTML из `src/`:
```bash
npm run build:pages
```
## Добавить или изменить шрифт
1. Установить пакет `@fontsource/...` или `@fontsource-variable/...`.
2. Добавить источник в `FONT_BUNDLES` в `copy-vendor.mjs`.
3. `npm run vendor:copy`.
4. Проверить имена `font-family` в [`public/css/main.css`](../public/css/main.css) (`html[data-font=...]`).
## Обновить Plyr
1. Обновить версию в `package.json` (`dependencies.plyr`).
2. `npm install` → `npm run vendor:copy`.
3. При смене API — правки в `video-player.js`.
# Локальные vendor-ассеты (шрифты и Plyr)
Сайт не использует Google Fonts и jsDelivr в рантайме. Файлы лежат в `public/` и попадают на хостинг через git push.
## Что где
| Путь | Содержимое |
|------|------------|
| `public/assets/fonts/*.css` | Три пресета темы: `merriweather`, `medeo`, `mono` |
| `public/assets/fonts/files/*.woff2` | Файлы шрифтов (из `@fontsource/*`, `medeo-font`) |
| `public/vendor/plyr/` | `plyr.css`, `plyr.min.mjs` (из `plyr@3.8.4`) |
Подключение:
- Шрифты — inline `theme-init-script` и [`theme-fonts.js`](../public/js/modules/theme/theme-fonts.js).
- CSS Plyr — partial [`src/partials/head-plyr.html`](../src/partials/head-plyr.html) только на страницах с `video[data-case-video-player]`.
- JS Plyr — [`video-player.js`](../public/js/modules/cases/video-player.js).
## Обновление
```bash
npm install
npm run vendor:copy
```
Скрипт: [`scripts/copy-vendor.mjs`](../scripts/copy-vendor.mjs). Пересобирает `public/assets/fonts/` и `public/vendor/plyr/` из `node_modules`.
Полная сборка (vendor + HTML):
```bash
npm run build
```
Только HTML из `src/`:
```bash
npm run build:pages
```
## Добавить или изменить шрифт
1. Установить пакет `@fontsource/...` или `@fontsource-variable/...`.
2. Добавить источник в `FONT_BUNDLES` в `copy-vendor.mjs`.
3. `npm run vendor:copy`.
4. Проверить имена `font-family` в [`public/css/main.css`](../public/css/main.css) (`html[data-font=...]`).
## Обновить Plyr
1. Обновить версию в `package.json` (`dependencies.plyr`).
2. `npm install` → `npm run vendor:copy`.
3. При смене API — правки в `video-player.js`.
+16 -22
View File
@@ -9,12 +9,11 @@
"plyr": "^3.8.4"
},
"devDependencies": {
"@fontsource-variable/geologica": "^5.2.8",
"@fontsource/alice": "^5.2.8",
"@fontsource/merriweather": "^5.2.11",
"@fontsource/pt-mono": "^5.2.8",
"@fontsource/pt-sans": "^5.2.8",
"@fontsource/source-code-pro": "^5.2.7",
"medeo-font": "^1.0.0-rc.4.1",
"puppeteer": "^25.7.0",
"sharp": "^0.34.0"
}
@@ -30,16 +29,6 @@
"tslib": "^2.4.0"
}
},
"node_modules/@fontsource-variable/geologica": {
"version": "5.2.8",
"resolved": "https://registry.npmjs.org/@fontsource-variable/geologica/-/geologica-5.2.8.tgz",
"integrity": "sha512-hmUBi4k8C0xfi/pk/ArAyK7kRPqbkV5o/YN4nmJ+mtc14HKaAzdWAKb31gFWpveI75POgtcw3/iAepcGRnotYw==",
"dev": true,
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@fontsource/alice": {
"version": "5.2.8",
"resolved": "https://registry.npmjs.org/@fontsource/alice/-/alice-5.2.8.tgz",
@@ -70,16 +59,6 @@
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@fontsource/pt-sans": {
"version": "5.2.8",
"resolved": "https://registry.npmjs.org/@fontsource/pt-sans/-/pt-sans-5.2.8.tgz",
"integrity": "sha512-b8nBGHMVwfe21IWqERlMrzIs+L/Vm3QNGbnET3H1vfclAScWExbN17N/z/dJcyPgvrcenbJDv1H3f5hTAEbcVQ==",
"dev": true,
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@fontsource/source-code-pro": {
"version": "5.2.7",
"resolved": "https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-5.2.7.tgz",
@@ -778,6 +757,21 @@
"integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==",
"license": "MIT"
},
"node_modules/medeo-font": {
"version": "1.0.0-rc.4.1",
"resolved": "https://registry.npmjs.org/medeo-font/-/medeo-font-1.0.0-rc.4.1.tgz",
"integrity": "sha512-W9n0tT4viqkLth4ZSE1BZwYnZWKr0fODqI2MBPRQQMgHrt24GA15Z6e1MirU9YzEO8DbzXegRe4QxGcGxp1vNg==",
"dev": true,
"license": "OFL-1.1",
"peerDependencies": {
"next": ">=13.2.0"
},
"peerDependenciesMeta": {
"next": {
"optional": true
}
}
},
"node_modules/mitt": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+2 -3
View File
@@ -9,15 +9,14 @@
"translate": "node scripts/translate.mjs",
"convert-videos": "node scripts/convert-videos.mjs",
"optimize-images": "node scripts/optimize-images.mjs",
"generate:resume-pdf": "node scripts/generate-resume-pdf.mjs http://localhost:4175/resume/ geologica"
"generate:resume-pdf": "node scripts/generate-resume-pdf.mjs http://localhost:4175/resume/ medeo"
},
"devDependencies": {
"@fontsource-variable/geologica": "^5.2.8",
"@fontsource/alice": "^5.2.8",
"@fontsource/merriweather": "^5.2.11",
"@fontsource/pt-mono": "^5.2.8",
"@fontsource/pt-sans": "^5.2.8",
"@fontsource/source-code-pro": "^5.2.7",
"medeo-font": "^1.0.0-rc.4.1",
"puppeteer": "^25.7.0",
"sharp": "^0.34.0"
},
+5 -4
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -289,7 +290,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
Binary file not shown.
-139
View File
@@ -1,139 +0,0 @@
/* geologica-cyrillic-ext-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-cyrillic-ext-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
/* geologica-cyrillic-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-cyrillic-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
/* geologica-greek-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-greek-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}
/* geologica-vietnamese-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-vietnamese-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
/* geologica-latin-ext-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-latin-ext-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* geologica-latin-wght-normal */
@font-face {
font-family: 'Geologica';
font-style: normal;
font-display: swap;
font-weight: 100 900;
src: url(./files/geologica-latin-wght-normal.woff2) format('woff2-variations');
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* pt-sans-cyrillic-ext-400-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src: url(./files/pt-sans-cyrillic-ext-400-normal.woff2) format('woff2');
unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
/* pt-sans-cyrillic-400-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src: url(./files/pt-sans-cyrillic-400-normal.woff2) format('woff2');
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
/* pt-sans-latin-ext-400-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src: url(./files/pt-sans-latin-ext-400-normal.woff2) format('woff2');
unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* pt-sans-latin-400-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src: url(./files/pt-sans-latin-400-normal.woff2) format('woff2');
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* pt-sans-cyrillic-ext-700-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src: url(./files/pt-sans-cyrillic-ext-700-normal.woff2) format('woff2');
unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
/* pt-sans-cyrillic-700-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src: url(./files/pt-sans-cyrillic-700-normal.woff2) format('woff2');
unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
/* pt-sans-latin-ext-700-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src: url(./files/pt-sans-latin-ext-700-normal.woff2) format('woff2');
unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
/* pt-sans-latin-700-normal */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src: url(./files/pt-sans-latin-700-normal.woff2) format('woff2');
unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
+17
View File
@@ -0,0 +1,17 @@
@font-face {
font-family: "Medeo Sans";
src: url(./files/MedeoSansVariable.woff2) format("woff2");
font-weight: 100 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Medeo Sans";
src: url(./files/MedeoSansVariable-Italic.woff2) format("woff2");
font-weight: 100 900;
font-style: italic;
font-display: swap;
}
:root {
--font-medeo-sans: "Medeo Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-26",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -312,9 +313,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -384,7 +386,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -322,9 +323,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -394,7 +396,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -332,9 +333,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -404,7 +406,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-18",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -322,9 +323,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -394,7 +396,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-01",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -327,9 +328,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -399,7 +401,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+10 -8
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -559,9 +560,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -632,7 +634,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -794,8 +796,8 @@
<td>Моноширинная пара</td>
</tr>
<tr>
<td><code>geologica</code></td>
<td>Geologica + PT Sans</td>
<td><code>medeo</code></td>
<td>Medeo Sans</td>
<td>Гротеск + нейтральная проза</td>
</tr>
</tbody>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -313,9 +314,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -385,7 +387,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -509,9 +510,10 @@
if (t.mode === "light" || t.mode === "dark") d.dataset.theme = t.mode;
if (t.radius === "soft" || t.radius === "medium" || t.radius === "strong") d.dataset.radius = t.radius;
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") d.dataset.font = f;
if (f === "merriweather" || f === "mono" || f === "medeo") d.dataset.font = f;
if (t.meshBg === "off") d.dataset.meshBg = "off";
} catch (e) {}
})();
@@ -573,7 +575,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -297,9 +298,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -369,7 +371,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -309,9 +310,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -381,7 +383,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-01",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -319,9 +320,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -391,7 +393,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI-дизайн и проектирование интерфейсов"
},
{
@@ -312,9 +313,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -384,7 +386,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -9,7 +9,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -75,9 +75,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -289,9 +290,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+5 -4
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -330,7 +331,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+8 -8
View File
@@ -152,9 +152,9 @@ html[data-font="merriweather"] {
--font-accent: "Merriweather", var(--font);
}
html[data-font="geologica"] {
--font: "PT Sans", system-ui, -apple-system, sans-serif;
--font-accent: "Geologica", var(--font);
html[data-font="medeo"] {
--font: "Medeo Sans", system-ui, -apple-system, sans-serif;
--font-accent: "Medeo Sans", system-ui, -apple-system, sans-serif;
}
html[data-font="mono"] {
@@ -1164,8 +1164,8 @@ a.fab--secondary:visited {
font-family: "Source Code Pro", monospace;
}
.theme-font-seg__btn[data-font-option="geologica"] .theme-font-seg__label {
font-family: "Geologica", sans-serif;
.theme-font-seg__btn[data-font-option="medeo"] .theme-font-seg__label {
font-family: "Medeo Sans", sans-serif;
}
.theme-mesh-bg-seg__btn {
@@ -1398,7 +1398,7 @@ html.mesh-bg-ready .hero {
color: var(--text);
}
html[data-font="geologica"] .hero__title {
html[data-font="medeo"] .hero__title {
line-height: 1;
}
@@ -4086,7 +4086,7 @@ html[data-theme="dark"] .mp-card--stack-bottom .mp-card__tag {
transition: color 0.2s ease;
}
html[data-font="geologica"] .portfolio-card__title {
html[data-font="medeo"] .portfolio-card__title {
font-weight: 700;
}
@@ -4425,7 +4425,7 @@ html[data-font="mono"] .portfolio-card__title {
display: none !important;
}
html[data-font="geologica"] .skills-category__title {
html[data-font="medeo"] .skills-category__title {
font-weight: 700;
}
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-26",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -312,9 +313,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -384,7 +386,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -322,9 +323,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -394,7 +396,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -332,9 +333,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -404,7 +406,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-18",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -322,9 +323,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -394,7 +396,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-01",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -327,9 +328,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -399,7 +401,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+10 -8
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -559,9 +560,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -632,7 +634,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -794,8 +796,8 @@
<td>Monospace pair</td>
</tr>
<tr>
<td><code>geologica</code></td>
<td>Geologica + PT Sans</td>
<td><code>medeo</code></td>
<td>Medeo Sans</td>
<td>Sans-serif + neutral body text</td>
</tr>
</tbody>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -313,9 +314,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -385,7 +387,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -509,9 +510,10 @@
if (t.mode === "light" || t.mode === "dark") d.dataset.theme = t.mode;
if (t.radius === "soft" || t.radius === "medium" || t.radius === "strong") d.dataset.radius = t.radius;
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") d.dataset.font = f;
if (f === "merriweather" || f === "mono" || f === "medeo") d.dataset.font = f;
if (t.meshBg === "off") d.dataset.meshBg = "off";
} catch (e) {}
})();
@@ -573,7 +575,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -297,9 +298,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -369,7 +371,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -309,9 +310,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -381,7 +383,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-10-01",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -319,9 +320,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -391,7 +393,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -290,9 +291,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+9 -7
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -206,7 +207,7 @@
"creator": {
"@id": "https://mamadaevv.site/#person"
},
"datePublished": "2026-09-24",
"datePublished": "2026-10-29",
"about": "UX/UI design and interface design"
},
{
@@ -312,9 +313,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -384,7 +386,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
@@ -9,7 +9,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -75,9 +75,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -289,9 +290,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -362,7 +364,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+5 -4
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -330,7 +331,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+5 -4
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -283,7 +284,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Typography</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+4 -3
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
+5 -4
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
@@ -283,7 +284,7 @@
<section class="theme-picker__section" aria-labelledby="theme-typography-title">
<h3 id="theme-typography-title" class="theme-picker__section-title">Типографика</h3>
<div class="radius-seg" role="radiogroup" aria-labelledby="theme-typography-title">
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="geologica" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="medeo" aria-label="Sans"><span class="theme-font-seg__label">Sans</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="merriweather" aria-label="Sans Serif"><span class="theme-font-seg__label">Sans Serif</span></button>
<button type="button" class="radius-seg__btn theme-font-seg__btn" role="radio" aria-checked="false" data-font-option="mono" aria-label="Mono"><span class="theme-font-seg__label">Mono</span></button>
</div>
+4 -3
View File
@@ -4,10 +4,11 @@ import { prefersColorSchemeDark } from "../shared/media.js";
export const STORAGE_KEY = "siteThemeV1";
export const RADIUS_IDS = ["soft", "medium", "strong"];
export const THEME_MODE_IDS = ["system", "light", "dark"];
export const FONT_IDS = ["merriweather", "mono", "geologica"];
export const FONT_IDS = ["merriweather", "mono", "medeo"];
const LEGACY_FONT_MAP = {
onest: "geologica",
onest: "medeo",
geologica: "medeo",
anonymous: "mono",
};
@@ -32,7 +33,7 @@ export function defaultThemeState() {
light: { h: 210, s: 90, l: 40 },
dark: { h: 210, s: 90, l: 40 },
radius: "medium",
font: "geologica",
font: "medeo",
meshBg: "on",
};
}
+4 -3
View File
@@ -12,7 +12,7 @@
(function () {
var FONT_CSS = {
merriweather: "/assets/fonts/merriweather.css",
geologica: "/assets/fonts/geologica.css",
medeo: "/assets/fonts/medeo.css",
mono: "/assets/fonts/mono.css",
};
try {
@@ -78,9 +78,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f !== "merriweather" && f !== "mono" && f !== "geologica") f = "geologica";
if (f !== "merriweather" && f !== "mono" && f !== "medeo") f = "medeo";
d.dataset.font = f;
var mb = t.meshBg;
if (mb === "off") {
+13 -13
View File
@@ -9,91 +9,91 @@
</url>
<url>
<loc>https://mamadaevv.site/cases/ai-assistant-figma/</loc>
<lastmod>2026-09-26</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/ai-assistant-figma/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/ai-assistant-figma/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/ai-assistant-figma/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/ai-platform-primo-rpa-2/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/ai-platform-primo-rpa-2/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/ai-platform-primo-rpa-2/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/ai-platform-primo-rpa-2/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/ai-platform-primo-rpa-v2/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/ai-platform-primo-rpa-v2/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/ai-platform-primo-rpa-v2/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/ai-platform-primo-rpa-v2/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/ai-platform-primo-rpa/</loc>
<lastmod>2026-10-18</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/ai-platform-primo-rpa/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/ai-platform-primo-rpa/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/ai-platform-primo-rpa/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/card-columns-obsidian/</loc>
<lastmod>2026-10-01</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/card-columns-obsidian/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/card-columns-obsidian/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/card-columns-obsidian/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/lunacy/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/lunacy/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/lunacy/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/lunacy/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/manu-game-maker/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/manu-game-maker/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/manu-game-maker/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/manu-game-maker/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/mobile-clinic-app/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/mobile-clinic-app/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/mobile-clinic-app/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/mobile-clinic-app/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/obsidian-plugin-columns-view/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/obsidian-plugin-columns-view/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/obsidian-plugin-columns-view/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/obsidian-plugin-columns-view/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/orc-automation-panel/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/orc-automation-panel/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/orc-automation-panel/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/orc-automation-panel/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/site-portfolio/</loc>
<lastmod>2026-10-01</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/site-portfolio/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/site-portfolio/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/site-portfolio/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/task-distribution-concept/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/task-distribution-concept/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/task-distribution-concept/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/task-distribution-concept/" />
</url>
<url>
<loc>https://mamadaevv.site/cases/task-tracker/</loc>
<lastmod>2026-09-24</lastmod>
<lastmod>2026-10-29</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://mamadaevv.site/cases/task-tracker/" />
<xhtml:link rel="alternate" hreflang="ru" href="https://mamadaevv.site/cases/task-tracker/" />
<xhtml:link rel="alternate" hreflang="en" href="https://mamadaevv.site/en/cases/task-tracker/" />
+19 -19
View File
@@ -16,7 +16,7 @@ const fontsFilesOut = path.join(fontsOut, "files");
const PLYR_VERSION = "3.8.4";
/** @type {{ id: string, sources: { pkg: string, css: string, familyReplace?: [string, string] }[] }[]} */
/** @type {{ id: string, sources: { pkg: string, css: string, familyReplace?: [string, string], urlBase?: string, filesDir?: string }[] }[]} */
const FONT_BUNDLES = [
{
id: "merriweather",
@@ -27,15 +27,9 @@ const FONT_BUNDLES = [
],
},
{
id: "geologica",
id: "medeo",
sources: [
{
pkg: "@fontsource-variable/geologica",
css: "wght.css",
familyReplace: ["Geologica Variable", "Geologica"],
},
{ pkg: "@fontsource/pt-sans", css: "400.css" },
{ pkg: "@fontsource/pt-sans", css: "700.css" },
{ pkg: "medeo-font", css: "dist/sans.css", urlBase: "fonts", filesDir: "dist/fonts" },
],
},
{
@@ -76,25 +70,29 @@ function copyPlyr() {
console.log(`Plyr ${PLYR_VERSION} -> public/vendor/plyr/`);
}
const woff2Re = /url\(\.\/files\/([^)]+\.woff2)\)/g;
function fontUrlRe(base) {
return new RegExp(`url\\(["']?\\.\\/${base}\\/([^)"']+\\.woff2)["']?\\)`, "g");
}
function transformFontCss(raw, familyReplace) {
function transformFontCss(raw, familyReplace, urlBase = "files") {
let out = raw;
if (familyReplace) {
const [from, to] = familyReplace;
out = out.split(`'${from}'`).join(`'${to}'`);
out = out.split(`"${from}"`).join(`"${to}"`);
}
out = out.replace(/,\s*url\(\.\/files\/[^)]+\.woff\)/g, "");
out = out.replace(new RegExp(`,?\\s*url\\(\\.\\/${urlBase}\\/[^)]+\\.woff\\)`, "g"), "");
out = out.replace(/\s+format\(['"]woff['"]\)/g, "");
// Плоская раскладка: url(./fonts/medeo-sans/X.woff2) -> url(./files/X.woff2)
out = out.replace(fontUrlRe(urlBase), (_m, rel) => `url(./files/${path.posix.basename(rel)})`);
return out;
}
function collectWoff2Files(cssText) {
function collectWoff2Files(cssText, urlBase = "files") {
const names = new Set();
const re = fontUrlRe(urlBase);
let m;
woff2Re.lastIndex = 0;
while ((m = woff2Re.exec(cssText)) !== null) {
while ((m = re.exec(cssText)) !== null) {
names.add(m[1]);
}
return names;
@@ -116,12 +114,14 @@ function buildFontBundles() {
throw new Error(`Font CSS not found: ${cssPath}`);
}
const raw = fs.readFileSync(cssPath, "utf8");
const transformed = transformFontCss(raw, source.familyReplace);
const urlBase = source.urlBase || "files";
const transformed = transformFontCss(raw, source.familyReplace, urlBase);
blocks.push(transformed.trim());
const filesDir = path.join(pkgDir, "files");
for (const fileName of collectWoff2Files(transformed)) {
const srcFile = path.join(filesDir, fileName);
const filesDir = path.join(pkgDir, source.filesDir || urlBase);
for (const relPath of collectWoff2Files(raw, urlBase)) {
const fileName = path.posix.basename(relPath);
const srcFile = path.join(filesDir, relPath);
const dstFile = path.join(fontsFilesOut, fileName);
if (!fs.existsSync(srcFile)) {
throw new Error(`Font file not found: ${srcFile}`);
+1 -1
View File
@@ -5,7 +5,7 @@ import { dirname, resolve } from 'path';
const __dirname = dirname(fileURLToPath(import.meta.url));
const OUT = resolve(__dirname, '../public/assets/resume/Mamadaev_Nik__CV__Product_Designer_UX-UI.pdf');
const PAGE = process.argv[2] || 'http://localhost:4175/resume/';
const FONT = process.argv[3] || 'geologica';
const FONT = process.argv[3] || 'medeo';
const browser = await puppeteer.launch({
headless: true,
+3 -2
View File
@@ -79,9 +79,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -79,9 +79,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -89,9 +89,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -89,9 +89,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -99,9 +99,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -99,9 +99,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -89,9 +89,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -89,9 +89,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -94,9 +94,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -94,9 +94,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+5 -4
View File
@@ -332,9 +332,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -472,8 +473,8 @@
<td>Monospace pair</td>
</tr>
<tr>
<td><code>geologica</code></td>
<td>Geologica + PT Sans</td>
<td><code>medeo</code></td>
<td>Medeo Sans</td>
<td>Sans-serif + neutral body text</td>
</tr>
</tbody>
+5 -4
View File
@@ -332,9 +332,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -472,8 +473,8 @@
<td>Моноширинная пара</td>
</tr>
<tr>
<td><code>geologica</code></td>
<td>Geologica + PT Sans</td>
<td><code>medeo</code></td>
<td>Medeo Sans</td>
<td>Гротеск + нейтральная проза</td>
</tr>
</tbody>
+3 -2
View File
@@ -81,9 +81,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -81,9 +81,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -282,9 +282,10 @@
if (t.mode === "light" || t.mode === "dark") d.dataset.theme = t.mode;
if (t.radius === "soft" || t.radius === "medium" || t.radius === "strong") d.dataset.radius = t.radius;
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") d.dataset.font = f;
if (f === "merriweather" || f === "mono" || f === "medeo") d.dataset.font = f;
if (t.meshBg === "off") d.dataset.meshBg = "off";
} catch (e) {}
})();
+3 -2
View File
@@ -282,9 +282,10 @@
if (t.mode === "light" || t.mode === "dark") d.dataset.theme = t.mode;
if (t.radius === "soft" || t.radius === "medium" || t.radius === "strong") d.dataset.radius = t.radius;
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") d.dataset.font = f;
if (f === "merriweather" || f === "mono" || f === "medeo") d.dataset.font = f;
if (t.meshBg === "off") d.dataset.meshBg = "off";
} catch (e) {}
})();
+3 -2
View File
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -64,9 +64,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -64,9 +64,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -77,9 +77,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -77,9 +77,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -86,9 +86,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -86,9 +86,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -58,9 +58,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -79,9 +79,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -79,9 +79,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
@@ -61,9 +61,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
+3 -2
View File
@@ -61,9 +61,10 @@
d.dataset.radius = "medium";
}
var f = t.font;
if (f === "onest") f = "geologica";
if (f === "geologica") f = "medeo";
if (f === "onest") f = "medeo";
if (f === "anonymous") f = "mono";
if (f === "merriweather" || f === "mono" || f === "geologica") {
if (f === "merriweather" || f === "mono" || f === "medeo") {
d.dataset.font = f;
} else {
d.dataset.font = "merriweather";
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff. Show more