diff --git a/src/assets/img/about-conventions.jpg b/src/assets/img/about-conventions.jpg new file mode 100644 index 0000000..d2d71cc Binary files /dev/null and b/src/assets/img/about-conventions.jpg differ diff --git a/src/assets/img/about-exterior.jpg b/src/assets/img/about-exterior.jpg deleted file mode 100644 index 99a44e7..0000000 Binary files a/src/assets/img/about-exterior.jpg and /dev/null differ diff --git a/src/assets/img/about-pushup.jpg b/src/assets/img/about-pushup.jpg new file mode 100644 index 0000000..eb0278f Binary files /dev/null and b/src/assets/img/about-pushup.jpg differ diff --git a/src/assets/img/about-studios.jpg b/src/assets/img/about-studios.jpg new file mode 100644 index 0000000..5ab78a4 Binary files /dev/null and b/src/assets/img/about-studios.jpg differ diff --git a/src/assets/img/about-trainer-1.jpg b/src/assets/img/about-trainer-1.jpg deleted file mode 100644 index b958d89..0000000 Binary files a/src/assets/img/about-trainer-1.jpg and /dev/null differ diff --git a/src/assets/img/about-trainer-2.jpg b/src/assets/img/about-trainer-2.jpg deleted file mode 100644 index 76cfa77..0000000 Binary files a/src/assets/img/about-trainer-2.jpg and /dev/null differ diff --git a/src/assets/img/about-trainer-3.jpg b/src/assets/img/about-trainer-3.jpg deleted file mode 100644 index e17f529..0000000 Binary files a/src/assets/img/about-trainer-3.jpg and /dev/null differ diff --git a/src/assets/img/about-trainer-4.jpg b/src/assets/img/about-trainer-4.jpg deleted file mode 100644 index 54c1470..0000000 Binary files a/src/assets/img/about-trainer-4.jpg and /dev/null differ diff --git a/src/assets/img/about-training-group.jpg b/src/assets/img/about-training-group.jpg index 6c795a3..1215457 100644 Binary files a/src/assets/img/about-training-group.jpg and b/src/assets/img/about-training-group.jpg differ diff --git a/src/assets/img/about-vision.jpg b/src/assets/img/about-vision.jpg new file mode 100644 index 0000000..db88344 Binary files /dev/null and b/src/assets/img/about-vision.jpg differ diff --git a/src/assets/img/contact-hero.jpg b/src/assets/img/contact-hero.jpg new file mode 100644 index 0000000..316a1ec Binary files /dev/null and b/src/assets/img/contact-hero.jpg differ diff --git a/src/assets/img/feature-balance.jpg b/src/assets/img/feature-balance.jpg index 416d835..a697de3 100644 Binary files a/src/assets/img/feature-balance.jpg and b/src/assets/img/feature-balance.jpg differ diff --git a/src/assets/img/feature-longevity.jpg b/src/assets/img/feature-longevity.jpg index 06ec041..a29a142 100644 Binary files a/src/assets/img/feature-longevity.jpg and b/src/assets/img/feature-longevity.jpg differ diff --git a/src/assets/img/feature-performance.jpg b/src/assets/img/feature-performance.jpg index f7209e7..1215457 100644 Binary files a/src/assets/img/feature-performance.jpg and b/src/assets/img/feature-performance.jpg differ diff --git a/src/assets/img/hero-1.jpg b/src/assets/img/hero-1.jpg deleted file mode 100644 index edaa600..0000000 Binary files a/src/assets/img/hero-1.jpg and /dev/null differ diff --git a/src/assets/img/hero-1.png b/src/assets/img/hero-1.png new file mode 100644 index 0000000..7fe4c01 Binary files /dev/null and b/src/assets/img/hero-1.png differ diff --git a/src/assets/img/info-balance.jpg b/src/assets/img/info-balance.jpg index 57ffdac..2a746bb 100644 Binary files a/src/assets/img/info-balance.jpg and b/src/assets/img/info-balance.jpg differ diff --git a/src/assets/img/info-performance.jpg b/src/assets/img/info-performance.jpg index bdc360c..1215457 100644 Binary files a/src/assets/img/info-performance.jpg and b/src/assets/img/info-performance.jpg differ diff --git a/src/assets/img/method-step-1.jpg b/src/assets/img/method-step-1.jpg index 3c3748d..65c54c3 100644 Binary files a/src/assets/img/method-step-1.jpg and b/src/assets/img/method-step-1.jpg differ diff --git a/src/assets/img/method-step-2.jpg b/src/assets/img/method-step-2.jpg index 81dfb8a..9c02c36 100644 Binary files a/src/assets/img/method-step-2.jpg and b/src/assets/img/method-step-2.jpg differ diff --git a/src/assets/img/method-step-3.jpg b/src/assets/img/method-step-3.jpg index d8e7b96..b52be95 100644 Binary files a/src/assets/img/method-step-3.jpg and b/src/assets/img/method-step-3.jpg differ diff --git a/src/assets/img/method-step-4.jpg b/src/assets/img/method-step-4.jpg index ec6fc69..18cfcbb 100644 Binary files a/src/assets/img/method-step-4.jpg and b/src/assets/img/method-step-4.jpg differ diff --git a/src/assets/img/quote-bg.jpg b/src/assets/img/quote-bg.jpg index e5ab31d..2a746bb 100644 Binary files a/src/assets/img/quote-bg.jpg and b/src/assets/img/quote-bg.jpg differ diff --git a/src/assets/img/team-alessandro-dark.jpg b/src/assets/img/team-alessandro-dark.jpg new file mode 100644 index 0000000..641c4ca Binary files /dev/null and b/src/assets/img/team-alessandro-dark.jpg differ diff --git a/src/assets/img/team-alice-dark.jpg b/src/assets/img/team-alice-dark.jpg new file mode 100644 index 0000000..cc2a2b8 Binary files /dev/null and b/src/assets/img/team-alice-dark.jpg differ diff --git a/src/assets/img/team-antonello-dark.jpg b/src/assets/img/team-antonello-dark.jpg new file mode 100644 index 0000000..0ebac11 Binary files /dev/null and b/src/assets/img/team-antonello-dark.jpg differ diff --git a/src/assets/img/team-antonello.jpg b/src/assets/img/team-antonello.jpg index 0c8a08c..d7f2a83 100644 Binary files a/src/assets/img/team-antonello.jpg and b/src/assets/img/team-antonello.jpg differ diff --git a/src/assets/img/team-davide-dark.jpg b/src/assets/img/team-davide-dark.jpg new file mode 100644 index 0000000..922112e Binary files /dev/null and b/src/assets/img/team-davide-dark.jpg differ diff --git a/src/assets/img/team-donata-dark.jpg b/src/assets/img/team-donata-dark.jpg new file mode 100644 index 0000000..3ef0a39 Binary files /dev/null and b/src/assets/img/team-donata-dark.jpg differ diff --git a/src/assets/img/team-donata.jpg b/src/assets/img/team-donata.jpg index 71ddb49..d443516 100644 Binary files a/src/assets/img/team-donata.jpg and b/src/assets/img/team-donata.jpg differ diff --git a/src/assets/img/team-eleonora-dark.jpg b/src/assets/img/team-eleonora-dark.jpg new file mode 100644 index 0000000..5d2db09 Binary files /dev/null and b/src/assets/img/team-eleonora-dark.jpg differ diff --git a/src/assets/img/team-eleonora.jpg b/src/assets/img/team-eleonora.jpg index 003469f..2a3d2cd 100644 Binary files a/src/assets/img/team-eleonora.jpg and b/src/assets/img/team-eleonora.jpg differ diff --git a/src/assets/img/team-eva-dark.jpg b/src/assets/img/team-eva-dark.jpg new file mode 100644 index 0000000..243a3b2 Binary files /dev/null and b/src/assets/img/team-eva-dark.jpg differ diff --git a/src/assets/img/team-giulia-dark.jpg b/src/assets/img/team-giulia-dark.jpg new file mode 100644 index 0000000..25b89aa Binary files /dev/null and b/src/assets/img/team-giulia-dark.jpg differ diff --git a/src/assets/img/team-nicola-dark.jpg b/src/assets/img/team-nicola-dark.jpg new file mode 100644 index 0000000..2859e7a Binary files /dev/null and b/src/assets/img/team-nicola-dark.jpg differ diff --git a/src/assets/img/team-nicola.jpg b/src/assets/img/team-nicola.jpg index 2e0befd..f862197 100644 Binary files a/src/assets/img/team-nicola.jpg and b/src/assets/img/team-nicola.jpg differ diff --git a/src/assets/img/training-one-to-one.jpg b/src/assets/img/training-one-to-one.jpg index 6a81d1f..7365f5e 100644 Binary files a/src/assets/img/training-one-to-one.jpg and b/src/assets/img/training-one-to-one.jpg differ diff --git a/src/assets/img/training-performance-class.jpg b/src/assets/img/training-performance-class.jpg index 434a95f..53af6bc 100644 Binary files a/src/assets/img/training-performance-class.jpg and b/src/assets/img/training-performance-class.jpg differ diff --git a/src/assets/img/trial-class.jpg b/src/assets/img/trial-class.jpg new file mode 100644 index 0000000..2010491 Binary files /dev/null and b/src/assets/img/trial-class.jpg differ diff --git a/src/components/PageHero.astro b/src/components/PageHero.astro index 28c4d65..7c65f7e 100644 --- a/src/components/PageHero.astro +++ b/src/components/PageHero.astro @@ -1,8 +1,12 @@ --- -interface Props { title: string; eyebrow?: string } -const { title, eyebrow } = Astro.props; +import type { ImageMetadata } from 'astro'; +import { getImage } from 'astro:assets'; + +interface Props { title: string; eyebrow?: string; bgImage?: ImageMetadata } +const { title, eyebrow, bgImage } = Astro.props; +const bg = bgImage ? await getImage({ src: bgImage, width: 1920 }) : null; --- -
+
{eyebrow &&

{eyebrow}

}

