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

41 lines
5.6 KiB
XML

<!-- Гигантский рак (crayfish): вид сверху/полу-дорсально — широкий овальный карапакс с рострумом-клином вперёд (вправо), 4 сегмента брюшка назад и хвостовой веер (тельсон-клин + 2 уропода-лопасти), 2 соразмерные клешни вперёд-вправо с раскрытыми пальцами, 4 пары ходильных ног «расчёской» вверх и вниз, глаза на стебельках, длинные антенны и короткие антеннулы; главный видовой знак — клешни и сегментированный хвостовой веер -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвостовой веер: две широкие уропода-лопасти f3 (верхняя и нижняя), compound-path -->
<path fill="var(--f3,hsl(15,46%,34%))" d="M35 39.5 C30 34 24 30.5 18 30 C20 38 26 44.5 33.5 45.5 Z M35 60.5 C30 66 24 69.5 18 70 C20 62 26 55.5 33.5 54.5 Z"/>
<!-- тельсон: клин f1 со светлым f2-ядром -->
<path fill="var(--f1,hsl(18,48%,44%))" d="M37 44.5 L16 50 L37 55.5 Z"/>
<path fill="var(--f2,hsl(28,34%,72%))" d="M35 47.2 L21 50 L35 52.8 Z"/>
<!-- брюшко: 4 сегмента-пластины (от заднего к переднему), compound-path -->
<path fill="var(--f1,hsl(18,48%,44%))" d="M34 50 a9 9 0 1 0 18 0 a9 9 0 1 0 -18 0 M41.5 50 a9.5 11 0 1 0 19 0 a9.5 11 0 1 0 -19 0 M50 50 a10 13 0 1 0 20 0 a10 13 0 1 0 -20 0 M60 50 a10 15 0 1 0 20 0 a10 15 0 1 0 -20 0"/>
<!-- светлая срединная полоса брюшка -->
<path fill="var(--f2,hsl(28,34%,72%))" opacity="0.32" d="M38 48 C52 45.2 66 44.2 78 45 L78 55 C66 56 52 55 38 52 Z"/>
<!-- границы сегментов брюшка: тёмные f4-дуги, compound-path -->
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="1.4" d="M68 36.4 C65.4 42.5 65.4 57.5 68 63.6 M58 38.4 C55.6 44 55.6 56 58 61.6 M48 40.4 C46 45 46 55 48 59.6"/>
<!-- ходильные ноги: 4 пары «расчёской» вверх и вниз, 2 compound-группы f4 -->
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M116 37 L112 28 L100 24 M104 33 L98 25 L86 20 M92 34 L84 25 L72 17 M80 39 L70 27 L60 17"/>
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M116 63 L112 72 L100 76 M104 67 L98 75 L86 80 M92 66 L84 75 L72 83 M80 61 L70 73 L60 83"/>
<!-- карапакс: широкий овал f1 -->
<ellipse cx="100" cy="50" rx="26" ry="17" fill="var(--f1,hsl(18,48%,44%))"/>
<!-- светлые боковые пластины карапакса, compound-path -->
<path fill="var(--f2,hsl(28,34%,72%))" opacity="0.28" d="M84 39 C79 45 79 55 84 61 C88 55 88 45 84 39 Z M116 39 C121 45 121 55 116 61 C112 55 112 45 116 39 Z"/>
<!-- тёмный панцирный узор: две поперечные борозды f4 -->
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="1.3" opacity="0.5" d="M110 34.6 C105 41.5 105 58.5 110 65.4 M94 34 C89 41.5 89 58.5 94 66"/>
<!-- рострум: клин f1 между глазами с тёмной срединной линией -->
<path fill="var(--f1,hsl(18,48%,44%))" d="M126 46.5 L150 50 L126 53.5 Z"/>
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="1.1" d="M127 50 L149 50"/>
<!-- клешни: кисть и плечо f1 (верх и низ зеркально) -->
<path fill="var(--f1,hsl(18,48%,44%))" d="M120 40 C123 33.5 124.5 27 129.5 21.5 C134 16.8 142 15.8 146.5 19 C152 23 152.5 30.5 147.5 33.5 C143.5 36 137 36.5 132 34.5 C127.5 32.8 125.5 35.5 124 40 Z"/>
<path fill="var(--f1,hsl(18,48%,44%))" d="M120 60 C123 66.5 124.5 73 129.5 78.5 C134 83.2 142 84.2 146.5 81 C152 77 152.5 69.5 147.5 66.5 C143.5 64 137 63.5 132 65.5 C127.5 67.2 125.5 64.5 124 60 Z"/>
<!-- пальцы клешней: тёмные f4, клешня раскрыта -->
<path fill="var(--f4,hsl(12,48%,20%))" d="M144 18.5 C148.5 15.5 153.5 16 157 20.5 C153 19.5 149 20.2 145 22.5 Z M146 34.5 C149.5 36.5 152.5 35.5 154.5 31 C151 31.2 148.5 32 146.5 33 Z"/>
<path fill="var(--f4,hsl(12,48%,20%))" d="M144 81.5 C148.5 84.5 153.5 84 157 79.5 C153 80.5 149 79.8 145 77.5 Z M146 65.5 C149.5 63.5 152.5 64.5 154.5 69 C151 68.8 148.5 68 146.5 67 Z"/>
<!-- глаза на стебельках: 3 слоя — f4-стебелёк с «бусиной», зрачок #142638, блик #fff -->
<path fill="var(--f4,hsl(12,48%,20%))" d="M117 43.5 L121.5 37 L129 36 Z M125 36 a4 4 0 1 0 8 0 a4 4 0 1 0 -8 0 M117 56.5 L121.5 63 L129 64 Z M125 64 a4 4 0 1 0 8 0 a4 4 0 1 0 -8 0"/>
<path fill="#142638" d="M126.8 35.4 a2.8 2.8 0 1 0 5.6 0 a2.8 2.8 0 1 0 -5.6 0 M126.8 64.6 a2.8 2.8 0 1 0 5.6 0 a2.8 2.8 0 1 0 -5.6 0"/>
<path fill="#fff" d="M126.9 34.3 a1 1 0 1 0 2 0 a1 1 0 1 0 -2 0 M126.9 65.7 a1 1 0 1 0 2 0 a1 1 0 1 0 -2 0"/>
<!-- длинные антенны (верхняя и нижняя), compound-path f4 -->
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="1.7" stroke-linecap="round" d="M131 45 C141 42 150 36 158 30 M131 55 C141 58 150 64 158 70"/>
<!-- короткие антеннулы (внутренняя пара), compound-path f4 -->
<path fill="none" stroke="var(--f4,hsl(12,48%,20%))" stroke-width="1.3" stroke-linecap="round" d="M134 47 C140 45 146 44 152 44 M134 53 C140 55 146 56 152 56"/>
</svg>