/* ============================================
   SMBVA — Global styles (header, footer, tokens)
   ============================================ */

:root{
    --c-blue:        #2b2d75;
    --c-blue-2:      #2a2d75;
    --c-blue-soft:   #5055a5;
    --c-blue-pale:   #e3e5ff;
    --c-blue-light:  #def1ff;
    --c-violet:      #7079e9;
    --c-violet-2:    #989fff;
    --c-red:         #d74029;
    --c-yellow:      #ffe76f;
    --c-yellow-pale: #fff6c8;
    --c-rose-pale:   #ffece9;
    --c-mint:        #e2f6f4;
    --c-green:       #0dd068;
    --c-white:       #ffffff;
    --c-white-2:     #f8f9fd;
    --c-text-mute:   rgba(43,45,117,.5);
    --c-overlay:     rgba(43,45,117,.8);

    --f-display: "Poppins", system-ui, -apple-system, sans-serif;
    --f-body:    "Poppins", system-ui, -apple-system, sans-serif;
    --f-ui:      "Century Gothic", "Poppins", system-ui, -apple-system, sans-serif;

    --r-sm: 10px;
    --r-md: 16px;
    --r-lg: 20px;
    --r-xl: 50px;
    --r-pill: 100px;

    --shadow-card:  0 4px 10px rgba(0,0,0,.05);
    --shadow-soft:  0 6px 30px rgba(0,0,0,.1);

    --container: 1110px;
    --max-w: 1440px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
    margin:0;
    font-family:var(--f-body);
    color:var(--c-blue);
    background:var(--c-white);
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
}
img,svg{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; padding:0; }
ul{ list-style:none; padding:0; margin:0; }
h1,h2,h3,h4{ margin:0; font-family:var(--f-display); font-weight:700; line-height:1.1; color:var(--c-blue); }
p{ margin:0; }

main{ display:block; }

/* ---- Container helper ---- */
.container{ max-width:var(--container); margin:0 auto; padding:0 20px; }

/* ============================================
   Boutons
   ============================================ */
.btn{
    display:inline-flex; align-items:center; gap:16px;
    height:60px; padding:16px 16px 16px 24px;
    border-radius:var(--r-sm);
    font-family:var(--f-ui); font-weight:700; font-size:18px; line-height:1.4;
    transition: transform .15s ease, filter .15s ease;
}
.btn:hover{ transform:translateY(-2px); filter:brightness(1.05); }
.btn--primary{ background:var(--c-red); color:var(--c-white-2); }
.btn--dark{ background:var(--c-blue); color:var(--c-white); border:2px solid var(--c-blue); }
.btn--outline{ background:transparent; color:var(--c-blue); border:2px solid var(--c-blue); }
.btn__arrow{ width:39px; height:39px; display:inline-flex; align-items:center; justify-content:center; }
.btn__arrow img{ width:100%; height:100%; }

/* ============================================
   Header (commun)
   ============================================ */
.site-header{
    position:absolute; top:28px; left:0; right:0; z-index:30;
    height:76px;
    display:flex; align-items:center;
}
.site-header .logo{
    position:absolute; left:40px; top:0;
    width:54px; height:76px;
    display:block;
}
.site-header .logo img{ width:54px; height:auto; display:block; }

.nav-bar{
    margin:0 auto;
    width:617px; max-width:calc(100% - 80px);
    display:flex; align-items:center; justify-content:space-between;
    background:var(--c-white);
    padding:12px 16px;
    border-radius:var(--r-sm);
    box-shadow:var(--shadow-card);
    position:relative;
    height:70px;
}
.nav-menu-btn{
    display:inline-flex; align-items:center; gap:12px;
    padding-right:24px;
    font-family:var(--f-ui); font-weight:700; font-size:16px; color:var(--c-blue);
    border-right:1px solid var(--c-blue-pale);
    height:46px;
}
.nav-menu-icon{
    width:40px; height:40px;
    background:var(--c-red);
    border-radius:50%;
    display:inline-grid; grid-template-columns:repeat(2,4px); gap:3px;
    place-content:center;
}
.nav-menu-icon span{ width:4px; height:4px; background:var(--c-white); border-radius:50%; }
.nav-divider{ display:none; }
.nav-link{
    display:inline-flex; align-items:center; gap:8px;
    font-family:var(--f-ui); font-weight:700; font-size:16px; color:var(--c-blue);
    white-space:nowrap;
}
.nav-search{
    display:inline-flex; align-items:center; gap:12px;
    background:var(--c-blue-pale);
    padding:12px 16px;
    border-radius:24px;
    height:46px;
    min-width:170px;
}
.nav-search input{
    border:0; background:transparent; outline:0;
    font-family:var(--f-ui); font-weight:700; font-size:16px; color:var(--c-blue);
    flex:1; min-width:0;
}
.nav-search input::placeholder{ color:var(--c-blue); opacity:.85; }

/* ============================================
   Mega menu (overlay)
   ============================================ */