{title}

@@ -12,4 +16,8 @@ const { title, eyebrow } = Astro.props; diff --git a/src/components/home/HeroSlider.astro b/src/components/home/HeroSlider.astro index 4bfc503..bb1fa8f 100644 --- a/src/components/home/HeroSlider.astro +++ b/src/components/home/HeroSlider.astro @@ -1,6 +1,6 @@ --- import { Image } from 'astro:assets'; -import hero1 from '../../assets/img/hero-1.jpg'; +import hero1 from '../../assets/img/hero-1.png'; const slides = [ { title: ['PERFORMANCE.', 'BALANCE.', 'LONGEVITY.'], image: hero1, alt: 'Atleti InsanityLab' }, ]; @@ -33,7 +33,7 @@ const slides = [ .hero__in { display: grid; grid-template-columns: 1fr 1.2fr; align-items: center; min-height: calc(100vh - var(--header-h)); gap: 30px; } .hero__line { display: block; } .hero__text h1 { font-weight: 500; } - .hero__img { object-fit: cover; height: 100%; max-height: calc(100vh - var(--header-h)); width: 100%; } + .hero__img { object-fit: contain; object-position: center bottom; height: 100%; max-height: calc(100vh - var(--header-h)); width: 100%; } .hero__arrow { position: absolute; top: 50%; transform: translateY(-50%); background: none; border: 0; font-size: 3rem; color: var(--c-heading); cursor: pointer; } .hero__arrow--prev { left: 12px; } .hero__arrow--next { right: 12px; } @media (max-width: 991px) { .hero__in { grid-template-columns: 1fr; padding-block: 40px; min-height: 0; } } diff --git a/src/components/home/InfoColumns.astro b/src/components/home/InfoColumns.astro index ec99cbe..d2040c5 100644 --- a/src/components/home/InfoColumns.astro +++ b/src/components/home/InfoColumns.astro @@ -1,16 +1,19 @@ --- +import { getImage } from 'astro:assets'; import infoPerformance from '../../assets/img/info-performance.jpg'; import infoBalance from '../../assets/img/info-balance.jpg'; import infoLongevity from '../../assets/img/info-longevity.jpg'; -const cols = [ +// getImage garantisce l'emissione dell'asset anche quando il file è byte-identico +// ad altri import (Astro dedupa e non emette l'originale usato solo come background). +const cols = await Promise.all([ { title: 'PERFORMANCE.', image: infoPerformance }, { title: 'BALANCE.', image: infoBalance }, { title: 'LONGEVITY.', image: infoLongevity }, -]; +].map(async (c) => ({ ...c, bg: (await getImage({ src: c.image, width: 1200 })).src }))); ---
{cols.map((c, i) => ( - + {c.title} ))} diff --git a/src/components/home/QuoteBanner.astro b/src/components/home/QuoteBanner.astro index 4dccbb4..8ffaeeb 100644 --- a/src/components/home/QuoteBanner.astro +++ b/src/components/home/QuoteBanner.astro @@ -1,5 +1,7 @@ --- -import quoteBg from '../../assets/img/quote-bg.jpg'; +import { getImage } from 'astro:assets'; +import quoteBgSrc from '../../assets/img/quote-bg.jpg'; +const quoteBg = await getImage({ src: quoteBgSrc, width: 1920 }); const quote = 'PERFORMANCE È SPINGERE OLTRE I PROPRI LIMITI, BALANCE È SAPERLI ASCOLTARE, LONGEVITY È COSTRUIRE NEL TEMPO CIÒ CHE DAVVERO CONTA.'; const quoteHtml = quote.replace(/(PERFORMANCE|BALANCE|LONGEVITY)/g, '$1'); --- diff --git a/src/components/home/TeamSection.astro b/src/components/home/TeamSection.astro index 07cdacc..64e1d19 100644 --- a/src/components/home/TeamSection.astro +++ b/src/components/home/TeamSection.astro @@ -4,7 +4,7 @@ import type { ImageMetadata } from 'astro'; import { team, homeTeam } from '../../data/team'; const images = import.meta.glob<{ default: ImageMetadata }>('../../assets/img/team-*.{jpg,png}', { eager: true }); const members = homeTeam.map((short) => team.find((m) => m.shortName === short)!).filter((m) => m.image); -const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(name))?.[1].default; +const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(`${name}.`))?.[1].default; ---
diff --git a/src/data/team.ts b/src/data/team.ts index 9287197..4f9b7fa 100644 --- a/src/data/team.ts +++ b/src/data/team.ts @@ -1,23 +1,23 @@ -export interface Member { name: string; shortName: string; role: string; bio: string; image?: string; founder: boolean } +export interface Member { name: string; shortName: string; role: string; bio: string; image?: string; imageAbout?: string; founder: boolean } export const team: Member[] = [ - { name: "Donata Dal Pastro", shortName: "Donata", role: "Chinesiologa e Osteopata", founder: true, image: "team-donata", + { name: "Donata Dal Pastro", shortName: "Donata", role: "Chinesiologa e Osteopata", founder: true, imageAbout: "team-donata-dark", image: "team-donata", bio: "Donata Dal Pastro è chinesiologa e osteopata specializzata in rieducazione funzionale, riatletizzazione sportiva ed esercizio adattato. Supervisiona l’area dedicata a prevenzione, recupero e benessere, con competenze specifiche anche in pediatria e gravidanza." }, - { name: "Nicola Antonelli", shortName: "Nicola", role: "Chinesiologo e Osteopata", founder: true, image: "team-nicola", + { name: "Nicola Antonelli", shortName: "Nicola", role: "Chinesiologo e Osteopata", founder: true, imageAbout: "team-nicola-dark", image: "team-nicola", bio: "Nicola Antonelli è chinesiologo e osteopata specializzato in performance sportiva, functional training e bodybuilding. Coordina lo sviluppo tecnico dei percorsi dedicati alla performance e all’allenamento avanzato." }, - { name: "Eva Cassetta", shortName: "Eva", role: "Business Manager – Balance & Strategy", founder: true, + { name: "Eva Cassetta", shortName: "Eva", role: "Business Manager – Balance & Strategy", founder: true, imageAbout: "team-eva-dark", bio: "Eva Cassetta ricopre il ruolo di Business Manager – Balance & Strategy e si occupa della gestione amministrativa, economica e finanziaria del progetto, garantendone solidità, organizzazione e sostenibilità nel tempo." }, - { name: "Alessandro Lazzari", shortName: "Alessandro", role: "Trainer – Functional & Movement", founder: false, + { name: "Alessandro Lazzari", shortName: "Alessandro", role: "Trainer – Functional & Movement", founder: false, imageAbout: "team-alessandro-dark", bio: "Trainer – Functional & Movement. Laureando in Scienze Motorie, specializzato in running e atletica leggera." }, - { name: "Eleonora Cassani", shortName: "Eleonora", role: "Trainer – Planning Manager", founder: false, image: "team-eleonora", + { name: "Eleonora Cassani", shortName: "Eleonora", role: "Trainer – Planning Manager", founder: false, imageAbout: "team-eleonora-dark", image: "team-eleonora", bio: "Trainer – Planning Manager. Chinesiologa specializzata in attività preventiva e adattata, con focus su allenamento in gravidanza e post-gravidanza." }, - { name: "Antonello D’Alessandro", shortName: "Antonello", role: "Trainer – Exercise & Health", founder: false, image: "team-antonello", + { name: "Antonello D’Alessandro", shortName: "Antonello", role: "Trainer – Exercise & Health", founder: false, imageAbout: "team-antonello-dark", image: "team-antonello", bio: "Trainer – Exercise & Health. Chinesiologo specializzato in attività preventiva e adattata, Dottore in Osteopatia." }, - { name: "Alice Roda", shortName: "Alice", role: "Trainer – Functional & Movement", founder: false, + { name: "Alice Roda", shortName: "Alice", role: "Trainer – Functional & Movement", founder: false, imageAbout: "team-alice-dark", bio: "Trainer – Functional & Movement. Laureanda in Scienze Motorie e Preparatore Atletico. Scienza del movimento e massima cura della persona: un approccio al functional training empatico e accogliente, dove l’ascolto umano guida e supporta ogni tuo progresso." }, - { name: "Davide Bisagni", shortName: "Davide", role: "Trainer – Functional & Movement", founder: false, + { name: "Davide Bisagni", shortName: "Davide", role: "Trainer – Functional & Movement", founder: false, imageAbout: "team-davide-dark", bio: "Trainer – Functional & Movement. Chinesiologo e allenamento funzionale al servizio del corpo: massima cura del gesto atletico e attenzione mirata al recupero per prestazioni sostenibili e durature." }, - { name: "Giulia Barbàra", shortName: "Giulia", role: "Trainer – Pilates, Yoga & Mindfulness", founder: false, + { name: "Giulia Barbàra", shortName: "Giulia", role: "Trainer – Pilates, Yoga & Mindfulness", founder: false, imageAbout: "team-giulia-dark", bio: "Trainer – Pilates, Yoga & Mindfulness. Laureata in Psicologia Clinica e Riabilitazione, insegnante di Pilates, Yoga e Mindfulness, con approccio orientato al benessere e all’equilibrio mente-corpo." }, ]; diff --git a/src/pages/about.astro b/src/pages/about.astro index 1cfd76f..97d8e76 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -52,9 +52,9 @@ export const prerender = true;

About

InsanityLab nasce con l'obiettivo di unire fitness e salute in un unico percorso dedicato al benessere globale, superando il concetto tradizionale di palestra. Un laboratorio esclusivo, guidato da osteopati e chinesiologi e professionisti specializzati, dove movimento, prevenzione e performance convivono all'interno di un approccio personalizzato e consapevole.

- {imgOf('about-team-group') && ( + {imgOf('about-pushup') && (
- Team InsanityLab + Allenamento InsanityLab
)}
@@ -75,6 +75,11 @@ export const prerender = true;
  • Le convenzioni vengono definite su misura insieme a InsanityLab, in base alle caratteristiche e alle necessità dell'azienda partner.
  • Per ricevere maggiori informazioni o attivare una convenzione: {site.email} · {site.phone}

    + {imgOf('about-conventions') && ( +
    + Convenzioni aziendali +
    + )}
    @@ -87,7 +92,7 @@ export const prerender = true;
    {founders.map((m) => (
    - {m.image && imgOf(m.image) && {m.name}} + {m.imageAbout && imgOf(m.imageAbout) && {m.name}}

    {m.shortName}

    {m.role}

    {m.bio}

    @@ -98,7 +103,7 @@ export const prerender = true;
    {staff.map((m) => (
    - {m.image && imgOf(m.image) && {m.name}} + {m.imageAbout && imgOf(m.imageAbout) && {m.name}}

    {m.shortName}

    {m.role}

    {m.bio}

    @@ -109,10 +114,21 @@ export const prerender = true;
    -
    -

    Metodo

    -

    Il team InsanityLab lavora con un approccio empatico e personalizzato, seguendo ogni persona in un percorso continuo e su misura. Unisce competenze multidisciplinari in allenamento, prevenzione, riabilitazione e performance, supportate da formazione costante. Il metodo si basa su sinergia, condivisione e qualità, per generare risultati concreti e duraturi.

    -

    In poche parole, il team di InsanityLab è composto da professionisti che credono profondamente in ciò che fanno: un gruppo unito da valori condivisi, formato per eccellere e guidato dalla convinzione che il movimento sia uno strumento di benessere, equilibrio e qualità della vita.

    +
    +
    +

    Metodo

    +

    Il team InsanityLab lavora con un approccio empatico e personalizzato, seguendo ogni persona in un percorso continuo e su misura. Unisce competenze multidisciplinari in allenamento, prevenzione, riabilitazione e performance, supportate da formazione costante. Il metodo si basa su sinergia, condivisione e qualità, per generare risultati concreti e duraturi.

    +
    +
    +
    +

    In poche parole, il team di InsanityLab è composto da professionisti che credono profondamente in ciò che fanno: un gruppo unito da valori condivisi, formato per eccellere e guidato dalla convinzione che il movimento sia uno strumento di benessere, equilibrio e qualità della vita.

    +
    + {imgOf('about-team-group') && ( +
    + Il team InsanityLab +
    + )} +
    @@ -125,9 +141,9 @@ export const prerender = true;

    Il progetto nasce con l'obiettivo di offrire a liberi professionisti uno spazio elegante, riservato e già attrezzato, in cui poter svolgere la propria attività all'interno di un contesto consolidato e altamente qualificato, senza dover affrontare i costi e le complessità di una struttura indipendente.

    IN-SANITY STUDIOS si rivolge a figure specializzate nel settore salute e wellness, come fisioterapisti, osteopati, psicologi, nutrizionisti, massaggiatori e altri professionisti dedicati alla cura della persona. Ogni studio è progettato per garantire comfort, professionalità e continuità operativa, all'interno di un ambiente coerente con la filosofia di InsanityLab: mettere il benessere globale della persona al centro del percorso.

    - {imgOf('about-exterior') && ( + {imgOf('about-studios') && (
    - In-Sanity Studios + In-Sanity Studios
    )} @@ -135,10 +151,19 @@ export const prerender = true;
    -
    -

    Vision

    -

    InsanityLab nasce con l'obiettivo di aiutare le persone a ritrovare energia ed equilibrio attraverso il movimento, promuovendo un approccio autentico, scientifico e umano al benessere. La sua visione va oltre l'estetica e la performance: allenarsi significa prendersi cura di sé, costruendo abitudini sane, sostenibili e orientate alla longevità, alla prevenzione e alla qualità della vita.

    -

    L'obiettivo è diventare un punto di riferimento capace di lasciare un impatto reale nella comunità, trasformando il movimento in uno strumento di salute, consapevolezza e identità.

    +
    +
    + {imgOf('about-vision') && ( +
    + La comunità InsanityLab +
    + )} +
    +

    Vision

    +

    InsanityLab nasce con l'obiettivo di aiutare le persone a ritrovare energia ed equilibrio attraverso il movimento, promuovendo un approccio autentico, scientifico e umano al benessere. La sua visione va oltre l'estetica e la performance: allenarsi significa prendersi cura di sé, costruendo abitudini sane, sostenibili e orientate alla longevità, alla prevenzione e alla qualità della vita.

    +

    L'obiettivo è diventare un punto di riferimento capace di lasciare un impatto reale nella comunità, trasformando il movimento in uno strumento di salute, consapevolezza e identità.

    +
    +
    @@ -152,6 +177,8 @@ export const prerender = true; .about-img-row__img--native { max-width: 320px; margin: 0 auto; } .conv { max-width: 760px; margin: 0 auto 30px; display: grid; gap: 18px; padding-left: 20px; } .conv__cta { text-align: center; font-family: var(--font-heading); letter-spacing: .06em; } + .round-img { max-width: 380px; margin: 30px auto 0; } + .round-img img { border-radius: 50%; aspect-ratio: 1; object-fit: cover; width: 100%; } .tgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; } .tcard img { aspect-ratio: 3/4; object-fit: cover; margin-bottom: 16px; } .tcard h3 { text-transform: lowercase; letter-spacing: .2em; } diff --git a/src/pages/contact.astro b/src/pages/contact.astro index f3e35dc..a4bfd45 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -3,11 +3,12 @@ import Base from '../layouts/Base.astro'; import PageHero from '../components/PageHero.astro'; import ContactForm from '../components/ContactForm.astro'; import { site } from '../data/site'; +import contactHero from '../assets/img/contact-hero.jpg'; export const prerender = true; const mapsQuery = encodeURIComponent(`${site.address}, ${site.cityLine}`); --- - +
    diff --git a/src/pages/training.astro b/src/pages/training.astro index c7ed898..7819879 100644 --- a/src/pages/training.astro +++ b/src/pages/training.astro @@ -5,6 +5,7 @@ import TrainingCards from '../components/home/TrainingCards.astro'; import Agenda from '../components/Agenda.astro'; import { Image } from 'astro:assets'; import { trainings } from '../data/trainings'; +import trialImg from '../assets/img/trial-class.jpg'; const images = import.meta.glob<{ default: ImageMetadata }>('../assets/img/training-*.{jpg,png}', { eager: true }); const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(name))?.[1]?.default; export const prerender = true; @@ -39,7 +40,8 @@ export const prerender = true;
    -
    + Lezione di prova InsanityLab +

    Prenota la lezione di prova

    La lezione di prova è l'occasione perfetta per conoscere il metodo, vivere l'esperienza in prima persona e capire il percorso più adatto a te. Inizia oggi il tuo percorso: prenota la tua lezione di prova.

    Prenota @@ -52,6 +54,8 @@ export const prerender = true; .tblock { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; padding-block: 40px; scroll-margin-top: calc(var(--header-h) + 20px); } .tblock--reverse img { order: 2; } .tblock h2 { letter-spacing: .1em; } - .trial { max-width: 720px; text-align: center; } + .trial { display: grid; grid-template-columns: 1fr 1.2fr; gap: 60px; align-items: center; } + .trial img { width: 100%; height: auto; max-height: 460px; object-fit: cover; } + @media (max-width: 767px) { .trial { grid-template-columns: 1fr; gap: 24px; } } @media (max-width: 767px) { .tblock { grid-template-columns: 1fr; gap: 24px; } .tblock--reverse img { order: 0; } }