/* Performance 8M — Modules data + icons */

const MODULES = [
  {
    n: '01',
    short: 'BASE',
    eyebrow: 'Módulo 01 · Mês 1',
    title: 'Potência Fundamental',
    subtitle: 'Base Explosiva',
    tagline: 'A fundação. Sem essa camada, todo o resto fica frágil.',
    desc: 'A primeira camada do atleta. Desenvolvemos a capacidade neuromuscular de produzir força no menor tempo possível — a base que sustenta cada movimento de quadra dos próximos sete meses.',
    attrs: [
      { label: 'Foco', value: 'Recrutamento neural' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Intensidade', value: '70-85% RM' },
    ],
    icon: 'base',
    image: 'assets/module-01.png',
  },
  {
    n: '02',
    short: 'INFER',
    eyebrow: 'Módulo 02 · Mês 2',
    title: 'Potência Inferior',
    subtitle: 'Força + Explosão',
    tagline: 'Onde nasce a maior parte da movimentação do jogo.',
    desc: 'Força e explosão nos membros inferiores — quadríceps, glúteos, panturrilhas e cadeia posterior. O motor que te tira do lugar, te leva à bola e te devolve à posição.',
    attrs: [
      { label: 'Foco', value: 'Quadril + Joelho' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Tipo', value: 'Pliometria + Força' },
    ],
    icon: 'lower',
    image: 'assets/module-02.png',
  },
  {
    n: '03',
    short: 'SUPER',
    eyebrow: 'Módulo 03 · Mês 3',
    title: 'Potência Superior',
    subtitle: 'Push & Pull Power',
    tagline: 'Aplicação real da força nos gestos do jogo.',
    desc: 'Empurrar, puxar e estabilizar — a engenharia do saque, do ataque e da defesa. Núcleo, ombros, cadeia posterior. Onde a força encontra a bola.',
    attrs: [
      { label: 'Foco', value: 'Core + Ombro' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Tipo', value: 'Push/Pull Integrado' },
    ],
    icon: 'upper',
    image: 'assets/module-03.png',
  },
  {
    n: '04',
    short: 'ACEL',
    eyebrow: 'Módulo 04 · Mês 4',
    title: 'Aceleração e Desaceleração',
    subtitle: 'Chegar antes. Travar com controle.',
    tagline: 'A diferença entre ponto e bola perdida.',
    desc: 'A maior diferença entre atletas técnicos e atletas completos não está em correr mais — está em frear melhor. Aceleração explosiva e desaceleração controlada em poucos passos.',
    attrs: [
      { label: 'Foco', value: 'Mudança de ritmo' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Distância', value: '2–6 metros' },
    ],
    icon: 'accel',
    image: 'assets/module-04.png',
  },
  {
    n: '05',
    short: 'INTEG',
    eyebrow: 'Módulo 05 · Mês 5',
    title: 'Potência Integrada',
    subtitle: 'Sistema completo em ação',
    tagline: 'Todas as valências funcionando ao mesmo tempo.',
    desc: 'Aqui o método deixa de treinar partes e começa a treinar o atleta. Força + velocidade + estabilidade + coordenação acontecendo simultaneamente — como o jogo realmente exige.',
    attrs: [
      { label: 'Foco', value: 'Multi-valência' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Complexidade', value: 'Alta' },
    ],
    icon: 'integrated',
    image: 'assets/module-05.png',
  },
  {
    n: '06',
    short: 'AGIL',
    eyebrow: 'Módulo 06 · Mês 6',
    title: 'Agilidade e Velocidade',
    subtitle: 'Reação em velocidade máxima',
    tagline: 'Mudança de direção sem perder o corpo.',
    desc: 'Velocidade pura é só metade da história. Aqui treinamos a reação ao estímulo: cortar, recuperar, mudar de direção sob fadiga, e ainda manter o corpo conectado para o próximo movimento.',
    attrs: [
      { label: 'Foco', value: 'Reação + Direção' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Estímulo', value: 'Visual + Aleatório' },
    ],
    icon: 'agility',
    image: 'assets/module-06.png',
  },
  {
    n: '07',
    short: 'ROTAT',
    eyebrow: 'Módulo 07 · Mês 7',
    title: 'Rotação e Antirrotação',
    subtitle: 'O eixo do golpe',
    tagline: 'Onde nascem golpes potentes — e lesões evitáveis.',
    desc: 'Toda força no Beach Tennis passa pelo tronco. Aprender a gerar rotação explosiva e absorver rotação indesejada é o que separa atletas longevos de atletas em recuperação.',
    attrs: [
      { label: 'Foco', value: 'Tronco rotacional' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Tipo', value: 'Geração + Absorção' },
    ],
    icon: 'rotate',
    image: 'assets/module-07.png',
  },
  {
    n: '08',
    short: 'COORD',
    eyebrow: 'Módulo 08 · Mês 8',
    title: 'Coordenação com Velocidade',
    subtitle: 'A camada final',
    tagline: 'Velocidade com precisão dentro da quadra.',
    desc: 'A síntese. Tudo o que você construiu nos 7 módulos anteriores aplicado em sequências motoras complexas e em alta velocidade — o atleta completo, pronto para sustentar a temporada inteira.',
    attrs: [
      { label: 'Foco', value: 'Precisão em velocidade' },
      { label: 'Duração', value: '4 semanas' },
      { label: 'Aplicação', value: 'Específica de quadra' },
    ],
    icon: 'precision',
    image: 'assets/module-08.png',
  },
];

// Module icons (custom SVG, minimal line style with lime accent)
function ModuleIcon({ kind }) {
  const props = {
    width: 96, height: 96, viewBox: '0 0 96 96',
    fill: 'none', stroke: 'currentColor', strokeWidth: 1.5,
    strokeLinecap: 'round', strokeLinejoin: 'round',
  };
  switch (kind) {
    case 'base':
      return (
        <svg {...props}>
          <rect x="14" y="64" width="68" height="14" rx="2" />
          <rect x="22" y="48" width="52" height="14" rx="2" opacity="0.6" />
          <rect x="30" y="32" width="36" height="14" rx="2" opacity="0.35" />
          <rect x="38" y="16" width="20" height="14" rx="2" opacity="0.18" />
        </svg>
      );
    case 'lower':
      return (
        <svg {...props}>
          <circle cx="48" cy="20" r="8" />
          <path d="M48 28 v18 l-14 28" />
          <path d="M48 28 v18 l14 28" />
          <path d="M34 74 l-4 8" />
          <path d="M62 74 l4 8" />
          <path d="M40 46 h16" opacity="0.4" />
        </svg>
      );
    case 'upper':
      return (
        <svg {...props}>
          <circle cx="48" cy="24" r="8" />
          <path d="M48 32 v22" />
          <path d="M48 38 l-22 -6" />
          <path d="M48 38 l22 -6" />
          <circle cx="20" cy="30" r="6" />
          <circle cx="76" cy="30" r="6" />
          <path d="M48 54 l-10 22" />
          <path d="M48 54 l10 22" />
        </svg>
      );
    case 'accel':
      return (
        <svg {...props}>
          <path d="M14 48 h60" />
          <path d="M64 38 l14 10 -14 10" />
          <circle cx="22" cy="48" r="2.5" fill="currentColor" opacity="0.3" />
          <circle cx="34" cy="48" r="2.5" fill="currentColor" opacity="0.5" />
          <circle cx="48" cy="48" r="2.5" fill="currentColor" opacity="0.75" />
          <circle cx="62" cy="48" r="3" fill="currentColor" />
          <path d="M18 64 h32" opacity="0.4" />
          <path d="M50 32 h22" opacity="0.4" />
        </svg>
      );
    case 'integrated':
      return (
        <svg {...props}>
          <circle cx="48" cy="48" r="30" />
          <circle cx="48" cy="48" r="20" opacity="0.55" />
          <circle cx="48" cy="48" r="10" opacity="0.3" />
          <circle cx="48" cy="48" r="3" fill="currentColor" />
          <path d="M48 18 v60" opacity="0.35" />
          <path d="M18 48 h60" opacity="0.35" />
        </svg>
      );
    case 'agility':
      return (
        <svg {...props}>
          <path d="M16 76 l16 -20 l16 14 l16 -28 l16 12" />
          <circle cx="16" cy="76" r="3" fill="currentColor" />
          <circle cx="32" cy="56" r="3" fill="currentColor" />
          <circle cx="48" cy="70" r="3" fill="currentColor" />
          <circle cx="64" cy="42" r="3" fill="currentColor" />
          <circle cx="80" cy="54" r="3" fill="currentColor" />
        </svg>
      );
    case 'rotate':
      return (
        <svg {...props}>
          <path d="M48 16 a32 32 0 1 1 -22.5 9.5" />
          <path d="M16 24 l9.5 9.5 l9.5 -9.5" />
          <circle cx="48" cy="48" r="4" fill="currentColor" />
          <path d="M48 30 v16 l12 8" opacity="0.55" />
        </svg>
      );
    case 'precision':
      return (
        <svg {...props}>
          <circle cx="48" cy="48" r="32" opacity="0.3" />
          <circle cx="48" cy="48" r="22" opacity="0.5" />
          <circle cx="48" cy="48" r="12" opacity="0.75" />
          <circle cx="48" cy="48" r="3" fill="currentColor" />
          <path d="M14 14 l68 68" opacity="0.18" strokeDasharray="2 4" />
        </svg>
      );
    default:
      return <svg {...props}><circle cx="48" cy="48" r="32" /></svg>;
  }
}

window.MODULES = MODULES;
window.ModuleIcon = ModuleIcon;
