Files
JooL_website/static/css/home.css
2026-05-12 16:54:38 +00:00

1753 lines
38 KiB
CSS

/* ══════════════════════════════════════════
RESET & VARIABLES
══════════════════════════════════════════ */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
font-size: 16px;
}
body {
font-family: 'Roboto', sans-serif;
color: #1D1D1D;
overflow-x: hidden;
background: #fff;
}
:root {
--teal: #197061;
--teal-light: #55aaa0;
--teal-pale: #e0f2f0;
--black: #1D1D1D;
--white: #ffffff;
--gray: #e5e7eb;
--gray-2: #f4f4f4;
--gray-3: #d1d5db;
--accent: #2ec99e;
/* CTA punch */
--dark-bg: #0d2b26;
/* dark sections */
--mid-bg: #164e46;
--display: 'Barlow', sans-serif;
--body: 'Roboto', sans-serif;
}
img {
max-width: 100%;
display: block;
}
a {
text-decoration: none;
color: inherit;
}
ul {
list-style: none;
}
/* ══════════════════════════════════════════
NAV
══════════════════════════════════════════ */
nav {
position: sticky;
top: 0;
z-index: 200;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(14px);
border-bottom: 1px solid var(--gray);
}
.nav-topbar {
height: 66px;
display: flex;
align-items: center;
padding: 0 56px;
gap: 32px;
}
.nav-logo {
display: flex;
align-items: center;
flex-shrink: 0;
margin-right: auto;
}
.nav-logo svg {
height: 32px;
width: auto;
}
.nav-links {
display: flex;
gap: 4px;
align-items: center;
}
.nav-drawer {
display: none;
}
.nav-hamburger {
display: none;
}
.nav-links a {
font-family: var(--body);
font-size: 14px;
font-weight: 500;
color: #444;
padding: 6px 14px;
border-radius: 8px;
transition: background .15s, color .15s;
}
.nav-links a:hover {
background: var(--gray-2);
color: var(--black);
}
.nav-actions {
display: flex;
align-items: center;
gap: 10px;
flex-shrink: 0;
}
.btn-ghost-sm {
font-family: var(--body);
font-size: 14px;
font-weight: 600;
padding: 8px 18px;
border-radius: 100px;
color: var(--black);
border: 1.5px solid var(--gray-3);
transition: border-color .15s, background .15s;
}
.btn-ghost-sm:hover {
border-color: var(--black);
background: var(--gray-2);
}
.btn-teal-sm {
font-family: var(--body);
font-size: 14px;
font-weight: 700;
padding: 9px 20px;
border-radius: 100px;
background: var(--teal);
color: var(--white);
transition: filter .15s, transform .12s;
}
.btn-teal-sm:hover {
filter: brightness(1.1);
transform: translateY(-1px);
}
/* ══════════════════════════════════════════
HERO — fond teal clair (comme vert lime Linktree)
══════════════════════════════════════════ */
.hero {
background: var(--teal-pale);
padding: 72px 64px 0;
display: grid;
grid-template-columns: 1fr 1fr;
align-items: flex-end;
gap: 40px;
min-height: 520px;
overflow: hidden;
}
.hero-text {
padding-bottom: 64px;
}
.hero-eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--body);
font-size: 12px;
font-weight: 700;
letter-spacing: .1em;
text-transform: uppercase;
color: var(--teal);
background: rgba(25, 112, 97, .1);
padding: 6px 14px;
border-radius: 100px;
margin-bottom: 24px;
}
.hero-text h1 {
font-family: var(--display);
font-weight: 900;
font-style: italic;
font-size: clamp(2.8rem, 5vw, 4.2rem);
line-height: 1.05;
letter-spacing: -0.03em;
color: var(--black);
margin-bottom: 20px;
}
.hero-text h1 span {
color: var(--teal);
font-style: normal;
}
.hero-text p {
font-size: 17px;
line-height: 1.7;
color: #555;
font-weight: 300;
max-width: 440px;
margin-bottom: 36px;
}
.hero-form {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.hero-input {
font-family: var(--body);
font-size: 15px;
font-weight: 400;
padding: 14px 20px;
border-radius: 100px;
border: 2px solid var(--gray-3);
outline: none;
flex: 1;
min-width: 200px;
background: var(--white);
transition: border-color .2s;
}
.hero-input:focus {
border-color: var(--teal);
}
.btn-hero {
font-family: var(--display);
font-size: 16px;
font-weight: 800;
padding: 14px 28px;
border-radius: 100px;
background: var(--teal);
color: var(--white);
border: none;
cursor: pointer;
transition: filter .2s, transform .15s;
white-space: nowrap;
display: flex;
align-items: center;
gap: 8px;
}
.btn-hero:hover {
filter: brightness(1.1);
transform: translateY(-2px);
}
.hero-visual {
display: flex;
align-items: flex-end;
justify-content: center;
position: relative;
}
.hero-mockup {
background: var(--white);
border-radius: 24px 24px 0 0;
box-shadow: 0 -8px 60px rgba(25, 112, 97, .15);
padding: 28px 24px 0;
width: 320px;
min-height: 340px;
position: relative;
z-index: 1;
}
.hero-mockup-bar {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 20px;
padding: 0 4px;
}
.hm-dot {
width: 8px;
height: 8px;
border-radius: 50%;
}
.hm-d1 {
background: #ff5f57;
}
.hm-d2 {
background: #ffbd2e;
}
.hm-d3 {
background: #28c840;
}
.hero-card {
background: var(--teal-pale);
border-radius: 14px;
padding: 16px;
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 12px;
}
.hc-icon {
width: 44px;
height: 44px;
border-radius: 12px;
background: var(--teal);
display: flex;
align-items: center;
justify-content: center;
color: white;
flex-shrink: 0;
}
.hc-icon .material-icons-round {
font-size: 22px;
}
.hc-text {
flex: 1;
}
.hc-title {
font-size: 13px;
font-weight: 700;
margin-bottom: 3px;
color: var(--black);
}
.hc-sub {
font-size: 11px;
color: #888;
}
.hc-arrow {
color: var(--teal);
}
.hc-arrow .material-icons-round {
font-size: 18px;
}
/* floating badge */
.float-badge {
position: absolute;
z-index: 10;
background: var(--white);
border-radius: 12px;
padding: 10px 14px;
box-shadow: 0 6px 24px rgba(0, 0, 0, .12);
display: flex;
align-items: center;
gap: 8px;
font-size: 12px;
font-weight: 700;
animation: floatUD 3.5s ease-in-out infinite;
}
.float-badge .material-icons-round {
font-size: 18px;
color: var(--teal);
}
.fb-1 {
top: 40px;
right: -20px;
animation-delay: 0s;
}
.fb-2 {
top: 130px;
left: -30px;
animation-delay: 1.8s;
}
@keyframes floatUD {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
/* ══════════════════════════════════════════
TRUSTED STRIP
══════════════════════════════════════════ */
.trust-strip {
background: var(--black);
padding: 20px 48px;
display: flex;
align-items: center;
justify-content: center;
gap: 48px;
flex-wrap: wrap;
}
.trust-item {
display: flex;
align-items: center;
gap: 8px;
font-family: var(--body);
font-size: 13px;
font-weight: 500;
color: rgba(255, 255, 255, .45);
letter-spacing: .04em;
text-transform: uppercase;
}
.trust-item .material-icons-round {
font-size: 18px;
color: var(--teal-light);
}
/* ══════════════════════════════════════════
SHARED SECTION STYLES
══════════════════════════════════════════ */
.section {
padding: 88px 64px;
}
.section-inner {
max-width: 1160px;
margin: 0 auto;
}
.two-col {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 72px;
align-items: center;
}
.two-col.flip {
direction: rtl;
}
.two-col.flip>* {
direction: ltr;
}
.section-tag {
display: inline-flex;
align-items: center;
gap: 6px;
font-family: var(--body);
font-size: 11px;
font-weight: 700;
letter-spacing: .1em;
text-transform: uppercase;
padding: 5px 14px;
border-radius: 100px;
margin-bottom: 20px;
}
.tag-teal {
background: rgba(25, 112, 97, .12);
color: var(--teal);
}
.tag-white {
background: rgba(255, 255, 255, .12);
color: rgba(255, 255, 255, .8);
}
.tag-light {
background: rgba(25, 112, 97, .1);
color: var(--teal);
}
.section-title {
font-family: var(--display);
font-weight: 900;
font-style: italic;
font-size: clamp(2rem, 3.5vw, 3rem);
line-height: 1.08;
letter-spacing: -0.03em;
margin-bottom: 18px;
}
.section-title em {
font-style: normal;
color: var(--accent);
}
.section-body {
font-size: 16px;
line-height: 1.75;
color: #555;
font-weight: 300;
margin-bottom: 28px;
}
.section-body-light {
font-size: 16px;
line-height: 1.75;
color: rgba(255, 255, 255, .6);
font-weight: 300;
margin-bottom: 28px;
}
/* ── USE CASE LIST ── */
.uc-stack {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 32px;
}
.uc-row {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 14px 16px;
border-radius: 14px;
background: var(--gray-2);
transition: background .2s;
cursor: default;
}
.uc-row:hover {
background: var(--gray);
}
.uc-row-dark {
background: rgba(255, 255, 255, .05);
border: 1px solid rgba(255, 255, 255, .08);
}
.uc-row-dark:hover {
background: rgba(255, 255, 255, .09);
}
.uc-num {
font-family: var(--display);
font-size: 11px;
font-weight: 900;
letter-spacing: .06em;
color: var(--teal);
background: rgba(25, 112, 97, .1);
border-radius: 6px;
padding: 3px 7px;
flex-shrink: 0;
margin-top: 2px;
}
.uc-num-light {
color: var(--teal-light);
background: rgba(85, 170, 160, .15);
}
.uc-body .uc-title {
font-size: 14px;
font-weight: 700;
margin-bottom: 3px;
}
.uc-body .uc-desc {
font-size: 13px;
color: #777;
line-height: 1.55;
}
.uc-body .uc-desc-light {
font-size: 13px;
color: rgba(255, 255, 255, .5);
line-height: 1.55;
}
/* ── CTA BUTTONS ── */
.btn-primary {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--display);
font-size: 15px;
font-weight: 800;
padding: 14px 28px;
border-radius: 100px;
background: var(--teal);
color: var(--white);
transition: filter .2s, transform .15s;
cursor: pointer;
border: none;
}
.btn-primary:hover {
filter: brightness(1.12);
transform: translateY(-2px);
}
.btn-primary .material-icons-round {
font-size: 18px;
}
.btn-outline-dark {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--display);
font-size: 15px;
font-weight: 700;
padding: 13px 26px;
border-radius: 100px;
background: transparent;
color: var(--black);
border: 2px solid var(--gray-3);
transition: border-color .2s, background .2s;
}
.btn-outline-dark:hover {
border-color: var(--black);
background: var(--gray-2);
}
.btn-outline-light {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--display);
font-size: 15px;
font-weight: 700;
padding: 13px 26px;
border-radius: 100px;
background: transparent;
color: var(--white);
border: 2px solid rgba(255, 255, 255, .3);
transition: border-color .2s, background .2s;
}
.btn-outline-light:hover {
border-color: var(--white);
background: rgba(255, 255, 255, .08);
}
.btn-row {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
/* ══════════════════════════════════════════
SECTION 1 — KIRIQ AI (fond blanc)
══════════════════════════════════════════ */
.s-kiriq {
background: var(--white);
}
.visual-box {
border-radius: 24px;
overflow: hidden;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.visual-box img {
width: 100%;
height: auto;
display: block;
border-radius: 24px;
}
.vb-teal {
background: linear-gradient(135deg, #c8ede9 0%, #8fd5cc 100%);
}
.vb-dark {
background: var(--dark-bg);
}
.vb-mid {
background: var(--mid-bg);
}
.vb-inner {
text-align: center;
z-index: 1;
padding: 24px;
}
/* NDVI mock chart — taille originale centrée */
.ndvi-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 4px;
width: 220px;
margin: 0 auto 16px;
}
.ndvi-cell {
aspect-ratio: 1;
border-radius: 6px;
transition: transform .3s;
}
.ndvi-cell:hover {
transform: scale(1.15);
}
/* Stat overlay bas-droite sur le visuel NDVI (page détail) */
.ndvi-stat-overlay {
position: absolute;
bottom: 20px;
right: 20px;
background: rgba(255, 255, 255, .12);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, .18);
border-radius: 14px;
padding: 12px 18px;
text-align: center;
z-index: 2;
}
.ndvi-stat-overlay strong {
display: block;
font-family: var(--display);
font-weight: 900;
font-size: 1.8rem;
color: var(--white);
letter-spacing: -.04em;
}
.ndvi-stat-overlay span {
font-size: 12px;
color: rgba(255, 255, 255, .65);
}
/* satellite orbit lines */
.orbit-ring {
position: absolute;
border-radius: 50%;
border: 1px dashed rgba(255, 255, 255, .15);
animation: spinOrbit 20s linear infinite;
}
.or-1 {
width: 180px;
height: 180px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.or-2 {
width: 280px;
height: 280px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation-duration: 32s;
animation-direction: reverse;
}
.or-dot {
position: absolute;
width: 8px;
height: 8px;
background: var(--accent);
border-radius: 50%;
top: 0;
left: 50%;
transform: translateX(-50%);
}
@keyframes spinOrbit {
to {
transform: translate(-50%, -50%) rotate(360deg);
}
}
.sat-icon {
font-size: 3rem;
margin-bottom: 16px;
display: block;
position: relative;
z-index: 1;
}
.stat-bubble {
background: rgba(255, 255, 255, .12);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, .18);
border-radius: 14px;
padding: 12px 18px;
display: inline-block;
text-align: center;
position: relative;
z-index: 1;
}
.stat-bubble strong {
display: block;
font-family: var(--display);
font-size: 2rem;
font-weight: 900;
color: var(--white);
letter-spacing: -.04em;
}
.stat-bubble span {
font-size: 12px;
color: rgba(255, 255, 255, .6);
font-weight: 300;
}
/* floating chips */
.chip-float {
position: absolute;
background: var(--white);
border-radius: 10px;
padding: 8px 14px;
box-shadow: 0 6px 24px rgba(0, 0, 0, .14);
font-size: 12px;
font-weight: 700;
color: var(--black);
display: flex;
align-items: center;
gap: 6px;
animation: floatUD 4s ease-in-out infinite;
z-index: 10;
}
.chip-float .material-icons-round {
font-size: 15px;
color: var(--teal);
}
.cf-tl {
top: 18px;
left: 18px;
animation-delay: .5s;
}
.cf-br {
bottom: 22px;
right: 18px;
animation-delay: 2s;
}
/* ══════════════════════════════════════════
SECTION 2 — JOOL MONITOR (fond sombre)
══════════════════════════════════════════ */
.s-monitor {
background: var(--dark-bg);
color: var(--white);
}
.s-monitor .section-title {
color: var(--white);
}
/* drone flight path SVG */
.drone-svg-wrap {
position: relative;
width: 100%;
background: var(--mid-bg);
border-radius: 24px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.drone-svg-wrap img {
width: 100%;
height: auto;
display: block;
border-radius: 24px;
}
.drone-map {
position: absolute;
inset: 0;
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-template-rows: repeat(6, 1fr);
gap: 2px;
padding: 16px;
opacity: .25;
}
.dm-cell {
border-radius: 4px;
background: rgba(85, 170, 160, .3);
}
.drone-flight-path {
position: absolute;
inset: 0;
z-index: 2;
}
.drone-center {
position: relative;
z-index: 3;
text-align: center;
}
/* ══════════════════════════════════════════
SECTION 3 — JOOL ID (fond gris clair)
══════════════════════════════════════════ */
.s-id {
background: var(--gray-2);
}
/* producer cards */
.id-cards {
display: flex;
flex-direction: column;
gap: 10px;
width: 100%;
}
.id-card {
background: var(--white);
border: 1px solid var(--gray);
border-radius: 14px;
padding: 14px 16px;
display: flex;
align-items: center;
gap: 12px;
transition: box-shadow .2s, transform .2s;
}
.id-card:hover {
box-shadow: 0 8px 28px rgba(25, 112, 97, .1);
transform: translateX(4px);
}
.id-avatar {
width: 42px;
height: 42px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
flex-shrink: 0;
}
.id-info {
flex: 1;
}
.id-name {
font-size: 14px;
font-weight: 700;
margin-bottom: 3px;
}
.id-meta {
font-size: 12px;
color: #888;
}
.id-badge {
font-size: 11px;
font-weight: 700;
padding: 4px 10px;
border-radius: 100px;
}
.badge-verified {
background: rgba(25, 112, 97, .1);
color: var(--teal);
}
.badge-pending {
background: rgba(255, 184, 48, .12);
color: #b07a00;
}
/* ══════════════════════════════════════════
STATS — fond teal plein
══════════════════════════════════════════ */
.s-stats {
background: var(--teal);
padding: 72px 64px;
}
.s-stats .section-inner {
max-width: 1160px;
margin: 0 auto;
}
.stats-header {
text-align: center;
margin-bottom: 56px;
}
.stats-header h2 {
font-family: var(--display);
font-size: clamp(2rem, 3.5vw, 2.8rem);
font-weight: 900;
font-style: italic;
color: var(--white);
letter-spacing: -.03em;
margin-bottom: 10px;
}
.stats-header p {
color: rgba(255, 255, 255, .65);
font-size: 16px;
font-weight: 300;
}
.stats-row {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2px;
border-radius: 20px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, .15);
}
.stat-cell {
background: rgba(255, 255, 255, .08);
padding: 40px 28px;
text-align: center;
transition: background .2s;
}
.stat-cell:hover {
background: rgba(255, 255, 255, .14);
}
.stat-val {
font-family: var(--display);
font-size: 3rem;
font-weight: 900;
color: var(--white);
letter-spacing: -.04em;
line-height: 1;
margin-bottom: 10px;
}
.stat-lbl {
font-size: 13px;
color: rgba(255, 255, 255, .55);
font-weight: 400;
}
/* ══════════════════════════════════════════
TRUSTED BY (fond blanc)
══════════════════════════════════════════ */
.s-trusted {
background: var(--white);
padding: 72px 0 64px;
overflow: hidden;
}
.s-trusted .section-inner {
padding: 0 64px;
}
.trusted-title {
font-family: var(--display);
font-size: clamp(2rem, 3vw, 2.6rem);
font-weight: 900;
font-style: italic;
text-align: center;
letter-spacing: -.03em;
margin-bottom: 6px;
}
.trusted-title em {
font-style: normal;
color: var(--teal);
}
.trusted-sub {
text-align: center;
color: #888;
font-size: 15px;
font-weight: 300;
margin-bottom: 48px;
}
/* ── Défilement infini ── */
@keyframes marquee {
from { transform: translateX(0); }
to { transform: translateX(-50%); }
}
.logos-track-wrap {
width: 100%;
overflow: hidden;
/* fondu sur les bords */
mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
-webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
}
.logos-track {
display: flex;
align-items: center;
gap: 40px;
width: max-content;
animation: marquee 22s linear infinite;
}
.logos-track:hover {
animation-play-state: paused;
}
.logo-slide {
flex-shrink: 0;
width: 160px;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
filter: grayscale(1) opacity(.55);
transition: filter .3s;
}
.logo-slide:hover {
filter: grayscale(0) opacity(1);
}
.logo-slide img {
max-width: 140px;
max-height: 70px;
width: auto;
height: auto;
object-fit: contain;
}
/* ══════════════════════════════════════════
FEATURES GRID
══════════════════════════════════════════ */
.s-features {
background: var(--gray-2);
padding: 88px 64px;
}
.feat-title {
font-family: var(--display);
font-size: clamp(2rem, 3.5vw, 2.8rem);
font-weight: 900;
font-style: italic;
letter-spacing: -.03em;
text-align: center;
margin-bottom: 48px;
}
.feat-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.feat-card {
background: var(--white);
border-radius: 20px;
padding: 32px 28px;
border: 1px solid var(--gray);
transition: border-color .2s, box-shadow .2s, transform .2s;
cursor: default;
}
.feat-card:hover {
border-color: var(--teal);
box-shadow: 0 12px 40px rgba(25, 112, 97, .1);
transform: translateY(-3px);
}
.feat-icon-wrap {
width: 52px;
height: 52px;
border-radius: 14px;
background: var(--teal-pale);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
}
.feat-icon-wrap .material-icons-round {
font-size: 26px;
color: var(--teal);
}
.feat-card h3 {
font-family: var(--display);
font-size: 1.15rem;
font-weight: 800;
letter-spacing: -.02em;
margin-bottom: 10px;
}
.feat-card p {
font-size: 14px;
color: #777;
line-height: 1.65;
font-weight: 300;
}
/* ══════════════════════════════════════════
TESTIMONIAL — fond teal foncé
══════════════════════════════════════════ */
.s-testimonial {
background: var(--mid-bg);
padding: 88px 64px;
text-align: center;
color: var(--white);
}
.testimonial-avatar {
width: 88px;
height: 88px;
border-radius: 50%;
background: linear-gradient(135deg, var(--accent), var(--teal-light));
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 28px;
font-size: 2.2rem;
box-shadow: 0 0 0 4px rgba(255, 255, 255, .15);
}
.testimonial-quote {
font-family: var(--display);
font-size: clamp(1.4rem, 2.5vw, 2rem);
font-weight: 800;
font-style: italic;
line-height: 1.35;
max-width: 680px;
margin: 0 auto 24px;
letter-spacing: -.02em;
}
.testimonial-author {
font-size: 14px;
color: rgba(255, 255, 255, .5);
font-weight: 400;
}
.testimonial-author strong {
color: rgba(255, 255, 255, .8);
font-weight: 600;
}
/* ══════════════════════════════════════════
FAQ — fond sombre
══════════════════════════════════════════ */
.s-faq {
background: var(--dark-bg);
padding: 88px 64px;
}
.faq-h {
font-family: var(--display);
font-size: clamp(2rem, 3vw, 2.6rem);
font-weight: 900;
font-style: italic;
letter-spacing: -.03em;
color: var(--white);
text-align: center;
margin-bottom: 8px;
}
.faq-sub {
text-align: center;
color: rgba(255, 255, 255, .4);
font-size: 15px;
font-weight: 300;
margin-bottom: 48px;
}
.faq-wrap {
max-width: 760px;
margin: 0 auto;
}
.faq-item {
border-radius: 14px;
margin-bottom: 8px;
background: rgba(255, 255, 255, .05);
border: 1px solid rgba(255, 255, 255, .08);
overflow: hidden;
}
.faq-q {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 24px;
cursor: pointer;
font-size: 15px;
font-weight: 600;
color: var(--white);
gap: 16px;
user-select: none;
transition: background .15s;
}
.faq-q:hover {
background: rgba(255, 255, 255, .04);
}
.faq-q .material-icons-round {
color: rgba(255, 255, 255, .4);
flex-shrink: 0;
transition: transform .28s, color .2s;
}
.faq-item.open .faq-q .material-icons-round {
transform: rotate(45deg);
color: var(--teal-light);
}
.faq-a {
max-height: 0;
overflow: hidden;
font-size: 14px;
color: rgba(255, 255, 255, .5);
line-height: 1.75;
font-weight: 300;
transition: max-height .35s ease, padding .3s ease;
padding: 0 24px;
}
.faq-item.open .faq-a {
max-height: 300px;
padding: 0 24px 22px;
}
/* ══════════════════════════════════════════
CTA FINAL — fond teal pale (comme vert lime Linktree)
══════════════════════════════════════════ */
.s-cta-final {
background: var(--teal-pale);
padding: 100px 64px;
text-align: center;
position: relative;
overflow: hidden;
}
.s-cta-final::before {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(ellipse 70% 60% at 50% 50%, rgba(25, 112, 97, .08), transparent);
}
.s-cta-final .section-inner {
position: relative;
z-index: 1;
}
.cta-final-h {
font-family: var(--display);
font-size: clamp(2.4rem, 5vw, 4rem);
font-weight: 900;
font-style: italic;
letter-spacing: -.03em;
color: var(--black);
margin-bottom: 16px;
line-height: 1.08;
}
.cta-final-sub {
font-size: 17px;
color: #666;
font-weight: 300;
margin-bottom: 40px;
}
.cta-form {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
max-width: 720px;
margin: 0 auto;
}
.cta-fields {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
width: 100%;
}
.cta-input {
font-family: var(--body);
font-size: 15px;
padding: 14px 22px;
border-radius: 100px;
border: 2px solid var(--gray-3);
outline: none;
width: 100%;
background: var(--white);
transition: border-color .2s;
}
.cta-input:focus {
border-color: var(--teal);
outline: none;
}
.cta-textarea {
border-radius: 18px;
resize: vertical;
width: 100%;
min-height: 110px;
}
.cta-success {
display: none;
align-items: center;
gap: 10px;
background: rgba(25,112,97,.12);
color: var(--teal);
border: 1.5px solid var(--teal);
border-radius: 100px;
padding: 14px 28px;
font-size: 15px;
font-weight: 600;
margin-top: 8px;
}
.cta-success.visible {
display: inline-flex;
}
.cta-success .material-icons-round {
font-size: 20px;
}
.cta-errors {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.cta-errors li {
font-size: 13px;
color: #e05252;
}
/* silhouette decoration */
.s-cta-final .deco {
position: absolute;
bottom: 0;
opacity: .07;
font-size: 14rem;
line-height: 1;
font-family: var(--display);
font-weight: 900;
color: var(--teal);
pointer-events: none;
}
.deco-l {
left: -40px;
}
.deco-r {
right: -40px;
}
/* ══════════════════════════════════════════
FOOTER
══════════════════════════════════════════ */
footer {
background: var(--black);
color: rgba(255, 255, 255, .45);
padding: 64px 64px 36px;
}
.footer-inner {
max-width: 1160px;
margin: 0 auto;
}
.footer-grid {
display: grid;
grid-template-columns: 2.2fr 1fr 1fr 1fr;
gap: 48px;
margin-bottom: 56px;
}
.footer-brand {}
.footer-logo-wrap {
margin-bottom: 16px;
}
.footer-logo-wrap img {
height: 28px;
filter: brightness(0) invert(1);
opacity: .7;
}
.footer-brand p {
font-size: 14px;
line-height: 1.75;
max-width: 280px;
}
.footer-col h4 {
font-family: var(--body);
font-size: 11px;
font-weight: 700;
letter-spacing: .1em;
text-transform: uppercase;
color: rgba(255, 255, 255, .7);
margin-bottom: 20px;
}
.footer-col a {
display: block;
font-size: 14px;
color: rgba(255, 255, 255, .4);
margin-bottom: 12px;
transition: color .2s;
}
.footer-col a:hover {
color: var(--white);
}
.footer-bottom {
border-top: 1px solid rgba(255, 255, 255, .08);
padding-top: 28px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 13px;
flex-wrap: wrap;
gap: 12px;
}
.footer-socials {
display: flex;
gap: 12px;
}
.footer-socials a {
width: 36px;
height: 36px;
border-radius: 50%;
background: rgba(255, 255, 255, .07);
border: 1px solid rgba(255, 255, 255, .1);
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, .5);
transition: background .2s, color .2s;
}
.footer-socials a:hover {
background: rgba(255, 255, 255, .14);
color: var(--white);
}
.footer-socials .material-icons-round {
font-size: 17px;
}
/* ══════════════════════════════════════════
RESPONSIVE
══════════════════════════════════════════ */
@media (max-width: 960px) {
.hero {
grid-template-columns: 1fr;
padding: 72px 32px 0;
}
.hero-visual {
margin: 0 auto;
}
.two-col {
grid-template-columns: 1fr;
gap: 40px;
}
.two-col.flip {
direction: ltr;
}
.section {
padding: 64px 28px;
}
.s-stats {
padding: 64px 28px;
}
.stats-row {
grid-template-columns: repeat(2, 1fr);
}
.feat-grid {
grid-template-columns: 1fr 1fr;
}
.footer-grid {
grid-template-columns: 1fr 1fr;
}
/* ── topbar fixe ── */
.nav-topbar {
padding: 0 20px;
height: 66px;
}
/* Masquer les liens inline sur mobile */
nav .nav-links {
display: none;
}
/* ── hamburger visible ── */
.nav-hamburger {
display: flex;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 40px;
height: 40px;
cursor: pointer;
padding: 8px;
border-radius: 8px;
border: none;
background: transparent;
flex-shrink: 0;
}
.nav-hamburger:hover {
background: var(--gray-2);
}
.nav-hamburger span {
display: block;
width: 22px;
height: 2px;
background: var(--black);
border-radius: 2px;
transition: transform .25s ease, opacity .2s ease;
transform-origin: center;
}
.nav-hamburger.open span:nth-child(1) {
transform: translateY(7px) rotate(45deg);
}
.nav-hamburger.open span:nth-child(2) {
opacity: 0;
transform: scaleX(0);
}
.nav-hamburger.open span:nth-child(3) {
transform: translateY(-7px) rotate(-45deg);
}
/* ── drawer qui s'ouvre en dessous ── */
.nav-drawer {
display: block;
max-height: 0;
overflow: hidden;
transition: max-height .35s ease, padding .3s ease;
background: rgba(255, 255, 255, 0.98);
border-top: 1px solid transparent;
}
.nav-drawer.open {
max-height: 480px;
border-top-color: var(--gray);
padding-bottom: 12px;
}
.nav-drawer ul {
display: flex;
flex-direction: column;
gap: 2px;
padding: 10px 12px;
}
.nav-drawer ul a {
display: block;
font-family: var(--body);
font-size: 15px;
font-weight: 500;
color: #444;
padding: 11px 16px;
border-radius: 10px;
transition: background .15s, color .15s;
}
.nav-drawer ul a:hover {
background: var(--gray-2);
color: var(--black);
}
}
@media (max-width: 600px) {
.feat-grid {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr;
}
.stats-row {
grid-template-columns: 1fr 1fr;
}
.hero-mockup {
width: 280px;
}
.cta-fields {
grid-template-columns: 1fr;
}
}
/* ══════════════════════════════════════════
SCROLL REVEAL
══════════════════════════════════════════ */
.reveal {
opacity: 0;
transform: translateY(32px);
transition: opacity .6s ease, transform .6s ease;
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}