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

46 lines
6.4 KiB
XML

<!-- Тунец (tuna): плотное обтекаемое торпедо ~3.1:1 (глубже сельди и скумбрии); ГЛАВНЫЙ знак — хвост-полумесяц из двух ТОНКИХ серповидных лопастей (НЕ вилка); два маленьких спинных плавника D1 (выше) и D2 (ниже) + 7 финлетов сверху и 6 снизу; длинный заострённый грудной (второй знак); резкая двухцветность — тёмная спина / серебро; тонкие тёмные штрихи-чёрточки в нижней половине бока (НЕ полосы); 2 киля на стебле; глаз с янтарной радужкой -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост-полумесяц: верхняя ТОНКАЯ серповидная лопасть, корень (52,46) → кончик (9,21), выемка (34,50) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M52 46 C36 35 21 26 9 21 C15 33 26 43.5 34 50 Z"/>
<!-- хвост-полумесяц: нижняя ТОНКАЯ серповидная лопасть, зеркало верхней (кончик 9,79) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M52 54 C36 65 21 74 9 79 C15 67 26 56.5 34 50 Z"/>
<!-- ЗАЛИВКА основания хвоста: закрывает карман между лопастями и стеблем (иначе внутренняя прозрачная «дыра»; силуэт не меняется) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M52 46 L34 50 L52 54 Z"/>
<!-- D1: маленький передний спинной, осн. x108..122, вершина (115,23.5) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M108 38 L115 23.5 L122 40 Z"/>
<!-- D2: второй маленький спинной позади D1, осн. x90..104, вершина (97,29) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M90 37.5 L97 29 L104 38 Z"/>
<!-- 7 финлетов сверху: мелкие треугольники позади D2, к хвосту мельчают, основания утоплены в тело (compound-path) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M87 37.6 L83 27 L79 37.8 Z M81 37.7 L77 28.5 L73 38.3 Z M75 38.2 L71 30.5 L67 39 Z M69 39 L65 32.5 L61 40.5 Z M63 40.4 L59 35 L55 42.5 Z M57 42.3 L53.5 38 L50 44.5 Z M51 44.5 L48.5 40.5 L46 46.5 Z"/>
<!-- 6 финлетов снизу: под анальным, вдоль брюха, к хвосту мельчают, основания утоплены (compound-path) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M88 62.8 L84 73 L80 62.8 Z M82 62.6 L78 72 L74 62 Z M76 61.5 L72 70.5 L68 60.3 Z M70 59.5 L66 68 L62 58.2 Z M64 57 L60 65 L56 55.5 Z M58 54 L54 61.5 L50 52.5 Z"/>
<!-- A1: анальный плавник, осн. x90..104, низ (97,74) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M90 62 L97 74 L104 62.5 Z"/>
<!-- брюшные плавники: пара, осн. x108..118, кончики y72..74 (compound-path) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M108 61.5 C107 67 108 71 110 72.8 C111.5 69.5 111 65 110.5 61.5 Z M116 61 C115.2 66 116 70 118.2 72.5 C119 69 118.8 65 118.3 60.8 Z"/>
<!-- тело: плотное обтекаемое торпедо (глубина 34.5, D/L≈3.1), рыло (151.5,49), затылок (135,40), спина (98,33), низ брюха (98,67), стебель x46 (45.5/54.5) -->
<path fill="var(--f1,hsl(210,32%,52%))" d="M151.5 49 C147 43 141 39.5 135 40 C121 35.5 109 33.2 98 33 C79 33 60 38 46 45.5 L46 54.5 C60 62 79 67 98 67 C109 67 121 64.5 135 60 C141 60 147 56.5 151.5 51 C152.7 50.6 152.7 49.4 151.5 49 Z"/>
<!-- брюхо: светлое серебро нижней трети (резкая двухцветность тёмная спина / серебро) -->
<path fill="var(--f2,hsl(206,22%,80%))" d="M46 54.5 C60 62 79 67 98 67 C109 67 121 64.5 135 60 C141 60 147 56.5 151.5 51 C146 55.5 139 59 131 61.5 C116 65 100 65.6 84 63.5 C69 61.3 57 58 46 54.5 Z"/>
<!-- спинная кромка: тонкая f4-полоса по верхнему контуру (тёмная спина) -->
<path fill="var(--f4,hsl(212,36%,22%))" d="M151.5 49 C147 43 141 39.5 135 40 C121 35.5 109 33.2 98 33 C79 33 60 38 46 45.5 C59 39.6 78 36 98 36 C110 36 122 38.5 135 43 C141 43.5 147 46.5 151.5 49 Z"/>
<!-- жаберная пластина: мягкая светлая заливка объёма головы -->
<path fill="var(--f2,hsl(206,22%,80%))" opacity="0.3" d="M124 41 C128 45.5 128 55.5 123.5 61 C119.5 55 119.5 45.5 120.5 41.5 Z"/>
<!-- жаберная дуга: тёмный серп у затылка -->
<path fill="none" stroke="var(--f4,hsl(212,36%,22%))" stroke-width="1.5" d="M124 41 C128 45.5 128 55.5 123.5 61"/>
<!-- штрихи-чёрточки: 5 тонких горизонтальных тёмных чёрточек в нижней половине бока (узнаваемый признак тунца, НЕ полосы) -->
<path fill="var(--f4,hsl(212,36%,22%))" d="M120 56.2 L134 56.2 L134 57.5 L120 57.5 Z M100 57.2 L114 57.2 L114 58.5 L100 58.5 Z M80 56.3 L94 56.3 L94 57.6 L80 57.6 Z M62 57.6 L76 57.6 L76 58.9 L62 58.9 Z M86 58.6 L101 58.6 L101 59.9 L86 59.9 Z"/>
<!-- 2 киля на хвостовом стебле: тонкие f4-черты (compound) -->
<path fill="none" stroke="var(--f4,hsl(212,36%,22%))" stroke-width="1.3" d="M46 48.5 L52 48.5 M46 51.5 L52 51.5"/>
<!-- рот: маленькая тёмная щель на конце морды -->
<path fill="var(--f4,hsl(212,36%,22%))" d="M143.5 50.2 C146.5 50.5 148.8 51.4 150.4 52.6 C148.2 53.6 145.6 53.1 144 51.8 Z"/>
<!-- грудной плавник: длинный заострённый, корень (118,54) → кончик (99,63) (ПОСЛЕ тела) -->
<path fill="var(--f3,hsl(212,34%,38%))" d="M118 54 C110 55.5 103 59 99 63 C106 62.5 113 59.5 119 56 Z"/>
<!-- глаз: ободок f4 → склера → янтарная радужка → зрачок → блик -->
<circle fill="var(--f4,hsl(212,36%,22%))" cx="133" cy="42" r="4.6"/>
<circle fill="#f7f3e6" cx="133" cy="42" r="3.7"/>
<circle fill="#c9a24a" cx="133" cy="42" r="3.0"/>
<circle fill="#142638" cx="133" cy="42" r="2.1"/>
<circle fill="#fff" cx="131.9" cy="40.9" r="0.8"/>
</svg>