Compare commits

...

2 Commits

Author SHA1 Message Date
manuyasm87 b12830ad49 feat(seo): add geo coordinates to LocalBusiness schema
Geocoded from the confirmed address (Calle Borde Alegre, 1, 29014
Málaga) via OpenStreetMap/Nominatim.
2026-09-17 09:19:51 +02:00
manuyasm87 4b08a898bf fix(a11y): fix invisible text on corporativo bento cards
The three service cards (Lanzamientos de Marca, Coffee Breaks Premium,
Galas & Cenas Anuales) used dark 'on-surface' text tokens over a photo
with a dark gradient overlay -- text was effectively invisible against
the image. Every other bento-card usage on the site (bodas-reales.astro)
correctly uses text-white for this exact pattern; corporativo-business
was the one page that didn't.
2026-09-15 19:42:48 +02:00
2 changed files with 13 additions and 7 deletions
+7 -1
View File
@@ -60,7 +60,7 @@ const baseStructuredData = {
itemOffered: { '@type': 'Service', name: 'Catering para reuniones familiares' }, itemOffered: { '@type': 'Service', name: 'Catering para reuniones familiares' },
}, },
], ],
// Verified business address (owner-confirmed). Geo coordinates not confirmed — left out. // Verified business address (owner-confirmed).
address: { address: {
'@type': 'PostalAddress', '@type': 'PostalAddress',
streetAddress: 'Calle Borde Alegre, 1', streetAddress: 'Calle Borde Alegre, 1',
@@ -69,6 +69,12 @@ const baseStructuredData = {
addressRegion: 'Málaga', addressRegion: 'Málaga',
addressCountry: 'ES', addressCountry: 'ES',
}, },
// Geocoded from the address above via OpenStreetMap/Nominatim.
geo: {
'@type': 'GeoCoordinates',
latitude: 36.7507347,
longitude: -4.4213623,
},
// Matches the confirmed service area set on Google Business Profile. // Matches the confirmed service area set on Google Business Profile.
areaServed: [ areaServed: [
{ '@type': 'City', name: 'Málaga' }, { '@type': 'City', name: 'Málaga' },
+6 -6
View File
@@ -91,8 +91,8 @@ const corporateStructuredData = {
<img src="/images/foto-corporativo.jpg" alt="Lanzamientos de marca" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 25%;" width="1264" height="848" loading="lazy" decoding="async" /> <img src="/images/foto-corporativo.jpg" alt="Lanzamientos de marca" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 25%;" width="1264" height="848" loading="lazy" decoding="async" />
<div class="bento-card-overlay"></div> <div class="bento-card-overlay"></div>
<div class="bento-card-body"> <div class="bento-card-body">
<h3 class="text-headline-md" style="color:var(--color-on-surface);">Lanzamientos de Marca</h3> <h3 class="text-headline-md text-white">Lanzamientos de Marca</h3>
<p class="text-muted" style="max-width:28rem;">Impacto visual y conceptual para presentaciones que trascienden.</p> <p style="color:rgb(255 255 255/80%);max-width:28rem;margin-top:var(--space-2);">Impacto visual y conceptual para presentaciones que trascienden.</p>
</div> </div>
</div> </div>
@@ -100,8 +100,8 @@ const corporateStructuredData = {
<img src="/images/generated/gallery-2.webp" alt="Coffee Breaks Premium" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;" width="1024" height="1024" loading="lazy" decoding="async" /> <img src="/images/generated/gallery-2.webp" alt="Coffee Breaks Premium" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;" width="1024" height="1024" loading="lazy" decoding="async" />
<div class="bento-card-overlay"></div> <div class="bento-card-overlay"></div>
<div class="bento-card-body"> <div class="bento-card-body">
<h3 class="text-headline-md" style="color:var(--color-on-surface);">Coffee Breaks Premium</h3> <h3 class="text-headline-md text-white">Coffee Breaks Premium</h3>
<p class="text-muted">Pausas que inspiran productividad y networking de calidad.</p> <p style="color:rgb(255 255 255/80%);margin-top:var(--space-2);">Pausas que inspiran productividad y networking de calidad.</p>
</div> </div>
</div> </div>
@@ -109,8 +109,8 @@ const corporateStructuredData = {
<img src="/images/foto-bodas.jpg" alt="Galas y Cenas Anuales" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;" width="1264" height="848" loading="lazy" decoding="async" /> <img src="/images/foto-bodas.jpg" alt="Galas y Cenas Anuales" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;" width="1264" height="848" loading="lazy" decoding="async" />
<div class="bento-card-overlay"></div> <div class="bento-card-overlay"></div>
<div class="bento-card-body"> <div class="bento-card-body">
<h3 class="text-headline-md" style="color:var(--color-on-surface);">Galas &amp; Cenas Anuales</h3> <h3 class="text-headline-md text-white">Galas &amp; Cenas Anuales</h3>
<p class="text-muted" style="max-width:28rem;">Protocolo impecable para los momentos más solemnes de su organización.</p> <p style="color:rgb(255 255 255/80%);max-width:28rem;margin-top:var(--space-2);">Protocolo impecable para los momentos más solemnes de su organización.</p>
</div> </div>
</div> </div>