Лучшие шаблоны дивизий Танки | САУ | Пехота | Оборона | Наступление
{"html":["
\n
\n
\n Общее \n Для новичка \n Разбор конструктора \n Разбор статов \n Ширина фронта \n Батальоны \n Роты поддержки \n Полковая поддержка \n Модернизация и опыт \n Гарнизоны и сопротивление \n ★ Готовые мета шаблоны \n ★ Сейв для тестов \n
\n\n
\n
\n
Гайд • Дивизии • Все DLC • Одиночка
\n
Полный гайд по дивизиям \n
Как устроены дивизии, от чего зависят их статы и как собрать шаблон, который не стыдно показать врагу.
\n
\n
+88.7% Сохранение личного состава
\n
+83.5% Софт-атаки
\n
+98.9% Прорыва
\n
\n
\n
\n
\n \n
Дивизия — это боевой организм, где пехота, танки и артиллерия действуют как единый кулак. Без неё Вы не сможете ни наступать, ни удерживать позиции — только разрозненный хаос. Дивизия превращает ресурсы в победу: она наносит урон, держит фронт и усиливается поддержкой. Без дивизий у Вас нет армии — лишь обречённые отряды. В игре возможность управлять батальонами, ротами и полками только в составе дивизии. Дивизия это единственная управляемая единица наземных войск в игре.
\n
\n
\n \n
Иерархия проста: батальоны — основа, роты — их строительные блоки, а полки поддержки — усилители. Поддержка (арта, разведка, сапёры, медики, логистика) не решает исход боя, но кратно повышает эффективность в конкретных условиях — без них дивизия теряет много полезных баффов.
\n
Пример: как собрать конструктор: основа (батальоны) — это стены, роты и полки — крыша и окна, а без фундамента (соотношения характеристик) дом рухнет при первом ударе.
\n
\n
\n \n
Исследования открывают доступ к батальонам, ротам и полкам поддержки: без нужной технологии (например, «Тяжёлые танки» или «Ракетная артиллерия») Вы не сможете вставить их в шаблон. Они также улучшают ключевые параметры и дают модификации, которые меняют эффективность дивизии. Чем глубже Вы исследуете направление, тем больше вариантов поддержки становится доступно, включая критически важные, как средняя улучшенная гаубица. Чтобы узнать, что дает то или иное исследование, достаточно навестить в ветке исследование на нужное, там все будет показано. Правда это есть не у всех исследований. Например "Улучшенное пехотное снаряжение 1" дает только баффы, но не доступ к чему то новому в конструкторе.
\n
Пример: чтобы поставить полковую тяжелую роту, нужно изучить технологию «Оружие огневой поддержки 1».
\n
\n
\n
\n \n
\n
Что такое "софт-атака" и "хард-атака"? + Софт-атакой называют противопехотную атаку, по мягким целям, то есть по пехоте. Хард-атакой называют противотанковую атаку, то есть, по броне, например танкам.
\n
Что лучше, САУ или танки? + Для минора танки, для мажора САУ. Дело в том, что минор редко может себе позволить сильные пехотные шаблоны, поэтому нужно брать поддктрину артиллерии и поддержки "Полевые инженерный работы". А мажор благодаря мощной промышленности (см. гайд по промышленности ) может себе позволить крутую пехоту, поэтому есть смысл взять поддоктрину артиллерии и поддержки "Самоходна поддержка", которая как раз баффает САУ. Но все равно - большинство зависит от ситуации. Если у врага одна пехота, при этом у вас есть промышленность, то можно за минора взять и САУ, без поддоктрины.
\n
Пехота держит, танки прорывают? + В целом да, но если вы не можете за минора себе позволить броню, то можно сделать сильные пехотные наступательные шаблоны, и ими наступать.
\n
Какие лучшие поддоктрины? + Все зависит от ситуации. Подробный разбор доктрин и поддоктрин вы можете посмотреть в нашем гайде про доктрины . Там вы сможете найти раскид под свою ситуацию, посмотреть тир-лист и понять как работют доктрины в этой игре.
\n
Влияет ли расположение батальонов в колонках на боевые статы? + Нет, не влияет. Только желательно старатся делать полки из 3 батальонов - только так можно будет добавить полк поддержки. Если батальонов менее 3, то игра не даст поставит полк поддержки.
\n
Что важнее, софт-атака или прорыв? + Все важно по своему. Без софт-атаке вы не сможете наносить достаточный урон по пехоте противника, а без прорыва не сможете блокировать урон и быстро потеряете организацию. Лучше всего миксовать САУ и танки - так и прорыв будет хорошим, и софт-атака.
\n
Что важнее, хард-атака или бронебойность? + Бронебойность. Бронебойность дает пробитие по вражеской броне, а хард-атака сам урон. Если вам не хватит пробития, то враг будет просто блокировать часть урона.
\n
Когда ставить ПТО и ПВО в дивизии? + Против бота почти никогда, за исключением. ПТО необходимо ставить против танковой державы, например против Германии. ПВО нужно ставить тогда, когда у врага подавляющее превосходство в воздухе. Чаще всего, это все требуется либо в мультипреере, либо при тотальной обороне.
\n
Почему артиллерия в дивизии сильно режет организацию? + Артиллерийские батальоны имеют низкую организацию по сравнению с пехотой. Так как организация дивизии — это среднее арифметическое организаций всех батальонов, добавление арты снижает общий показатель.
\n
Чем отличается прорыв от защиты? + Прорыв, это защита в атаке. Защита - это защита в обороне. Чем больше защита, тем больше вы сможете отразить атак противника, следовательно, меньше потерять организации при наступлении / обороне.
\n
\n
\n
\n \n
\n Стат Без гайда С гайдом \n \n Софт атака 54 74 \n Хард атака 8 12 \n Защита 162 219 \n Прорыв 26 43 \n Броня 0 19 \n Воздушная атака 0 20 \n Ширина фронта 12 18 \n Организация 47 48 \n \n
\n
\n
\n
\n\n
\n
\n
\n \n
Для эффективного создания дивизий необходимо освоить пять ключевых концепций: ширину фронта , разницу между прорывом и софт-атакой , роль организации , влияние исследований и расход припасов . Без понимания этих основ даже дорогие шаблоны будут проигрывать. Начните с теории, а затем переходите к практике в конструкторе.
\n
\n
Как работает ШФ + Ширина фронта — это лимит, сколько дивизий могут драться на одной клетке. Подробнее во вкладке «Ширина фронта».
\n
В чем отличие прорыва от софт-атаки + Софт-атака — это наносимый урон пехоте, а прорыв — способность блокировать вражеские атаки при наступлении.
\n
Как организация влияет на бой + Организация — это «прочность» дивизии. При нуле дивизия вынуждена отступить.
\n
Как исследования влияют на статы + Улучшенное оружие и техника повышают базовые характеристики батальонов и открывают новые виды поддержки.
\n
Как расход припасов влияет на снабжение + Чем выше расход, тем труднее снабжать клетку с дивизией, что ведёт к штрафам (подробнее в гайде по снабжению ).
\n
\n
\n
\n \n
\n Сначала поймите что такое дивизия и из чего она состоит. \n Потом узнайте, что такое организация и остальные ключевые статы (софт атака, прорыв, защита, бронебойность). \n После этого узнайте, чем отличается софт/хард атака от прорыва. \n И только потом переходите к продвинутым настройкам: специфические полки, баланс под конкретного противника, оптимизация под местность. \n \n
\n
\n \n
\n 1) Пехота держит фронт, а танки его прорывают. Не делайте пехоту дорогой, делайте упор на танки. \n 2) Организация — важнее любого другого стата. Танкам 30–40, пехоте 45–50. \n 3) Чем меньше расход припасов, тем лучше. САУ и арта требуют много снабжения (см. гайд по снабжению ). \n 4) Роты поддержки — золото. Сапёры, арта, разведка — must‑have. \n 5) Не забывайте про баффы на местность. Разведка, огнемётные танки, сапёры улучшают положение. \n 6) Держите исследования приоритетных веток в фокусе. \n \n
\n
\n \n
\n 1) Добавлять всего и много. Организация падает, дивизия дорогая. Делайте 1–3 специализированных шаблона. \n 2) Использовать ненужные составляющие в одиночной игре. ПТО и ПВО часто не нужны против ИИ. \n 3) Делать пехотные дивизии огромными. 14/4 или 40 ширины для оборонительной дивизии — дорого и неэффективно. Лучше компактные. Пехота в HoI4 — это оборона, а не наступление (см. гайд по обороне ). \n 4) Использование стартовых шаблонов за миноров. Они часто невыгодны, меняйте под свою промышленность. \n 5) Не обращать внимание на ШФ и организацию. Это два самых важных стата. \n 6) Экономить на ротах поддержки или ставить все. Для обороны хватит 2–4 роты. \n \n
\n
\n \n
На этом видео видно, насколько заметное изменение эффективности из-за шаблона. Потери с мета-шаблоном меньше на 88.7%.
\n
\n VIDEO \n
\n
\n
\n
\n\n
\n
\n
\n \n
Наведите на элементы на скриншоте, чтобы увидеть пояснение. Подробнее об элементах управления в гайде по интерфейсу игры .
\n\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n \n
Наведите на название стата для подробного объяснения.
\n
\n
\n
Базовые параметры \n
\n Максимальная скорость (км/ч) \n Прочность \n Организация \n Скорость восстановления \n Разведка \n Подавление \n Вес \n Расход припасов \n Средняя надежность \n Бонус к надежности \n Возмещение потерь \n Потеря опыта \n \n
\n
\n
Боевые параметры \n
\n Противопехотная атака \n Противотанковая атака \n Воздушная атака \n Защита \n Прорыв \n Броня \n Бронебойность \n Инициатива \n Укрепленность \n Соотношение захвата техники \n Ширина фронта \n \n
\n
\n
Стоимость \n
\n Людские ресурсы \n Время на обучение \n Запас горючего \n Потребление горючего \n Прочее оснащение \n \n
\n
\n
\n
\n \n
Это субьективное мнение автора. Статы оценивались по важности в дивизии.
\n
\n
\n
S
\n
\n Макс. скорость \n Организация \n Расход припасов \n Софт-атака \n Прорыв \n Защита \n Соотн. захвата \n Ширина фронта \n
\n
\n
\n
A
\n
\n Прочность \n Хард-атака \n Воздушная атака \n Броня \n Бронебойность \n Инициатива \n Людские ресурсы \n
\n
\n
\n
B
\n
\n Скорость восстановления \n Разведка \n Средняя надежность \n Бонус к надежности \n Защита возмещения \n Потеря опыта \n Укрепленность \n Потребление горючего \n
\n
\n
\n
F
\n
\n Подавление \n Вес \n Время на обучение \n Запас горючего \n
\n
\n
\n
\n
\n
\n\n
\n
\n
Ширина фронта — это количество пригодной для боя местности во время сражения. Если ваша дивизия превышает лимит клетки, часть её не влезет, и атака/оборона ослабнет. В простонародье называют ШФ. Лимит зависит от местности и определяет, сколько дивизий могут эффективно драться одновременно.
\n
При превышении лимита дивизии получают штраф к софт/хард атаке, прорыву и защите. Чем больше перебор, тем слабее ваш удар. Кроме того, дивизии, не влезшие в бой, не получают опыт. Пример: атака на равнине (лимит 80) тремя дивизиями по 30 ширины даёт перебор 10 — штраф около 19% к эффективности.
\n
Для оборонительной пехоты: 10, 12, 14, 16, 18. Для наступательной пехоты: 14, 15, 20, 36. Для бронированных дивизий: 20, 36. Выбор зависит от местности и задач.
\n
Равнины и пустыня идеальны. Леса, джунгли, холмы и города дают средние штрафы. Горы и болото — адские дебаффы, избегайте их. Используйте соответствующие типы дивизий: горные стрелки в горах, рейнджеров в лесах, морскую пехоту при высадке. Для максимальной эффективности наступления изучите гайд по мета-наступлению .
\n
\n
\n
\n\n
\n
\n
Батальон — это основа, скелет любой дивизии. Именно батальоны определяют её роль: пехота держит оборону, танки прорывают, артиллерия наносит урон. В каждом батальоне от 500 до 1200 солдат с оружием. Меняя батальоны, вы полностью меняете назначение дивизии.
\n
\n
\n Пехотные (обычная пехота, десантники, рейнджеры) — скорость 4 км/ч, повышают организацию и защиту. \n Танковые батальоны боевой поддержки (ПТ-САУ, ЗСУ, САУ) — бронированная огневая мощь, требуют шаблон техники. \n Батальоны боевой поддержки (буксируемая артиллерия, зенитки) — усиливают пехоту, но снижают организацию. \n Мобильные батальоны (артиллерия на грузовиках) — скорость 12 км/ч, подходят для быстрых дивизий. \n Подвижные батальоны (мотопехота, механизированная пехоьа) — быстрая пехота для танковых дивизий. \n Танковые батальоны (лёгкие, средние, тяжёлые) — костяк бронетанковых войск, повышают прорыв и броню. Тяжелые не рекомендую. \n \n
Без батальонов нет смысла в ротах и полках. Именно пехота с оружием в руках и танки, прорывающие фронт, решают исход боя. Батальоны также единственный элемент, влияющий на ширину фронта дивизии.
\n
Пехотный батальон (основа пехоты), мотопехота (для танковых дивизий), кавалерия (быстрое развёртывание и гарнизоны), артиллерия (софт-атака), средние танки и САУ (универсальный урон), ПТ-САУ/ЗСУ (для мультиплеера или специализированных задач). О лучших танковых шаблонах читайте в гайде по мета шаблонам танков .
\n
\n \n
\n Пехотные \n Танковая поддержка \n Мобильная поддержка \n Поддержка \n Подвижные \n Танковые \n
\n
\n
\n
\n Иконка Название Описание \n \n ЗСУ Для увеличения брони или против авиации. \n САУ В наступательные бронированные дивизии. \n ПТ-САУ Против танковой державы в мультиплеере. \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
Специальное подразделение, которое помогает дивизии с тыла, не участвуя в бою напрямую. Не занимает боевую ширину, но даёт мощные бонусы: сапёры усиливают оборону, разведка находит слабые места, артиллерия поддержки добавляет урон. Это самый эффективный способ улучшить дивизию за малую цену.
\n
Прямая огневая поддержка (артиллерия, РСЗО, ПТО, ПВО, огнемётные танки), разведка (конная, моторизованная, бронированная) и тыловые службы (сапёры, ремонтники, госпитали, логистика). Каждая выполняет свою роль: огонь, информация или снабжение.
\n
Без рот поддержки дивизия теряет значительную часть эффективности. Танковые дивизии без огнемётных танков страдают от местности, пехота без сапёров хуже обороняется и штурмует крепости. Несколько правильно подобранных рот превращают средний шаблон в боеспособный.
\n
Сапёрная рота (баффы местности, защита), вспомогательная артиллерия (софт-атака), бронированная разведка (прорыв, скорость), средняя огнемётная поддержка (атака на местности), ПВО/ПТО по ситуации. Эти роты дают наибольшую прибавку к боевой мощи.
\n
\n \n
\n Иконка Название Бафф Стоимость Пояснение \n \n Поддержка ПВО Повышает воздушную атаку 20 ПВО Когда у врага превосходство в воздухе. \n Поддержка ПТО Повышает хард-атаку и бронебойность 24 ПТО Когда у врага много танков. \n Поддержка артиллерии Повышает софт-атаку 12 артиллерии Ставим во все дивизии. \n Поддержка РСЗО Повышает софт-атаку 12 ракет Для позднего этапа игры. \n Саперная рота Баффы на местность, защиту 30 допки, 10 винтовок Каждой дивизии. \n Бронированная разведрота Баффы на местность, прорыв 24 легких танка Лучшая разведка для наступательных дивизий. \n Средняя огнеметная рота Баффы на местность, атака 15 огнеметных танков Только средняя, к танковым дивизиям. \n Полевой госпиталь Уменьшает потери личного состава 20 грузовиков, 30 допки В наступательные пехотные дивизии. \n Рота обеспечения Понижает расход припасов 10 грузовиков, 20 допки Наступательным дивизиям с САУ. \n Сверхтяжелая артиллерия Повышает софт-атаку 3 сверхтяжелой артиллерии Для мега-мажоров, ставим пехоте. \n Самоходная сверхтяжелая артиллерия Повышает софт-атаку 3 самоходной сверхтяжелой артиллерии Бесполезно. \n Сухопутный крейсер Зависит от конструктора 1 сухопутный крейсер Бесполезно. \n Сверхтяжелый танк Зависит от конструктора 20 сверхтяжелых танков Бесполезно. \n Отряд конной разведки Баффы на местность, разведка 40 винтовок, 10 допки Ставим пехоте в начале партии. \n Инженерно-штурмовая рота Баффы на местность, прорыв пехоте 20 допки, 20 бронированных машин обеспечения Редко используется, по ситуации. \n Бронетанковая инженерная рота Баффы на местность, защита и прорыв 30 бронированных машин обеспечения, 15 допки Неплохо для мажоров. \n Медицинская эвакуация на вертолете Понижает потери, ускоряет восстановление 15 вертолетов, 15 грузовиков, 30 допки Бесполезно. \n Вертолетная бригада Скорость восстановления, расход припасов, восстановление 15 вертолетов, 15 допки Почти всегда бесполезно. \n Разведка с вертолетов Баффы на местность, софт-атака пехоте, защита всем 20 вертолетов, 20 винтовок, 10 допки Почти всегда бесполезно. \n Грузовые вертолеты Понижает расход припасов, баффы на местность 10 вертолетов, 10 винтовок, 20 допки Почти всегда бесполезно. \n Ремонтная рота Повышает захват техники, бонус к надежности 25 допки Часто бесполезно, но можно за минора против танковой державы. \n Бронетанковая ремонтная рота Повышает захват техники, бонус к надежности 20 бронированных машин обеспечения, 15 допки Бесполезно. \n Военная полиция Повышает защиту, скорость восстановления, подавление 40 винтовок, 10 допки Ситуативно, мажоры могут для гарнизонов. \n Моторизованная военная полиция Повышает защиту, скорость восстановления, подавление 20 пехотки, 20 мотоциклов, 5 допки Ситуативно. \n Моторизованная разведка Баффы на местность, защита 40 винтовок, 20 грузовиков, 10 допки Худшая из разведок. \n Легкобронированная разведрота Баффы на местность, прорыв 24 бронемашины Нет смысла. \n Рота связи Повышает инициативу 10 грузовиков, 20 допки Подходит, если делаете упор в инициативу. \n Бронетанковая рота связи Повышает инициативу, прорыв танкам 20 бронированных машин обеспечения, 15 допки Часто бесполезная. \n \n
\n
\n
\n
\n \n
\n
\n
Непосредственная поддержка на поле боя: пулемёты, пехотные орудия, ПВО, ПТО. Дешевле рот поддержки, но и слабее. Чаще всего используется мажорами, так как требует свободной организации. Полки дают исключительно боевые баффы, в отличие от универсальных рот.
\n
Обычная (прикрепляется к пехоте), моторизованная (к мотострелкам) и бронированная (ЗСУ, ПТ-САУ — к танкам). Тип определяет, какую скорость и бонусы получит дивизия: бронированная поддержка едет с танками, обычная идёт с пехотой.
\n
Полки усиливают батальоны напрямую, повышая защиту или атаку. Их главное отличие — они не дают баффов местности или логистики, только боевые статы. Идеальны, когда нужно дожать прорыв или укрепить оборону, но есть запас организации.
\n
Полковая ракетная батарея (софт-атака), тяжелая рота (защита), пехотные орудия (софт-атака дёшево), ПВО/ПТО по ситуации. Бронированные ЗСУ и ПТ-САУ хороши в мультиплеере или против сильного врага.
\n
\n
\n
\n\n
\n
\n
Опыт дивизии даёт огромные бонусы к боевым статам: ветераны (5 уровень) получают +75%. Прокачка лучше всего идёт в гражданской войне в Испании (см. гайд по гражданской войне в Испании ), где потери невелики, а бои идут постоянно. Отправляйте туда добровольцев и не давайте им простаивать.
\n
Дивизии должны участвовать в боях. Идеальное место — испанская гражданская война: бои идут годами, потери минимальны. В своей войне прокачка сложнее из-за высоких потерь и быстрых сражений, поэтому ветеранов растят заранее.
\n
Вы можете сменить состав прокачанной дивизии, сохранив опыт. Главное правило: количество людей в новом шаблоне не должно быть меньше, чем в старом. Иначе ветеранов разбавят новобранцы, и уровень упадёт.
\n
Создайте мусорный шаблон с большим количеством людей, прокачайте его в Испании, затем замените батальоны на танковые/артиллерийские, сохранив численность. Так вы получите ветеранов-танкистов без траты топлива на прокачку танковых дивизий.
\n
\n
\n
\n\n
\n
\n
Гарнизоны автоматически занимают захваченные территории, подавляя сопротивление. Если оставить стандартный пехотный шаблон, потери в людях и снаряжении будут огромны. Всегда переключайте гарнизоны на самый дешёвый шаблон — 1 батальон кавалерии или лёгкого танка.
\n
Пустой шаблон из 1 кавалерии (очень дёшево, доступен всем) или 1 лёгкого танка (дороже, но меньше потерь). Никогда не используйте полноценные дивизии — это пустая трата ресурсов.
\n
Местное население саботирует оккупацию: ломает сооружения, наносит урон гарнизонам, ухудшает снабжение. При 30%+ сопротивления потери становятся критическими, и регион требует постоянного ремонта. Сопротивление растёт, если закон слишком мягкий или не хватает гарнизонов.
\n
Лучший способ — подходящий оккупационный закон. Также помогают фокусы, советники, события и операции агенства. Временно можно снизить сопротивление, но долгосрочно только закон и гарнизоны дают стабильный эффект.
\n
\n
\n
\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
Temp_div_test_2.hoi4
\n
Размер: 43.2 MB • Версия: 1.19+ • Без модов • Все DLC
\n
\n
\n \n Скачать сейв\n \n
\n
Как использовать? + \n
\n
\n Скачайте файл и поместите его в папку Documents/Paradox Interactive/Hearts of Iron IV/save games. \n Запустите игру и загрузите сейв «Temp_div_test_2». \n Для удобства тестов откройте консоль (клавиша ~) и введите ai, чтобы отключить ИИ. \n \n
\n
\n
\n
\n
VirusTotal проверка
\n
\n
\n
\n
\n
\n
\n\n
\n \n
Все шаблоны собраны на основе сотен часов игры и анализа механик. Я постарался сделать гайд максимально полезным и практичным, чтобы вы могли сразу применять знания в своих кампаниях. Надеюсь, теперь вы сможете создавать дивизии, которые принесут вам победу. Удачи на фронте!
\n
Актуально на 2026 год, версия 1.19+, все DLC, одиночка.
\n
\n
"],"css":["* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nhtml, body {\n width: 100%;\n overflow-x: hidden !important;\n scroll-behavior: smooth;\n}\n\nbody {\n --bg-deep: #0d0c09;\n --gold-light: #f5d98b;\n --gold: #e2b660;\n --gold-dim: #b5943e;\n --green: #7aad7e;\n --green-glow: rgba(122, 173, 126, 0.5);\n --red: #c56a6a;\n --card-bg: rgba(22, 21, 18, 0.8);\n --card-border: rgba(226, 182, 96, 0.15);\n --text-primary: #f0ead8;\n --text-secondary: #c8c0a8;\n --text-muted: #908870;\n --shadow-gold: 0 0 20px rgba(226, 182, 96, 0.2);\n --shadow-card: 0 12px 28px rgba(0,0,0,0.6), 0 0 0 1px rgba(226,182,96,0.08);\n background: radial-gradient(ellipse at 50% 20%, rgba(226, 182, 96, 0.08) 0%, #0a0906 80%);\n background-attachment: fixed;\n color: #f0ead8;\n font-family: 'Segoe UI', 'Inter', system-ui, sans-serif;\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n min-height: 100vh;\n position: relative;\n}\n\ncanvas#particles-canvas {\n position: fixed;\n top: 0;\n left: 0;\n width: 98%;\n height: 98%;\n z-index: -1;\n pointer-events: none;\n}\n\n.volunteer-guide {\n max-width: 1200px;\n margin: 0 auto;\n padding: 37.5px 25px;\n user-select: text;\n position: relative;\n z-index: 1;\n}\n\n.guide-tabs {\n position: sticky;\n top: 73px;\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 10px;\n background: rgba(12, 11, 8, 0.9);\n backdrop-filter: blur(20px);\n padding: 12.5px 12.5px;\n border-radius: 20px;\n border: 1px solid rgba(226, 182, 96, 0.35);\n box-shadow: 0 12px 40px rgba(0,0,0,0.8), 0 0 30px rgba(226,182,96,0.1), inset 0 1px 0 rgba(255,255,255,0.05);\n z-index: 1000;\n margin-bottom: 37.5px;\n}\n\n.guide-tab {\n background: transparent;\n border: 1px solid transparent;\n color: #b8b098;\n padding: 15px 27.5px;\n font-size: 15.9px;\n font-weight: 600;\n border-radius: 14px;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.2, 0.9, 0.4, 1);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-align: center;\n min-width: 110px;\n letter-spacing: 0.3px;\n}\n\n.guide-tab::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 14px;\n padding: 1px;\n background: linear-gradient(135deg, transparent, rgba(226,182,96,0.6), transparent);\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.guide-tab:hover::before { opacity: 0.8; }\n.guide-tab:hover {\n color: #f5e6c7;\n background: rgba(226, 182, 96, 0.12);\n text-shadow: 0 0 8px rgba(226,182,96,0.4);\n}\n\n.guide-tab.active {\n color: #f7e3a8;\n background: rgba(226, 182, 96, 0.2);\n border-color: rgba(226, 182, 96, 0.6);\n box-shadow: 0 0 30px rgba(226, 182, 96, 0.4), inset 0 0 15px rgba(226,182,96,0.15);\n text-shadow: 0 0 12px rgba(226,182,96,0.6);\n}\n.guide-tab.active::before { opacity: 1; background: linear-gradient(135deg, rgba(226,182,96,0.8), rgba(226,182,96,0.2), rgba(226,182,96,0.8)); }\n\n.tab-premium.active {\n border-color: rgba(226, 182, 96, 0.8);\n box-shadow: 0 0 40px rgba(226, 182, 96, 0.5), inset 0 0 20px rgba(226,182,96,0.25);\n}\n\n.tab-star {\n display: inline-block;\n font-size: 22px;\n margin-right: 6px;\n color: #e2b660;\n text-shadow: 0 0 18px rgba(226, 182, 96, 0.8);\n animation: starPulse 2s infinite ease-in-out;\n line-height: 1;\n position: relative;\n top: 2px;\n}\n@keyframes starPulse {\n 0% { text-shadow: 0 0 10px rgba(226, 182, 96, 0.6); transform: scale(1); }\n 50% { text-shadow: 0 0 24px rgba(226, 182, 96, 1); transform: scale(1.15); }\n 100% { text-shadow: 0 0 10px rgba(226, 182, 96, 0.6); transform: scale(1); }\n}\n\n.tab-panel { display: none; }\n.tab-panel.active { display: block; }\n\n.hero-card {\n background: linear-gradient(145deg, rgba(226, 182, 96, 0.18) 0%, rgba(20, 18, 13, 1) 100%);\n border: 1px solid rgba(226,182,96,0.35);\n border-radius: 28px;\n padding: 68.75px 50px;\n text-align: center;\n margin-bottom: 50px;\n position: relative;\n overflow: hidden;\n box-shadow: 0 25px 60px rgba(0,0,0,0.8), 0 0 50px rgba(226,182,96,0.15), inset 0 2px 0 rgba(255,255,255,0.05);\n backdrop-filter: blur(12px);\n}\n.hero-card::before {\n content: '';\n position: absolute;\n top: -80px; right: -80px;\n width: 300px; height: 300px;\n background: radial-gradient(circle, rgba(226,182,96,0.25) 0%, transparent 70%);\n border-radius: 50%; z-index: 0;\n}\n.hero-card::after {\n content: '';\n position: absolute;\n bottom: -80px; left: -80px;\n width: 280px; height: 280px;\n background: radial-gradient(circle, rgba(196, 152, 64, 0.15) 0%, transparent 70%);\n border-radius: 50%; z-index: 0;\n}\n.hero-badge {\n display: inline-block;\n background: rgba(226, 182, 96, 0.25);\n color: #f7e3a8;\n padding: 12.5px 35px;\n border-radius: 40px;\n font-size: 15.1px;\n font-weight: 600;\n margin-bottom: 27.5px;\n letter-spacing: 0.6px;\n backdrop-filter: blur(8px);\n border: 1px solid rgba(226, 182, 96, 0.5);\n box-shadow: 0 0 25px rgba(226,182,96,0.3);\n position: relative; z-index: 1;\n}\n.hero-title {\n font-size: 3.02rem;\n font-weight: 800;\n margin-bottom: 20px;\n color: #faeec8;\n line-height: 1.2;\n position: relative; z-index: 1;\n text-shadow: 0 4px 20px rgba(0,0,0,0.8), 0 0 50px rgba(226,182,96,0.3);\n}\n.hero-sub {\n font-size: 1.23rem;\n color: #d9d0b5;\n margin-bottom: 37.5px;\n position: relative; z-index: 1;\n font-weight: 400;\n text-shadow: 0 2px 10px rgba(0,0,0,0.6);\n}\n.hero-grid {\n display: flex;\n justify-content: center;\n gap: 62.5px;\n flex-wrap: wrap;\n margin-top: 37.5px;\n position: relative; z-index: 1;\n}\n.hero-stat {\n position: relative;\n flex: 1 1 0;\n min-width: 150px;\n text-align: center;\n border-radius: 20px;\n padding: 30px 20px;\n backdrop-filter: blur(10px);\n border: 1px solid rgba(226, 182, 96, 0.2);\n background: rgba(20, 18, 13, 0.5);\n transition: all 0.3s ease;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.hero-stat:hover {\n transform: translateY(-8px);\n border-color: rgba(226, 182, 96, 0.6);\n box-shadow: 0 12px 28px rgba(226,182,96,0.3), 0 16px 40px rgba(0,0,0,0.7);\n background: rgba(25, 22, 15, 0.7);\n}\n.hero-stat + .hero-stat::before {\n content: '';\n position: absolute;\n left: -31.25px; top: 20%; bottom: 20%;\n width: 1px;\n background: linear-gradient(to bottom, transparent, rgba(226,182,96,0.5), transparent);\n}\n.hero-stat-num {\n display: block;\n font-size: 2.46rem;\n font-weight: 700;\n color: #f5d78c;\n line-height: 1.2;\n margin-bottom: 10px;\n text-shadow: 0 0 20px rgba(226, 182, 96, 0.6);\n}\n.hero-stat-label {\n font-size: 0.95rem;\n color: #b0a890;\n font-weight: 500;\n}\n\n.cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(480px, 1fr));\n gap: 35px;\n margin-bottom: 50px;\n align-items: stretch;\n}\n.cards-grid--full { grid-template-columns: 1fr; width: 100%; }\n.cards-grid--fixed-2col { grid-template-columns: 1fr 1fr; }\n.full-width { grid-column: 1 / -1; }\n.center-single-card {\n display: grid;\n grid-template-columns: 1fr;\n max-width: 600px;\n margin: 0 auto 50px;\n justify-self: center;\n}\n\n.card {\n background: linear-gradient(160deg, rgba(30, 28, 22, 0.95) 0%, rgba(20, 18, 13, 0.98) 100%);\n border: 1px solid rgba(226, 182, 96, 0.2);\n border-radius: 22px;\n padding: 35px;\n box-shadow: var(--shadow-card);\n transition: all 0.35s ease;\n overflow: hidden;\n position: relative;\n backdrop-filter: blur(4px);\n}\n.card::after {\n content: '';\n position: absolute;\n top: 0; left: 0;\n width: 100%; height: 100%;\n background: radial-gradient(circle at 30% 10%, rgba(226,182,96,0.03), transparent 60%);\n pointer-events: none;\n}\n.card-animate {\n opacity: 0;\n transition: opacity 1.2s ease, transform 1.2s ease;\n}\n.card:hover {\n border-color: rgba(226, 182, 96, 0.5);\n box-shadow: 0 18px 40px rgba(0,0,0,0.8), 0 0 35px rgba(226,182,96,0.15);\n}\n.card-header {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 15px;\n margin-bottom: 27.5px;\n padding-bottom: 17.5px;\n border-bottom: 1px solid rgba(226, 182, 96, 0.25);\n}\n.card-header h2 {\n font-size: 1.80rem;\n font-weight: 700;\n color: #faeec8;\n margin: 0;\n text-shadow: 0 0 16px rgba(226,182,96,0.3);\n letter-spacing: 0.5px;\n}\n.card-icon {\n flex-shrink: 0;\n filter: drop-shadow(0 0 10px rgba(226, 182, 96, 0.6));\n transition: transform 0.3s ease;\n}\n.card-icon:hover { transform: rotate(-8deg) scale(1.2); }\n.card p {\n color: #c8c0a8;\n font-size: 16.1px;\n line-height: 1.75;\n margin-bottom: 20px;\n}\n.card h3 {\n font-size: 1.32rem;\n color: #e2b660;\n margin-bottom: 0.6em;\n text-shadow: 0 0 8px rgba(226,182,96,0.3);\n}\n\n.styled-list {\n list-style: none;\n padding: 0;\n}\n.styled-list li {\n background: rgba(35, 33, 26, 0.8);\n border: 1px solid rgba(226,182,96,0.2);\n border-radius: 10px;\n padding: 17.5px 22.5px;\n margin-bottom: 12.5px;\n color: #c0b898;\n font-size: 16.1px;\n transition: all 0.25s ease;\n backdrop-filter: blur(6px);\n line-height: 1.65;\n}\n.styled-list li:hover {\n background: rgba(50, 47, 37, 0.9);\n border-color: rgba(226,182,96,0.5);\n box-shadow: 0 0 20px rgba(226,182,96,0.15);\n}\n\n.doctrine-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 12.5px;\n margin: 27.5px 0;\n font-size: 14.2px;\n}\n.doctrine-table thead th {\n background: rgba(226, 182, 96, 0.2);\n color: #f5d78c;\n font-weight: 700;\n padding: 17.5px 20px;\n text-align: left;\n border-radius: 12px 12px 0 0;\n border: 1px solid rgba(226, 182, 96, 0.3);\n border-bottom: none;\n text-shadow: 0 0 8px rgba(226,182,96,0.3);\n}\n.doctrine-table tbody td {\n background: rgba(18, 17, 12, 0.9);\n color: #c8c0a8;\n padding: 15px 20px;\n border: 1px solid rgba(226, 182, 96, 0.15);\n border-top: none;\n transition: background 0.25s;\n}\n.doctrine-table tbody tr:first-child td { border-top: 1px solid rgba(226, 182, 96, 0.2); }\n.doctrine-table tbody tr:hover td {\n background: rgba(30, 28, 20, 0.95);\n border-color: rgba(226, 182, 96, 0.4);\n}\n\n.faq-accordion {\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 14px;\n overflow: hidden;\n background: rgba(18, 17, 12, 0.9);\n backdrop-filter: blur(8px);\n margin-top: 12.5px;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.faq-item { border-bottom: 1px solid rgba(226,182,96,0.2); }\n.faq-item:last-child { border-bottom: none; }\n.faq-question {\n background: none;\n border: none;\n width: 100%;\n text-align: left;\n padding: 20px 27.5px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: #f0ead8;\n font-size: 16.1px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.25s ease;\n}\n.faq-question:hover { background: rgba(226,182,96,0.12); }\n.faq-answer {\n max-height: 0; overflow: hidden; opacity: 0;\n padding: 0 27.5px;\n color: #c0b898;\n transition: max-height 0.45s ease, opacity 0.45s ease, padding 0.45s ease;\n background: rgba(0,0,0,0.3);\n}\n.faq-item.open .faq-answer {\n max-height: 700px; opacity: 1; padding: 20px 27.5px;\n}\n.faq-icon {\n font-size: 25px; color: #e2b660;\n transition: transform 0.35s ease;\n filter: drop-shadow(0 0 6px rgba(226,182,96,0.5));\n}\n.faq-item.open .faq-icon { transform: rotate(45deg); }\n\n.cheats-block {\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 14px;\n overflow: hidden;\n background: rgba(18, 17, 12, 0.9);\n backdrop-filter: blur(8px);\n margin-top: 12.5px;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.cheats-toggle {\n background: none; border: none;\n width: 100%; text-align: left;\n padding: 20px 27.5px;\n display: flex; justify-content: space-between; align-items: center;\n color: #f0ead8; font-size: 16.1px; font-weight: 600;\n cursor: pointer; transition: background 0.25s ease;\n}\n.cheats-toggle:hover { background: rgba(226,182,96,0.12); }\n.cheats-content {\n max-height: 0; overflow: hidden; opacity: 0;\n padding: 0 27.5px;\n transition: max-height 0.45s ease, opacity 0.45s ease, padding 0.45s ease;\n background: rgba(0,0,0,0.3);\n}\n.cheats-block.open .cheats-content { max-height: 900px; opacity: 1; padding: 20px 27.5px; }\n.cheats-chevron {\n font-size: 25px; color: #e2b660;\n transition: transform 0.35s ease;\n filter: drop-shadow(0 0 6px rgba(226,182,96,0.5));\n}\n.cheats-block.open .cheats-chevron { transform: rotate(45deg); }\n.cheat-scroll {\n max-height: 900px; overflow-y: auto; padding-right: 10px;\n scrollbar-width: thin; scrollbar-color: #4a4a3a #0d0c09;\n}\n.cheat-scroll::-webkit-scrollbar { width: 6px; }\n.cheat-scroll::-webkit-scrollbar-track { background: #0d0c09; border-radius: 6px; }\n.cheat-scroll::-webkit-scrollbar-thumb { background: #4a4a3a; border-radius: 6px; }\n.cheat-scroll::-webkit-scrollbar-thumb:hover { background: #6b6b55; }\n.cheat-item {\n background: rgba(15, 14, 10, 0.9);\n border: 1px solid rgba(226,182,96,0.2);\n border-radius: 10px;\n padding: 15px 17.5px; margin-bottom: 10px;\n font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;\n font-size: 13.6px; color: #c9d1d9;\n transition: all 0.25s ease; backdrop-filter: blur(6px);\n}\n.cheat-item:hover { border-color: #e2b660; box-shadow: 0 0 18px rgba(226,182,96,0.2); }\n.cheat-desc { font-size: 12.5px; color: #8b949e; margin-bottom: 10px; display: block; }\n.cheat-row { display: flex; align-items: center; justify-content: space-between; gap: 17.5px; }\n.cheat-command { flex: 1; word-break: break-all; }\n.copy-btn {\n background: none; border: 1px solid #4a4a3a; border-radius: 8px;\n color: #9e9e8e; cursor: pointer; padding: 6.25px 15px;\n font-size: 13.6px; font-weight: 600; transition: all 0.25s ease; flex-shrink: 0;\n}\n.copy-btn:hover { background: #3d3d30; color: #f0ead8; border-color: #e2b660; box-shadow: 0 0 14px rgba(226,182,96,0.3); }\n.copy-btn.copied { color: #7aad7e; border-color: #7aad7e; background: rgba(122, 173, 126, 0.25); }\n\n.positive-value { color: #7aad7e; font-weight: 700; text-shadow: 0 0 8px rgba(122, 173, 126, 0.5); }\n.negative-value { color: #c56a6a; font-weight: 700; text-shadow: 0 0 6px rgba(200, 80, 80, 0.5); }\n.moderate-value { color: #d4a83c; font-weight: 700; text-shadow: 0 0 6px rgba(212, 168, 60, 0.5); }\n.accent { color: #e2b660; font-weight: 600; text-shadow: 0 0 8px rgba(226, 182, 96, 0.5); }\n\n.author-card {\n background: linear-gradient(145deg, #1f1d18 0%, #151410 100%);\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 22px;\n padding: 37.5px;\n text-align: center;\n margin-top: 50px;\n box-shadow: 0 14px 36px rgba(0,0,0,0.6), 0 0 28px rgba(226,182,96,0.08);\n backdrop-filter: blur(12px);\n}\n.author-card .card-header { justify-content: center; border-bottom: none; margin-bottom: 22.5px; }\n.author-date { color: #908870; font-size: 12.5px; margin-top: 15px; }\n\n.card-animate.visible { opacity: 1; transform: translateY(0); }\n.ripple {\n position: absolute; border-radius: 50%;\n background: rgba(226, 182, 96, 0.5);\n transform: scale(0); animation: ripple 0.6s linear;\n pointer-events: none;\n}\n@keyframes ripple { to { transform: scale(4); opacity: 0; } }\n\n.volunteer-guide a,\n.guide-link {\n color: #e2b660; text-decoration: none; font-weight: 600;\n border-bottom: 1px solid rgba(226, 182, 96, 0.4);\n transition: color 0.2s ease, border-color 0.2s ease, text-shadow 0.2s ease;\n}\n.volunteer-guide a:hover,\n.guide-link:hover {\n color: #f5d98b; border-bottom-color: #f5d98b;\n text-shadow: 0 0 8px rgba(226, 182, 96, 0.4);\n}\n\n.supply-subtabs {\n display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px;\n justify-content: center;\n border-bottom: 1px solid rgba(226, 182, 96, 0.2);\n padding-bottom: 15px;\n}\n.supply-subtab {\n background: transparent;\n border: 1px solid rgba(226, 182, 96, 0.18);\n color: #b8b098;\n padding: 6px 16px;\n font-size: 14px;\n font-weight: 600;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.25s ease;\n white-space: nowrap;\n}\n.supply-subtab:hover {\n color: #f5e6c7;\n background: rgba(226, 182, 96, 0.08);\n border-color: rgba(226, 182, 96, 0.4);\n}\n.supply-subtab.active {\n color: #f7e3a8;\n background: rgba(226, 182, 96, 0.18);\n border-color: rgba(226, 182, 96, 0.55);\n box-shadow: 0 0 10px rgba(226, 182, 96, 0.15);\n}\n.supply-table-container { display: none; }\n.supply-table-container.active { display: block; }\n\n.tier-list { margin-top: 15px; }\n.tier-row {\n display: flex; align-items: stretch; margin-bottom: 8px;\n border-radius: 8px; overflow: hidden;\n box-shadow: 0 4px 10px rgba(0,0,0,0.3);\n}\n.tier-label {\n width: 50px; display: flex; align-items: center; justify-content: center;\n font-size: 1.6rem; font-weight: 800; color: #fff; flex-shrink: 0;\n}\n.tier-s .tier-label { background: #c49840; color: #1a1814; }\n.tier-g .tier-label { background: #6f9b7a; }\n.tier-r .tier-label { background: #5a8ab5; }\n.tier-b .tier-label { background: #8b7355; }\n.tier-items {\n padding: 10px 14px; background: rgba(15, 14, 12, 0.8);\n backdrop-filter: blur(4px); flex: 1;\n display: flex; flex-wrap: wrap; gap: 6px; align-items: center;\n}\n.tier-tag {\n display: inline-flex; align-items: center;\n padding: 4px 12px; border-radius: 16px;\n font-size: 14.4px; font-weight: 500; white-space: nowrap;\n border: 1px solid transparent; transition: all 0.2s ease;\n}\n.tier-tag:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.4); }\n.tier-tag-s { background: rgba(196, 152, 64, 0.15); color: #e0c880; border-color: rgba(196, 152, 64, 0.3); }\n.tier-tag-g { background: rgba(111, 155, 122, 0.15); color: #c0e6c8; border-color: rgba(111, 155, 122, 0.3); }\n.tier-tag-r { background: rgba(90, 138, 181, 0.15); color: #b8d8f0; border-color: rgba(90, 138, 181, 0.3); }\n.tier-tag-b { background: rgba(139, 115, 85, 0.15); color: #e0d0c0; border-color: rgba(139, 115, 85, 0.3); }\n\n.hq-selector {\n display: flex; justify-content: center; flex-wrap: wrap; gap: 8px;\n margin: 24px 0 28px; z-index: 999; position: relative;\n}\n.hq-tab {\n background: none; border: 1px solid rgba(226, 182, 96, 0.3);\n color: #b8b098; padding: 10px 22px; font-size: 15px;\n font-weight: 600; border-radius: 10px; cursor: pointer;\n transition: all 0.25s ease; white-space: nowrap;\n}\n.hq-tab:hover { color: #f0ead8; background: rgba(226, 182, 96, 0.08); }\n.hq-tab.active {\n color: #e2b660; background: rgba(226, 182, 96, 0.14);\n border-color: rgba(226, 182, 96, 0.5);\n box-shadow: 0 0 18px rgba(226, 182, 96, 0.15);\n}\n.hq-panels { margin-bottom: 20px; }\n.hq-panel { display: none; animation: fadeIn 0.3s ease; }\n.hq-panel.active { display: block; }\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.card-img {\n display: block; max-width: 100%; height: auto;\n margin: 20px auto 0; border-radius: 8px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n}\n.modal-img { cursor: zoom-in; }\n.table-icon {\n max-width: 50px; max-height: 50px;\n vertical-align: middle; margin-right: 6px;\n object-fit: contain;\n}\n\n.interactive-svg {\n margin-top: 20px;\n border-radius: 16px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n background: #0f0f0d;\n}\n.interactive-svg title { pointer-events: none; }\n\n.stats-grid {\n display: flex;\n gap: 30px;\n flex-wrap: wrap;\n margin-top: 20px;\n}\n.stats-column {\n flex: 1 1 280px;\n background: rgba(18, 17, 12, 0.6);\n border-radius: 14px;\n padding: 18px;\n border: 1px solid rgba(226, 182, 96, 0.15);\n}\n.stats-column h3 {\n text-align: center;\n margin-bottom: 16px;\n color: #e2b660;\n font-size: 1.2rem;\n}\n.stats-list {\n list-style: none;\n padding: 0;\n text-align: center;\n}\n.stats-list li {\n margin-bottom: 10px;\n}\n.stat-name {\n position: relative;\n cursor: help;\n color: #c8c0a8;\n font-size: 15px;\n font-weight: 500;\n border-bottom: 1px dotted rgba(226, 182, 96, 0.3);\n display: inline-block;\n}\n.stat-name:hover {\n color: #f0ead8;\n border-bottom-color: #e2b660;\n}\n\n.custom-tooltip {\n position: fixed;\n background: #1a1a14;\n color: #f0ead8;\n padding: 8px 14px;\n border-radius: 8px;\n font-size: 13px;\n white-space: normal;\n max-width: 280px;\n width: max-content;\n border: 1px solid rgba(226, 182, 96, 0.5);\n box-shadow: 0 8px 24px rgba(0,0,0,0.8);\n z-index: 9999;\n pointer-events: none;\n line-height: 1.4;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.custom-tooltip.show {\n opacity: 1;\n}\n\n.template-selector {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 20px;\n justify-content: center;\n}\n\n.save-grid {\n display: flex;\n gap: 2rem;\n align-items: flex-start;\n flex-wrap: wrap;\n}\n\n.save-file-info {\n flex: 1 1 35%;\n min-width: 240px;\n}\n\n.save-file-details {\n margin-bottom: 1.5rem;\n}\n\n.save-file-name {\n font-size: 1.4rem;\n font-weight: 700;\n color: #faeec8;\n margin-bottom: 0.3rem;\n}\n\n.save-file-meta {\n font-size: 0.9rem;\n color: #908870;\n margin-bottom: 1.5rem;\n}\n\n.save-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n background: rgba(226, 182, 96, 0.15);\n border: 1px solid rgba(226, 182, 96, 0.4);\n color: #f0ead8;\n font-weight: 600;\n font-size: 1rem;\n padding: 12px 28px;\n border-radius: 12px;\n text-decoration: none;\n transition: all 0.25s ease;\n cursor: pointer;\n margin-bottom: 1.8rem;\n}\n\n.save-btn:hover {\n background: rgba(226, 182, 96, 0.25);\n border-color: rgba(226, 182, 96, 0.7);\n box-shadow: 0 0 24px rgba(226, 182, 96, 0.3);\n color: #fff;\n}\n\n.instruction-block {\n margin-top: 0;\n}\n\n.save-virustotal {\n flex: 1 1 60%;\n min-width: 300px;\n text-align: center;\n}\n\n.save-virustotal p {\n margin-bottom: 0.8rem;\n font-weight: 600;\n color: #b8b098;\n}\n\n.save-virustotal img {\n max-width: 100%;\n height: auto;\n border-radius: 10px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n}\n\n.interactive-screenshot {\n position: relative;\n width: 100%;\n max-width: 800px;\n margin: 20px auto 0;\n border-radius: 12px;\n overflow: hidden;\n border: 1px solid rgba(226, 182, 96, 0.25);\n box-shadow: 0 12px 30px rgba(0,0,0,0.6);\n}\n\n.interactive-screenshot-img {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.hotspot {\n position: absolute;\n background: transparent;\n border-radius: 6px;\n cursor: help;\n transition: background 0.2s ease, box-shadow 0.2s ease;\n z-index: 2;\n}\n\n.hotspot:hover {\n background: rgba(226, 182, 96, 0.15);\n box-shadow: 0 0 0 2px rgba(226, 182, 96, 0.4);\n}\n\n@media (max-width: 768px) {\n .guide-tabs {\n position: static;\n margin-bottom: 25px;\n flex-wrap: nowrap;\n overflow-x: auto;\n white-space: nowrap;\n justify-content: flex-start;\n gap: 7.5px;\n padding: 10px 10px;\n -webkit-overflow-scrolling: touch;\n }\n\n\n .guide-tab {\n font-size: 13.2px;\n padding: 12.5px 20px;\n min-width: auto;\n flex-shrink: 0;\n }\n .hero-card { padding: 40px 20px; border-radius: 20px; }\n .hero-title { font-size: 1.9rem; }\n .hero-sub { font-size: 0.95rem; }\n .hero-grid { gap: 25px; }\n .hero-stat { min-width: 120px; padding: 20px 12.5px; }\n .hero-stat + .hero-stat::before { display: none; }\n .hero-stat-num { font-size: 1.9rem; }\n .hero-stat-label { font-size: 0.85rem; }\n .cards-grid,\n .cards-grid--fixed-2col,\n .cards-grid--full,\n .center-single-card {\n grid-template-columns: 1fr;\n max-width: 100%;\n margin: 0 0 40px 0;\n gap: 25px;\n }\n .full-width { grid-column: 1 / -1; }\n .card { padding: 25px; overflow-x: auto; overflow-y: visible; }\n .card-header h2 { font-size: 1.42rem; word-break: break-word; }\n .card p { font-size: 14.2px; }\n .styled-list li { font-size: 14.2px; padding: 15px; }\n .doctrine-table {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n border-spacing: 0 8px;\n margin: 20px 0;\n }\n .doctrine-table thead,\n .doctrine-table tbody,\n .doctrine-table tr,\n .doctrine-table th,\n .doctrine-table td { white-space: nowrap; }\n .doctrine-table tbody td { padding: 10px 12px; }\n .doctrine-table thead th { padding: 12px 12px; }\n .supply-subtabs {\n flex-wrap: nowrap;\n overflow-x: auto;\n justify-content: flex-start;\n padding-bottom: 10px;\n -webkit-overflow-scrolling: touch;\n }\n .supply-subtab { font-size: 12px; padding: 6px 12px; white-space: nowrap; flex-shrink: 0; }\n .checklist-items { column-count: 1; }\n .faq-question { font-size: 15px; padding: 15px 20px; }\n .faq-answer { padding: 0 20px; }\n .faq-item.open .faq-answer { padding: 15px 20px; }\n .cheats-toggle { font-size: 15px; padding: 15px 20px; }\n .cheats-content { padding: 0 20px; }\n .cheats-block.open .cheats-content { padding: 15px 20px; }\n .cheat-item { font-size: 12px; padding: 12px; }\n .copy-btn { padding: 4px 12px; font-size: 12px; }\n .card-img { max-width: 100%; height: auto; }\n .card svg { max-width: 100%; height: auto; }\n .author-card { padding: 25px; }\n .hq-row { gap: 8px; }\n .hq-slot { font-size: 12px; padding: 8px 12px; min-width: 80px; }\n .hq-slot.main-slot { min-width: 130px; }\n .hq-tab { font-size: 13px; padding: 8px 12px; }\n .tier-label { width: 40px; font-size: 1.4rem; }\n .tier-items { padding: 8px 10px; }\n .tier-tag { font-size: 13px; padding: 3px 10px; }\n .stats-grid { gap: 20px; }\n .stats-column { flex: 1 1 100%; }\n .save-grid {\n flex-direction: column;\n }\n .save-file-info,\n .save-virustotal {\n flex: 1 1 100%;\n min-width: 100%;\n }\n .save-virustotal img {\n max-width: 100%;\n height: auto;\n }\n}\n\n.template-modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.85);\n backdrop-filter: blur(8px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n cursor: pointer;\n}\n\n.template-modal-content {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n overflow: auto;\n background: #1a1915;\n border: 1px solid rgba(226, 182, 96, 0.4);\n border-radius: 12px;\n padding: 16px;\n box-shadow: 0 25px 60px rgba(0, 0, 0, 0.9);\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.template-modal-content img {\n max-width: 100%;\n height: auto;\n display: block;\n border-radius: 4px;\n}\n\n.template-modal-close {\n align-self: flex-end;\n font-size: 32px;\n color: #e2b660;\n cursor: pointer;\n line-height: 1;\n margin-bottom: 8px;\n transition: color 0.2s;\n}\n\n.template-modal-close:hover {\n color: #f5d98b;\n}\n\n@keyframes fadeInUp {\n 0% { opacity: 0; transform: translateY(20px); }\n 100% { opacity: 1; transform: translateY(0); }\n}\n@keyframes fadeOut {\n 0% { opacity: 1; transform: translateY(0); }\n 100% { opacity: 0; transform: translateY(-10px); }\n}\n.template-fade-in {\n animation: fadeInUp 0.4s ease forwards;\n}\n.template-fade-out {\n animation: fadeOut 0.25s ease forwards;\n}"],"js":["(function () {\n 'use strict';\n\n if (!document.getElementById('guide-styles')) {\n var style = document.createElement('style');\n style.id = 'guide-styles';\n style.textContent =\n '.template-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.85);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;cursor:pointer}' +\n '.template-modal-content{position:relative;max-width:90vw;max-height:90vh;overflow:auto;background:#1a1915;border:1px solid rgba(226,182,96,0.4);border-radius:12px;padding:16px;box-shadow:0 25px 60px rgba(0,0,0,0.9);display:flex;flex-direction:column;align-items:center}' +\n '.template-modal-content img{max-width:100%;height:auto;display:block;border-radius:4px}' +\n '.template-modal-close{align-self:flex-end;font-size:32px;color:#e2b660;cursor:pointer;line-height:1;margin-bottom:8px;transition:color 0.2s}' +\n '.template-modal-close:hover{color:#f5d98b}' +\n '@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}' +\n '@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-10px)}}' +\n '.template-fade-in{animation:fadeInUp 0.4s ease forwards}' +\n '.template-fade-out{animation:fadeOut 0.25s ease forwards}' +\n '.custom-tooltip{position:fixed;background:#1a1a14;color:#f0ead8;padding:8px 14px;border-radius:8px;font-size:13px;white-space:normal;max-width:280px;width:max-content;border:1px solid rgba(226,182,96,0.5);box-shadow:0 8px 24px rgba(0,0,0,0.8);z-index:9999;pointer-events:none;line-height:1.4;opacity:0;transition:opacity 0.15s ease}' +\n '.custom-tooltip.show{opacity:1}';\n document.head.appendChild(style);\n }\n\n function initParticles() {\n var canvas = document.getElementById('particles-canvas');\n if (!canvas || canvas.dataset.initialized === 'true') return;\n canvas.dataset.initialized = 'true';\n var ctx = canvas.getContext('2d');\n var particles = [];\n var maxParticles = 28;\n var mouseX = window.innerWidth / 2;\n var mouseY = window.innerHeight / 2;\n\n function resizeCanvas() {\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n initParticleArray();\n }\n\n var goldColors = [\n 'rgba(226,182,96,0.30)',\n 'rgba(196,152,64,0.35)',\n 'rgba(212,168,84,0.25)',\n 'rgba(180,140,50,0.28)'\n ];\n\n function drawEagle(x, y, size, color, angle) {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 0.7;\n ctx.lineCap = 'round';\n var s = size * 0.25;\n ctx.beginPath();\n ctx.arc(0, -s, s * 0.8, 0.2, Math.PI - 0.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(s * 0.5, -s * 1.2);\n ctx.lineTo(0, -s * 0.6);\n ctx.lineTo(-s * 0.5, -s * 1.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(0, -s * 0.6);\n ctx.quadraticCurveTo(0, s * 0.2, 0, s * 1.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(-s * 0.8, s * 0.2);\n ctx.quadraticCurveTo(-s * 1.5, 0, -s * 1.2, s * 0.8);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(s * 0.8, s * 0.2);\n ctx.quadraticCurveTo(s * 1.5, 0, s * 1.2, s * 0.8);\n ctx.stroke();\n ctx.restore();\n }\n\n function Particle() { this.init(); }\n\n Particle.prototype.init = function () {\n this.x = Math.random() * canvas.width;\n this.y = Math.random() * canvas.height;\n this.size = Math.random() * 24 + 16;\n this.baseSpeedX = (Math.random() - 0.5) * 0.12;\n this.baseSpeedY = (Math.random() - 0.5) * 0.12;\n this.rotationSpeed = (Math.random() - 0.5) * 0.004;\n this.angle = Math.random() * Math.PI * 2;\n this.opacity = Math.random() * 0.7 + 0.3;\n this.pulseSpeed = Math.random() * 0.005 + 0.002;\n this.pulseOffset = Math.random() * Math.PI * 2;\n this.color = goldColors[Math.floor(Math.random() * goldColors.length)];\n this.time = 0;\n };\n\n Particle.prototype.update = function () {\n var dx = mouseX - canvas.width / 2;\n var dy = mouseY - canvas.height / 2;\n this.speedX = this.baseSpeedX + dx * 0.00015;\n this.speedY = this.baseSpeedY + dy * 0.00015;\n this.x += this.speedX;\n this.y += this.speedY;\n this.angle += this.rotationSpeed;\n this.time += this.pulseSpeed;\n if (this.x < -this.size * 2) this.x = canvas.width + this.size;\n if (this.x > canvas.width + this.size * 2) this.x = -this.size;\n if (this.y < -this.size * 2) this.y = canvas.height + this.size;\n if (this.y > canvas.height + this.size * 2) this.y = -this.size;\n };\n\n Particle.prototype.draw = function () {\n var pulse = 0.5 + 0.5 * Math.sin(this.time + this.pulseOffset);\n var alpha = this.opacity * (0.6 + 0.4 * pulse);\n ctx.globalAlpha = alpha;\n drawEagle(this.x, this.y, this.size, this.color, this.angle);\n ctx.globalAlpha = 1;\n };\n\n function initParticleArray() {\n particles = [];\n for (var i = 0; i < maxParticles; i++) particles.push(new Particle());\n }\n\n function animate() {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n for (var i = 0; i < particles.length; i++) {\n particles[i].update();\n particles[i].draw();\n }\n for (var i = 0; i < particles.length; i++) {\n for (var j = i + 1; j < particles.length; j++) {\n var dx = particles[i].x - particles[j].x;\n var dy = particles[i].y - particles[j].y;\n var dist = Math.sqrt(dx * dx + dy * dy);\n if (dist < 140) {\n var alpha = (1 - dist / 140) * 0.08;\n ctx.beginPath();\n ctx.moveTo(particles[i].x, particles[i].y);\n ctx.lineTo(particles[j].x, particles[j].y);\n ctx.strokeStyle = 'rgba(196,152,64,' + alpha + ')';\n ctx.lineWidth = 0.3;\n ctx.stroke();\n }\n }\n }\n requestAnimationFrame(animate);\n }\n\n window.addEventListener('resize', function () {\n resizeCanvas();\n initParticleArray();\n });\n window.addEventListener('mousemove', function (e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n });\n resizeCanvas();\n initParticleArray();\n animate();\n }\n\n var tooltip = null;\n function createTooltip() {\n if (tooltip) return;\n tooltip = document.createElement('div');\n tooltip.className = 'custom-tooltip';\n document.body.appendChild(tooltip);\n }\n function showTooltip(text, anchor) {\n createTooltip();\n tooltip.textContent = text;\n tooltip.classList.add('show');\n var rect = anchor.getBoundingClientRect();\n var vw = window.innerWidth;\n var vh = window.innerHeight;\n var left = rect.left + rect.width / 2;\n var top = rect.top - 10;\n var tw = tooltip.offsetWidth;\n var th = tooltip.offsetHeight;\n if (left + tw / 2 > vw - 10) left = vw - tw - 10;\n else if (left - tw / 2 < 10) left = 10;\n else left -= tw / 2;\n if (top - th < 10) top = rect.bottom + 10;\n else top -= th;\n tooltip.style.left = Math.max(10, left) + 'px';\n tooltip.style.top = Math.max(10, top) + 'px';\n }\n function hideTooltip() {\n if (tooltip) tooltip.classList.remove('show');\n }\n function initTooltips() {\n document.addEventListener('mouseover', function(e) {\n var target = e.target.closest('.stat-name, .hotspot');\n if (!target) return;\n var text = target.getAttribute('data-tooltip');\n if (text) showTooltip(text, target);\n });\n document.addEventListener('mouseout', function(e) {\n var target = e.target.closest('.stat-name, .hotspot');\n if (target && target.getAttribute('data-tooltip')) hideTooltip();\n });\n document.addEventListener('touchstart', function(e) {\n var target = e.target.closest('.stat-name, .hotspot');\n if (!target) { hideTooltip(); return; }\n var text = target.getAttribute('data-tooltip');\n if (text) {\n e.preventDefault();\n if (tooltip && tooltip.classList.contains('show') && tooltip.textContent === text) {\n hideTooltip();\n } else {\n showTooltip(text, target);\n }\n }\n }, { passive: false });\n }\n\n function switchMainTab(targetTabId) {\n var panels = document.querySelectorAll('.tab-panel');\n var tabs = document.querySelectorAll('.guide-tab');\n for (var i = 0; i < panels.length; i++) panels[i].classList.remove('active');\n for (var j = 0; j < tabs.length; j++) tabs[j].classList.remove('active');\n var panel = document.getElementById(targetTabId);\n var tab = document.querySelector('.guide-tab[data-tab="' + targetTabId + '"]');\n if (panel) panel.classList.add('active');\n if (tab) tab.classList.add('active');\n }\n\n function updateHash(targetTabId) {\n if (history.replaceState) history.replaceState(null, null, '#' + targetTabId);\n else location.hash = targetTabId;\n }\n\n function activateTabFromHash() {\n var hash = location.hash.replace('#', '');\n if (hash) {\n var tab = document.querySelector('.guide-tab[data-tab="' + hash + '"]');\n if (tab) {\n switchMainTab(hash);\n return;\n }\n }\n var firstTab = document.querySelector('.guide-tab.active') || document.querySelector('.guide-tab');\n if (firstTab) {\n var target = firstTab.getAttribute('data-tab');\n if (target) switchMainTab(target);\n }\n }\n\n function switchSubTab(subtab, card) {\n var subtabs = card.querySelectorAll('.supply-subtab');\n var containers = card.querySelectorAll('.supply-table-container');\n for (var i = 0; i < subtabs.length; i++) subtabs[i].classList.remove('active');\n for (var j = 0; j < containers.length; j++) containers[j].classList.remove('active');\n subtab.classList.add('active');\n var targetId = subtab.getAttribute('data-subtab');\n if (targetId) {\n var container = card.querySelector('#subtab-' + targetId);\n if (container) container.classList.add('active');\n }\n }\n\n function switchHqTab(hqId, card) {\n var panels = card.querySelectorAll('.hq-panel');\n var tabs = card.querySelectorAll('.hq-tab');\n for (var i = 0; i < panels.length; i++) panels[i].classList.remove('active');\n for (var j = 0; j < tabs.length; j++) tabs[j].classList.remove('active');\n var panel = card.querySelector('#hq-' + hqId);\n var tab = card.querySelector('.hq-tab[data-hq="' + hqId + '"]');\n if (panel) panel.classList.add('active');\n if (tab) tab.classList.add('active');\n }\n\n function openImageModal(src) {\n var existing = document.querySelector('.template-modal-overlay');\n if (existing) existing.remove();\n var overlay = document.createElement('div');\n overlay.className = 'template-modal-overlay';\n overlay.innerHTML = '
× ';\n document.body.appendChild(overlay);\n }\n\n function addRippleEffect() {\n document.addEventListener('click', function (e) {\n var tab = e.target.closest('.guide-tab');\n if (!tab) return;\n var ripple = document.createElement('span');\n ripple.className = 'ripple';\n var rect = tab.getBoundingClientRect();\n var size = Math.max(rect.width, rect.height);\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (e.clientX - rect.left - size / 2) + 'px';\n ripple.style.top = (e.clientY - rect.top - size / 2) + 'px';\n tab.appendChild(ripple);\n ripple.addEventListener('animationend', function () { ripple.remove(); });\n });\n }\n\n function animateValue(element, start, end, duration, prefix, suffix) {\n var startTime = performance.now();\n function update(currentTime) {\n var elapsed = currentTime - startTime;\n var progress = Math.min(elapsed / duration, 1);\n var current = start + (end - start) * progress;\n if (end < 1000 && Number.isInteger(end)) element.textContent = prefix + Math.floor(current) + suffix;\n else element.textContent = prefix + current.toFixed(1).replace(/\\.0$/, '') + suffix;\n if (progress < 1) requestAnimationFrame(update);\n else element.textContent = prefix + end + suffix;\n }\n requestAnimationFrame(update);\n }\n\n function parseHeroStat(el) {\n var text = el.textContent.trim();\n var matchNum = text.match(/^([^0-9]*?)(\\d+\\.?\\d*)(.*)/);\n if (matchNum) {\n return {\n prefix: matchNum[1],\n number: parseFloat(matchNum[2]),\n suffix: matchNum[3]\n };\n }\n return { prefix: '', number: 0, suffix: '' };\n }\n\n function initHeroCountUp() {\n var stats = document.querySelectorAll('.hero-stat-num');\n for (var i = 0; i < stats.length; i++) {\n var parsed = parseHeroStat(stats[i]);\n if (parsed.number > 0) {\n stats[i].style.visibility = 'visible';\n animateValue(stats[i], 0, parsed.number, 750, parsed.prefix, parsed.suffix);\n }\n }\n }\n\n function typeWriter(element, text, speed, delay) {\n var i = 0;\n element.textContent = '';\n function type() {\n if (i < text.length) {\n element.textContent += text.charAt(i);\n i++;\n setTimeout(type, speed);\n }\n }\n setTimeout(type, delay || 0);\n }\n\n function initTypewriter() {\n var heroSub = document.querySelector('.hero-sub');\n if (heroSub) typeWriter(heroSub, heroSub.textContent.trim(), 7, 200);\n }\n\n document.addEventListener('click', function (e) {\n var guideTab = e.target.closest('.guide-tab');\n if (guideTab) {\n var target = guideTab.getAttribute('data-tab');\n if (target) {\n switchMainTab(target);\n updateHash(target);\n }\n return;\n }\n\n var faqTrigger = e.target.closest('.faq-question');\n if (faqTrigger) {\n var faqItem = faqTrigger.closest('.faq-item');\n if (faqItem) faqItem.classList.toggle('open');\n return;\n }\n\n var cheatsTrigger = e.target.closest('.cheats-toggle');\n if (cheatsTrigger) {\n var cheatsBlock = cheatsTrigger.closest('.cheats-block');\n if (cheatsBlock) cheatsBlock.classList.toggle('open');\n return;\n }\n\n var supplySubtab = e.target.closest('.supply-subtab');\n if (supplySubtab) {\n var card = supplySubtab.closest('.card');\n if (card) switchSubTab(supplySubtab, card);\n return;\n }\n\n var hqTab = e.target.closest('.hq-tab');\n if (hqTab) {\n var card = hqTab.closest('.card');\n var hqId = hqTab.getAttribute('data-hq');\n if (card && hqId) switchHqTab(hqId, card);\n return;\n }\n\n var modalImg = e.target.closest('.modal-img');\n if (modalImg) {\n e.preventDefault();\n e.stopPropagation();\n openImageModal(modalImg.src);\n return;\n }\n\n var modalClose = e.target.closest('.template-modal-close');\n var modalOverlay = e.target.closest('.template-modal-overlay');\n if (modalClose || (modalOverlay && e.target === modalOverlay)) {\n var overlay = document.querySelector('.template-modal-overlay');\n if (overlay) overlay.remove();\n return;\n }\n\n var copyBtn = e.target.closest('.copy-btn');\n if (copyBtn) {\n var command = copyBtn.getAttribute('data-command');\n if (command) {\n var originalHTML = copyBtn.innerHTML;\n var onCopied = function () {\n copyBtn.classList.add('copied');\n copyBtn.innerHTML = '✓';\n setTimeout(function () {\n copyBtn.classList.remove('copied');\n copyBtn.innerHTML = originalHTML;\n }, 1500);\n };\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(command).then(onCopied).catch(function () {\n fallbackCopy(command, onCopied);\n });\n } else {\n fallbackCopy(command, onCopied);\n }\n function fallbackCopy(text, callback) {\n var ta = document.createElement('textarea');\n ta.value = text;\n ta.style.position = 'fixed';\n ta.style.left = '-9999px';\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n document.body.removeChild(ta);\n callback();\n }\n }\n return;\n }\n });\n\n document.addEventListener('keydown', function (e) {\n if (e.key === 'Escape') {\n var overlay = document.querySelector('.template-modal-overlay');\n if (overlay) overlay.remove();\n }\n });\n\n function init() {\n initParticles();\n addRippleEffect();\n initHeroCountUp();\n initTypewriter();\n activateTabFromHash();\n initTooltips();\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', init);\n } else {\n init();\n }\n})();"]}
{"html":[" \n \n \n Общее \n Для новичка \n Разбор конструктора \n Разбор статов \n Ширина фронта \n Батальоны \n Роты поддержки \n Полковая поддержка \n Модернизация и опыт \n Гарнизоны и сопротивление \n ★ Готовые мета шаблоны \n ★ Сейв для тестов \n \n\n \n \n Гайд • Дивизии • Все DLC • Одиночка \n Полный гайд по дивизиям \n Как устроены дивизии, от чего зависят их статы и как собрать шаблон, который не стыдно показать врагу. \n \n +88.7% Сохранение личного состава \n +83.5% Софт-атаки \n +98.9% Прорыва \n \n \n \n \n Что такое дивизия? \n Дивизия — это боевой организм, где пехота, танки и артиллерия действуют как единый кулак. Без неё Вы не сможете ни наступать, ни удерживать позиции — только разрозненный хаос. Дивизия превращает ресурсы в победу: она наносит урон, держит фронт и усиливается поддержкой. Без дивизий у Вас нет армии — лишь обречённые отряды. В игре возможность управлять батальонами, ротами и полками только в составе дивизии. Дивизия это единственная управляемая единица наземных войск в игре. \n \n \n Из чего состоит дивизия? \n Иерархия проста: батальоны — основа, роты — их строительные блоки, а полки поддержки — усилители. Поддержка (арта, разведка, сапёры, медики, логистика) не решает исход боя, но кратно повышает эффективность в конкретных условиях — без них дивизия теряет много полезных баффов. \n Пример: как собрать конструктор: основа (батальоны) — это стены, роты и полки — крыша и окна, а без фундамента (соотношения характеристик) дом рухнет при первом ударе. \n \n \n Как влияют исследования? \n Исследования открывают доступ к батальонам, ротам и полкам поддержки: без нужной технологии (например, «Тяжёлые танки» или «Ракетная артиллерия») Вы не сможете вставить их в шаблон. Они также улучшают ключевые параметры и дают модификации, которые меняют эффективность дивизии. Чем глубже Вы исследуете направление, тем больше вариантов поддержки становится доступно, включая критически важные, как средняя улучшенная гаубица. Чтобы узнать, что дает то или иное исследование, достаточно навестить в ветке исследование на нужное, там все будет показано. Правда это есть не у всех исследований. Например "Улучшенное пехотное снаряжение 1" дает только баффы, но не доступ к чему то новому в конструкторе. \n Пример: чтобы поставить полковую тяжелую роту, нужно изучить технологию «Оружие огневой поддержки 1». \n \n \n \n Частые вопросы \n \n Что такое "софт-атака" и "хард-атака"? + Софт-атакой называют противопехотную атаку, по мягким целям, то есть по пехоте. Хард-атакой называют противотанковую атаку, то есть, по броне, например танкам. \n Что лучше, САУ или танки? + Для минора танки, для мажора САУ. Дело в том, что минор редко может себе позволить сильные пехотные шаблоны, поэтому нужно брать поддктрину артиллерии и поддержки "Полевые инженерный работы". А мажор благодаря мощной промышленности (см. гайд по промышленности ) может себе позволить крутую пехоту, поэтому есть смысл взять поддоктрину артиллерии и поддержки "Самоходна поддержка", которая как раз баффает САУ. Но все равно - большинство зависит от ситуации. Если у врага одна пехота, при этом у вас есть промышленность, то можно за минора взять и САУ, без поддоктрины. \n Пехота держит, танки прорывают? + В целом да, но если вы не можете за минора себе позволить броню, то можно сделать сильные пехотные наступательные шаблоны, и ими наступать. \n Какие лучшие поддоктрины? + Все зависит от ситуации. Подробный разбор доктрин и поддоктрин вы можете посмотреть в нашем гайде про доктрины . Там вы сможете найти раскид под свою ситуацию, посмотреть тир-лист и понять как работют доктрины в этой игре. \n Влияет ли расположение батальонов в колонках на боевые статы? + Нет, не влияет. Только желательно старатся делать полки из 3 батальонов - только так можно будет добавить полк поддержки. Если батальонов менее 3, то игра не даст поставит полк поддержки. \n Что важнее, софт-атака или прорыв? + Все важно по своему. Без софт-атаке вы не сможете наносить достаточный урон по пехоте противника, а без прорыва не сможете блокировать урон и быстро потеряете организацию. Лучше всего миксовать САУ и танки - так и прорыв будет хорошим, и софт-атака. \n Что важнее, хард-атака или бронебойность? + Бронебойность. Бронебойность дает пробитие по вражеской броне, а хард-атака сам урон. Если вам не хватит пробития, то враг будет просто блокировать часть урона. \n Когда ставить ПТО и ПВО в дивизии? + Против бота почти никогда, за исключением. ПТО необходимо ставить против танковой державы, например против Германии. ПВО нужно ставить тогда, когда у врага подавляющее превосходство в воздухе. Чаще всего, это все требуется либо в мультипреере, либо при тотальной обороне. \n Почему артиллерия в дивизии сильно режет организацию? + Артиллерийские батальоны имеют низкую организацию по сравнению с пехотой. Так как организация дивизии — это среднее арифметическое организаций всех батальонов, добавление арты снижает общий показатель. \n Чем отличается прорыв от защиты? + Прорыв, это защита в атаке. Защита - это защита в обороне. Чем больше защита, тем больше вы сможете отразить атак противника, следовательно, меньше потерять организации при наступлении / обороне. \n \n \n \n Сравнение шаблонов \n \n Стат Без гайда С гайдом \n \n Софт атака 54 74 \n Хард атака 8 12 \n Защита 162 219 \n Прорыв 26 43 \n Броня 0 19 \n Воздушная атака 0 20 \n Ширина фронта 12 18 \n Организация 47 48 \n \n \n \n \n \n\n \n \n \n Что знать новичку \n Для эффективного создания дивизий необходимо освоить пять ключевых концепций: ширину фронта , разницу между прорывом и софт-атакой , роль организации , влияние исследований и расход припасов . Без понимания этих основ даже дорогие шаблоны будут проигрывать. Начните с теории, а затем переходите к практике в конструкторе. \n \n Как работает ШФ + Ширина фронта — это лимит, сколько дивизий могут драться на одной клетке. Подробнее во вкладке «Ширина фронта». \n В чем отличие прорыва от софт-атаки + Софт-атака — это наносимый урон пехоте, а прорыв — способность блокировать вражеские атаки при наступлении. \n Как организация влияет на бой + Организация — это «прочность» дивизии. При нуле дивизия вынуждена отступить. \n Как исследования влияют на статы + Улучшенное оружие и техника повышают базовые характеристики батальонов и открывают новые виды поддержки. \n Как расход припасов влияет на снабжение + Чем выше расход, тем труднее снабжать клетку с дивизией, что ведёт к штрафам (подробнее в гайде по снабжению ). \n \n \n \n В какой последовательности учить \n \n Сначала поймите что такое дивизия и из чего она состоит. \n Потом узнайте, что такое организация и остальные ключевые статы (софт атака, прорыв, защита, бронебойность). \n После этого узнайте, чем отличается софт/хард атака от прорыва. \n И только потом переходите к продвинутым настройкам: специфические полки, баланс под конкретного противника, оптимизация под местность. \n \n \n \n Главные правила для новичка \n \n 1) Пехота держит фронт, а танки его прорывают. Не делайте пехоту дорогой, делайте упор на танки. \n 2) Организация — важнее любого другого стата. Танкам 30–40, пехоте 45–50. \n 3) Чем меньше расход припасов, тем лучше. САУ и арта требуют много снабжения (см. гайд по снабжению ). \n 4) Роты поддержки — золото. Сапёры, арта, разведка — must‑have. \n 5) Не забывайте про баффы на местность. Разведка, огнемётные танки, сапёры улучшают положение. \n 6) Держите исследования приоритетных веток в фокусе. \n \n \n \n Частые ошибки новичков \n \n 1) Добавлять всего и много. Организация падает, дивизия дорогая. Делайте 1–3 специализированных шаблона. \n 2) Использовать ненужные составляющие в одиночной игре. ПТО и ПВО часто не нужны против ИИ. \n 3) Делать пехотные дивизии огромными. 14/4 или 40 ширины для оборонительной дивизии — дорого и неэффективно. Лучше компактные. Пехота в HoI4 — это оборона, а не наступление (см. гайд по обороне ). \n 4) Использование стартовых шаблонов за миноров. Они часто невыгодны, меняйте под свою промышленность. \n 5) Не обращать внимание на ШФ и организацию. Это два самых важных стата. \n 6) Экономить на ротах поддержки или ставить все. Для обороны хватит 2–4 роты. \n \n \n \n Отличие дивизий на примере \n На этом видео видно, насколько заметное изменение эффективности из-за шаблона. Потери с мета-шаблоном меньше на 88.7%. \n \n \n \n \n \n \n\n \n \n \n Интерактивный конструктор \n Наведите на элементы на скриншоте, чтобы увидеть пояснение. Подробнее об элементах управления в гайде по интерфейсу игры . \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n Список статов \n Наведите на название стата для подробного объяснения. \n \n \n Базовые параметры \n \n Максимальная скорость (км/ч) \n Прочность \n Организация \n Скорость восстановления \n Разведка \n Подавление \n Вес \n Расход припасов \n Средняя надежность \n Бонус к надежности \n Возмещение потерь \n Потеря опыта \n \n \n \n Боевые параметры \n \n Противопехотная атака \n Противотанковая атака \n Воздушная атака \n Защита \n Прорыв \n Броня \n Бронебойность \n Инициатива \n Укрепленность \n Соотношение захвата техники \n Ширина фронта \n \n \n \n Стоимость \n \n Людские ресурсы \n Время на обучение \n Запас горючего \n Потребление горючего \n Прочее оснащение \n \n \n \n \n \n Тир-лист статов \n Это субьективное мнение автора. Статы оценивались по важности в дивизии. \n \n \n S \n \n Макс. скорость \n Организация \n Расход припасов \n Софт-атака \n Прорыв \n Защита \n Соотн. захвата \n Ширина фронта \n \n \n \n A \n \n Прочность \n Хард-атака \n Воздушная атака \n Броня \n Бронебойность \n Инициатива \n Людские ресурсы \n \n \n \n B \n \n Скорость восстановления \n Разведка \n Средняя надежность \n Бонус к надежности \n Защита возмещения \n Потеря опыта \n Укрепленность \n Потребление горючего \n \n \n \n F \n \n Подавление \n Вес \n Время на обучение \n Запас горючего \n \n \n \n \n \n \n\n \n \n Что такое ширина фронта? Ширина фронта — это количество пригодной для боя местности во время сражения. Если ваша дивизия превышает лимит клетки, часть её не влезет, и атака/оборона ослабнет. В простонародье называют ШФ. Лимит зависит от местности и определяет, сколько дивизий могут эффективно драться одновременно. \n Как ШФ влияет? При превышении лимита дивизии получают штраф к софт/хард атаке, прорыву и защите. Чем больше перебор, тем слабее ваш удар. Кроме того, дивизии, не влезшие в бой, не получают опыт. Пример: атака на равнине (лимит 80) тремя дивизиями по 30 ширины даёт перебор 10 — штраф около 19% к эффективности. \n Какие ШФ лучшие? Для оборонительной пехоты: 10, 12, 14, 16, 18. Для наступательной пехоты: 14, 15, 20, 36. Для бронированных дивизий: 20, 36. Выбор зависит от местности и задач. \n Лучшая местность для наступления Равнины и пустыня идеальны. Леса, джунгли, холмы и города дают средние штрафы. Горы и болото — адские дебаффы, избегайте их. Используйте соответствующие типы дивизий: горные стрелки в горах, рейнджеров в лесах, морскую пехоту при высадке. Для максимальной эффективности наступления изучите гайд по мета-наступлению . \n \n Таблица местности \n \n Вид Название Штраф к атаке Снабжение Пояснение Рекомендация \n \n Равнины нет без штрафов Идеальны для наступления Наступайте танками \n Лес -15% -8% Замедляет продвижение Наступайте пехотой \n Холмы -25% -10% Преимущество обороняющимся Танкам неудобно, но лучше чем в лесу \n Горы -50% -12% Почти неприступны без спецвойск Только горнострелковые войска \n Город -30% +20% Отличная оборона Берите в котёл, затем наступайте \n Джунгли -30% -16% Высокий шанс болезней Избегайте, либо рейнджеры \n Болото -40% -16% Ужасная после гор Обходите, котёл, потом давите \n Пустыня нет -14% Износ техники Почти идеально для танков, но снабжение страдает \n \n \n \n \n \n\n \n \n Что такое батальон? Батальон — это основа, скелет любой дивизии. Именно батальоны определяют её роль: пехота держит оборону, танки прорывают, артиллерия наносит урон. В каждом батальоне от 500 до 1200 солдат с оружием. Меняя батальоны, вы полностью меняете назначение дивизии. \n \n Какие бывают батальоны? \n Пехотные (обычная пехота, десантники, рейнджеры) — скорость 4 км/ч, повышают организацию и защиту. \n Танковые батальоны боевой поддержки (ПТ-САУ, ЗСУ, САУ) — бронированная огневая мощь, требуют шаблон техники. \n Батальоны боевой поддержки (буксируемая артиллерия, зенитки) — усиливают пехоту, но снижают организацию. \n Мобильные батальоны (артиллерия на грузовиках) — скорость 12 км/ч, подходят для быстрых дивизий. \n Подвижные батальоны (мотопехота, механизированная пехоьа) — быстрая пехота для танковых дивизий. \n Танковые батальоны (лёгкие, средние, тяжёлые) — костяк бронетанковых войск, повышают прорыв и броню. Тяжелые не рекомендую. \n \n Почему батальон самый важный? Без батальонов нет смысла в ротах и полках. Именно пехота с оружием в руках и танки, прорывающие фронт, решают исход боя. Батальоны также единственный элемент, влияющий на ширину фронта дивизии. \n Лучшие батальоны Пехотный батальон (основа пехоты), мотопехота (для танковых дивизий), кавалерия (быстрое развёртывание и гарнизоны), артиллерия (софт-атака), средние танки и САУ (универсальный урон), ПТ-САУ/ЗСУ (для мультиплеера или специализированных задач). О лучших танковых шаблонах читайте в гайде по мета шаблонам танков . \n \n Таблица батальонов \n \n Пехотные \n Танковая поддержка \n Мобильная поддержка \n Поддержка \n Подвижные \n Танковые \n \n \n \n Иконка Название Описание \n \n Пехота Костяк пехотной дивизии. \n Горно-стрелковые войска Используем в горах. \n Морская пехота Используем при морской высадке. \n Рейнджеры Используем в лесах и джунглях. \n ВДВ Пускаем с воздуха. \n \n \n \n \n \n Иконка Название Описание \n \n ЗСУ Для увеличения брони или против авиации. \n САУ В наступательные бронированные дивизии. \n ПТ-САУ Против танковой державы в мультиплеере. \n \n \n \n \n \n Иконка Название Описание \n \n Моторизованная ПВО Если у врага тотальное превосходство в воздухе. \n Моторизованная ПТО Если у врага много танков. \n Моторизованная артиллерия Если позволяет организация и промышленность. \n Буксируемая ракетная артиллерия Ставим моторизованным дивизиям, если позволяет организация и промышленность. \n Моторизованная ракетная артиллерия Усиленный вариант, ставим моторизованным дивизиям при хорошей промышленности. \n \n \n \n \n \n Иконка Название Описание \n \n ПВО В пехотные дивизии при превосходстве врага в воздухе. \n ПТО В пехотные дивизии, если у врага много танков. \n Артиллерия Пехотным дивизиям при наличии промышленности и организации. \n РСЗО Аналог артиллерии для поздней стадии игры. Ставьте, если позволяет организация. \n \n \n \n \n \n Иконка Название Описание \n \n Батальон амфибий В дивизии с морским десантом. \n Бронемашина Для специфичных шаблонов. \n Кавалерия Для гарнизонов или абуза. \n Механизированная пехота В наступательные дивизии в поздний период. \n Моторизованная пехота В наступательные дивизии в ранний-средний период. \n \n \n \n \n \n Иконка Название Описание \n \n Батальон плавающих танков Для морских десантов и форсирования рек. \n Легкий танк Самые ранние периоды войны. \n Средний танк Лучший танк — во все наступательные дивизии. \n Тяжелый танк Бесполезная вещь, но по приколу можно. \n Современный танк Бесполезная вещь, но по приколу можно поставить в танковые дивизии. \n \n \n \n \n \n \n\n \n \n Что такое рота поддержки? Специальное подразделение, которое помогает дивизии с тыла, не участвуя в бою напрямую. Не занимает боевую ширину, но даёт мощные бонусы: сапёры усиливают оборону, разведка находит слабые места, артиллерия поддержки добавляет урон. Это самый эффективный способ улучшить дивизию за малую цену. \n Какие бывают роты? Прямая огневая поддержка (артиллерия, РСЗО, ПТО, ПВО, огнемётные танки), разведка (конная, моторизованная, бронированная) и тыловые службы (сапёры, ремонтники, госпитали, логистика). Каждая выполняет свою роль: огонь, информация или снабжение. \n Зачем нужны роты? Без рот поддержки дивизия теряет значительную часть эффективности. Танковые дивизии без огнемётных танков страдают от местности, пехота без сапёров хуже обороняется и штурмует крепости. Несколько правильно подобранных рот превращают средний шаблон в боеспособный. \n Лучшие роты Сапёрная рота (баффы местности, защита), вспомогательная артиллерия (софт-атака), бронированная разведка (прорыв, скорость), средняя огнемётная поддержка (атака на местности), ПВО/ПТО по ситуации. Эти роты дают наибольшую прибавку к боевой мощи. \n \n Таблица рот \n \n Иконка Название Бафф Стоимость Пояснение \n \n Поддержка ПВО Повышает воздушную атаку 20 ПВО Когда у врага превосходство в воздухе. \n Поддержка ПТО Повышает хард-атаку и бронебойность 24 ПТО Когда у врага много танков. \n Поддержка артиллерии Повышает софт-атаку 12 артиллерии Ставим во все дивизии. \n Поддержка РСЗО Повышает софт-атаку 12 ракет Для позднего этапа игры. \n Саперная рота Баффы на местность, защиту 30 допки, 10 винтовок Каждой дивизии. \n Бронированная разведрота Баффы на местность, прорыв 24 легких танка Лучшая разведка для наступательных дивизий. \n Средняя огнеметная рота Баффы на местность, атака 15 огнеметных танков Только средняя, к танковым дивизиям. \n Полевой госпиталь Уменьшает потери личного состава 20 грузовиков, 30 допки В наступательные пехотные дивизии. \n Рота обеспечения Понижает расход припасов 10 грузовиков, 20 допки Наступательным дивизиям с САУ. \n Сверхтяжелая артиллерия Повышает софт-атаку 3 сверхтяжелой артиллерии Для мега-мажоров, ставим пехоте. \n Самоходная сверхтяжелая артиллерия Повышает софт-атаку 3 самоходной сверхтяжелой артиллерии Бесполезно. \n Сухопутный крейсер Зависит от конструктора 1 сухопутный крейсер Бесполезно. \n Сверхтяжелый танк Зависит от конструктора 20 сверхтяжелых танков Бесполезно. \n Отряд конной разведки Баффы на местность, разведка 40 винтовок, 10 допки Ставим пехоте в начале партии. \n Инженерно-штурмовая рота Баффы на местность, прорыв пехоте 20 допки, 20 бронированных машин обеспечения Редко используется, по ситуации. \n Бронетанковая инженерная рота Баффы на местность, защита и прорыв 30 бронированных машин обеспечения, 15 допки Неплохо для мажоров. \n Медицинская эвакуация на вертолете Понижает потери, ускоряет восстановление 15 вертолетов, 15 грузовиков, 30 допки Бесполезно. \n Вертолетная бригада Скорость восстановления, расход припасов, восстановление 15 вертолетов, 15 допки Почти всегда бесполезно. \n Разведка с вертолетов Баффы на местность, софт-атака пехоте, защита всем 20 вертолетов, 20 винтовок, 10 допки Почти всегда бесполезно. \n Грузовые вертолеты Понижает расход припасов, баффы на местность 10 вертолетов, 10 винтовок, 20 допки Почти всегда бесполезно. \n Ремонтная рота Повышает захват техники, бонус к надежности 25 допки Часто бесполезно, но можно за минора против танковой державы. \n Бронетанковая ремонтная рота Повышает захват техники, бонус к надежности 20 бронированных машин обеспечения, 15 допки Бесполезно. \n Военная полиция Повышает защиту, скорость восстановления, подавление 40 винтовок, 10 допки Ситуативно, мажоры могут для гарнизонов. \n Моторизованная военная полиция Повышает защиту, скорость восстановления, подавление 20 пехотки, 20 мотоциклов, 5 допки Ситуативно. \n Моторизованная разведка Баффы на местность, защита 40 винтовок, 20 грузовиков, 10 допки Худшая из разведок. \n Легкобронированная разведрота Баффы на местность, прорыв 24 бронемашины Нет смысла. \n Рота связи Повышает инициативу 10 грузовиков, 20 допки Подходит, если делаете упор в инициативу. \n Бронетанковая рота связи Повышает инициативу, прорыв танкам 20 бронированных машин обеспечения, 15 допки Часто бесполезная. \n \n \n \n \n \n \n \n \n Что такое полковая поддержка? Непосредственная поддержка на поле боя: пулемёты, пехотные орудия, ПВО, ПТО. Дешевле рот поддержки, но и слабее. Чаще всего используется мажорами, так как требует свободной организации. Полки дают исключительно боевые баффы, в отличие от универсальных рот. \n Какие бывают полки? Обычная (прикрепляется к пехоте), моторизованная (к мотострелкам) и бронированная (ЗСУ, ПТ-САУ — к танкам). Тип определяет, какую скорость и бонусы получит дивизия: бронированная поддержка едет с танками, обычная идёт с пехотой. \n Зачем нужны полки? Полки усиливают батальоны напрямую, повышая защиту или атаку. Их главное отличие — они не дают баффов местности или логистики, только боевые статы. Идеальны, когда нужно дожать прорыв или укрепить оборону, но есть запас организации. \n Лучшие полки Полковая ракетная батарея (софт-атака), тяжелая рота (защита), пехотные орудия (софт-атака дёшево), ПВО/ПТО по ситуации. Бронированные ЗСУ и ПТ-САУ хороши в мультиплеере или против сильного врага. \n \n Таблица полков \n \n Иконка Название Что повышает Стоимость Рекомендация \n \n Пехотные орудия Софт-атака 4 арты Всем дивизиям. \n Поддержка реактивной артиллерии Софт-атака 4 ракеты Поздний этап, всем. \n Противовоздушная батарея Воздушная атака 12 зениток При сильной вражеской авиации. \n Противотанковая батарея Хард-атака, бронебойность 16 ПТО При сильных танковых войсках врага. \n Тяжелая рота Защита 30 винтовок, 5 допки Пехоте и танкам, если организация позволяет. \n Моторизованная тяжелая рота Защита 5 грузовиков, 5 допки, 30 винтовок Почти бесполезная. Иногда в танковые дивизии с высокой организацией. \n Легкая / Средняя / Тяжелая ЗСУ Воздушная атака (зависит от конструктора) Зависит от конструктора В мультиплеере против сильных мажоров. \n Легкая / Средняя / Тяжелая ПТ-САУ Хард-атака, бронебойность Зависит от конструктора В мультиплеере против сильных мажоров. \n \n \n \n \n \n\n \n \n Что за опыт? Опыт дивизии даёт огромные бонусы к боевым статам: ветераны (5 уровень) получают +75%. Прокачка лучше всего идёт в гражданской войне в Испании (см. гайд по гражданской войне в Испании ), где потери невелики, а бои идут постоянно. Отправляйте туда добровольцев и не давайте им простаивать. \n Как получать опыт? Дивизии должны участвовать в боях. Идеальное место — испанская гражданская война: бои идут годами, потери минимальны. В своей войне прокачка сложнее из-за высоких потерь и быстрых сражений, поэтому ветеранов растят заранее. \n Что за модернизация? Вы можете сменить состав прокачанной дивизии, сохранив опыт. Главное правило: количество людей в новом шаблоне не должно быть меньше, чем в старом. Иначе ветеранов разбавят новобранцы, и уровень упадёт. \n Как правильно модернизировать? Создайте мусорный шаблон с большим количеством людей, прокачайте его в Испании, затем замените батальоны на танковые/артиллерийские, сохранив численность. Так вы получите ветеранов-танкистов без траты топлива на прокачку танковых дивизий. \n \n Таблица уровней \n \n \n \n Иконка \n Уровень \n Название \n К боевым статам \n \n \n \n 1 Необстрелянные -25% \n 2 Обученные 0% \n 3 Регулярные +25% (последний уровень без боя) \n 4 Опытные +50% \n 5 Ветераны +75% \n \n \n \n \n \n\n \n \n Что такое гарнизоны? Гарнизоны автоматически занимают захваченные территории, подавляя сопротивление. Если оставить стандартный пехотный шаблон, потери в людях и снаряжении будут огромны. Всегда переключайте гарнизоны на самый дешёвый шаблон — 1 батальон кавалерии или лёгкого танка. \n Лучшие шаблоны для гарнизонов Пустой шаблон из 1 кавалерии (очень дёшево, доступен всем) или 1 лёгкого танка (дороже, но меньше потерь). Никогда не используйте полноценные дивизии — это пустая трата ресурсов. \n Что такое сопротивление? Местное население саботирует оккупацию: ломает сооружения, наносит урон гарнизонам, ухудшает снабжение. При 30%+ сопротивления потери становятся критическими, и регион требует постоянного ремонта. Сопротивление растёт, если закон слишком мягкий или не хватает гарнизонов. \n Как понизить сопротивление? Лучший способ — подходящий оккупационный закон. Также помогают фокусы, советники, события и операции агенства. Временно можно снизить сопротивление, но долгосрочно только закон и гарнизоны дают стабильный эффект. \n \n Таблица оккупационных законов \n \n Иконка Название Сопротивление Подчинение Гарнизоны \n \n Нет гарнизона +40% - -100% \n Гражданский надзор - - -25% \n Местная полиция -15% -0.025% -35% \n Тайная полиция -30% -0.040% -15% \n Военный губернатор -35% -0.045% - \n Военное положение -60% -0.055% - \n Принудительный труд -40% -0.080% +15% \n Жесткие нормы -40% -0.080% +15% \n Жесткое подавление -75% -0.110% +25% \n \n \n \n \n \n\n \n \n \n Готовые мета шаблоны \n Выберите категорию, чтобы увидеть проверенный шаблон и скриншот из игры. \n \n Бронированные \n Пехота \n Спецвойска \n Гарнизоны | Порты \n \n \n \n \n Смешанный | 36 ШФ \n Танковый | 36 ШФ \n САУ | 36 ШФ \n Смешанный | 20 ШФ \n Танковый | 20 ШФ \n САУ | 20 ШФ \n \n \n Смешанный наступательный бронированный шаблон (36 ШФ) \n Описание: Идеален для мажоров, сочетает прорыв и софт-атаку. \n Батальоны: 10 мотопехоты, 4 средних танка, 4 средних САУ. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | рота обеспечения | средний огнемётный танк. \n Полки поддержки: — \n \n \n \n Танковый наступательный бронированный шаблон (36 ШФ) \n Описание: Упор на традиционный танковый прорыв. \n Батальоны: 10 мотопехоты, 8 средних танков. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | РСЗО (если доступна) | средний огнемётный танк. \n Полки поддержки: — \n \n \n \n Наступательный бронированный шаблон на основе САУ (36 ШФ) \n Описание: Максимум софт-атаки, требует доктрины «Самоходная поддержка». \n Батальоны: 10 мотопехоты, 8 средних САУ. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | рота обеспечения | средний огнемётный танк. \n Полки поддержки: — \n \n \n \n Упрощённый смешанный бронированный шаблон (20 ШФ) \n Описание: Для слабых мажоров или сильных миноров. \n Батальоны: 5 мотопехоты, 2 средних танка, 3 средних САУ. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | средний огнемётный танк. \n Полки поддержки: — \n \n \n \n Упрощённый танковый бронированный шаблон (20 ШФ) \n Описание: Прорыв для экономичных армий. \n Батальоны: 5 мотопехоты, 5 средних танков. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | средний огнемётный танк. \n Полки поддержки: — \n \n \n \n Упрощённый бронированный шаблон на основе САУ (20 ШФ) \n Описание: Софт-атака в ущерб прорыву, требует осторожного применения. \n Батальоны: 5 мотопехоты, 5 средних САУ. \n Роты поддержки: артиллерия | сапёры | бронированная разведка | средний огнемётный танк | рота обеспечения. \n Полки поддержки: — \n \n \n \n\n \n \n Наступательная 15/2 (36 ШФ) \n Бронированная 36 ШФ \n Наступательная 7/2 (20 ШФ) \n Бронированная 18 ШФ \n Оборонительная 18 ШФ \n Оборонительная 16 ШФ \n Универсальная 15 ШФ \n Наступательная 14 ШФ (мажоры) \n Оборонительная 14 ШФ (миноры) \n \n \n Наступательная пехота без брони (15/2, 36 ШФ) \n Описание: Для миноров, которые не могут позволить танки. \n Батальоны: 15 пехотных, 2 артиллерийских. \n Роты поддержки: сапёры | артиллерия | РСЗО (если доступна) | полевой госпиталь | конная разведка. \n Полки поддержки: 2 РСЗО (если доступны) \n \n \n \n Бронированная наступательная пехота (36 ШФ) \n Описание: Броня и высокая софт-атака для слабых мажоров. \n Батальоны: 12 пехотных, 6 средних САУ. \n Роты поддержки: артиллерия | сапёры | РСЗО | полевой госпиталь. \n Полки поддержки: — \n \n \n \n Наступательная пехота (7/2, 20 ШФ) \n Описание: Доступный наступательный шаблон для миноров. \n Батальоны: 7 пехотных, 2 артиллерийских. \n Роты поддержки: сапёры | артиллерия | конная разведка. \n Полки поддержки: — \n \n \n \n Бронированная пехота 18 ШФ с дешёвой ЗСУ \n Описание: Немного брони при минимальных затратах, хорошо держит оборону. \n Батальоны: 8 пехотных, 1 лёгкая ЗСУ. \n Роты поддержки: артиллерия | конная разведка | сапёры. \n Полки поддержки: — \n \n \n \n Оборонительная пехота 18 ШФ (для мажоров) \n Описание: Дёшево и надёжно держит фронт. \n Батальоны: 9 пехотных. \n Роты поддержки: сапёры | артиллерия | конная разведка. \n Полки поддержки: — \n \n \n \n Оборонительная пехота 16 ШФ (слабые мажоры/миноры) \n Описание: Экономит ресурсы, сохраняя устойчивый фронт. \n Батальоны: 8 пехотных. \n Роты поддержки: сапёры | артиллерия | конная разведка. \n Полки поддержки: — \n \n \n \n Универсальная пехота 15 ШФ \n Описание: И для обороны, и для осторожных атак — идеально для миноров и ранней игры. \n Батальоны: 6 пехотных, 1 артиллерийский. \n Роты поддержки: сапёры | артиллерия | конная разведка. \n Полки поддержки: — \n \n \n \n Наступательная пехота 14 ШФ (для мажоров) \n Описание: Мощный наступательный кулак с огромной софт-атакой. \n Батальоны: 7 пехотных. \n Роты поддержки: сапёры | конная разведка | артиллерия | РСЗО | сверхтяжёлая артиллерия. \n Полки поддержки: — \n \n \n \n Оборонительная пехота 14 ШФ (для миноров) \n Описание: Максимальная экономия при удержании линии. \n Батальоны: 7 пехотных. \n Роты поддержки: сапёры | конная разведка | артиллерия. \n Полки поддержки: — \n \n \n \n\n \n \n Морская пехота | 16 ШФ \n Рейнджеры | 16 ШФ \n Горные стрелки | 16 ШФ \n ВДВ | 16 ШФ \n \n \n Морские десантники (16 ШФ) \n Описание: Для высадок и боёв на побережье. \n Батальоны: 8 морских десантников. \n Роты поддержки: артиллерия | сапёры | конная разведка. \n Полки поддержки: — \n \n \n \n Рейнджеры (16 ШФ) \n Описание: Для лесов, джунглей и болот. \n Батальоны: 8 рейнджеров. \n Роты поддержки: артиллерия | сапёры | конная разведка. \n Полки поддержки: — \n \n \n \n Горные стрелки (16 ШФ) \n Описание: Штурм горных хребтов и холмов. \n Батальоны: 8 горных стрелков. \n Роты поддержки: артиллерия | сапёры | конная разведка. \n Полки поддержки: — \n \n \n \n ВДВ (16 ШФ) \n Описание: Десантирование в тыл врага, захват ключевых точек. \n Батальоны: 8 парашютистов. \n Роты поддержки: сапёры | конная разведка. \n Полки поддержки: — \n \n \n \n\n \n \n Портовая пехота | 12 ШФ \n Портовая пехота | 10 ШФ \n Кавалерийский гарнизон | 2 ШФ \n Лёгкий танковый гарнизон | 2 ШФ \n \n \n Портовая пехота 12 ШФ \n Описание: Дёшево, может задержать морской десант. \n Батальоны: 6 пехотных. \n Роты поддержки: сапёры. \n Полки поддержки: — \n \n \n \n Портовая пехота 10 ШФ \n Описание: Минимальные затраты, минимальная защита портов. \n Батальоны: 5 пехотных. \n Роты поддержки: сапёры. \n Полки поддержки: — \n \n \n \n Кавалерийский гарнизон / абуз (2 ШФ) \n Описание: Сверхдешёвый шаблон для подавления сопротивления или быстрого развёртывания. \n Батальоны: 1 кавалерийский. \n Роты поддержки: — \n Полки поддержки: — \n \n \n \n Лёгкий танковый гарнизон (2 ШФ) \n Описание: Чуть дороже кавалерии, даёт немного брони и подавления. \n Батальоны: 1 лёгкий танк (максимально дешёвой конструкции). \n Роты поддержки: — \n Полки поддержки: — \n \n \n \n \n \n \n \n\n \n \n \n \n \n Сейв для тестов \n \n \n \n \n Temp_div_test_2.hoi4 \n Размер: 43.2 MB • Версия: 1.19+ • Без модов • Все DLC \n \n \n \n Скачать сейв\n \n \n Как использовать? + \n \n \n Скачайте файл и поместите его в папку Documents/Paradox Interactive/Hearts of Iron IV/save games . \n Запустите игру и загрузите сейв «Temp_div_test_2». \n Для удобства тестов откройте консоль (клавиша ~) и введите ai , чтобы отключить ИИ. \n \n \n \n \n \n VirusTotal проверка \n \n \n \n \n \n \n\n \n От автора \n Все шаблоны собраны на основе сотен часов игры и анализа механик. Я постарался сделать гайд максимально полезным и практичным, чтобы вы могли сразу применять знания в своих кампаниях. Надеюсь, теперь вы сможете создавать дивизии, которые принесут вам победу. Удачи на фронте! \n Актуально на 2026 год, версия 1.19+, все DLC, одиночка. \n \n "],"css":["* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nhtml, body {\n width: 100%;\n overflow-x: hidden !important;\n scroll-behavior: smooth;\n}\n\nbody {\n --bg-deep: #0d0c09;\n --gold-light: #f5d98b;\n --gold: #e2b660;\n --gold-dim: #b5943e;\n --green: #7aad7e;\n --green-glow: rgba(122, 173, 126, 0.5);\n --red: #c56a6a;\n --card-bg: rgba(22, 21, 18, 0.8);\n --card-border: rgba(226, 182, 96, 0.15);\n --text-primary: #f0ead8;\n --text-secondary: #c8c0a8;\n --text-muted: #908870;\n --shadow-gold: 0 0 20px rgba(226, 182, 96, 0.2);\n --shadow-card: 0 12px 28px rgba(0,0,0,0.6), 0 0 0 1px rgba(226,182,96,0.08);\n background: radial-gradient(ellipse at 50% 20%, rgba(226, 182, 96, 0.08) 0%, #0a0906 80%);\n background-attachment: fixed;\n color: #f0ead8;\n font-family: 'Segoe UI', 'Inter', system-ui, sans-serif;\n line-height: 1.6;\n -webkit-font-smoothing: antialiased;\n min-height: 100vh;\n position: relative;\n}\n\ncanvas#particles-canvas {\n position: fixed;\n top: 0;\n left: 0;\n width: 98%;\n height: 98%;\n z-index: -1;\n pointer-events: none;\n}\n\n.volunteer-guide {\n max-width: 1200px;\n margin: 0 auto;\n padding: 37.5px 25px;\n user-select: text;\n position: relative;\n z-index: 1;\n}\n\n.guide-tabs {\n position: sticky;\n top: 73px;\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 10px;\n background: rgba(12, 11, 8, 0.9);\n backdrop-filter: blur(20px);\n padding: 12.5px 12.5px;\n border-radius: 20px;\n border: 1px solid rgba(226, 182, 96, 0.35);\n box-shadow: 0 12px 40px rgba(0,0,0,0.8), 0 0 30px rgba(226,182,96,0.1), inset 0 1px 0 rgba(255,255,255,0.05);\n z-index: 1000;\n margin-bottom: 37.5px;\n}\n\n.guide-tab {\n background: transparent;\n border: 1px solid transparent;\n color: #b8b098;\n padding: 15px 27.5px;\n font-size: 15.9px;\n font-weight: 600;\n border-radius: 14px;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.2, 0.9, 0.4, 1);\n white-space: nowrap;\n position: relative;\n overflow: hidden;\n text-align: center;\n min-width: 110px;\n letter-spacing: 0.3px;\n}\n\n.guide-tab::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 14px;\n padding: 1px;\n background: linear-gradient(135deg, transparent, rgba(226,182,96,0.6), transparent);\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.guide-tab:hover::before { opacity: 0.8; }\n.guide-tab:hover {\n color: #f5e6c7;\n background: rgba(226, 182, 96, 0.12);\n text-shadow: 0 0 8px rgba(226,182,96,0.4);\n}\n\n.guide-tab.active {\n color: #f7e3a8;\n background: rgba(226, 182, 96, 0.2);\n border-color: rgba(226, 182, 96, 0.6);\n box-shadow: 0 0 30px rgba(226, 182, 96, 0.4), inset 0 0 15px rgba(226,182,96,0.15);\n text-shadow: 0 0 12px rgba(226,182,96,0.6);\n}\n.guide-tab.active::before { opacity: 1; background: linear-gradient(135deg, rgba(226,182,96,0.8), rgba(226,182,96,0.2), rgba(226,182,96,0.8)); }\n\n.tab-premium.active {\n border-color: rgba(226, 182, 96, 0.8);\n box-shadow: 0 0 40px rgba(226, 182, 96, 0.5), inset 0 0 20px rgba(226,182,96,0.25);\n}\n\n.tab-star {\n display: inline-block;\n font-size: 22px;\n margin-right: 6px;\n color: #e2b660;\n text-shadow: 0 0 18px rgba(226, 182, 96, 0.8);\n animation: starPulse 2s infinite ease-in-out;\n line-height: 1;\n position: relative;\n top: 2px;\n}\n@keyframes starPulse {\n 0% { text-shadow: 0 0 10px rgba(226, 182, 96, 0.6); transform: scale(1); }\n 50% { text-shadow: 0 0 24px rgba(226, 182, 96, 1); transform: scale(1.15); }\n 100% { text-shadow: 0 0 10px rgba(226, 182, 96, 0.6); transform: scale(1); }\n}\n\n.tab-panel { display: none; }\n.tab-panel.active { display: block; }\n\n.hero-card {\n background: linear-gradient(145deg, rgba(226, 182, 96, 0.18) 0%, rgba(20, 18, 13, 1) 100%);\n border: 1px solid rgba(226,182,96,0.35);\n border-radius: 28px;\n padding: 68.75px 50px;\n text-align: center;\n margin-bottom: 50px;\n position: relative;\n overflow: hidden;\n box-shadow: 0 25px 60px rgba(0,0,0,0.8), 0 0 50px rgba(226,182,96,0.15), inset 0 2px 0 rgba(255,255,255,0.05);\n backdrop-filter: blur(12px);\n}\n.hero-card::before {\n content: '';\n position: absolute;\n top: -80px; right: -80px;\n width: 300px; height: 300px;\n background: radial-gradient(circle, rgba(226,182,96,0.25) 0%, transparent 70%);\n border-radius: 50%; z-index: 0;\n}\n.hero-card::after {\n content: '';\n position: absolute;\n bottom: -80px; left: -80px;\n width: 280px; height: 280px;\n background: radial-gradient(circle, rgba(196, 152, 64, 0.15) 0%, transparent 70%);\n border-radius: 50%; z-index: 0;\n}\n.hero-badge {\n display: inline-block;\n background: rgba(226, 182, 96, 0.25);\n color: #f7e3a8;\n padding: 12.5px 35px;\n border-radius: 40px;\n font-size: 15.1px;\n font-weight: 600;\n margin-bottom: 27.5px;\n letter-spacing: 0.6px;\n backdrop-filter: blur(8px);\n border: 1px solid rgba(226, 182, 96, 0.5);\n box-shadow: 0 0 25px rgba(226,182,96,0.3);\n position: relative; z-index: 1;\n}\n.hero-title {\n font-size: 3.02rem;\n font-weight: 800;\n margin-bottom: 20px;\n color: #faeec8;\n line-height: 1.2;\n position: relative; z-index: 1;\n text-shadow: 0 4px 20px rgba(0,0,0,0.8), 0 0 50px rgba(226,182,96,0.3);\n}\n.hero-sub {\n font-size: 1.23rem;\n color: #d9d0b5;\n margin-bottom: 37.5px;\n position: relative; z-index: 1;\n font-weight: 400;\n text-shadow: 0 2px 10px rgba(0,0,0,0.6);\n}\n.hero-grid {\n display: flex;\n justify-content: center;\n gap: 62.5px;\n flex-wrap: wrap;\n margin-top: 37.5px;\n position: relative; z-index: 1;\n}\n.hero-stat {\n position: relative;\n flex: 1 1 0;\n min-width: 150px;\n text-align: center;\n border-radius: 20px;\n padding: 30px 20px;\n backdrop-filter: blur(10px);\n border: 1px solid rgba(226, 182, 96, 0.2);\n background: rgba(20, 18, 13, 0.5);\n transition: all 0.3s ease;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.hero-stat:hover {\n transform: translateY(-8px);\n border-color: rgba(226, 182, 96, 0.6);\n box-shadow: 0 12px 28px rgba(226,182,96,0.3), 0 16px 40px rgba(0,0,0,0.7);\n background: rgba(25, 22, 15, 0.7);\n}\n.hero-stat + .hero-stat::before {\n content: '';\n position: absolute;\n left: -31.25px; top: 20%; bottom: 20%;\n width: 1px;\n background: linear-gradient(to bottom, transparent, rgba(226,182,96,0.5), transparent);\n}\n.hero-stat-num {\n display: block;\n font-size: 2.46rem;\n font-weight: 700;\n color: #f5d78c;\n line-height: 1.2;\n margin-bottom: 10px;\n text-shadow: 0 0 20px rgba(226, 182, 96, 0.6);\n}\n.hero-stat-label {\n font-size: 0.95rem;\n color: #b0a890;\n font-weight: 500;\n}\n\n.cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(480px, 1fr));\n gap: 35px;\n margin-bottom: 50px;\n align-items: stretch;\n}\n.cards-grid--full { grid-template-columns: 1fr; width: 100%; }\n.cards-grid--fixed-2col { grid-template-columns: 1fr 1fr; }\n.full-width { grid-column: 1 / -1; }\n.center-single-card {\n display: grid;\n grid-template-columns: 1fr;\n max-width: 600px;\n margin: 0 auto 50px;\n justify-self: center;\n}\n\n.card {\n background: linear-gradient(160deg, rgba(30, 28, 22, 0.95) 0%, rgba(20, 18, 13, 0.98) 100%);\n border: 1px solid rgba(226, 182, 96, 0.2);\n border-radius: 22px;\n padding: 35px;\n box-shadow: var(--shadow-card);\n transition: all 0.35s ease;\n overflow: hidden;\n position: relative;\n backdrop-filter: blur(4px);\n}\n.card::after {\n content: '';\n position: absolute;\n top: 0; left: 0;\n width: 100%; height: 100%;\n background: radial-gradient(circle at 30% 10%, rgba(226,182,96,0.03), transparent 60%);\n pointer-events: none;\n}\n.card-animate {\n opacity: 0;\n transition: opacity 1.2s ease, transform 1.2s ease;\n}\n.card:hover {\n border-color: rgba(226, 182, 96, 0.5);\n box-shadow: 0 18px 40px rgba(0,0,0,0.8), 0 0 35px rgba(226,182,96,0.15);\n}\n.card-header {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 15px;\n margin-bottom: 27.5px;\n padding-bottom: 17.5px;\n border-bottom: 1px solid rgba(226, 182, 96, 0.25);\n}\n.card-header h2 {\n font-size: 1.80rem;\n font-weight: 700;\n color: #faeec8;\n margin: 0;\n text-shadow: 0 0 16px rgba(226,182,96,0.3);\n letter-spacing: 0.5px;\n}\n.card-icon {\n flex-shrink: 0;\n filter: drop-shadow(0 0 10px rgba(226, 182, 96, 0.6));\n transition: transform 0.3s ease;\n}\n.card-icon:hover { transform: rotate(-8deg) scale(1.2); }\n.card p {\n color: #c8c0a8;\n font-size: 16.1px;\n line-height: 1.75;\n margin-bottom: 20px;\n}\n.card h3 {\n font-size: 1.32rem;\n color: #e2b660;\n margin-bottom: 0.6em;\n text-shadow: 0 0 8px rgba(226,182,96,0.3);\n}\n\n.styled-list {\n list-style: none;\n padding: 0;\n}\n.styled-list li {\n background: rgba(35, 33, 26, 0.8);\n border: 1px solid rgba(226,182,96,0.2);\n border-radius: 10px;\n padding: 17.5px 22.5px;\n margin-bottom: 12.5px;\n color: #c0b898;\n font-size: 16.1px;\n transition: all 0.25s ease;\n backdrop-filter: blur(6px);\n line-height: 1.65;\n}\n.styled-list li:hover {\n background: rgba(50, 47, 37, 0.9);\n border-color: rgba(226,182,96,0.5);\n box-shadow: 0 0 20px rgba(226,182,96,0.15);\n}\n\n.doctrine-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 12.5px;\n margin: 27.5px 0;\n font-size: 14.2px;\n}\n.doctrine-table thead th {\n background: rgba(226, 182, 96, 0.2);\n color: #f5d78c;\n font-weight: 700;\n padding: 17.5px 20px;\n text-align: left;\n border-radius: 12px 12px 0 0;\n border: 1px solid rgba(226, 182, 96, 0.3);\n border-bottom: none;\n text-shadow: 0 0 8px rgba(226,182,96,0.3);\n}\n.doctrine-table tbody td {\n background: rgba(18, 17, 12, 0.9);\n color: #c8c0a8;\n padding: 15px 20px;\n border: 1px solid rgba(226, 182, 96, 0.15);\n border-top: none;\n transition: background 0.25s;\n}\n.doctrine-table tbody tr:first-child td { border-top: 1px solid rgba(226, 182, 96, 0.2); }\n.doctrine-table tbody tr:hover td {\n background: rgba(30, 28, 20, 0.95);\n border-color: rgba(226, 182, 96, 0.4);\n}\n\n.faq-accordion {\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 14px;\n overflow: hidden;\n background: rgba(18, 17, 12, 0.9);\n backdrop-filter: blur(8px);\n margin-top: 12.5px;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.faq-item { border-bottom: 1px solid rgba(226,182,96,0.2); }\n.faq-item:last-child { border-bottom: none; }\n.faq-question {\n background: none;\n border: none;\n width: 100%;\n text-align: left;\n padding: 20px 27.5px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: #f0ead8;\n font-size: 16.1px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.25s ease;\n}\n.faq-question:hover { background: rgba(226,182,96,0.12); }\n.faq-answer {\n max-height: 0; overflow: hidden; opacity: 0;\n padding: 0 27.5px;\n color: #c0b898;\n transition: max-height 0.45s ease, opacity 0.45s ease, padding 0.45s ease;\n background: rgba(0,0,0,0.3);\n}\n.faq-item.open .faq-answer {\n max-height: 700px; opacity: 1; padding: 20px 27.5px;\n}\n.faq-icon {\n font-size: 25px; color: #e2b660;\n transition: transform 0.35s ease;\n filter: drop-shadow(0 0 6px rgba(226,182,96,0.5));\n}\n.faq-item.open .faq-icon { transform: rotate(45deg); }\n\n.cheats-block {\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 14px;\n overflow: hidden;\n background: rgba(18, 17, 12, 0.9);\n backdrop-filter: blur(8px);\n margin-top: 12.5px;\n box-shadow: 0 6px 18px rgba(0,0,0,0.6);\n}\n.cheats-toggle {\n background: none; border: none;\n width: 100%; text-align: left;\n padding: 20px 27.5px;\n display: flex; justify-content: space-between; align-items: center;\n color: #f0ead8; font-size: 16.1px; font-weight: 600;\n cursor: pointer; transition: background 0.25s ease;\n}\n.cheats-toggle:hover { background: rgba(226,182,96,0.12); }\n.cheats-content {\n max-height: 0; overflow: hidden; opacity: 0;\n padding: 0 27.5px;\n transition: max-height 0.45s ease, opacity 0.45s ease, padding 0.45s ease;\n background: rgba(0,0,0,0.3);\n}\n.cheats-block.open .cheats-content { max-height: 900px; opacity: 1; padding: 20px 27.5px; }\n.cheats-chevron {\n font-size: 25px; color: #e2b660;\n transition: transform 0.35s ease;\n filter: drop-shadow(0 0 6px rgba(226,182,96,0.5));\n}\n.cheats-block.open .cheats-chevron { transform: rotate(45deg); }\n.cheat-scroll {\n max-height: 900px; overflow-y: auto; padding-right: 10px;\n scrollbar-width: thin; scrollbar-color: #4a4a3a #0d0c09;\n}\n.cheat-scroll::-webkit-scrollbar { width: 6px; }\n.cheat-scroll::-webkit-scrollbar-track { background: #0d0c09; border-radius: 6px; }\n.cheat-scroll::-webkit-scrollbar-thumb { background: #4a4a3a; border-radius: 6px; }\n.cheat-scroll::-webkit-scrollbar-thumb:hover { background: #6b6b55; }\n.cheat-item {\n background: rgba(15, 14, 10, 0.9);\n border: 1px solid rgba(226,182,96,0.2);\n border-radius: 10px;\n padding: 15px 17.5px; margin-bottom: 10px;\n font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;\n font-size: 13.6px; color: #c9d1d9;\n transition: all 0.25s ease; backdrop-filter: blur(6px);\n}\n.cheat-item:hover { border-color: #e2b660; box-shadow: 0 0 18px rgba(226,182,96,0.2); }\n.cheat-desc { font-size: 12.5px; color: #8b949e; margin-bottom: 10px; display: block; }\n.cheat-row { display: flex; align-items: center; justify-content: space-between; gap: 17.5px; }\n.cheat-command { flex: 1; word-break: break-all; }\n.copy-btn {\n background: none; border: 1px solid #4a4a3a; border-radius: 8px;\n color: #9e9e8e; cursor: pointer; padding: 6.25px 15px;\n font-size: 13.6px; font-weight: 600; transition: all 0.25s ease; flex-shrink: 0;\n}\n.copy-btn:hover { background: #3d3d30; color: #f0ead8; border-color: #e2b660; box-shadow: 0 0 14px rgba(226,182,96,0.3); }\n.copy-btn.copied { color: #7aad7e; border-color: #7aad7e; background: rgba(122, 173, 126, 0.25); }\n\n.positive-value { color: #7aad7e; font-weight: 700; text-shadow: 0 0 8px rgba(122, 173, 126, 0.5); }\n.negative-value { color: #c56a6a; font-weight: 700; text-shadow: 0 0 6px rgba(200, 80, 80, 0.5); }\n.moderate-value { color: #d4a83c; font-weight: 700; text-shadow: 0 0 6px rgba(212, 168, 60, 0.5); }\n.accent { color: #e2b660; font-weight: 600; text-shadow: 0 0 8px rgba(226, 182, 96, 0.5); }\n\n.author-card {\n background: linear-gradient(145deg, #1f1d18 0%, #151410 100%);\n border: 1px solid rgba(226,182,96,0.3);\n border-radius: 22px;\n padding: 37.5px;\n text-align: center;\n margin-top: 50px;\n box-shadow: 0 14px 36px rgba(0,0,0,0.6), 0 0 28px rgba(226,182,96,0.08);\n backdrop-filter: blur(12px);\n}\n.author-card .card-header { justify-content: center; border-bottom: none; margin-bottom: 22.5px; }\n.author-date { color: #908870; font-size: 12.5px; margin-top: 15px; }\n\n.card-animate.visible { opacity: 1; transform: translateY(0); }\n.ripple {\n position: absolute; border-radius: 50%;\n background: rgba(226, 182, 96, 0.5);\n transform: scale(0); animation: ripple 0.6s linear;\n pointer-events: none;\n}\n@keyframes ripple { to { transform: scale(4); opacity: 0; } }\n\n.volunteer-guide a,\n.guide-link {\n color: #e2b660; text-decoration: none; font-weight: 600;\n border-bottom: 1px solid rgba(226, 182, 96, 0.4);\n transition: color 0.2s ease, border-color 0.2s ease, text-shadow 0.2s ease;\n}\n.volunteer-guide a:hover,\n.guide-link:hover {\n color: #f5d98b; border-bottom-color: #f5d98b;\n text-shadow: 0 0 8px rgba(226, 182, 96, 0.4);\n}\n\n.supply-subtabs {\n display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px;\n justify-content: center;\n border-bottom: 1px solid rgba(226, 182, 96, 0.2);\n padding-bottom: 15px;\n}\n.supply-subtab {\n background: transparent;\n border: 1px solid rgba(226, 182, 96, 0.18);\n color: #b8b098;\n padding: 6px 16px;\n font-size: 14px;\n font-weight: 600;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.25s ease;\n white-space: nowrap;\n}\n.supply-subtab:hover {\n color: #f5e6c7;\n background: rgba(226, 182, 96, 0.08);\n border-color: rgba(226, 182, 96, 0.4);\n}\n.supply-subtab.active {\n color: #f7e3a8;\n background: rgba(226, 182, 96, 0.18);\n border-color: rgba(226, 182, 96, 0.55);\n box-shadow: 0 0 10px rgba(226, 182, 96, 0.15);\n}\n.supply-table-container { display: none; }\n.supply-table-container.active { display: block; }\n\n.tier-list { margin-top: 15px; }\n.tier-row {\n display: flex; align-items: stretch; margin-bottom: 8px;\n border-radius: 8px; overflow: hidden;\n box-shadow: 0 4px 10px rgba(0,0,0,0.3);\n}\n.tier-label {\n width: 50px; display: flex; align-items: center; justify-content: center;\n font-size: 1.6rem; font-weight: 800; color: #fff; flex-shrink: 0;\n}\n.tier-s .tier-label { background: #c49840; color: #1a1814; }\n.tier-g .tier-label { background: #6f9b7a; }\n.tier-r .tier-label { background: #5a8ab5; }\n.tier-b .tier-label { background: #8b7355; }\n.tier-items {\n padding: 10px 14px; background: rgba(15, 14, 12, 0.8);\n backdrop-filter: blur(4px); flex: 1;\n display: flex; flex-wrap: wrap; gap: 6px; align-items: center;\n}\n.tier-tag {\n display: inline-flex; align-items: center;\n padding: 4px 12px; border-radius: 16px;\n font-size: 14.4px; font-weight: 500; white-space: nowrap;\n border: 1px solid transparent; transition: all 0.2s ease;\n}\n.tier-tag:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.4); }\n.tier-tag-s { background: rgba(196, 152, 64, 0.15); color: #e0c880; border-color: rgba(196, 152, 64, 0.3); }\n.tier-tag-g { background: rgba(111, 155, 122, 0.15); color: #c0e6c8; border-color: rgba(111, 155, 122, 0.3); }\n.tier-tag-r { background: rgba(90, 138, 181, 0.15); color: #b8d8f0; border-color: rgba(90, 138, 181, 0.3); }\n.tier-tag-b { background: rgba(139, 115, 85, 0.15); color: #e0d0c0; border-color: rgba(139, 115, 85, 0.3); }\n\n.hq-selector {\n display: flex; justify-content: center; flex-wrap: wrap; gap: 8px;\n margin: 24px 0 28px; z-index: 999; position: relative;\n}\n.hq-tab {\n background: none; border: 1px solid rgba(226, 182, 96, 0.3);\n color: #b8b098; padding: 10px 22px; font-size: 15px;\n font-weight: 600; border-radius: 10px; cursor: pointer;\n transition: all 0.25s ease; white-space: nowrap;\n}\n.hq-tab:hover { color: #f0ead8; background: rgba(226, 182, 96, 0.08); }\n.hq-tab.active {\n color: #e2b660; background: rgba(226, 182, 96, 0.14);\n border-color: rgba(226, 182, 96, 0.5);\n box-shadow: 0 0 18px rgba(226, 182, 96, 0.15);\n}\n.hq-panels { margin-bottom: 20px; }\n.hq-panel { display: none; animation: fadeIn 0.3s ease; }\n.hq-panel.active { display: block; }\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.card-img {\n display: block; max-width: 100%; height: auto;\n margin: 20px auto 0; border-radius: 8px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n}\n.modal-img { cursor: zoom-in; }\n.table-icon {\n max-width: 50px; max-height: 50px;\n vertical-align: middle; margin-right: 6px;\n object-fit: contain;\n}\n\n.interactive-svg {\n margin-top: 20px;\n border-radius: 16px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n background: #0f0f0d;\n}\n.interactive-svg title { pointer-events: none; }\n\n.stats-grid {\n display: flex;\n gap: 30px;\n flex-wrap: wrap;\n margin-top: 20px;\n}\n.stats-column {\n flex: 1 1 280px;\n background: rgba(18, 17, 12, 0.6);\n border-radius: 14px;\n padding: 18px;\n border: 1px solid rgba(226, 182, 96, 0.15);\n}\n.stats-column h3 {\n text-align: center;\n margin-bottom: 16px;\n color: #e2b660;\n font-size: 1.2rem;\n}\n.stats-list {\n list-style: none;\n padding: 0;\n text-align: center;\n}\n.stats-list li {\n margin-bottom: 10px;\n}\n.stat-name {\n position: relative;\n cursor: help;\n color: #c8c0a8;\n font-size: 15px;\n font-weight: 500;\n border-bottom: 1px dotted rgba(226, 182, 96, 0.3);\n display: inline-block;\n}\n.stat-name:hover {\n color: #f0ead8;\n border-bottom-color: #e2b660;\n}\n\n.custom-tooltip {\n position: fixed;\n background: #1a1a14;\n color: #f0ead8;\n padding: 8px 14px;\n border-radius: 8px;\n font-size: 13px;\n white-space: normal;\n max-width: 280px;\n width: max-content;\n border: 1px solid rgba(226, 182, 96, 0.5);\n box-shadow: 0 8px 24px rgba(0,0,0,0.8);\n z-index: 9999;\n pointer-events: none;\n line-height: 1.4;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.custom-tooltip.show {\n opacity: 1;\n}\n\n.template-selector {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 20px;\n justify-content: center;\n}\n\n.save-grid {\n display: flex;\n gap: 2rem;\n align-items: flex-start;\n flex-wrap: wrap;\n}\n\n.save-file-info {\n flex: 1 1 35%;\n min-width: 240px;\n}\n\n.save-file-details {\n margin-bottom: 1.5rem;\n}\n\n.save-file-name {\n font-size: 1.4rem;\n font-weight: 700;\n color: #faeec8;\n margin-bottom: 0.3rem;\n}\n\n.save-file-meta {\n font-size: 0.9rem;\n color: #908870;\n margin-bottom: 1.5rem;\n}\n\n.save-btn {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n background: rgba(226, 182, 96, 0.15);\n border: 1px solid rgba(226, 182, 96, 0.4);\n color: #f0ead8;\n font-weight: 600;\n font-size: 1rem;\n padding: 12px 28px;\n border-radius: 12px;\n text-decoration: none;\n transition: all 0.25s ease;\n cursor: pointer;\n margin-bottom: 1.8rem;\n}\n\n.save-btn:hover {\n background: rgba(226, 182, 96, 0.25);\n border-color: rgba(226, 182, 96, 0.7);\n box-shadow: 0 0 24px rgba(226, 182, 96, 0.3);\n color: #fff;\n}\n\n.instruction-block {\n margin-top: 0;\n}\n\n.save-virustotal {\n flex: 1 1 60%;\n min-width: 300px;\n text-align: center;\n}\n\n.save-virustotal p {\n margin-bottom: 0.8rem;\n font-weight: 600;\n color: #b8b098;\n}\n\n.save-virustotal img {\n max-width: 100%;\n height: auto;\n border-radius: 10px;\n border: 1px solid rgba(226, 182, 96, 0.2);\n}\n\n.interactive-screenshot {\n position: relative;\n width: 100%;\n max-width: 800px;\n margin: 20px auto 0;\n border-radius: 12px;\n overflow: hidden;\n border: 1px solid rgba(226, 182, 96, 0.25);\n box-shadow: 0 12px 30px rgba(0,0,0,0.6);\n}\n\n.interactive-screenshot-img {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.hotspot {\n position: absolute;\n background: transparent;\n border-radius: 6px;\n cursor: help;\n transition: background 0.2s ease, box-shadow 0.2s ease;\n z-index: 2;\n}\n\n.hotspot:hover {\n background: rgba(226, 182, 96, 0.15);\n box-shadow: 0 0 0 2px rgba(226, 182, 96, 0.4);\n}\n\n@media (max-width: 768px) {\n .guide-tabs {\n position: static;\n margin-bottom: 25px;\n flex-wrap: nowrap;\n overflow-x: auto;\n white-space: nowrap;\n justify-content: flex-start;\n gap: 7.5px;\n padding: 10px 10px;\n -webkit-overflow-scrolling: touch;\n }\n\n\n .guide-tab {\n font-size: 13.2px;\n padding: 12.5px 20px;\n min-width: auto;\n flex-shrink: 0;\n }\n .hero-card { padding: 40px 20px; border-radius: 20px; }\n .hero-title { font-size: 1.9rem; }\n .hero-sub { font-size: 0.95rem; }\n .hero-grid { gap: 25px; }\n .hero-stat { min-width: 120px; padding: 20px 12.5px; }\n .hero-stat + .hero-stat::before { display: none; }\n .hero-stat-num { font-size: 1.9rem; }\n .hero-stat-label { font-size: 0.85rem; }\n .cards-grid,\n .cards-grid--fixed-2col,\n .cards-grid--full,\n .center-single-card {\n grid-template-columns: 1fr;\n max-width: 100%;\n margin: 0 0 40px 0;\n gap: 25px;\n }\n .full-width { grid-column: 1 / -1; }\n .card { padding: 25px; overflow-x: auto; overflow-y: visible; }\n .card-header h2 { font-size: 1.42rem; word-break: break-word; }\n .card p { font-size: 14.2px; }\n .styled-list li { font-size: 14.2px; padding: 15px; }\n .doctrine-table {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n border-spacing: 0 8px;\n margin: 20px 0;\n }\n .doctrine-table thead,\n .doctrine-table tbody,\n .doctrine-table tr,\n .doctrine-table th,\n .doctrine-table td { white-space: nowrap; }\n .doctrine-table tbody td { padding: 10px 12px; }\n .doctrine-table thead th { padding: 12px 12px; }\n .supply-subtabs {\n flex-wrap: nowrap;\n overflow-x: auto;\n justify-content: flex-start;\n padding-bottom: 10px;\n -webkit-overflow-scrolling: touch;\n }\n .supply-subtab { font-size: 12px; padding: 6px 12px; white-space: nowrap; flex-shrink: 0; }\n .checklist-items { column-count: 1; }\n .faq-question { font-size: 15px; padding: 15px 20px; }\n .faq-answer { padding: 0 20px; }\n .faq-item.open .faq-answer { padding: 15px 20px; }\n .cheats-toggle { font-size: 15px; padding: 15px 20px; }\n .cheats-content { padding: 0 20px; }\n .cheats-block.open .cheats-content { padding: 15px 20px; }\n .cheat-item { font-size: 12px; padding: 12px; }\n .copy-btn { padding: 4px 12px; font-size: 12px; }\n .card-img { max-width: 100%; height: auto; }\n .card svg { max-width: 100%; height: auto; }\n .author-card { padding: 25px; }\n .hq-row { gap: 8px; }\n .hq-slot { font-size: 12px; padding: 8px 12px; min-width: 80px; }\n .hq-slot.main-slot { min-width: 130px; }\n .hq-tab { font-size: 13px; padding: 8px 12px; }\n .tier-label { width: 40px; font-size: 1.4rem; }\n .tier-items { padding: 8px 10px; }\n .tier-tag { font-size: 13px; padding: 3px 10px; }\n .stats-grid { gap: 20px; }\n .stats-column { flex: 1 1 100%; }\n .save-grid {\n flex-direction: column;\n }\n .save-file-info,\n .save-virustotal {\n flex: 1 1 100%;\n min-width: 100%;\n }\n .save-virustotal img {\n max-width: 100%;\n height: auto;\n }\n}\n\n.template-modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.85);\n backdrop-filter: blur(8px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n cursor: pointer;\n}\n\n.template-modal-content {\n position: relative;\n max-width: 90vw;\n max-height: 90vh;\n overflow: auto;\n background: #1a1915;\n border: 1px solid rgba(226, 182, 96, 0.4);\n border-radius: 12px;\n padding: 16px;\n box-shadow: 0 25px 60px rgba(0, 0, 0, 0.9);\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.template-modal-content img {\n max-width: 100%;\n height: auto;\n display: block;\n border-radius: 4px;\n}\n\n.template-modal-close {\n align-self: flex-end;\n font-size: 32px;\n color: #e2b660;\n cursor: pointer;\n line-height: 1;\n margin-bottom: 8px;\n transition: color 0.2s;\n}\n\n.template-modal-close:hover {\n color: #f5d98b;\n}\n\n@keyframes fadeInUp {\n 0% { opacity: 0; transform: translateY(20px); }\n 100% { opacity: 1; transform: translateY(0); }\n}\n@keyframes fadeOut {\n 0% { opacity: 1; transform: translateY(0); }\n 100% { opacity: 0; transform: translateY(-10px); }\n}\n.template-fade-in {\n animation: fadeInUp 0.4s ease forwards;\n}\n.template-fade-out {\n animation: fadeOut 0.25s ease forwards;\n}"],"js":["(function () {\n 'use strict';\n\n if (!document.getElementById('guide-styles')) {\n var style = document.createElement('style');\n style.id = 'guide-styles';\n style.textContent =\n '.template-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.85);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;cursor:pointer}' +\n '.template-modal-content{position:relative;max-width:90vw;max-height:90vh;overflow:auto;background:#1a1915;border:1px solid rgba(226,182,96,0.4);border-radius:12px;padding:16px;box-shadow:0 25px 60px rgba(0,0,0,0.9);display:flex;flex-direction:column;align-items:center}' +\n '.template-modal-content img{max-width:100%;height:auto;display:block;border-radius:4px}' +\n '.template-modal-close{align-self:flex-end;font-size:32px;color:#e2b660;cursor:pointer;line-height:1;margin-bottom:8px;transition:color 0.2s}' +\n '.template-modal-close:hover{color:#f5d98b}' +\n '@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}' +\n '@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-10px)}}' +\n '.template-fade-in{animation:fadeInUp 0.4s ease forwards}' +\n '.template-fade-out{animation:fadeOut 0.25s ease forwards}' +\n '.custom-tooltip{position:fixed;background:#1a1a14;color:#f0ead8;padding:8px 14px;border-radius:8px;font-size:13px;white-space:normal;max-width:280px;width:max-content;border:1px solid rgba(226,182,96,0.5);box-shadow:0 8px 24px rgba(0,0,0,0.8);z-index:9999;pointer-events:none;line-height:1.4;opacity:0;transition:opacity 0.15s ease}' +\n '.custom-tooltip.show{opacity:1}';\n document.head.appendChild(style);\n }\n\n function initParticles() {\n var canvas = document.getElementById('particles-canvas');\n if (!canvas || canvas.dataset.initialized === 'true') return;\n canvas.dataset.initialized = 'true';\n var ctx = canvas.getContext('2d');\n var particles = [];\n var maxParticles = 28;\n var mouseX = window.innerWidth / 2;\n var mouseY = window.innerHeight / 2;\n\n function resizeCanvas() {\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n initParticleArray();\n }\n\n var goldColors = [\n 'rgba(226,182,96,0.30)',\n 'rgba(196,152,64,0.35)',\n 'rgba(212,168,84,0.25)',\n 'rgba(180,140,50,0.28)'\n ];\n\n function drawEagle(x, y, size, color, angle) {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 0.7;\n ctx.lineCap = 'round';\n var s = size * 0.25;\n ctx.beginPath();\n ctx.arc(0, -s, s * 0.8, 0.2, Math.PI - 0.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(s * 0.5, -s * 1.2);\n ctx.lineTo(0, -s * 0.6);\n ctx.lineTo(-s * 0.5, -s * 1.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(0, -s * 0.6);\n ctx.quadraticCurveTo(0, s * 0.2, 0, s * 1.2);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(-s * 0.8, s * 0.2);\n ctx.quadraticCurveTo(-s * 1.5, 0, -s * 1.2, s * 0.8);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(s * 0.8, s * 0.2);\n ctx.quadraticCurveTo(s * 1.5, 0, s * 1.2, s * 0.8);\n ctx.stroke();\n ctx.restore();\n }\n\n function Particle() { this.init(); }\n\n Particle.prototype.init = function () {\n this.x = Math.random() * canvas.width;\n this.y = Math.random() * canvas.height;\n this.size = Math.random() * 24 + 16;\n this.baseSpeedX = (Math.random() - 0.5) * 0.12;\n this.baseSpeedY = (Math.random() - 0.5) * 0.12;\n this.rotationSpeed = (Math.random() - 0.5) * 0.004;\n this.angle = Math.random() * Math.PI * 2;\n this.opacity = Math.random() * 0.7 + 0.3;\n this.pulseSpeed = Math.random() * 0.005 + 0.002;\n this.pulseOffset = Math.random() * Math.PI * 2;\n this.color = goldColors[Math.floor(Math.random() * goldColors.length)];\n this.time = 0;\n };\n\n Particle.prototype.update = function () {\n var dx = mouseX - canvas.width / 2;\n var dy = mouseY - canvas.height / 2;\n this.speedX = this.baseSpeedX + dx * 0.00015;\n this.speedY = this.baseSpeedY + dy * 0.00015;\n this.x += this.speedX;\n this.y += this.speedY;\n this.angle += this.rotationSpeed;\n this.time += this.pulseSpeed;\n if (this.x canvas.width + this.size * 2) this.x = -this.size;\n if (this.y canvas.height + this.size * 2) this.y = -this.size;\n };\n\n Particle.prototype.draw = function () {\n var pulse = 0.5 + 0.5 * Math.sin(this.time + this.pulseOffset);\n var alpha = this.opacity * (0.6 + 0.4 * pulse);\n ctx.globalAlpha = alpha;\n drawEagle(this.x, this.y, this.size, this.color, this.angle);\n ctx.globalAlpha = 1;\n };\n\n function initParticleArray() {\n particles = [];\n for (var i = 0; i vw - 10) left = vw - tw - 10;\n else if (left - tw / 2 × ';\n document.body.appendChild(overlay);\n }\n\n function addRippleEffect() {\n document.addEventListener('click', function (e) {\n var tab = e.target.closest('.guide-tab');\n if (!tab) return;\n var ripple = document.createElement('span');\n ripple.className = 'ripple';\n var rect = tab.getBoundingClientRect();\n var size = Math.max(rect.width, rect.height);\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (e.clientX - rect.left - size / 2) + 'px';\n ripple.style.top = (e.clientY - rect.top - size / 2) + 'px';\n tab.appendChild(ripple);\n ripple.addEventListener('animationend', function () { ripple.remove(); });\n });\n }\n\n function animateValue(element, start, end, duration, prefix, suffix) {\n var startTime = performance.now();\n function update(currentTime) {\n var elapsed = currentTime - startTime;\n var progress = Math.min(elapsed / duration, 1);\n var current = start + (end - start) * progress;\n if (end 0) {\n stats[i].style.visibility = 'visible';\n animateValue(stats[i], 0, parsed.number, 750, parsed.prefix, parsed.suffix);\n }\n }\n }\n\n function typeWriter(element, text, speed, delay) {\n var i = 0;\n element.textContent = '';\n function type() {\n if (i < text.length) {\n element.textContent += text.charAt(i);\n i++;\n setTimeout(type, speed);\n }\n }\n setTimeout(type, delay || 0);\n }\n\n function initTypewriter() {\n var heroSub = document.querySelector('.hero-sub');\n if (heroSub) typeWriter(heroSub, heroSub.textContent.trim(), 7, 200);\n }\n\n document.addEventListener('click', function (e) {\n var guideTab = e.target.closest('.guide-tab');\n if (guideTab) {\n var target = guideTab.getAttribute('data-tab');\n if (target) {\n switchMainTab(target);\n updateHash(target);\n }\n return;\n }\n\n var faqTrigger = e.target.closest('.faq-question');\n if (faqTrigger) {\n var faqItem = faqTrigger.closest('.faq-item');\n if (faqItem) faqItem.classList.toggle('open');\n return;\n }\n\n var cheatsTrigger = e.target.closest('.cheats-toggle');\n if (cheatsTrigger) {\n var cheatsBlock = cheatsTrigger.closest('.cheats-block');\n if (cheatsBlock) cheatsBlock.classList.toggle('open');\n return;\n }\n\n var supplySubtab = e.target.closest('.supply-subtab');\n if (supplySubtab) {\n var card = supplySubtab.closest('.card');\n if (card) switchSubTab(supplySubtab, card);\n return;\n }\n\n var hqTab = e.target.closest('.hq-tab');\n if (hqTab) {\n var card = hqTab.closest('.card');\n var hqId = hqTab.getAttribute('data-hq');\n if (card && hqId) switchHqTab(hqId, card);\n return;\n }\n\n var modalImg = e.target.closest('.modal-img');\n if (modalImg) {\n e.preventDefault();\n e.stopPropagation();\n openImageModal(modalImg.src);\n return;\n }\n\n var modalClose = e.target.closest('.template-modal-close');\n var modalOverlay = e.target.closest('.template-modal-overlay');\n if (modalClose || (modalOverlay && e.target === modalOverlay)) {\n var overlay = document.querySelector('.template-modal-overlay');\n if (overlay) overlay.remove();\n return;\n }\n\n var copyBtn = e.target.closest('.copy-btn');\n if (copyBtn) {\n var command = copyBtn.getAttribute('data-command');\n if (command) {\n var originalHTML = copyBtn.innerHTML;\n var onCopied = function () {\n copyBtn.classList.add('copied');\n copyBtn.innerHTML = '✓';\n setTimeout(function () {\n copyBtn.classList.remove('copied');\n copyBtn.innerHTML = originalHTML;\n }, 1500);\n };\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(command).then(onCopied).catch(function () {\n fallbackCopy(command, onCopied);\n });\n } else {\n fallbackCopy(command, onCopied);\n }\n function fallbackCopy(text, callback) {\n var ta = document.createElement('textarea');\n ta.value = text;\n ta.style.position = 'fixed';\n ta.style.left = '-9999px';\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n document.body.removeChild(ta);\n callback();\n }\n }\n return;\n }\n });\n\n document.addEventListener('keydown', function (e) {\n if (e.key === 'Escape') {\n var overlay = document.querySelector('.template-modal-overlay');\n if (overlay) overlay.remove();\n }\n });\n\n function init() {\n initParticles();\n addRippleEffect();\n initHeroCountUp();\n initTypewriter();\n activateTabFromHash();\n initTooltips();\n }\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', init);\n } else {\n init();\n }\n})();"]}