- "Ver Horário das aulas" desaparece assim que o acordeão abre (clique no
próprio botão ou o link "Horário" da navbar a abrir por JS) — deixa de
ficar um botão grande por cima da grelha já visível.
- Setas ‹ › junto ao dia em foco também no desktop (vista de 3 dias): só o
dia central as mostra, os laterais continuam sem elas (já são clicáveis
diretamente).
- Deslizar no telemóvel/tablet muda de dia, com o mesmo efeito das setas —
só reage a arrastos maioritariamente horizontais, para não roubar o
scroll vertical da página.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
O mapa deixa de ser um cartão comprimido dentro da coluna de Informações
(220px) e passa a ocupar a largura toda numa linha própria, por baixo da
grelha Informações + Formulário (480px, mesma altura do .map de outras
páginas). A coluna de Informações fica só com o texto (Localização,
Telefone, E-mail, Horário de Funcionamento).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Informações e contactos: os ícones fas ao lado do texto saem (desalinhavam
em layout centrado — fa-envelope é mais largo que os outros e o texto ficava
a começar em posições diferentes). Horário de Funcionamento deixa de ser
cartões (dt/dd com barra escura) e passa a texto simples centrado, uma
linha por dia, a condizer com o resto da coluna.
- Textarea "Mensagem" deixa de esticar até à base do mapa (chegava a 763px
de altura, vazio) — volta ao min-height:150px + resize:vertical do CSS.
- CrossFit: removida a secção "A nossa Localização" duplicada, agora que a
página tem a sua própria secção de Contactos com mapa incluído.
- Reviews: "Ver todas no Google" passa a link de texto simples (sublinhado);
"Deixa a tua review" mantém-se o botão em destaque.
- api/health.php, api/hub_ops.php, api/hub_pair.php: stubs de uma linha para
o platform-tools (mesmo padrão da fotografia/design/dance) — preparam a
entrada do fitme3070 na Frota do hub.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Horário de aulas (home e CrossFit, mesmo componente partilhado): removida
a barra de botões Seg/Ter/Qua/Qui/Sex/Sab acima da grelha — o próprio
cabeçalho do dia (já existente) passa a ser sempre visível (antes só em
desktop, 3 dias) e ganha setas ‹ › ao lado do nome do dia para mudar de
dia em ecrãs de telemóvel/tablet. No desktop (3 dias lado a lado) as
setas ficam escondidas — clicar no dia lateral já muda o dia em foco.
CSS/JS morto do botão-filtro removido.
- Informações e contactos extraído para site/includes/contactos.php,
partilhado pela home e pelo CrossFit — a página CrossFit ganha a mesma
secção de contactos (localização, telefone, e-mail, horário de
funcionamento, mapa, formulário) em vez de só linkar de volta à home.
Hero e restantes secções do CrossFit não foram tocados.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- .reviews-section deixa de repetir o fundo metálico escuro da secção de
mensalidades logo a seguir — passa a branca, restaurando a alternância de
fundos ao longo da página. Textos e o botão "Ver todas no Google"
recuperam as cores por omissão (escuras sobre branco); os cartões de
review mantêm o próprio fundo escuro.
- Horário de Funcionamento deixa de ser secção própria e passa a viver
dentro de "Informações" (Contactos), como mais um bloco de info, antes do
mapa.
- Ícones de Localização/Telefone/E-mail alinhados: fa-envelope é mais largo
que fa-map-marker-alt/fa-phone-volume, o que desalinhava o texto ao lado
(4.8px de deslocamento, medido no browser); os ícones ganham uma largura
fixa comum.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
O diretório vendorizado incluía ficheiros de build/fonte que nunca são
carregados em runtime: js/, less/, scss/, metadata/, sprites/, svgs/, os
formatos de fonte não-woff2 (eot/svg/ttf/woff) e 13 folhas CSS redundantes.
Ficam só o que o site carrega de facto: css/all.css + 3 webfonts woff2
(solid/brands/regular). Sem alterar a fonte em si — nenhum ícone muda.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
As regras `.container>.row` e `.contact-form .row` usavam margem negativa de
-15px (herança do Bootstrap 4), mas o container do Bootstrap 5 tem padding de
12px — sobrava 3px de overflow horizontal a 375px (scrollWidth 378 vs 375).
Passaram a -0.75rem (o gutter real do BS5), anulando exatamente o padding.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contraste (auditoria 4.8, WCAG AA):
- Novo token --fitme-accent-ink #667000 (≈5.1:1 sobre #F7F8FA), aplicado aos 7
usos de texto que estavam em --fitme-accent-dark (#A6B600 ≈2.1:1 em fundo claro).
O --fitme-accent-dark mantém-se para fundos de botões em hover/active (onde tem
texto escuro por cima — escurecê-lo quebraria esses estados).
- .section-eyebrow passa a usar o ink green nas secções claras (oferta, galeria,
modalidades, horário, workhours); as secções escuras mantêm o verde vivo.
Fontes (CSS "Google Fonts ainda carregado do CDN"):
- Roboto (variável, latin, 43 KB woff2) em site/assets/fonts/roboto/.
- @font-face 100-900 em style.css; removidos os <link> para fonts.googleapis.com
em include.php e gym_chooser.php. Ficam apenas os pedidos à API do Places
(legítimos, server-side).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- assets/vendor/bootstrap/ (cópia BS 4.3.1) já sem referências desde a
migração para 5.3.3 (auditoria 5.1); removida do repositório.
- style.css: cabeçalho corrigido (Bootstrap 4.3.1 → 5.3.3).
- Breakpoints inventados alinhados à grelha (auditoria 4.1): 479px e os dois
339px passaram a max-width: 575px (o tier xs do Bootstrap). Os cartões de
detalhe (modalidade/equipa) passam a coluna em todos os telefones ≤575px.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6 seletores tinham font-size a fazer step-function em vez de escalar:
.hero-text h1 (4 breakpoints), .section-title h2 (3), .page-top-section
h1, .icon-box-item h3/h4 e os dois .schedule_box>div (2 cada). Cada par/
trio de valores por media query passa a um único clamp() na regra base,
com a interpolação (vw) calculada para bater certo com o valor antigo
nas larguras 375/768/1400px+ testadas.
Ficam por mexer (não são apenas escala de tipo): .rounded_frame,
.hero-text .site-btn, .site-btn @479px e .schedule_frame (o font-size
muda junto com padding/width/min-width, é redimensionamento de layout,
não só tipografia); .footer-menu li a (idem, padding muda junto — alvos
de toque da auditoria 4.4); .contact-form/.newsletter-form input (o
valor sobe para 1rem no mobile, não desce — evita o zoom automático do
iOS ao focar); .md-card h3 (faz parte da troca de layout do cartão para
modal fixo, não é só escala); .schedule_box a (o valor de mobile já era
igual ao base, 11px, não havia degrau nenhum).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Auditoria: "Site público em Bootstrap 4.3.1 (EOL); backoffice em
5.3.3" — o backoffice já usa a 5.3.3 vendorizada (assets/vendor/bootstrap5/),
o site público passa a usar a mesma cópia em vez da 4.3.1.
Levantamento antes de mexer: a folha de estilo própria (style.css)
quase não usa classes utilitárias cruas do Bootstrap (grep confirma
zero ml-/mr-/pl-/pr-/float-left/float-right/custom-select/
custom-control/badge-/sr-only/font-weight-/text-left/text-right —
tudo classes próprias como .site-btn). O que precisava de mudar:
- CSS/JS: assets/vendor/bootstrap/ -> assets/vendor/bootstrap5/
(bundle, inclui Popper).
- Os 7 atributos data-toggle/data-target/data-dismiss (BS4) ->
data-bs-toggle/data-bs-target/data-bs-dismiss (BS5): toggle da nav
mobile, os dois modais (aula experimental, inscrição), o botão de
fechar do alerta. O seletor em main.js que lê data-target também
mudou para não parar de encontrar os botões.
- .close -> .btn-close (BS5 renomeou o componente; markup sem o
× interno, que o BS5 desenha via CSS).
- .form-row -> .row (BS4 tinha form-row com gutters menores; BS5 não
tem, style.css não tinha overrides para form-row, confirmado).
- O apanhado maior: dois <script> inline chamavam
jQuery('#trialModal').modal('show') ao estilo de plugin jQuery do
BS4 (para reabrir o modal depois de um erro de submissão) — o BS5
não regista plugins jQuery nenhuns, isto ficava morto em silêncio.
Trocado por new bootstrap.Modal(...).show(), a API JS nativa do
BS5. grep confirma zero outras chamadas .modal()/.collapse()/etc.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Corrige os controlos interativos (não o texto denso em grelha/rodapé,
que fica para outra passagem): .navbar-toggler (40->44 de altura),
.md-close/.td-close (26x28 -> 44x44, box explícita em vez de
dimensionar pelo glifo), .schedule-dl-btn (padding compensado por
margin negativa — o texto sublinhado não engorda visualmente),
.sdf-btn (43->44, min-height), ícones sociais do rodapé (min 44x44).
Medido com getBoundingClientRect() no site ao vivo a 375px antes e
depois de aplicar.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>