feat(site): secção Reviews em branco, horário de funcionamento nos contactos

- .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>
This commit is contained in:
andreandClaude Sonnet 5 committed 2026-09-26 02:39:21 +01:00
1 parent 3f2c505c17
commit 5478952171
2 files changed
+37 -48

No files matched your search

+19 -19
View File
@@ -715,6 +715,19 @@ section[id] {
.wh-day { flex-basis: 100%; } .wh-day { flex-basis: 100%; }
} }
/* Horário de Funcionamento, nested inside Informações e contactos (not its
own section) — left-aligned with the rest of the info column from md up,
matching the text-center/text-md-left the surrounding blocks already use. */
.wh-grid-inline {
justify-content: center;
}
@media (min-width: 768px) {
.wh-grid-inline {
justify-content: flex-start;
}
}
.map-section { .map-section {
background: var(--fitme-surface); background: var(--fitme-surface);
position: relative; position: relative;
@@ -1254,9 +1267,11 @@ h3.contact-title {
.contact-info .fas, .contact-info .fas,
.contact-info .fab { .contact-info .fab {
float: left; float: left;
width: 20px;
margin-right: 12px; margin-right: 12px;
padding-top: 4px; padding-top: 4px;
font-size: 1.2rem; font-size: 1.2rem;
text-align: center;
color: var(--fitme-accent); color: var(--fitme-accent);
} }
@@ -3865,14 +3880,9 @@ h3.contact-title {
.reviews-section { .reviews-section {
padding: 90px 0 60px; padding: 90px 0 60px;
background-color: #141517; background: var(--fitme-white);
background-image: var(--metal-layers);
background-size: var(--metal-sizes);
color: var(--fitme-ash);
} }
.reviews-section .section-title h2 { color: #fff; }
.reviews-summary { .reviews-summary {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -3880,13 +3890,13 @@ h3.contact-title {
align-items: center; align-items: center;
gap: 6px 12px; gap: 6px 12px;
margin: 1rem 0 0; margin: 1rem 0 0;
color: var(--fitme-ash); color: var(--fitme-text-muted);
} }
.reviews-summary strong { .reviews-summary strong {
font-size: 1.8rem; font-size: 1.8rem;
font-weight: 900; font-weight: 900;
color: #fff; color: var(--fitme-text);
line-height: 1; line-height: 1;
} }
@@ -3983,21 +3993,11 @@ h3.contact-title {
margin-top: 2rem; margin-top: 2rem;
} }
.reviews-section .site-btn.sb-line {
border-color: #fff;
color: #fff;
}
.reviews-section .site-btn.sb-line:hover {
background: #fff;
color: var(--fitme-dark);
}
.reviews-attribution { .reviews-attribution {
margin: 1.2rem 0 0; margin: 1.2rem 0 0;
text-align: center; text-align: center;
font-size: .75rem; font-size: .75rem;
color: var(--fitme-ash); color: var(--fitme-text-muted);
opacity: .8; opacity: .8;
} }
+18 -29
View File
@@ -29,6 +29,8 @@ $team = $on('equipa') ? site_team($pdo, $gid) : [];
$modalidades = $on('modalidades') ? site_modalidades($pdo, $gid) : []; $modalidades = $on('modalidades') ? site_modalidades($pdo, $gid) : [];
$horario = $on('horario') ? site_horario($pdo, '', $gid) : []; $horario = $on('horario') ? site_horario($pdo, '', $gid) : [];
$whours = $on('workhours') ? site_work_hours($pdo, $gid) : []; $whours = $on('workhours') ? site_work_hours($pdo, $gid) : [];
$work_hours_days = ['Segunda-Sexta'=>'segunda','Sábado'=>'sabado','Domingo/Feriados'=>'domingo'];
usort($whours, fn($x, $y) => strcmp((string) $x['open'], (string) $y['open'])); // morning before afternoon
$events = site_active_events($pdo, $gid); // time-limited events, banner below the hero $events = site_active_events($pdo, $gid); // time-limited events, banner below the hero
$memberships = $on('mensalidades') ? site_memberships($pdo, $gid) : []; $memberships = $on('mensalidades') ? site_memberships($pdo, $gid) : [];
$reviews = $on('reviews') ? site_reviews($gym) : null; // null when not configured / nothing qualifies $reviews = $on('reviews') ? site_reviews($gym) : null; // null when not configured / nothing qualifies
@@ -635,6 +637,22 @@ $session = session();
</div> </div>
</div> </div>
</div> </div>
<?php if ($whours): ?>
<div class="contact-info-warp text-center text-md-left">
<h3>Horário de Funcionamento</h3>
<dl class="wh-grid wh-grid-inline">
<?php foreach ($work_hours_days as $key => $value): ?>
<div class="wh-day">
<dt><?= htmlspecialchars($key) ?></dt>
<?php $any = false; foreach ($whours as $h): if ($h['week_day'] == $value): $any = true; ?>
<dd><?= htmlspecialchars(substr($h['open'], 0, 5) . ' – ' . substr($h['close'], 0, 5)) ?></dd>
<?php endif; endforeach; ?>
<?php if (!$any): ?><dd class="wh-closed">Encerrado</dd><?php endif; ?>
</div>
<?php endforeach; ?>
</dl>
</div>
<?php endif; ?>
<?php // Mapa compacto, ao lado das informações ?> <?php // Mapa compacto, ao lado das informações ?>
<div class="map map-side" id="map"> <div class="map map-side" id="map">
<?php <?php
@@ -688,35 +706,6 @@ $session = session();
<?php endif; /* contactos */ ?> <?php endif; /* contactos */ ?>
<?php
// ── Horário de Funcionamento ──────────────────────────────────────────────────
if ($whours):
$work_hours_days = ['Segunda-Sexta'=>'segunda','Sábado'=>'sabado','Domingo/Feriados'=>'domingo'];
usort($whours, fn($x, $y) => strcmp((string) $x['open'], (string) $y['open'])); // morning before afternoon
?>
<section id="workhours" class="workhours-section" aria-labelledby="workhours-title">
<div class="container">
<div class="section-title text-center deco">
<span class="section-eyebrow">Visita-nos</span>
<h2 id="workhours-title">Horário de Funcionamento</h2>
</div>
<?php // Compact day / hours cards. A <dl> so the pairs read as data
// (label → value) for screen readers and search engines. ?>
<dl class="wh-grid">
<?php foreach ($work_hours_days as $key => $value): ?>
<div class="wh-day">
<dt><?= htmlspecialchars($key) ?></dt>
<?php $any = false; foreach ($whours as $h): if ($h['week_day'] == $value): $any = true; ?>
<dd><?= htmlspecialchars(substr($h['open'], 0, 5) . ' – ' . substr($h['close'], 0, 5)) ?></dd>
<?php endif; endforeach; ?>
<?php if (!$any): ?><dd class="wh-closed">Encerrado</dd><?php endif; ?>
</div>
<?php endforeach; ?>
</dl>
</div>
</section>
<?php endif; ?>
<?php <?php
// ── Personal Trainer CTA ──────────────────────────────────────────────────────── // ── Personal Trainer CTA ────────────────────────────────────────────────────────
if ($on('personal_trainer')): if ($on('personal_trainer')):