Files
InsanityLab-web/.superpowers/sdd/review-34fd3d2..b84463c.diff
Adriano b913a2bf90 registri dei piani in git (AI-OS#309)
Refs gitea:Adriano/AI-OS#310

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:36:26 +02:00

438 lines
28 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Review package: 34fd3d2..b84463c
## Commits
b84463c feat: tag short-name membri team
d5b19f2 feat: tag contenuti pagina about e timeline
## Files changed
src/components/about/Timeline.astro | 23 +++----
src/components/home/TeamSection.astro | 2 +-
src/data/content-seed.ts | 69 ++++++++++++++++++++
src/pages/about.astro | 117 ++++++++++++++++++----------------
4 files changed, 142 insertions(+), 69 deletions(-)
## Diff
diff --git a/src/components/about/Timeline.astro b/src/components/about/Timeline.astro
index 2eb91dc..7c23dfe 100644
--- a/src/components/about/Timeline.astro
+++ b/src/components/about/Timeline.astro
@@ -1,31 +1,28 @@
---
-const openText = `Il percorso di crescita di InsanityLab si è sviluppato attraverso tappe precise e coerenti con la visione iniziale. Nato nel 2021 con un piccolo team e grandi ambizioni, il progetto ha conosciuto una forte evoluzione nel 2024, anno in cui il servizio si è ampliato attraverso nuovi format come gli small group e una sempre maggiore specializzazione nella profilazione fisica del cliente, grazie a sistemi avanzati di valutazione e monitoraggio. Parallelamente, anche l'area dedicata alla riabilitazione e all'esercizio preventivo si è consolidata, ponendo le basi per un importante salto di qualità.`;
-const stages = [
- { label: 'INSANITYLAB 2025', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
- { label: 'INSANITYLAB 2026', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
- { label: 'INSANITYLAB OGGI', text: 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.' },
-];
+import T from '../content/T.astro';
+import { t } from '../../lib/content';
+const stages = [1, 2, 3];
---
<section class="section">
<div class="container">
<div class="section-heading">
- <h2>Storylab</h2>
- <p>Scopri la nostra storia: come nasce InsanityLab, perché abbiamo deciso di creare qualcosa di diverso e chi sono i visionari che hanno trasformato questa idea in un nuovo modo di vivere benessere, movimento e salute.</p>
+ <T tag="about.storylab.title" as="h2" />
+ <T tag="about.storylab.body" as="p" />
</div>
<div class="tl">
- <h3 class="tl__label">INSANITYLAB 2021-2024</h3>
- <p>{openText}</p>
- {stages.map((s) => (
+ <T tag="about.timeline.label" as="h3" class="tl__label" />
+ <T tag="about.timeline.open-text" as="p" />
+ {stages.map((n) => (
<details class="tl__stage">
- <summary>+ {s.label}</summary>
- <p>{s.text}</p>
+ <summary>+ {t(`about.timeline.stage${n}.label`)}</summary>
+ <T tag={`about.timeline.stage${n}.text`} as="p" />
</details>
))}
</div>
</div>
</section>
<style>
.tl { max-width: 720px; margin-inline: auto; }
.tl__label { text-transform: uppercase; letter-spacing: .16em; font-size: .9rem; }
.tl__stage { border-top: 1px solid #e4ded6; padding-block: 14px; }
diff --git a/src/components/home/TeamSection.astro b/src/components/home/TeamSection.astro
index baa0def..8deb82a 100644
--- a/src/components/home/TeamSection.astro
+++ b/src/components/home/TeamSection.astro
@@ -13,21 +13,21 @@ const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(
<div class="tteam__head" data-reveal>
<T tag="home.team.title" as="h2" />
<a class="btn" href="/about"><T tag="home.team.cta" as="span" /></a>
</div>
<div class="tteam__grid">
{members.map((m, i) => {
const slug = m.shortName.toLowerCase();
return (
<figure class="tteam__card" data-reveal style={`--reveal-delay:${i * 0.12}s`}>
<TImg tag={`team.${slug}.image`} src={imgOf(m.image!)!} alt={t(`team.${slug}.name`)} widths={[300, 500]} sizes="(max-width: 767px) 50vw, 25vw" />
- <figcaption>{m.shortName}</figcaption>
+ <T tag={`team.${slug}.short-name`} as="figcaption" />
</figure>
);
})}
</div>
</div>
</section>
<style>
.tteam__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 40px; }
.tteam__head h2 { text-transform: uppercase; letter-spacing: .1em; margin: 0; }
diff --git a/src/data/content-seed.ts b/src/data/content-seed.ts
index 9f54a09..936b7a8 100644
--- a/src/data/content-seed.ts
+++ b/src/data/content-seed.ts
@@ -117,20 +117,21 @@ export const contentSeed: SeedEntry[] = [
T('home.programs.title', 'Programmi'),
T('home.programs.body', 'Questi sono i programmi delle classi di Insanity Lab selezionati per voi. Abbiamo scelto i migliori percorsi per offrirvi un’esperienza di allenamento completa e mirata.'),
// --- Home: team (data-driven da team.ts) ---
H('home.team.title', 'Team<br />Trainer'),
T('home.team.cta', 'Scopri team', []),
...team.flatMap((m) => {
const slug = m.shortName.toLowerCase();
return [
T(`team.${slug}.name`, m.name, []),
+ T(`team.${slug}.short-name`, m.shortName),
T(`team.${slug}.role`, m.role, []),
T(`team.${slug}.bio`, m.bio),
I(`team.${slug}.image`),
I(`team.${slug}.image-about`),
];
}),
// --- Home: metodo (data-driven da method.ts) ---
H('home.method.title', 'Il metodo<br />InsanityLab'),
H('method.intro', methodIntro.replace('Metodo Insanitylab', '<strong>Metodo Insanitylab</strong>')),
@@ -145,14 +146,82 @@ export const contentSeed: SeedEntry[] = [
...partners.flatMap((p, i) => [
T(`partner.${i + 1}.name`, p.name, []),
I(`partner.${i + 1}.image`),
]),
// --- Agenda (scope limitato: titolo, discipline, giorni, slot — celle escluse) ---
T('agenda.title', 'Agenda'),
...disciplines.map((d, i) => T(`agenda.discipline.${i + 1}`, d, [])),
...days.map((d, i) => T(`agenda.day.${i + 1}`, d, [])),
...slots.map((s, i) => T(`agenda.slot.${i + 1}`, s, [])),
+
+ // --- About: meta, hero ---
+ T('about.meta.title', 'Insanitylab', []),
+ T('about.meta.description', 'Mission, storia, team e metodo di InsanityLab: un laboratorio esclusivo dove movimento, prevenzione e performance convivono in un approccio personalizzato.', []),
+ T('about.hero.title', 'Insanitylab', []),
+
+ // --- About: mission ---
+ T('about.mission.title', 'Mission'),
+ T('about.mission.body', 'In InsanityLab crediamo che il movimento non debba essere vissuto come un obbligo o un sacrificio, ma come una forma autentica di cura di sé. La nostra missione è accompagnare ogni persona in un percorso di consapevolezza, aiutandola a riscoprire il benessere fisico e mentale attraverso un approccio sostenibile, concreto e duraturo.'),
+ I('about.mission.image'),
+
+ // --- About: direzione + approccio ---
+ T('about.direzione.title', 'Direzione'),
+ T('about.direzione.body', 'Non ci limitiamo ad allenare il corpo: creiamo percorsi personalizzati che uniscono movimento, equilibrio e benessere, attraverso il supporto di professionisti qualificati, programmi su misura e un approccio centrato sulla persona e su risultati duraturi.'),
+ T('about.direzione.cta', 'Scopri'),
+ T('about.approccio.title', 'Approccio'),
+ T('about.approccio.body', 'InsanityLab si distingue per un approccio serio e personalizzato al benessere, basato su competenze specializzate, costanza e cura quotidiana, rivolto a chiunque voglia migliorare il proprio stile di vita in modo consapevole e duraturo.'),
+ T('about.approccio.cta', 'Contattaci'),
+
+ // --- About: about ---
+ T('about.about.title', 'About'),
+ T('about.about.body', "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."),
+ I('about.about.image'),
+
+ // --- About: convenzioni ---
+ T('about.convenzioni.title', 'Convenzioni'),
+ T('about.convenzioni.body', "InsanityLab collabora con aziende, enti e organizzazioni che desiderano investire concretamente nel benessere delle proprie persone, attraverso programmi dedicati alla salute, al movimento e alla qualità della vita. Le convenzioni nascono con l'obiettivo di portare il valore del benessere anche all'interno del contesto professionale, creando percorsi che favoriscano equilibrio fisico, prevenzione e performance quotidiana."),
+ T('about.convenzioni.item1', 'Le realtà convenzionate possono accedere a programmi di welfare aziendale personalizzati, con percorsi individuali, small group training e classi di gruppo seguiti da professionisti qualificati.'),
+ T('about.convenzioni.item2', 'Ogni collaborazione parte da una consulenza gratuita preliminare per analizzare esigenze e obiettivi, così da sviluppare soluzioni efficaci e sostenibili.'),
+ T('about.convenzioni.item3', "Le convenzioni vengono definite su misura insieme a InsanityLab, in base alle caratteristiche e alle necessità dell'azienda partner."),
+ T('about.convenzioni.cta-text', 'Per ricevere maggiori informazioni o attivare una convenzione:', []),
+ I('about.convenzioni.image'),
+
+ // --- About: team ---
+ T('about.team.title', 'Team'),
+ T('about.team.body', 'Il team di InsanityLab riunisce professionisti specializzati in allenamento, salute e benessere, con un approccio multidisciplinare basato su competenza, personalizzazione e attenzione alla persona.'),
+ T('about.team.staff-intro', 'Accanto ai fondatori opera un team in continua crescita composto da trainer e professionisti con specializzazioni complementari:'),
+
+ // --- About: metodo ---
+ T('about.metodo.title', 'Metodo'),
+ T('about.metodo.body', '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.'),
+ T('about.metodo.closing', '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.'),
+ I('about.metodo.image'),
+
+ // --- About: studios ---
+ T('about.studios.title', 'In-Sanity Studios'),
+ T('about.studios.body1', "IN-SANITY STUDIOS è il nuovo spazio professionale nato dall'evoluzione di InsanityLab, dedicato ai professionisti della salute, del benessere e della performance. Più che un semplice insieme di studi professionali, rappresenta un ecosistema multidisciplinare pensato per favorire collaborazione, qualità del servizio e integrazione tra competenze diverse."),
+ T('about.studios.body2', "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."),
+ T('about.studios.body3', '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.'),
+ I('about.studios.image'),
+
+ // --- About: vision ---
+ T('about.vision.title', 'Vision'),
+ T('about.vision.body1', "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."),
+ T('about.vision.body2', "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à."),
+ I('about.vision.image'),
+
+ // --- About: storylab + timeline (Timeline.astro) ---
+ T('about.storylab.title', 'Storylab'),
+ T('about.storylab.body', 'Scopri la nostra storia: come nasce InsanityLab, perché abbiamo deciso di creare qualcosa di diverso e chi sono i visionari che hanno trasformato questa idea in un nuovo modo di vivere benessere, movimento e salute.'),
+ T('about.timeline.label', 'INSANITYLAB 2021-2024', []),
+ T('about.timeline.open-text', "Il percorso di crescita di InsanityLab si è sviluppato attraverso tappe precise e coerenti con la visione iniziale. Nato nel 2021 con un piccolo team e grandi ambizioni, il progetto ha conosciuto una forte evoluzione nel 2024, anno in cui il servizio si è ampliato attraverso nuovi format come gli small group e una sempre maggiore specializzazione nella profilazione fisica del cliente, grazie a sistemi avanzati di valutazione e monitoraggio. Parallelamente, anche l'area dedicata alla riabilitazione e all'esercizio preventivo si è consolidata, ponendo le basi per un importante salto di qualità."),
+ T('about.timeline.stage1.label', 'INSANITYLAB 2025', []),
+ T('about.timeline.stage1.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'),
+ T('about.timeline.stage2.label', 'INSANITYLAB 2026', []),
+ T('about.timeline.stage2.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'),
+ T('about.timeline.stage3.label', 'INSANITYLAB OGGI', []),
+ T('about.timeline.stage3.text', 'Contenuto in arrivo: il cliente fornirà il testo di questa tappa.'),
// I task di estrazione aggiungono qui le entry di header/footer/pagine/data file.
];
export const seedByTag = new Map(contentSeed.map((e) => [e.tag, e]));
diff --git a/src/pages/about.astro b/src/pages/about.astro
index 97d8e76..a3674aa 100644
--- a/src/pages/about.astro
+++ b/src/pages/about.astro
@@ -1,174 +1,181 @@
---
import Base from '../layouts/Base.astro';
import PageHero from '../components/PageHero.astro';
import Timeline from '../components/about/Timeline.astro';
-import { Image } from 'astro:assets';
import { team } from '../data/team';
-import { site } from '../data/site';
+import T from '../components/content/T.astro';
+import TImg from '../components/content/TImg.astro';
+import { t } from '../lib/content';
const images = import.meta.glob<{ default: ImageMetadata }>('../assets/img/*.{jpg,png}', { eager: true });
const imgOf = (name: string) => Object.entries(images).find(([p]) => p.includes(name))?.[1]?.default;
const founders = team.filter((m) => m.founder);
const staff = team.filter((m) => !m.founder);
export const prerender = true;
---
-<Base title="Insanitylab" description="Mission, storia, team e metodo di InsanityLab: un laboratorio esclusivo dove movimento, prevenzione e performance convivono in un approccio personalizzato.">
- <PageHero title="Insanitylab" />
+<Base title={t('about.meta.title')} description={t('about.meta.description')}>
+ <PageHero title={t('about.hero.title')} />
<section class="section">
<div class="container">
<div class="about-img-row">
<div class="about-img-row__text section-heading">
- <h2>Mission</h2>
- <p>In InsanityLab crediamo che il movimento non debba essere vissuto come un obbligo o un sacrificio, ma come una forma autentica di cura di sé. La nostra missione è accompagnare ogni persona in un percorso di consapevolezza, aiutandola a riscoprire il benessere fisico e mentale attraverso un approccio sostenibile, concreto e duraturo.</p>
+ <T tag="about.mission.title" as="h2" />
+ <T tag="about.mission.body" as="p" />
</div>
{imgOf('about-training-group') && (
<div class="about-img-row__img">
- <Image src={imgOf('about-training-group')!} alt="Training group InsanityLab" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
+ <TImg tag="about.mission.image" src={imgOf('about-training-group')!} alt="Training group InsanityLab" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
</div>
)}
</div>
</div>
</section>
<section class="section section--alt">
<div class="container about-2col">
<div>
- <h2>Direzione</h2>
- <p>Non ci limitiamo ad allenare il corpo: creiamo percorsi personalizzati che uniscono movimento, equilibrio e benessere, attraverso il supporto di professionisti qualificati, programmi su misura e un approccio centrato sulla persona e su risultati duraturi.</p>
- <a class="btn" href="/programs">Scopri</a>
+ <T tag="about.direzione.title" as="h2" />
+ <T tag="about.direzione.body" as="p" />
+ <a class="btn" href="/programs">{t('about.direzione.cta')}</a>
</div>
<div>
- <h2>Approccio</h2>
- <p>InsanityLab si distingue per un approccio serio e personalizzato al benessere, basato su competenze specializzate, costanza e cura quotidiana, rivolto a chiunque voglia migliorare il proprio stile di vita in modo consapevole e duraturo.</p>
- <a class="btn btn--dark" href="/contact">Contattaci</a>
+ <T tag="about.approccio.title" as="h2" />
+ <T tag="about.approccio.body" as="p" />
+ <a class="btn btn--dark" href="/contact">{t('about.approccio.cta')}</a>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="about-img-row about-img-row--reverse">
<div class="about-img-row__text section-heading">
- <h2>About</h2>
- <p>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.</p>
+ <T tag="about.about.title" as="h2" />
+ <T tag="about.about.body" as="p" />
</div>
{imgOf('about-pushup') && (
<div class="about-img-row__img about-img-row__img--native">
- <Image src={imgOf('about-pushup')!} alt="Allenamento InsanityLab" widths={[320, 640]} sizes="320px" />
+ <TImg tag="about.about.image" src={imgOf('about-pushup')!} alt="Allenamento InsanityLab" widths={[320, 640]} sizes="320px" />
</div>
)}
</div>
</div>
</section>
<Timeline />
<section class="section section--dark">
<div class="container">
<div class="section-heading">
- <h2>Convenzioni</h2>
- <p>InsanityLab collabora con aziende, enti e organizzazioni che desiderano investire concretamente nel benessere delle proprie persone, attraverso programmi dedicati alla salute, al movimento e alla qualità della vita. Le convenzioni nascono con l'obiettivo di portare il valore del benessere anche all'interno del contesto professionale, creando percorsi che favoriscano equilibrio fisico, prevenzione e performance quotidiana.</p>
+ <T tag="about.convenzioni.title" as="h2" />
+ <T tag="about.convenzioni.body" as="p" />
</div>
<ul class="conv">
- <li>Le realtà convenzionate possono accedere a programmi di welfare aziendale personalizzati, con percorsi individuali, small group training e classi di gruppo seguiti da professionisti qualificati.</li>
- <li>Ogni collaborazione parte da una consulenza gratuita preliminare per analizzare esigenze e obiettivi, così da sviluppare soluzioni efficaci e sostenibili.</li>
- <li>Le convenzioni vengono definite su misura insieme a InsanityLab, in base alle caratteristiche e alle necessità dell'azienda partner.</li>
+ <T tag="about.convenzioni.item1" as="li" />
+ <T tag="about.convenzioni.item2" as="li" />
+ <T tag="about.convenzioni.item3" as="li" />
</ul>
- <p class="conv__cta">Per ricevere maggiori informazioni o attivare una convenzione: {site.email} · {site.phone}</p>
+ <p class="conv__cta">{t('about.convenzioni.cta-text')} {t('global.contact.email')} · {t('global.contact.phone')}</p>
{imgOf('about-conventions') && (
<div class="round-img">
- <Image src={imgOf('about-conventions')!} alt="Convenzioni aziendali" widths={[360, 720]} sizes="360px" />
+ <TImg tag="about.convenzioni.image" src={imgOf('about-conventions')!} alt="Convenzioni aziendali" widths={[360, 720]} sizes="360px" />
</div>
)}
</div>
</section>
<section class="section">
<div class="container">
<div class="section-heading">
- <h2>Team</h2>
- <p>Il team di InsanityLab riunisce professionisti specializzati in allenamento, salute e benessere, con un approccio multidisciplinare basato su competenza, personalizzazione e attenzione alla persona.</p>
+ <T tag="about.team.title" as="h2" />
+ <T tag="about.team.body" as="p" />
</div>
<div class="tgrid tgrid--founders">
- {founders.map((m) => (
- <article class="tcard">
- {m.imageAbout && imgOf(m.imageAbout) && <Image src={imgOf(m.imageAbout)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
- <h3>{m.shortName}</h3>
- <p class="tcard__role">{m.role}</p>
- <p>{m.bio}</p>
- </article>
- ))}
+ {founders.map((m) => {
+ const slug = m.shortName.toLowerCase();
+ return (
+ <article class="tcard">
+ {m.imageAbout && imgOf(m.imageAbout) && <TImg tag={`team.${slug}.image-about`} src={imgOf(m.imageAbout)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
+ <T tag={`team.${slug}.short-name`} as="h3" />
+ <T tag={`team.${slug}.role`} as="p" class="tcard__role" />
+ <T tag={`team.${slug}.bio`} as="p" />
+ </article>
+ );
+ })}
</div>
- <p class="section-heading" style="margin-top:60px">Accanto ai fondatori opera un team in continua crescita composto da trainer e professionisti con specializzazioni complementari:</p>
+ <p class="section-heading" style="margin-top:60px">{t('about.team.staff-intro')}</p>
<div class="tgrid">
- {staff.map((m) => (
- <article class="tcard">
- {m.imageAbout && imgOf(m.imageAbout) && <Image src={imgOf(m.imageAbout)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
- <h3>{m.shortName}</h3>
- <p class="tcard__role">{m.role}</p>
- <p>{m.bio}</p>
- </article>
- ))}
+ {staff.map((m) => {
+ const slug = m.shortName.toLowerCase();
+ return (
+ <article class="tcard">
+ {m.imageAbout && imgOf(m.imageAbout) && <TImg tag={`team.${slug}.image-about`} src={imgOf(m.imageAbout)!} alt={m.name} widths={[300, 500]} sizes="(max-width:767px) 100vw, 33vw" />}
+ <T tag={`team.${slug}.short-name`} as="h3" />
+ <T tag={`team.${slug}.role`} as="p" class="tcard__role" />
+ <T tag={`team.${slug}.bio`} as="p" />
+ </article>
+ );
+ })}
</div>
</div>
</section>
<section class="section section--alt">
<div class="container">
<div class="section-heading">
- <h2>Metodo</h2>
- <p>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.</p>
+ <T tag="about.metodo.title" as="h2" />
+ <T tag="about.metodo.body" as="p" />
</div>
<div class="about-img-row">
<div class="about-img-row__text section-heading">
- <p>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.</p>
+ <T tag="about.metodo.closing" as="p" />
</div>
{imgOf('about-team-group') && (
<div class="round-img">
- <Image src={imgOf('about-team-group')!} alt="Il team InsanityLab" widths={[360, 720]} sizes="360px" />
+ <TImg tag="about.metodo.image" src={imgOf('about-team-group')!} alt="Il team InsanityLab" widths={[360, 720]} sizes="360px" />
</div>
)}
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="about-img-row">
<div class="about-img-row__text section-heading">
- <h2>In-Sanity Studios</h2>
- <p>IN-SANITY STUDIOS è il nuovo spazio professionale nato dall'evoluzione di InsanityLab, dedicato ai professionisti della salute, del benessere e della performance. Più che un semplice insieme di studi professionali, rappresenta un ecosistema multidisciplinare pensato per favorire collaborazione, qualità del servizio e integrazione tra competenze diverse.</p>
- <p>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.</p>
- <p>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.</p>
+ <T tag="about.studios.title" as="h2" />
+ <T tag="about.studios.body1" as="p" />
+ <T tag="about.studios.body2" as="p" />
+ <T tag="about.studios.body3" as="p" />
</div>
{imgOf('about-studios') && (
<div class="about-img-row__img">
- <Image src={imgOf('about-studios')!} alt="In-Sanity Studios" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
+ <TImg tag="about.studios.image" src={imgOf('about-studios')!} alt="In-Sanity Studios" widths={[600, 900]} sizes="(max-width:767px) 100vw, 50vw" />
</div>
)}
</div>
</div>
</section>
<section class="section section--alt">
<div class="container">
<div class="about-img-row">
{imgOf('about-vision') && (
<div class="round-img">
- <Image src={imgOf('about-vision')!} alt="La comunità InsanityLab" widths={[360, 720]} sizes="360px" />
+ <TImg tag="about.vision.image" src={imgOf('about-vision')!} alt="La comunità InsanityLab" widths={[360, 720]} sizes="360px" />
</div>
)}
<div class="about-img-row__text section-heading">
- <h2>Vision</h2>
- <p>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.</p>
- <p>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à.</p>
+ <T tag="about.vision.title" as="h2" />
+ <T tag="about.vision.body1" as="p" />
+ <T tag="about.vision.body2" as="p" />
</div>
</div>
</div>
</section>
</Base>
<style>
.about-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; }
.about-img-row { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
.about-img-row--reverse { direction: rtl; }