Files
andrey 0a0595c3c1 Этап 47: ревизия SVG-портретов рыб — детализация до уровня болотных + биологическое правдоподобие. (1) Полная перерисовка 32 портретов, кроме 5 болотных (эталон стиля, Этап 45): 8 речных (carass, perch, bream, carp, pike, catfish, sturge, gold), 10 озёрных (zander, chuch, crayfish, bleak, roundel, eelpout, tench, navaga, rudd, cisco), 5 морских (herring, mackerel, flounder, tuna, swordfish), 9 океанских (moray, grouper, turtle, angler, octopus, manta, shark, squid, whale). (2) Единый стиль: послойные заливки без градиентов/defs (--f1 тело, --f3 плавники — перекрашиваются вариантами; --f2 брюхо/светлое, --f4 тёмный узор/кромка — НЕ перекрашиваются), спинная кромка f4-серпом, жаберная пластина+дуга, глаз 5 кругов (ободок→склера→радужка фикс-hex→зрачок→блик), составные узоры (полосы/пятна/чешуя/жучки/финлеты) — одним compound-path, ≤38 элементов, фикс-hex-акценты разрешены. (3) Видовые отличия и разведение «двойников»: карась↔карп (усы), окунь↔судак (горб/полосы/красное vs косая полоса/клыки), лещ↔густера (длинная анальная «юбка» vs короткий анальный+крупный глаз+киль), плотва↔краснопёрка (красный vs жёлтый глаз, рот конечный vs вверх), сом↔вьюн (голова-¼/длинные усы vs лента/10 усиков), мурена↔вьюн, осьминог↔кальмар (мешок+8 равных рук vs мантия-ракета+2 ловчих+крылышки), кит↔акула (флоскулы/фонтан/ус vs треуг. D/гетероцерк/5 щелей), сельдь↔скумбрия↔тунец↔меч, манта↔камбала↔рак, черепаха (вид сверху). (4) «Не рыбы»: crayfish (рак, вид сверху, клешни/ноги/веер), turtle (черепаха, вид сверху, щитки/4 ласты/клюв), octopus/squid/whale — иная анатомия (присоски/ловчие щупальца/флоскулы/фонтан), допустимые отклонения от рыбьего протокола. (5) Двойные боссы sturge (Река) и whale (Океан) проверены под золотой аурой #card.boss-card — контраст держат f4-детали. (6) Дефекты, найденные на приёмке и исправленные точечно (композиция не менялась): octopus — 2 щели с фоном; swordfish — светлый стык голова↔меч; tuna — прозрачная «дыра» в выемке хвоста-полумесяца; grouper — щель пасть↔нижняя челюсть; angler — просвет между римом и эской. (7) viewBox (0 0 160 100) и id/имена файлов не менялись; данные/логика/баланс не тронуты. (8) Интеграция: node tools/embed-fish.mjs — блок FISH-SVG обновлён (202478 байт / 1512 строк, 37 symbol); проверено совпадение всех 37 symbol с текущими assets/fish/*.svg; tools/fish-preview.html — блок «Варианты» (8 инлайн-копий carass синхронизированы с источником) + секция «Читаемость в UI» (44×28 / 40×26 / 240×150). Тесты не правились: 222/222 PASS, exit 0; check.mjs OK; balance.mjs — пины без изменений (Река 65.1/125.9 · Озёра 194.1/249.0 · Болото 240.3/328.9 · Море 297.3/476.7 · Океан 329.1/552.7). Скриншоты перегенерированы (45 RU + 45 EN). Доки: DEVLOG Этап 47.
2026-09-23 16:55:52 +03:00

34 lines
4.6 KiB
XML