.mega-menu{ position:fixed; inset:0; z-index:50; display:none; }
.mega-menu[hidden]{ display:none !important; }
.mega-menu.is-open{ display:block; }

.mega-menu__overlay{
    position:absolute; inset:0;
    background:var(--c-overlay);
    backdrop-filter:blur(2px);
    animation:fadeIn .25s ease;
}
.mega-menu__panel{
    position:relative;
    max-width:874px; margin:31px auto 0;
    background:var(--c-white);
    border-radius:var(--r-lg);
    padding:24px;
    box-shadow:0 4px 12px rgba(42,45,117,.3);
    animation:slideDown .3s ease;
}
.mega-menu__head{
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:32px;
}
.mega-menu__close{
    width:46px; height:46px; border-radius:50%; background:var(--c-red);
    display:inline-flex; align-items:center; justify-content:center;
    transition:transform .2s;
}
.mega-menu__close:hover{ transform:rotate(90deg); }
.mega-menu__title{
    font-family:var(--f-display); font-weight:600; font-size:14px; letter-spacing:.5px;
    color:var(--c-blue); text-transform:uppercase;
}
.mega-menu__search{
    width:46px; height:46px; border-radius:50%; background:var(--c-blue-pale);
    display:inline-flex; align-items:center; justify-content:center;
}

.mega-menu__body{
    display:grid; grid-template-columns:330px 1fr; gap:48px;
    padding:0 46px;
}
.mega-menu__list{
    display:flex; flex-direction:column; gap:24px;
}
.mega-menu__list a{
    display:flex; align-items:center; gap:12px;
    transition:opacity .2s;
}
.mega-menu__list li{ opacity:.85; }
.mega-menu__list li:hover{ opacity:1; }
.mega-menu__list li.is-active{ opacity:1; }
.mega-menu__list li.is-active .mega-menu__num{ background:var(--c-red); color:var(--c-white); }
.mega-menu__num{
    background:var(--c-blue-pale); color:var(--c-blue);
    padding:6px 11px; border-radius:36px;
    font-family:var(--f-display); font-weight:600; font-size:14px;
    min-width:34px; text-align:center;
}
.mega-menu__label{
    font-family:var(--f-display); font-weight:600; font-size:20px; line-height:1.1;
    color:var(--c-blue);
}
.mega-menu__sep{ height:1px; background:var(--c-blue-pale); margin:0; }
.mega-menu__contact{
    font-family:var(--f-display); font-weight:600; font-size:20px; color:var(--c-blue);
}

.mega-menu__visual{
    background:var(--c-blue-light) url("../assets/img/pattern-pool.png") center/cover;
    border-radius:var(--r-md);
    min-height:300px;
}

.mega-menu__foot{
    display:flex; justify-content:space-between; gap:24px;
    margin-top:32px; padding:0 46px;
    font-size:12px; color:var(--c-text-mute);
}

@keyframes fadeIn{ from{opacity:0} to{opacity:1} }
@keyframes slideDown{ from{transform:translateY(-20px); opacity:0} to{transform:translateY(0); opacity:1} }

/* ============================================
   Footer (commun) — pleine largeur, fond bleu, partners zone blanche arrondie en bas
   ============================================ */
.site-footer{
    background:var(--c-blue);
    color:var(--c-white);
    width:100%;
    padding-top:0;
}
.footer-partners{
    background:var(--c-white);
    border-bottom-left-radius:var(--r-xl);
    border-bottom-right-radius:var(--r-xl);
    width:100%;
}
.footer-partners__inner{
    max-width:1110px; margin:0 auto;
    display:flex; align-items:center; justify-content:space-between;
    gap:24px; flex-wrap:nowrap;
    padding:30px 20px;
}
.footer-partners img{ mix-blend-mode:darken; max-height:60px; width:auto; object-fit:contain; flex-shrink:1; min-width:0; }

.footer-main{ padding:80px 0 50px; }
.footer-grid{
    max-width:1150px; margin:0 auto; padding:0 20px;
    display:grid; grid-template-columns:451px 1fr; gap:60px;
    align-items:start;
}
.footer-cta h2{
    font-family:var(--f-ui); font-weight:700; font-size:36px; color:var(--c-white);
    line-height:1.2; max-width:451px; margin-bottom:32px;
}
.footer-cta .btn{ margin-bottom:32px; }
.footer-legal{ display:flex; gap:32px; }
.footer-legal a{ color:rgba(255,255,255,.5); font-size:12px; text-decoration:underline; }

/* 3 colonnes droites: adresse+horaires / navigation / social */
.footer-info{
    display:grid; grid-template-columns:191px 1fr auto; gap:60px;
    justify-content:end;
}
.footer-col h3{
    font-family:var(--f-display); font-weight:700; font-size:12px;
    color:var(--c-white); margin:0 0 16px;
}
.footer-col__sub{ margin-top:24px !important; }
.footer-col p,
.footer-col a,
.footer-col li{
    font-family:var(--f-display); font-weight:400; font-size:12px;
    color:var(--c-white); line-height:1.5;
}
.footer-col p{ margin:0 0 8px; }
.footer-nav li{ margin-bottom:8px; }
.footer-nav a{ transition:opacity .15s; }
.footer-nav a:hover{ opacity:.7; }

