Services

/* ── ELEMENTOR FULL-BLEED WRAPPER ── */ .e3c-wrap { position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; width: 100vw; max-width: 100vw; overflow-x: hidden; } html, body { overflow-x: hidden; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { –green: #00c853; –green-dark: #007a32; –green-glow: rgba(0,200,83,0.15); –gold: #f4b942; –bg: #060d12; –bg2: #0b1620; –card: #0f1e2a; –border: rgba(0,200,83,0.18); –text: #dceee3; –muted: #7a9b85; –white: #ffffff; –radius: 14px; –nav-h: 72px; } html { scroll-behavior: smooth; } body { font-family: ‘Inter’, sans-serif; background: var(–bg); color: var(–text); overflow-x: hidden; line-height: 1.7; } ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: var(–bg); } ::-webkit-scrollbar-thumb { background: var(–green-dark); border-radius: 3px; } /* ── NAV ── */ .nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; height: var(–nav-h); display: flex; align-items: center; justify-content: space-between; padding: 0 5%; transition: background .35s, backdrop-filter .35s, box-shadow .35s; } .nav.scrolled { background: rgba(6,13,18,.88); backdrop-filter: blur(18px); box-shadow: 0 1px 0 var(–border); } .nav-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; } .nav-logo-icon { width: 40px; height: 40px; background: linear-gradient(135deg, var(–green), var(–green-dark)); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 900; color: #fff; font-family: ‘Space Grotesk’, sans-serif; letter-spacing: -1px; } .nav-logo-text { font-family: ‘Space Grotesk’, sans-serif; font-size: 1.15rem; font-weight: 700; color: var(–white); line-height: 1.1; } .nav-logo-text span { color: var(–green); } .nav-links { display: flex; align-items: center; gap: 2rem; list-style: none; } .nav-links a { text-decoration: none; color: var(–text); font-size: .9rem; font-weight: 500; transition: color .2s; position: relative; padding-bottom: 3px; } .nav-links a::after { content:  »; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: var(–green); transition: width .3s; } .nav-links a:hover { color: var(–white); } .nav-links a:hover::after { width: 100%; } .nav-links a.active { color: var(–green); } .nav-links a.active::after { width: 100%; } .nav-cta { background: var(–green); color: #000 !important; padding: .45rem 1.2rem !important; border-radius: 50px; font-weight: 600 !important; } .nav-cta::after { display: none !important; } .nav-cta:hover { background: #00e05e !important; transform: translateY(-1px); } .nav-burger { display: none; flex-direction: column; gap: 5px; cursor: pointer; padding: 4px; } .nav-burger span { display: block; width: 26px; height: 2px; background: var(–text); border-radius: 2px; transition: all .3s; } .nav-mobile { display: none; position: fixed; top: var(–nav-h); left: 0; right: 0; background: rgba(6,13,18,.97); backdrop-filter: blur(18px); padding: 1.5rem 5% 2rem; border-top: 1px solid var(–border); z-index: 999; } .nav-mobile.open { display: block; } .nav-mobile ul { list-style: none; display: flex; flex-direction: column; gap: 1.2rem; } .nav-mobile a { text-decoration: none; color: var(–text); font-size: 1.1rem; font-weight: 500; transition: color .2s; } .nav-mobile a:hover { color: var(–green); } /* ── COMMUNS ── */ .section-tag { display: inline-flex; align-items: center; gap: 6px; color: var(–green); font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; margin-bottom: .8rem; } .section-tag::before { content:  »; display: block; width: 20px; height: 2px; background: var(–green); } .section-title { font-family: ‘Space Grotesk’, sans-serif; font-size: clamp(1.8rem, 3.5vw, 2.6rem); font-weight: 700; color: var(–white); line-height: 1.2; margin-bottom: 1rem; } .section-desc { font-size: 1rem; color: var(–muted); line-height: 1.9; } .anim { opacity: 0; transform: translateY(30px); transition: opacity .7s ease, transform .7s ease; } .anim.visible { opacity: 1; transform: translateY(0); } .anim-delay-1 { transition-delay: .1s; } .anim-delay-2 { transition-delay: .2s; } .anim-delay-3 { transition-delay: .3s; } .anim-delay-4 { transition-delay: .4s; } .btn-primary { display: inline-flex; align-items: center; gap: 8px; background: var(–green); color: #000; padding: .85rem 2rem; border-radius: 50px; font-weight: 700; font-size: .95rem; text-decoration: none; transition: all .25s; } .btn-primary:hover { background: #00e05e; transform: translateY(-2px); box-shadow: 0 8px 30px rgba(0,200,83,.35); } .btn-outline { display: inline-flex; align-items: center; gap: 8px; background: transparent; color: var(–white); padding: .85rem 2rem; border-radius: 50px; font-weight: 600; font-size: .95rem; text-decoration: none; transition: all .25s; border: 1px solid rgba(255,255,255,.2); } .btn-outline:hover { border-color: var(–green); color: var(–green); background: var(–green-glow); } /* ══ HERO PODCAST ══ */ .podcast-hero { min-height: 92vh; display: flex; align-items: center; padding: calc(var(–nav-h) + 60px) 5% 80px; position: relative; overflow: hidden; background: var(–bg); } .podcast-hero-bg { position: absolute; inset: 0; background: radial-gradient(ellipse 60% 70% at 70% 50%, rgba(0,100,40,.3) 0%, transparent 65%), radial-gradient(ellipse 40% 40% at 15% 70%, rgba(0,200,83,.07) 0%, transparent 60%), var(–bg); } .podcast-hero-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(0,200,83,.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0,200,83,.03) 1px, transparent 1px); background-size: 60px 60px; } .podcast-hero-inner { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; width: 100%; } /* Left — text */ .podcast-show-label { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,0,0,.12); border: 1px solid rgba(255,0,0,.25); color: #ff4444; font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; padding: .35rem 1rem; border-radius: 50px; margin-bottom: 1.2rem; animation: fade-up .8s ease both; } .podcast-show-label i { font-size: .75rem; } .podcast-hero-title { font-family: ‘Space Grotesk’, sans-serif; font-size: clamp(2.6rem, 5vw, 4rem); font-weight: 900; color: var(–white); line-height: 1.05; margin-bottom: .6rem; animation: fade-up .8s ease .1s both; } .podcast-hero-title .tge { color: var(–green); } .podcast-hero-tagline { font-family: ‘Space Grotesk’, sans-serif; font-size: 1rem; font-weight: 600; color: var(–muted); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 1.5rem; animation: fade-up .8s ease .2s both; } .podcast-hero-desc { font-size: 1.05rem; color: var(–muted); max-width: 520px; margin-bottom: 2.5rem; line-height: 1.9; animation: fade-up .8s ease .3s both; } .podcast-hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; animation: fade-up .8s ease .4s both; } .btn-youtube { display: inline-flex; align-items: center; gap: 8px; background: #ff0000; color: #fff; padding: .85rem 2rem; border-radius: 50px; font-weight: 700; font-size: .95rem; text-decoration: none; transition: all .25s; } .btn-youtube:hover { background: #cc0000; transform: translateY(-2px); box-shadow: 0 8px 30px rgba(255,0,0,.3); } /* Stats pills */ .podcast-stats { display: flex; gap: 2rem; margin-top: 2.5rem; flex-wrap: wrap; animation: fade-up .8s ease .5s both; } .podcast-stat { text-align: center; } .podcast-stat-num { font-family: ‘Space Grotesk’, sans-serif; font-size: 1.8rem; font-weight: 800; color: var(–green); line-height: 1; } .podcast-stat-label { font-size: .75rem; color: var(–muted); margin-top: .2rem; } /* Right — featured episode card */ .podcast-featured { background: linear-gradient(135deg, #001a0d, #002b15); border: 1px solid var(–border); border-radius: 20px; overflow: hidden; animation: fade-up .9s ease .35s both; position: relative; } .podcast-featured-img { width: 100%; aspect-ratio: 16/9; object-fit: cover; display: block; } .podcast-featured-overlay { position: absolute; top: 0; left: 0; right: 0; aspect-ratio: 16/9; background: linear-gradient(to bottom, transparent 40%, rgba(0,10,6,.85) 100%); } .podcast-featured-play { position: absolute; top: calc(9/16 * 50% – 28px); left: 50%; transform: translate(-50%, -50%); width: 56px; height: 56px; border-radius: 50%; background: rgba(0,200,83,.9); color: #000; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; box-shadow: 0 0 30px rgba(0,200,83,.5); transition: transform .2s, box-shadow .2s; cursor: pointer; } .podcast-featured-play:hover { transform: translate(-50%,-50%) scale(1.1); box-shadow: 0 0 40px rgba(0,200,83,.7); } .podcast-featured-info { padding: 1.5rem; } .podcast-featured-ep { font-size: .75rem; color: var(–green); font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; margin-bottom: .4rem; } .podcast-featured-title { font-family: ‘Space Grotesk’, sans-serif; font-size: 1.15rem; font-weight: 700; color: var(–white); margin-bottom: .4rem; } .podcast-featured-guest { font-size: .85rem; color: var(–muted); } .podcast-featured-guest span { color: var(–text); font-weight: 600; } /* ══ CONCEPT ══ */ .concept-section { padding: 90px 5%; background: var(–bg2); border-top: 1px solid var(–border); border-bottom: 1px solid var(–border); } .concept-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; } .concept-text p { color: var(–muted); line-height: 1.9; margin-bottom: 1.1rem; font-size: .97rem; } .concept-pillars { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin-top: 2rem; } .concept-pillar { background: var(–card); border: 1px solid var(–border); border-radius: 10px; padding: 1rem 1.2rem; display: flex; align-items: center; gap: .8rem; } .concept-pillar i { color: var(–green); font-size: 1rem; width: 20px; text-align: center; } .concept-pillar span { font-size: .85rem; font-weight: 600; color: var(–text); } /* Thèmes tags */ .themes-wrap { display: flex; flex-direction: column; gap: 1rem; } .theme-tag-row { display: flex; flex-wrap: wrap; gap: .6rem; } .theme-tag { background: var(–card); border: 1px solid var(–border); color: var(–text); font-size: .82rem; font-weight: 500; padding: .4rem 1rem; border-radius: 50px; transition: all .2s; } .theme-tag:hover { border-color: var(–green); color: var(–green); } .theme-tag.highlight { background: var(–green-glow); border-color: rgba(0,200,83,.4); color: var(–green); } /* ══ ÉPISODES ══ */ .episodes-section { padding: 90px 5%; } .episodes-header { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 3rem; flex-wrap: wrap; gap: 1rem; } .episodes-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; } .episode-card { background: var(–card); border: 1px solid var(–border); border-radius: 18px; overflow: hidden; transition: all .3s; cursor: pointer; text-decoration: none; color: inherit; display: block; } .episode-card:hover { border-color: rgba(0,200,83,.4); transform: translateY(-5px); box-shadow: 0 16px 40px rgba(0,0,0,.4); } .episode-card-thumb { position: relative; aspect-ratio: 16/9; overflow: hidden; } .episode-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s; } .episode-card:hover .episode-card-thumb img { transform: scale(1.04); } .episode-card-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 40%, rgba(0,5,3,.7) 100%); } .episode-card-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 48px; height: 48px; border-radius: 50%; background: rgba(0,200,83,.85); color: #000; display: flex; align-items: center; justify-content: center; font-size: .95rem; box-shadow: 0 0 20px rgba(0,200,83,.4); opacity: 0; transition: opacity .3s, transform .3s; } .episode-card:hover .episode-card-play { opacity: 1; transform: translate(-50%,-50%) scale(1.05); } .episode-card-body { padding: 1.5rem; } .episode-card-meta { display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem; } .episode-tag { background: var(–green-glow); border: 1px solid var(–border); color: var(–green); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; padding: .2rem .7rem; border-radius: 50px; } .episode-num { font-size: .75rem; color: var(–muted); font-weight: 600; } .episode-card-title { font-family: ‘Space Grotesk’, sans-serif; font-size: 1.1rem; font-weight: 700; color: var(–white); margin-bottom: .5rem; line-height: 1.3; } .episode-card-guest { display: flex; align-items: center; gap: .6rem; margin-bottom: .8rem; } .episode-guest-avatar { width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(135deg, var(–green-dark), var(–green)); display: flex; align-items: center; justify-content: center; font-size: .65rem; font-weight: 800; color: #fff; font-family: ‘Space Grotesk’, sans-serif; flex-shrink: 0; } .episode-guest-name { font-size: .85rem; font-weight: 600; color: var(–text); } .episode-guest-title { font-size: .75rem; color: var(–muted); } .episode-card-desc { font-size: .83rem; color: var(–muted); line-height: 1.7; } .episode-card-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid var(–border); } .episode-yt-link { display: inline-flex; align-items: center; gap: 6px; color: #ff4444; font-size: .82rem; font-weight: 600; text-decoration: none; transition: color .2s; } .episode-yt-link:hover { color: #ff6666; } /* ══ YOUTUBE CTA ══ */ .yt-section { background: linear-gradient(135deg, #0d0000 0%, #1a0000 50%, #0d0000 100%); border-top: 1px solid rgba(255,0,0,.15); border-bottom: 1px solid rgba(255,0,0,.15); padding: 80px 5%; text-align: center; position: relative; overflow: hidden; } .yt-section::before { content:  »; position: absolute; inset: 0; background: repeating-linear-gradient(45deg, transparent, transparent 30px, rgba(255,0,0,.02) 30px, rgba(255,0,0,.02) 31px); } .yt-icon { width: 80px; height: 80px; border-radius: 20px; background: #ff0000; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 2.2rem; margin: 0 auto 1.5rem; box-shadow: 0 0 40px rgba(255,0,0,.4); position: relative; z-index: 1; animation: pulse-red 2.5s ease-in-out infinite; } @keyframes pulse-red { 0%,100% { box-shadow: 0 0 30px rgba(255,0,0,.3); } 50% { box-shadow: 0 0 60px rgba(255,0,0,.6); } } .yt-section .section-title { position: relative; z-index: 1; } .yt-section .section-desc { position: relative; z-index: 1; max-width: 560px; margin: 0 auto 2.5rem; text-align: center; } .yt-section .cta-actions { position: relative; z-index: 1; display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; } /* ══ THÈMES ABORDÉS ══ */ .themes-section { padding: 90px 5%; background: var(–bg2); border-top: 1px solid var(–border); border-bottom: 1px solid var(–border); } .themes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; margin-top: 3rem; } .theme-card { background: var(–card); border: 1px solid var(–border); border-radius: var(–radius); padding: 1.5rem; transition: all .3s; } .theme-card:hover { border-color: rgba(0,200,83,.4); transform: translateY(-4px); } .theme-card-icon { font-size: 1.6rem; margin-bottom: .8rem; } .theme-card-title { font-family: ‘Space Grotesk’, sans-serif; font-size: .95rem; font-weight: 700; color: var(–white); margin-bottom: .4rem; } .theme-card-desc { font-size: .82rem; color: var(–muted); line-height: 1.7; } /* ══ PARTICIPER ══ */ .participate-section { padding: 90px 5%; } .participate-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; } .participate-text p { color: var(–muted); line-height: 1.9; margin-bottom: 1rem; font-size: .97rem; } .participate-card { background: linear-gradient(160deg, var(–bg2), var(–card)); border: 1px solid var(–border); border-radius: 20px; padding: 2.5rem; } .participate-card-title { font-family: ‘Space Grotesk’, sans-serif; font-size: 1.1rem; font-weight: 700; color: var(–white); margin-bottom: 1.5rem; } .participate-steps { display: flex; flex-direction: column; gap: 1rem; } .participate-step { display: flex; gap: 1rem; align-items: flex-start; } .participate-step-num { width: 32px; height: 32px; border-radius: 50%; background: var(–green-glow); border: 1px solid var(–border); color: var(–green); font-family: ‘Space Grotesk’, sans-serif; font-size: .8rem; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .participate-step-text { font-size: .88rem; color: var(–text); line-height: 1.6; padding-top: .3rem; } /* ══ CTA ══ */ .cta-section { text-align: center; padding: 90px 5%; } .cta-section .section-desc { margin: 0 auto 2.5rem; max-width: 560px; text-align: center; } .cta-actions { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; } /* ── FOOTER ── */ footer { background: #030a0d; border-top: 1px solid var(–border); padding: 50px 5% 30px; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; margin-bottom: 3rem; } .footer-about p { font-size: .87rem; color: var(–muted); margin-top: .8rem; line-height: 1.8; } .footer-socials { display: flex; gap: .8rem; margin-top: 1.2rem; } .footer-social { width: 36px; height: 36px; border-radius: 8px; background: var(–card); border: 1px solid var(–border); display: flex; align-items: center; justify-content: center; color: var(–muted); font-size: .9rem; text-decoration: none; transition: all .2s; } .footer-social:hover { background: var(–green-glow); color: var(–green); } .footer-col h4 { font-size: .85rem; font-weight: 700; color: var(–white); text-transform: uppercase; letter-spacing: 1.5px; margin-bottom: 1rem; } .footer-col ul { list-style: none; display: flex; flex-direction: column; gap: .6rem; } .footer-col a { text-decoration: none; color: var(–muted); font-size: .85rem; transition: color .2s; } .footer-col a:hover { color: var(–green); } .footer-bottom { border-top: 1px solid var(–border); padding-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer-bottom p { font-size: .8rem; color: var(–muted); } .footer-bottom span { color: var(–green); } @keyframes fade-up { from { opacity: 0; transform: translateY(25px); } to { opacity: 1; transform: translateY(0); } } /* ── RESPONSIVE ── */ @media (max-width: 1000px) { .podcast-hero-inner { grid-template-columns: 1fr; gap: 3rem; } .concept-grid { grid-template-columns: 1fr; gap: 3rem; } .participate-grid { grid-template-columns: 1fr; gap: 3rem; } .episodes-grid { grid-template-columns: 1fr 1fr; } .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; } .page-hero, .podcast-hero { padding: calc(var(–nav-h) + 50px) 5% 50px; } } @media (max-width: 700px) { .nav-links { display: none; } .nav-burger { display: flex; } section { padding: 55px 5%; } .episodes-grid { grid-template-columns: 1fr; } .concept-pillars { grid-template-columns: 1fr 1fr; } .footer-grid { grid-template-columns: 1fr; } .podcast-stats { flex-wrap: wrap; gap: 1.2rem; } } @media (max-width: 500px) { section { padding: 45px 5%; } .concept-pillars { grid-template-columns: 1fr; } .yt-section .cta-actions { flex-direction: column; align-items: center; } .yt-section .cta-actions a { width: 100%; max-width: 300px; justify-content: center; } }
Podcast vidéo · YouTube

The Green
Experience

Par E3C · Énergie · Climat · Afrique

Des conversations profondes avec les experts qui façonnent la transition énergétique et climatique en Afrique. Chaque épisode, une nouvelle perspective sur les défis et les solutions qui construisent un futur durable.

4+
Épisodes
100%
Gratuit
Expert
Invités de haut niveau

Une émission au cœur
de la transition verte

The Green Experience est le podcast vidéo d’E3C — Centre de l’Energie et du Changement Climatique. Disponible sur YouTube, chaque épisode réunit un expert de haut niveau autour des grandes questions de l’énergie, du climat et du développement durable en Afrique.

Finance climatique, agriculture intelligente, marché carbone, énergies renouvelables, politique environnementale… Autant de sujets traités avec rigueur et accessibilité, pour informer, éduquer et inspirer les acteurs du changement.

Interviews d’experts
Format vidéo YouTube
Thèmes verts & climat
Focus Afrique
Marché carbone Agriculture climato-intelligente Finance verte
Énergies renouvelables Politique climatique Biodiversité
Souveraineté énergétique Économie verte Résilience climatique
Valorisation du Typha Emplois verts Innovation locale

Toutes les conversations

Voir sur YouTube

Tous les épisodes sur YouTube

Abonnez-vous à la chaîne YouTube d’E3C pour ne manquer aucun épisode de The Green Experience et rejoindre une communauté passionnée par la transition verte en Afrique.

Les grands sujets
de la transition verte

Chaque épisode explore une dimension clé du changement climatique et de l’énergie durable en Afrique.

💰
Finance climatique

Marchés carbone, fonds verts internationaux, mécanismes de financement innovants pour les projets durables en Afrique.

🌾
Agriculture durable

Agriculture climato-intelligente, adaptation des pratiques agricoles aux chocs climatiques, sécurité alimentaire.

Énergies renouvelables

Solaire, éolien, biomasse — les technologies propres qui permettent à l’Afrique de prendre son indépendance énergétique.

🏛️
Politiques publiques

Régulations, engagements climatiques nationaux, rôle des institutions dans l’accélération de la transition énergétique.

🌍
Résilience climatique

Adaptation aux effets du dérèglement climatique, protection des populations vulnérables et des écosystèmes.

🔬
Innovation locale

Solutions technologiques africaines, valorisation des ressources locales, économie circulaire et emplois verts.

Vous êtes expert ?
Participez au podcast

The Green Experience est toujours à la recherche de nouvelles voix expertes sur les enjeux climatiques et énergétiques en Afrique. Si vous êtes chercheur, professionnel, décideur ou acteur de terrain, votre expérience mérite d’être partagée.

Contactez notre équipe de production pour discuter d’une participation à un prochain épisode. Nous accueillons des profils variés issus des secteurs public, privé, académique et de la société civile.

Comment ça se passe ?
01
Vous nous contactez via le formulaire de contact en précisant votre domaine d’expertise.
02
Notre équipe revient vers vous pour définir ensemble le sujet et le format de l’épisode.
03
Enregistrement dans notre studio à Dakar ou en visioconférence selon votre disponibilité.
04
L’épisode est produit, monté et publié sur notre chaîne YouTube avec promotion sur nos réseaux.

Ne manquez aucun épisode

Suivez E3C sur YouTube et nos réseaux sociaux pour être informé en premier de la sortie des nouveaux épisodes de The Green Experience.

const navbar = document.getElementById(‘navbar’); window.addEventListener(‘scroll’, () => { navbar.classList.toggle(‘scrolled’, window.scrollY > 50); }); function toggleMenu() { document.getElementById(‘navMobile’).classList.toggle(‘open’); } const observer = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add(‘visible’); observer.unobserve(e.target); } }); }, { threshold: 0.12 }); document.querySelectorAll(‘.anim’).forEach(el => observer.observe(el));