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

44 lines
7.4 KiB
XML

<!-- Горбуна (grouper): массивное ВЫСОКОЕ тело (D/L≈0.5) с высоким плоским горбом (пик 106,25), голова ≈⅓ длины с ОГРОМНОЙ пастью и выдающейся НИЖНЕЙ челюстью; длинный КОЛЮЧИЙ ЗУБЧАТЫЙ спинной (9 шипов / 8 выемок) вдоль x54..126; ВЕЕРНЫЙ хвост (выпуклая дуга без выемки, не вилка); тёмные неправильные РАЗВОДЫ-кляксы вместо вертикальных полос; буро-оранжевая палитра со светлым брюхом -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост: ВЕЕРНЫЙ (не вилка!) — выпуклая внешняя дуга (12,30)→(6,50)→(12,70) без центральной выемки; основание утоплено в стебель (нахлёст ≥4) -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M52 40 C40 35 26 30.5 12 30 C7 36.5 6 42 6 50 C6 58 7 63.5 12 70 C26 69.5 40 65 52 60 Z"/>
<!-- лучи веера: три штриха от основания к наружной дуге -->
<path fill="none" stroke="var(--f4,hsl(12,42%,20%))" stroke-width="0.9" opacity="0.35" d="M46 43 C34 40 23 36 15.5 33 M46 50 C33 49.6 21 49.6 11 50 M46 57 C34 60 23 64 15.5 67"/>
<!-- спинной КОЛЮЧИЙ: длинный зубчатый гребень x54..126, 9 шипов и 8 выемок (высота 12–16 над спиной), основание глубоко в теле (нахлёст ≥4) -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M52 50 L54.5 40 L57 23 L61.5 34 L65 17 L69.5 31.5 L73 15.5 L77.5 30 L81 13.8 L85.5 28.5 L89 13 L93.5 28 L97 12.6 L101.5 28 L105 12 L109.5 28.5 L113.5 14.5 L117.5 30.5 L121.5 17 L126 32.5 L128 50 Z"/>
<!-- анальный плавник: лопасть x62..84, основание утоплено в брюхо (нахлёст ≥4) -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M62 65 C63 76 66.5 83 72.5 84 C78.5 82.5 83 75.5 84 65 Z"/>
<!-- брюшной плавник 1: пара у (92,72) -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M90 67 C88.5 75 89.5 82 93 84.5 C96.5 80.5 97 73 96 67 Z"/>
<!-- брюшной плавник 2: пара к первому -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M99 67 C98 75.5 99 82.5 102.5 84.5 C105.5 80 106 73 105 67 Z"/>
<!-- тело: массивное, высокое (D/L≈0.5), длинный высокий горбатый профиль; рыло (150,50), лоб (140,34), горб (106,25), спина (84,26)→(64,30), стебель (46,45)/(46,57), низ (150,52)→(132,60)→(110,70)→(80,74)→(56,70) -->
<path fill="var(--f1,hsl(15,40%,46%))" d="M150 50 C148.5 42 145 36.5 140 34 C133.5 31 120 26 106 25 C98.5 24.4 90.5 25.2 84 26 C76 27 69.5 28.6 64 30 C56.5 32.5 50 38 46 45 L46 57 C50 64.5 53 67.8 56 70 C64.5 73.2 72.5 74 80 74 C97 74.6 104.5 72.4 110 70 C118.5 66.8 126.5 62.8 132 60 C141 55.8 146.5 53.2 150 52 Z"/>
<!-- брюхо: светлая нижняя полоса -->
<path fill="var(--f2,hsl(18,28%,72%))" d="M46 57 C56 64.5 70 70.5 84 71.5 C100 72.5 118 68.5 132 60 C141 55.8 146.5 53.2 150 52 C143 54.6 136 57.6 129 60.5 C119 64.5 108 66.6 96 67 C76 67.6 59 62.5 46 57 Z"/>
<!-- спинная кромка f4: тёмная зубчатая полоса по вершинам шипов, у ГОРБА толще прочих (≈4.5 против ≈2.5) -->
<path fill="var(--f4,hsl(12,42%,20%))" d="M54.5 40 L57 23 L61.5 34 L65 17 L69.5 31.5 L73 15.5 L77.5 30 L81 13.8 L85.5 28.5 L89 13 L93.5 28 L97 12.6 L101.5 28 L105 12 L109.5 28.5 L113.5 14.5 L117.5 30.5 L121.5 17 L126 32.5 L126 35 L121.5 20 L117.5 33.5 L113.5 18.5 L109.5 33 L105 16.5 L101.5 33 L97 16.6 L93.5 32 L89 17 L85.5 32 L81 17.8 L77.5 33.5 L73 19.5 L69.5 35 L65 21 L61.5 37.5 L57 25.5 L54.5 43 Z"/>
<!-- жаберная пластина: мягкая светлая заливка (126,40)…(124,64) -->
<path fill="var(--f2,hsl(18,28%,72%))" opacity="0.3" d="M126 40 C130 48 129 57 124 64 C120.5 56 120 47.5 121.5 41 Z"/>
<!-- жаберная дуга: тёмный серп у основания головы (не задевает ободок глаза) -->
<path fill="none" stroke="var(--f4,hsl(12,42%,20%))" stroke-width="1.5" d="M126 40 C130 48 129 57 124 64"/>
<!-- спинная кромка головы: тонкая тёмная полоса от рыла по лбу (переходит в зубчатый гребень) -->
<path fill="var(--f4,hsl(12,42%,20%))" d="M150 49.5 C148 41.5 144 35.5 139.5 33.8 C135 32 130.5 33.5 126.5 36 C131 33.8 135.5 33.2 139.8 35 C144 36.9 148.2 42.5 150 50 Z"/>
<!-- тёмные неправильные РАЗВОДЫ (7 клякс одним compound-path — НЕ вертикальные полосы) -->
<path fill="var(--f4,hsl(12,42%,20%))" opacity="0.85" d="M115 40 C115 37.5 117 36.2 119.5 37 C122 37.8 124 38 124 40 C124 42.4 121.5 44 119.5 43.2 C117.5 42.4 115 42.5 115 40 Z M96.5 50 C96.5 46.4 99.5 44.6 103 45.6 C106.5 46.6 107 47.4 107 50 C107 53.4 103.5 55.4 100.5 54.4 C97.5 53.4 96.5 53.6 96.5 50 Z M79.5 34 C79.5 31.6 81.6 30.4 84 31.2 C86.4 32 87 32.2 87 34 C87 35.8 84.8 37.2 82.4 36.4 C80 35.6 79.5 36.4 79.5 34 Z M65 58 C65 55 67.4 53.8 70.4 54.8 C73.4 55.8 74 56 74 58 C74 60.4 71.4 61.8 68.6 60.8 C65.8 59.8 65 61 65 58 Z M54 44 C54 42.2 55.4 41.2 57 41.8 C58.6 42.4 59 42.6 59 44 C59 45.4 57.2 46.4 55.4 45.8 C53.6 45.2 54 46 54 44 Z M89.5 64 C89.5 62 91.4 61 94 61.6 C96.6 62.2 97 62.4 97 64 C97 65.6 94.8 66.8 92.4 66 C90 65.2 89.5 66 89.5 64 Z M72.5 44 C72.5 42.8 73.4 42.2 74.6 42.6 C75.8 43 76 43.2 76 44 C76 44.8 74.8 45.6 73.6 45.2 C72.4 44.8 72.5 45.2 72.5 44 Z"/>
<!-- пасть: крупная тёмная полоса нутра от рыла (150,48.5) назад-вниз; нижняя кромка чуть перекрывает верх нижней челюсти (нахлёст), чтобы не просвечивал фон -->
<path fill="var(--f4,hsl(12,42%,20%))" d="M150 48.5 C141.5 50.2 130.5 53.5 121 57.5 C131 60.5 143.5 58.8 151.5 53.8 Z"/>
<!-- нижняя челюсть: светлая f2-кромка, ВЫДАЁТСЯ вперёд до (152,57) за верхнюю челюсть -->
<path fill="var(--f2,hsl(18,28%,72%))" d="M151.5 53.8 C143.5 57.6 132 60.4 121 58.8 C131 62.6 145 60.6 152 57 Z"/>
<!-- зубы (фикс-акцент): compound-path из четырёх треугольников с верхней челюсти -->
<path fill="#f7f3e6" d="M143.5 50 L146 49.7 L144.7 52.8 Z M137.5 51.4 L140 51.1 L138.7 54.2 Z M131.5 52.9 L134 52.6 L132.7 55.7 Z M125.5 54.5 L128 54.2 L126.7 57.3 Z"/>
<!-- грудной плавник: округлая лопасть на боку под жаберной дугой (122,61), вниз-назад, рисуется ПОСЛЕ тела -->
<path fill="var(--f3,hsl(15,42%,32%))" d="M122.5 59 C118.5 61.5 114 66.5 113 72 C116 72.5 121 69.5 123 65 C124 62.5 123.5 60 122.5 59 Z"/>
<!-- глаз: ободок → склера → радужка → зрачок → блик (последним) -->
<circle fill="var(--f4,hsl(12,42%,20%))" cx="132" cy="44" r="6"/>
<circle fill="#f7f3e6" cx="132" cy="44" r="5"/>
<circle fill="#d9b23a" cx="132" cy="44" r="3.6"/>
<circle fill="#142638" cx="132" cy="44" r="2.5"/>
<circle fill="#fff" cx="130.9" cy="42.8" r="1"/>
</svg>