Galerie

À propos | AeroWave *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { –navy: #0d1117; –navy-mid: #141b24; –sand: #c8b89a; –sand-light: #e8ddd0; –white: #f5f2ee; –gold: #b89a5a; –gold-light: #d4b87a; –text: #d4cfc9; –text-dim: #8a857e; –font-display: ‘Cormorant Garamond’, serif; –font-body: ‘Outfit’, sans-serif; } html { scroll-behavior: smooth; } body { background: var(–navy); color: var(–text); font-family: var(–font-body); font-weight: 300; overflow-x: hidden; } /* ───── PROMO BAR ───── */ .promo-bar { background: var(–gold); color: var(–navy); text-align: center; padding: 10px 20px; font-size: .82rem; font-weight: 500; letter-spacing: .06em; } .promo-bar strong { font-weight: 700; } /* ───── NAV ───── */ nav { position: sticky; top: 0; z-index: 100; background: rgba(13,17,23,.92); backdrop-filter: blur(14px); border-bottom: 1px solid rgba(184,154,90,.18); padding: 0 48px; display: flex; align-items: center; justify-content: space-between; height: 68px; } .nav-logo img { height: 44px; } .nav-links { display: flex; gap: 32px; list-style: none; } .nav-links a { color: var(–text-dim); text-decoration: none; font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; transition: color .25s; } .nav-links a:hover, .nav-links a.active { color: var(–gold-light); } .nav-icons { display: flex; gap: 20px; align-items: center; } .nav-icons a { color: var(–text-dim); text-decoration: none; font-size: .9rem; transition: color .25s; } .nav-icons a:hover { color: var(–gold-light); } /* ───── HERO ───── */ .hero { position: relative; min-height: 68vh; display: flex; align-items: flex-end; padding: 0 80px 72px; overflow: hidden; } .hero-bg { position: absolute; inset: 0; background: url(‘https://projet2.tc-vannes.fr/wp-content/uploads/g1eb99bd87a89125751b86088343191ccfae9dbef2ff73d466fb229d1b15eec4916c1bbcb21d6396b6e68b017998384069cdedfdb9a703c0cb87b05ed66efc214_1280-3748669-1024×682.jpg’) center/cover no-repeat; filter: brightness(.38) saturate(.7); transform: scale(1.04); transition: transform 8s ease; } .hero:hover .hero-bg { transform: scale(1.0); } .hero-overlay { position: absolute; inset: 0; background: linear-gradient(to top, var(–navy) 0%, transparent 60%); } .hero-grain { position: absolute; inset: 0; opacity: .04; background-image: url(« data:image/svg+xml,%3Csvg viewBox=’0 0 200 200′ xmlns=’http://www.w3.org/2000/svg’%3E%3Cfilter id=’n’%3E%3CfeTurbulence type=’fractalNoise’ baseFrequency=’.9′ numOctaves=’4’/%3E%3C/filter%3E%3Crect width=’100%25′ height=’100%25′ filter=’url(%23n)’/%3E%3C/svg%3E »); background-size: 200px; } .hero-content { position: relative; max-width: 700px; } .hero-label { font-family: var(–font-body); font-size: .72rem; letter-spacing: .25em; text-transform: uppercase; color: var(–gold); margin-bottom: 20px; opacity: 0; animation: fadeUp .7s .2s forwards; } .hero-title { font-family: var(–font-display); font-size: clamp(3.2rem, 7vw, 6rem); font-weight: 300; line-height: 1.05; color: var(–white); opacity: 0; animation: fadeUp .8s .4s forwards; } .hero-title em { font-style: italic; color: var(–sand); } .hero-sub { margin-top: 24px; font-size: 1rem; line-height: 1.75; color: var(–text-dim); max-width: 560px; opacity: 0; animation: fadeUp .8s .6s forwards; } @keyframes fadeUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } } /* ───── SECTION BASE ───── */ section { padding: 96px 80px; } .section-inner { max-width: 1120px; margin: 0 auto; } .section-label { font-size: .72rem; letter-spacing: .25em; text-transform: uppercase; color: var(–gold); margin-bottom: 18px; } h2 { font-family: var(–font-display); font-size: clamp(2rem, 4vw, 3.4rem); font-weight: 300; color: var(–white); line-height: 1.15; } h2 em { font-style: italic; color: var(–sand); } .divider { width: 48px; height: 1px; background: var(–gold); margin: 28px 0; opacity: .5; } /* ───── VISION ───── */ .vision { background: var(–navy-mid); } .vision-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; } .vision-text p { font-size: 1.05rem; line-height: 1.85; color: var(–text); margin-bottom: 16px; } .vision-image { position: relative; border-radius: 2px; overflow: hidden; } .vision-image img { width: 100%; display: block; filter: saturate(.8) brightness(.9); transition: transform .6s ease, filter .6s ease; } .vision-image:hover img { transform: scale(1.04); filter: saturate(1) brightness(1); } .vision-image::before { content:  »; position: absolute; inset: 0; border: 1px solid rgba(184,154,90,.22); z-index: 1; pointer-events: none; } /* ───── STATS ───── */ .stats { background: var(–navy); padding: 64px 80px; } .stats-grid { max-width: 1120px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; } .stat-item { padding: 52px 40px; border: 1px solid rgba(184,154,90,.14); text-align: center; position: relative; overflow: hidden; transition: border-color .3s; } .stat-item:hover { border-color: rgba(184,154,90,.45); } .stat-item::after { content:  »; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(184,154,90,.04) 0%, transparent 60%); opacity: 0; transition: opacity .3s; } .stat-item:hover::after { opacity: 1; } .stat-number { font-family: var(–font-display); font-size: clamp(3rem, 6vw, 5rem); font-weight: 300; color: var(–gold-light); line-height: 1; display: block; } .stat-label { font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: var(–text-dim); margin-top: 12px; } /* ───── HISTOIRE ───── */ .histoire { background: var(–navy-mid); } .histoire-layout { display: grid; grid-template-columns: 5fr 4fr; gap: 80px; align-items: start; } .histoire-text p { font-size: 1.05rem; line-height: 1.85; color: var(–text); margin-bottom: 20px; } .histoire-image { position: sticky; top: 90px; border-radius: 2px; overflow: hidden; } .histoire-image img { width: 100%; display: block; filter: saturate(.75) brightness(.85); } .histoire-image::before { content:  »; position: absolute; inset: 0; border: 1px solid rgba(184,154,90,.2); pointer-events: none; z-index: 1; } /* ───── VALEURS ───── */ .valeurs { background: var(–navy); } .valeurs-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: 52px; } .valeur-card { padding: 52px 40px; border: 1px solid rgba(184,154,90,.12); position: relative; overflow: hidden; transition: border-color .35s; } .valeur-card::before { content:  »; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(–gold) 0%, transparent 100%); transform: scaleX(0); transform-origin: left; transition: transform .4s ease; } .valeur-card:hover::before { transform: scaleX(1); } .valeur-card:hover { border-color: rgba(184,154,90,.35); } .valeur-icon { width: 40px; height: 40px; margin-bottom: 28px; color: var(–gold); } .valeur-card h3 { font-family: var(–font-display); font-size: 1.5rem; font-weight: 400; color: var(–white); margin-bottom: 16px; line-height: 1.2; } .valeur-card p { font-size: .92rem; line-height: 1.8; color: var(–text-dim); } /* ───── MATÉRIAUX ───── */ .materiaux { background: var(–navy-mid); } .materiaux-intro { max-width: 680px; font-size: 1.05rem; line-height: 1.85; color: var(–text); margin-bottom: 56px; } .mat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; } .mat-card { border: 1px solid rgba(184,154,90,.15); border-radius: 2px; overflow: hidden; transition: border-color .3s, transform .35s; } .mat-card:hover { border-color: rgba(184,154,90,.5); transform: translateY(-6px); } .mat-card img { width: 100%; display: block; } .mat-cta { margin-top: 56px; text-align: center; } .btn-outline { display: inline-block; padding: 14px 40px; border: 1px solid var(–gold); color: var(–gold); text-decoration: none; font-family: var(–font-body); font-size: .82rem; font-weight: 500; letter-spacing: .15em; text-transform: uppercase; transition: background .3s, color .3s; } .btn-outline:hover { background: var(–gold); color: var(–navy); } .btn-solid { display: inline-block; padding: 14px 40px; background: var(–gold); color: var(–navy); text-decoration: none; font-family: var(–font-body); font-size: .82rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; transition: background .3s, opacity .3s; } .btn-solid:hover { background: var(–gold-light); } /* ───── CTA FINAL ───── */ .cta-section { background: var(–navy); padding: 100px 80px; text-align: center; position: relative; overflow: hidden; } .cta-section::before { content:  »; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 600px; height: 600px; border-radius: 50%; background: radial-gradient(circle, rgba(184,154,90,.07) 0%, transparent 70%); pointer-events: none; } .cta-section h2 { margin-bottom: 20px; } .cta-section p { font-size: 1rem; color: var(–text-dim); margin-bottom: 40px; max-width: 480px; margin-left: auto; margin-right: auto; line-height: 1.7; } .cta-btns { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; } /* ───── FOOTER ───── */ footer { background: #090d12; border-top: 1px solid rgba(184,154,90,.1); padding: 64px 80px 40px; } .footer-top { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 60px; padding-bottom: 56px; border-bottom: 1px solid rgba(255,255,255,.06); } .footer-brand img { height: 40px; margin-bottom: 20px; } .footer-brand p { font-size: .85rem; line-height: 1.75; color: var(–text-dim); max-width: 280px; } .footer-col h4 { font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(–gold); margin-bottom: 20px; } .footer-col ul { list-style: none; } .footer-col ul li { margin-bottom: 10px; } .footer-col ul a { color: var(–text-dim); text-decoration: none; font-size: .85rem; transition: color .2s; } .footer-col ul a:hover { color: var(–sand-light); } .footer-bottom { padding-top: 28px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; } .footer-bottom p { font-size: .78rem; color: var(–text-dim); } .social-links { display: flex; gap: 16px; } .social-links a { color: var(–text-dim); text-decoration: none; font-size: .85rem; transition: color .2s; } .social-links a:hover { color: var(–gold); } /* ───── SCROLL REVEAL ───── */ .reveal { opacity: 0; transform: translateY(36px); transition: opacity .7s ease, transform .7s ease; } .reveal.visible { opacity: 1; transform: none; } .reveal-delay-1 { transition-delay: .1s; } .reveal-delay-2 { transition-delay: .2s; } .reveal-delay-3 { transition-delay: .3s; } /* ───── RESPONSIVE ───── */ @media (max-width: 900px) { nav { padding: 0 24px; } .nav-links { display: none; } section { padding: 64px 24px; } .stats { padding: 48px 24px; } .hero { padding: 0 24px 56px; } .vision-grid, .histoire-layout { grid-template-columns: 1fr; gap: 40px; } .histoire-image { position: relative; top: 0; } .valeurs-grid, .mat-grid { grid-template-columns: 1fr; } .stats-grid { grid-template-columns: 1fr; } .footer-top { grid-template-columns: 1fr 1fr; gap: 40px; } .cta-section { padding: 64px 24px; } footer { padding: 48px 24px 32px; } }
Profitez de -15% avec le code AEROWAVE15 — valable jusqu’à dimanche.

Notre histoire

L’excellence
au grand air

AeroWave est portée par une équipe de passionnés, réunis autour d’une vision commune : créer une marque innovante, responsable et tournée vers l’avenir.

Repenser l’expérience
en extérieur

AeroWave est née d’une envie simple : repenser l’expérience en extérieur. Nous concevons des produits qui allient performance, durabilité et esthétique, pour accompagner chaque moment, du quotidien aux environnements les plus exigeants.

Notre ambition est de créer des objets fiables, élégants et responsables, pensés pour durer dans le temps.

AeroWave vision
0 Clients dans le monde
0 Pays
0 % de clients satisfaits

Nés d’une conviction

On nous a dit que le confort avait ses limites. Que sous le soleil, l’excellence pouvait attendre. Nous n’y avons jamais cru. AeroWave existe pour le prouver.

AeroWave est l’union de deux éléments essentiels : l’air et l’eau. Le mouvement et la fluidité. La technologie et la nature. Notre ambition n’était pas de concevoir un transat de plus.

Nous voulions imaginer un écosystème complet dédié au bien-être nomade haut de gamme. Un univers où chaque détail compte, où l’innovation se met au service de l’élégance, où la performance reste invisible mais essentielle.

Plage AeroWave

Nos valeurs

Luxe responsable

Chaque fibre est certifiée OEKO-TEX. Chaque emballage est pensé pour être recyclé. Nous croyons que l’excellence et la conscience environnementale ne s’opposent pas — elles se renforcent.

Innovation silencieuse

Nos technologies — ventilation active, matériaux aéronautiques, circuits intelligents — ne se voient pas. Elles se ressentent. C’est cela, l’innovation qui compte vraiment.

Obsession du détail

Des coutures invisibles aux dorures à chaud sur nos coffrets, rien n’est laissé au hasard. Parce que ce sont les détails que personne ne remarque consciemment qui font qu’un produit devient inoubliable.

Sélectionnés avec exigence

Chaque matériau est sélectionné avec exigence pour offrir un équilibre parfait entre confort, durabilité et performance. Pensés pour résister aux conditions extérieures tout en garantissant une sensation haut de gamme, ils incarnent l’engagement AeroWave pour une expérience à la fois innovante et responsable.

Matériau 1
Matériau 2
Matériau 3
Matériau 4

Découvrez nos produits

Des objets conçus pour accompagner chaque moment — du quotidien aux environnements les plus exigeants.

// ── Scroll Reveal ── const reveals = document.querySelectorAll(‘.reveal’); const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add(‘visible’); io.unobserve(e.target); } }); }, { threshold: 0.12 }); reveals.forEach(el => io.observe(el)); // ── Counter Animation ── function animateCount(el, target, suffix =  ») { const isLarge = target > 999; const duration = 1600; const start = performance.now(); function step(now) { const progress = Math.min((now – start) / duration, 1); const eased = 1 – Math.pow(1 – progress, 3); const val = Math.round(eased * target); el.textContent = isLarge ? (val >= 1000 ? (val / 1000).toFixed(0) + ‘ 000+’ : val.toString()) : val + suffix; if (progress { entries.forEach(e => { if (e.isIntersecting) { const target = parseInt(e.target.dataset.target); const suffix = e.target.closest(‘.stat-item’).querySelector(‘.stat-label’).textContent.includes(‘%’) ?  » :  »; animateCount(e.target, target, suffix); statIO.unobserve(e.target); } }); }, { threshold: 0.4 }); statNums.forEach(el => statIO.observe(el)); // Fix 12000 display document.querySelectorAll(‘.stat-number’).forEach(el => { if (el.dataset.target === ‘12000’) { const origAnimate = animateCount; } });
Panier
Retour en haut