.footer-social li{ margin-bottom:8px; }
.footer-social a{ display:inline-flex; align-items:center; gap:14px; font-family:var(--f-ui); }

/* ============================================
   Page missing
   ============================================ */
.page-missing{ padding:200px 20px; text-align:center; }
.page-missing h1{ font-size:60px; margin-bottom:16px; }

/* ============================================
   Reusable building blocks
   ============================================ */
.section{ padding:100px 0; }
.section--lg{ padding:150px 0; }

.cta-island{
    max-width:var(--container); margin:0 auto;
    background:var(--c-blue-pale);
    border-radius:var(--r-xl);
    padding:40px;
    text-align:center;
    position:relative; overflow:hidden;
}
.cta-island__num{
    display:inline-flex; align-items:center; justify-content:center;
    border:1.8px solid var(--c-blue); border-radius:45px;
    padding:7px 14px;
    font-family:var(--f-display); font-weight:600; font-size:18px;
    color:var(--c-blue);
    margin-bottom:20px;
}
.cta-island h2{
    font-family:var(--f-display); font-weight:700; font-size:60px;
    color:var(--c-blue); line-height:1; margin-bottom:32px;
}
.cta-island p{
    max-width:680px; margin:32px auto 0;
    color:var(--c-blue-2); font-size:16px;
}

/* Pagination dots */
.dots{ display:inline-flex; gap:6px; align-items:center; justify-content:center; }
.dots span{
    position:relative;
    width:20px; height:10px;
    background:var(--c-blue-pale);
    border-radius:var(--r-pill);
    transition:width .35s ease, background .2s;
    overflow:hidden;
    cursor:pointer;
}
.dots span.is-active{ width:50px; background:var(--c-blue-pale); }
.dots span.is-active::after{
    content:""; position:absolute; left:0; top:0; bottom:0;
    width:100%;
    background:var(--c-red);
    border-radius:var(--r-pill);
    transform-origin:left center;
    transform:scaleX(var(--prog, 0));
    transition:none;
}

/* Numbered badge (used on cards) */
.badge-num{
    display:inline-flex; align-items:center; justify-content:center;
    border:1.8px solid var(--c-blue); border-radius:45px;
    padding:7px 14px;
    font-family:var(--f-display); font-weight:600; font-size:18px;
    color:var(--c-blue);
}

/* Wave underline (decorative under titles) */
.title-wave{
    position:relative; display:inline-block;
}
.title-wave::after{
    content:""; position:absolute; left:50%; bottom:-12px;
    transform:translateX(-50%);
    width:328px; height:13px;
    background:url("../assets/icons/wave-underline.svg") no-repeat center/contain;
}

/* Patterned hero blob */
.hero-shell{
    position:relative;
    min-height:690px;
    background:linear-gradient(180deg, var(--c-mint) 0%, var(--c-white) 100%);
    overflow:hidden;
    isolation:isolate;
}
.hero-shell::before{
    content:""; position:absolute; inset:0; z-index:-1;
    background:url("../assets/img/pattern-pool.png") center/cover;
    opacity:.4; mix-blend-mode:plus-lighter;
}
.hero-shell--violet{ background:linear-gradient(180deg, #c5cbff 0%, #989fff 100%); }
.hero-shell--yellow{ background:linear-gradient(180deg, #fff6c8 0%, #ffe76f 100%); }

.hero-inner{
    max-width:740px; margin:0 auto;
    padding:230px 20px 80px;
    text-align:center;
}
.hero-title{
    font-family:var(--f-display); font-weight:700; font-size:60px;
    color:var(--c-blue); letter-spacing:-1.2px; line-height:1.1;
    margin-bottom:32px;
}
.hero-title--white{ color:var(--c-white); }
.hero-lead{
    font-family:var(--f-display); font-weight:400; font-size:16px;
    color:var(--c-blue-2); line-height:1.5;
    margin-bottom:32px;
}
.hero-lead--white{ color:var(--c-white); }

/* ============================================
   Responsive (desktop-first project, basic safety)
   ============================================ */
@media (max-width: 980px){
    .site-header{ padding:16px 20px 0; gap:12px; }
    .nav-bar{ padding:8px 12px; gap:12px; }
    .nav-link--info,
    .nav-search{ display:none; }
    .footer-partners__inner{ padding:24px 20px; gap:16px; }
    .footer-grid{ grid-template-columns:1fr; }
    .footer-info{ grid-template-columns:1fr 1fr; }
    .footer-cta h2{ font-size:24px; }
    .hero-title{ font-size:38px; letter-spacing:-.8px; }
    .cta-island h2{ font-size:36px; }
    .mega-menu__body{ grid-template-columns:1fr; padding:0; }
    .mega-menu__visual{ display:none; }
    .mega-menu__foot{ flex-direction:column; padding:0; }
}