<!-- Сельдь (herring): стройное серебристое тело (≈4.1:1, самое тонкое из морских), ОДИН короткий низкий спинной плавник в середине спины (без финлетов), тонкий КИЛЬ — прямая f4-черта по брюху (главный знак), вилочный хвост, нижняя челюсть чуть вперёд, крупный глаз на маленькой голове; без тёмных пятен, полос и латеральной линии -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост: вилочный, лопасти (13,31)/(13,69), выемка (29,50); корень утоплен в стебель на 4.5 ед. (нахлёст) -->
<path fill="var(--f3,hsl(205,38%,44%))" d="M48.5 45.8 L13 31 C18 38 24 45 29 50 C24 55 18 62 13 69 L48.5 54.2 Z"/>
<!-- спинной плавник: ОДИН короткий НИЗКИЙ в середине спины, вершина (82,26), основание x70..94 утоплено в тело (нахлёст ≥4), без финлетов -->
<path fill="var(--f3,hsl(205,38%,44%))" d="M70 43 C73 33 76.5 27.5 82 26 C87.5 28.5 91.5 34 94 43 Z"/>
<!-- анальный плавник: низкий, основание x48..62 утоплено в брюхо (нахлёст ≥4), низ (55,72) -->
<path fill="var(--f3,hsl(205,38%,44%))" d="M48 53 C49.5 62 51.5 69 55 72 C58.5 69 60.5 61 62 56 Z"/>
<!-- брюшные плавники: пара мелких лопастей, основания утоплены в брюхо (compound-path), кончики y72..73 -->
<path fill="var(--f3,hsl(205,38%,44%))" d="M84 58.8 C83 66 85 70.5 87 72.5 C89 70.5 89.5 65 89 58.8 Z M91 58.8 C90 66 92 70.5 94 72.5 C96 70.5 96.5 65 96 58.8 Z"/>
<!-- тело: стройное серебристое ~4.1:1, рыло (151.5,49.5), затылок (135,42), спина (96,37), низ брюха (98,63), стебель x44 (46/54), нижняя челюсть чуть вперёд -->
<path fill="var(--f1,hsl(205,30%,62%))" d="M151.5 49.5 C149 44.8 142 42 135 42 C120 38.6 108 37 96 37 C76 37 58 39.5 44 46 L44 54 C58 60.5 78 64 96 64 C112 64 128 59 139 53.5 C145 50.8 151 50.4 152.5 51.5 Z"/>
<!-- брюхо: светлое серебро нижней трети -->
<path fill="var(--f2,hsl(200,22%,84%))" d="M44 54 C58 60.5 78 64 96 64 C112 64 128 59 139 53.5 C130 58 112 61.5 96 61.5 C76 61.5 57 58 44 54 Z"/>
<!-- спинная кромка: тонкий f4-серп по верхнему контуру (не зубцы) -->
<path fill="var(--f4,hsl(210,35%,24%))" d="M151.5 49.5 C149 44.8 142 42 135 42 C120 38.6 108 37 96 37 C76 37 58 39.5 44 46 C58 42.3 76 40.2 96 40.2 C108 40.4 120 42 135 45.2 C142 47 148 48 151.5 49.5 Z"/>
<!-- жаберная пластина: мягкая светлая заливка маленькой головы (не выходит за брюхо) -->
<path fill="var(--f2,hsl(200,22%,84%))" opacity="0.3" d="M127.5 43 C131.5 47.5 131.5 52 128 56 C124.5 51.5 124 46.5 124.5 43.2 Z"/>
<!-- жаберная дуга: тонкий тёмный серп у головы -->
<path fill="none" stroke="var(--f4,hsl(210,35%,24%))" stroke-width="1.1" opacity="0.4" d="M127.5 43 C131.5 47.5 131.5 52 128 56"/>
<!-- КИЛЬ: тонкая прямая f4-черта по брюху чуть ниже светлой кромки (главный знак сельди) -->
<path fill="none" stroke="var(--f4,hsl(210,35%,24%))" stroke-width="1.2" opacity="0.55" stroke-linecap="round" d="M60 60.4 L89 63.8"/>
<!-- рот: маленькая тёмная щель, нижняя челюсть чуть вперёд -->
<path fill="var(--f4,hsl(210,35%,24%))" d="M149 51.3 C150.8 51.7 152.2 52.3 152.7 53 C151.2 53.5 149.7 53 148.6 52.1 Z"/>
<!-- грудной плавник: мягкая лопасть на боку, назад-вниз, корень (120,54) → кончик (114,66) (ПОСЛЕ тела) -->
<path fill="var(--f3,hsl(205,38%,44%))" d="M120 54 C122 54.4 122.8 56 122 58.4 C120.6 62.6 117.6 65.4 114 66.2 C114.6 63.2 116 59.4 118 56.2 C118.7 55.2 119.4 54.4 120 54 Z"/>
<!-- глаз: КРУПНЫЙ на маленькой голове (ободок f4 → склера → радужка → зрачок → блик) -->
<circle fill="var(--f4,hsl(210,35%,24%))" cx="132" cy="44" r="5.2"/>
<circle fill="#f7f3e6" cx="132" cy="44" r="4.2"/>
<circle fill="#9fb6c4" cx="132" cy="44" r="3.2"/>
<circle fill="#142638" cx="132" cy="44" r="2.2"/>
<circle fill="#fff" cx="130.7" cy="42.7" r="0.9"/>
</svg>