@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

/* =========================================================
   HAVY GROUP — IDENTITÉ VISUELLE
   Bleu + Jaune + Gris
   Apparence uniquement — aucune modification fonctionnelle
   ========================================================= */

:root{
    --navy:#061A36;
    --navy-2:#0B2D5C;
    --blue:#1769D5;
    --blue-dark:#0F55B5;
    --yellow:#F2C94C;
    --yellow-dark:#D9AA22;
    --gray:#F3F5F8;
    --gray-2:#E5E9EF;
    --gray-3:#697586;
    --text:#172235;
    --white:#FFFFFF;
    --border:#DCE2EA;
}

/* =========================================================
   BASE
   ========================================================= */

*{
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    margin:0;
    font-family:Inter,Arial,sans-serif;
    color:var(--text);
    background:#fff;
    line-height:1.65;
}

a{
    text-decoration:none;
    color:inherit;
}

img{
    max-width:100%;
}

.container{
    width:min(1180px,92%);
    margin:auto;
}

/* =========================================================
   HEADER
   ========================================================= */

.site-header{
    position:sticky;
    top:0;
    z-index:50;
    background:rgba(255,255,255,.97);
    backdrop-filter:blur(12px);
    border-bottom:1px solid var(--gray-2);
    box-shadow:0 4px 18px rgba(6,26,54,.06);
}

.nav-wrap{
    min-height:82px;
    display:flex;
    align-items:center;
    gap:28px;
}

.brand{
    display:flex;
    align-items:center;
}

.brand img{
    width:120px;
    height:auto;
    display:block;
    transition:transform .25s ease;
}

.brand img:hover{
    transform:scale(1.03);
}

.nav-wrap nav{
    display:flex;
    gap:25px;
    margin-left:auto;
    align-items:center;
}

.nav-wrap nav a,
.nav-dropdown>button{
    position:relative;
    color:var(--navy);
    font-size:14px;
    font-weight:700;
    transition:.25s ease;
}

.nav-wrap nav a:after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:-8px;
    height:2px;
    background:var(--yellow);
    transform:scaleX(0);
    transition:transform .25s ease;
}

.nav-wrap nav a:hover{
    color:var(--blue);
}

.nav-wrap nav a:hover:after{
    transform:scaleX(1);
}

/* =========================================================
   BOUTONS
   ========================================================= */

.nav-cta,
.btn{
    border:0;
    border-radius:8px;
    padding:13px 20px;
    font-weight:800;
    cursor:pointer;
    display:inline-block;
    transition:all .25s ease;
}

.nav-cta{
    background:var(--blue);
    color:#fff;
    box-shadow:0 8px 20px rgba(23,105,213,.18);
}

.nav-cta:hover{
    background:var(--navy);
    color:#fff;
    transform:translateY(-2px);
}

.btn-primary{
    background:var(--blue);
    color:#fff;
    box-shadow:0 8px 22px rgba(23,105,213,.20);
}

.btn-primary:hover{
    background:var(--yellow);
    color:var(--navy);
    transform:translateY(-2px);
}

.btn-light{
    background:#fff;
    color:var(--navy);
    border:1px solid rgba(255,255,255,.4);
}

.btn-light:hover{
    background:var(--yellow);
    color:var(--navy);
    border-color:var(--yellow);
}

/* =========================================================
   HERO
   ========================================================= */

.hero{
    background:
        linear-gradient(135deg,var(--navy),var(--navy-2));
    color:#fff;
    padding:90px 0;
}

.hero-grid{
    display:grid;
    grid-template-columns:1.3fr .7fr;
    gap:70px;
    align-items:center;
}

.eyebrow{
    font-size:12px;
    font-weight:800;
    letter-spacing:2.5px;
    color:var(--blue);
    text-transform:uppercase;
}

.hero .eyebrow,
.page-hero .eyebrow,
.section-dark .eyebrow{
    color:var(--yellow);
}

.hero h1,
.page-hero h1{
    font-size:clamp(38px,5vw,68px);
    line-height:1.05;
    margin:16px 0 22px;
    letter-spacing:-2px;
    font-weight:800;
}

.hero p{
    font-size:18px;
    max-width:650px;
    color:#DCE6F7;
}

.hero-actions{
    display:flex;
    gap:12px;
    margin-top:30px;
}

.hero-card{
    background:#fff;
    border-radius:20px;
    padding:34px;
    color:var(--navy);
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:12px;
    box-shadow:0 30px 70px rgba(0,0,0,.22);
    border-top:4px solid var(--yellow);
}

.hero-card img{
    width:175px;
}

/* =========================================================
   CAROUSEL
   ========================================================= */

.hero-carousel{
    position:relative;
    height:570px;
    overflow:hidden;
    background:var(--navy);
    color:#fff;
}

.hero-carousel .slide{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    opacity:0;
    visibility:hidden;
    transform:scale(1.015);
    transition:
        opacity .5s ease,
        transform .7s ease,
        visibility .5s ease;
    background-size:cover;
    background-position:center;
}

.hero-carousel .slide.active{
    opacity:1;
    visibility:visible;
    transform:scale(1);
}

.hero-carousel .slide:after{
    content:"";
    position:absolute;
    inset:0;
    background:
        linear-gradient(
            90deg,
            rgba(4,18,42,.96) 0%,
            rgba(6,26,54,.82) 48%,
            rgba(6,26,54,.25) 100%
        );
}

.hero-carousel .slide-content{
    position:relative;
    z-index:2;
    width:min(1180px,92%);
    margin:auto;
    padding-right:15%;
}

.hero-carousel .slide h1{
    font-size:clamp(38px,5vw,68px);
    line-height:1.03;
    letter-spacing:-2.5px;
    margin:14px 0 18px;
    max-width:780px;
    font-weight:800;
}

.hero-carousel .slide p{
    font-size:17px;
    line-height:1.75;
    color:#E1E9F5;
    max-width:620px;
    margin-bottom:28px;
}

.hero-carousel .slide .eyebrow{
    color:var(--yellow);
}

/* Barre jaune décorative */

.hero-carousel .slide h1:after{
    content:"";
    display:block;
    width:55px;
    height:4px;
    background:var(--yellow);
    border-radius:4px;
    margin-top:20px;
}

/* =========================================================
   CONTROLES CAROUSEL
   ========================================================= */

.carousel-controls{
    position:absolute;
    z-index:5;
    right:5%;
    bottom:30px;
    display:flex;
    gap:10px;
}

.carousel-controls button{
    width:46px;
    height:46px;
    border:1px solid rgba(255,255,255,.45);
    border-radius:50%;
    background:rgba(6,26,54,.62);
    color:#fff;
    font-size:24px;
    cursor:pointer;
    transition:.25s ease;
}

.carousel-controls button:hover{
    background:var(--yellow);
    color:var(--navy);
    border-color:var(--yellow);
    transform:translateY(-2px);
}

.carousel-dots{
    position:absolute;
    z-index:6;
    left:50%;
    bottom:39px;
    transform:translateX(-50%);
    display:flex;
    gap:7px;
}

.carousel-dots button{
    width:7px;
    height:7px;
    padding:0;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.45);
    cursor:pointer;
}

.carousel-dots button.active{
    width:25px;
    border-radius:8px;
    background:var(--yellow);
}

/* =========================================================
   SECTIONS
   ========================================================= */

.section{
    padding:95px 0;
}

.section-light,
.director-section,
.gerant-section{
    background:var(--gray);
}

.section-dark{
    background:var(--navy);
}

.section-head{
    margin-bottom:42px;
}

.section-head h2,
.director-label h2,
.gerant-grid h2{
    color:var(--navy);
    font-weight:800;
    letter-spacing:-1.2px;
}

.section-head h2{
    font-size:38px;
    line-height:1.15;
    margin:8px 0;
}

.section-head h2:after{
    content:"";
    display:block;
    width:50px;
    height:3px;
    margin-top:14px;
    background:var(--yellow);
    border-radius:4px;
}

.section-head.light h2{
    color:#fff;
}

.lead{
    color:var(--gray-3);
    font-size:17px;
    line-height:1.75;
    max-width:900px;
}

/* =========================================================
   CARTES GÉNÉRALES
   ========================================================= */

.info-grid,
.cards,
.formation-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
}

.info-grid article,
.service-card,
.formation-card,
.mission-card,
.person-card,
.project-card,
.client-card{
    border:1px solid var(--border);
    border-radius:15px;
    background:#fff;
    box-shadow:0 8px 25px rgba(7,27,58,.045);
    transition:
        transform .25s ease,
        box-shadow .25s ease,
        border-color .25s ease;
}

.info-grid article:hover,
.service-card:hover,
.formation-card:hover,
.mission-card:hover,
.person-card:hover,
.project-card:hover,
.client-card:hover{
    transform:translateY(-5px);
    border-color:var(--yellow);
    box-shadow:0 18px 38px rgba(7,27,58,.11);
}

/* =========================================================
   BLOCS INFORMATIONS
   ========================================================= */

.info-grid article{
    padding:28px;
    position:relative;
    overflow:hidden;
}

.info-grid article:before{
    content:"";
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:4px;
    background:var(--blue);
}

.info-grid span{
    font-weight:800;
    color:var(--blue);
    font-size:13px;
}

.info-grid h3{
    margin:12px 0 8px;
    font-size:20px;
    color:var(--navy);
}

.info-grid p{
    color:var(--gray-3);
    margin:0;
}

/* =========================================================
   SERVICES
   ========================================================= */

.service-card{
    background:linear-gradient(145deg,#082149,#0D3469);
    border-color:#173E70;
    color:#fff;
    padding:30px;
    position:relative;
    overflow:hidden;
}

.service-card:after{
    content:"";
    position:absolute;
    width:90px;
    height:90px;
    right:-30px;
    bottom:-30px;
    border-radius:50%;
    background:rgba(242,201,76,.12);
}

.service-card:hover{
    border-color:var(--yellow);
}

.service-number{
    color:var(--yellow)!important;
    font-size:13px;
    font-weight:800;
}

.service-card h3{
    color:#fff;
    font-size:20px;
    margin:12px 0 8px;
}

.service-card p{
    color:#C4D2E5;
    line-height:1.7;
}

/* =========================================================
   FORMATIONS
   ========================================================= */

.formation-card{
    padding:28px;
    position:relative;
    overflow:hidden;
}

.formation-card:before{
    content:"";
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:4px;
    background:var(--yellow);
}

.formation-date{
    font-size:12px;
    font-weight:800;
    color:var(--blue);
    text-transform:uppercase;
    letter-spacing:.5px;
}

.formation-card h3{
    color:var(--navy);
    line-height:1.35;
    margin:12px 0 8px;
}

.formation-card p{
    color:var(--gray-3);
    margin:0;
}

.meta{
    font-weight:700;
    margin:18px 0;
    color:var(--navy);
}

.text-link{
    font-weight:800;
    color:var(--blue);
}

.text-link:hover{
    color:var(--yellow-dark);
}

.details{
    padding-left:18px;
    color:var(--gray-3);
    font-size:14px;
}

/* =========================================================
   MISSIONS
   ========================================================= */

.mission-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
}

.mission-card{
    padding:28px;
    position:relative;
}

.mission-card:before{
    content:"";
    position:absolute;
    top:0;
    left:0;
    width:5px;
    height:100%;
    background:var(--blue);
}

.mission-category{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:1.2px;
    font-weight:800;
    color:var(--blue);
}

.mission-card h3{
    font-size:20px;
    margin:10px 0;
    color:var(--navy);
}

.mission-card p{
    color:var(--gray-3);
    margin:0;
}

.mission-meta{
    margin-top:18px;
    font-size:13px;
    font-weight:700;
    color:var(--navy);
}

/* =========================================================
   DIRECTION
   ========================================================= */

.director-grid{
    display:grid;
    grid-template-columns:.7fr 1.3fr;
    gap:50px;
    align-items:start;
}

.director-label h2{
    font-size:40px;
    line-height:1.15;
    margin:8px 0;
}

.director-message{
    background:#fff;
    border-left:5px solid var(--yellow);
    border-radius:0 15px 15px 0;
    padding:32px 36px;
    box-shadow:0 15px 35px rgba(7,27,58,.08);
}

.director-message p{
    font-size:18px;
    color:var(--gray-3);
    line-height:1.8;
    margin:0 0 24px;
}

.director-message strong{
    display:block;
    color:var(--navy);
    font-size:16px;
}

.director-message span{
    display:block;
    color:var(--blue);
    font-size:13px;
    margin-top:3px;
}

/* =========================================================
   GÉRANT
   ========================================================= */

.gerant-grid{
    display:grid;
    grid-template-columns:320px 1fr;
    gap:55px;
    align-items:center;
}

.gerant-photo{
    height:360px;
    background:#DCE4EE;
    border-radius:17px;
    display:grid;
    place-items:center;
    overflow:hidden;
    box-shadow:0 15px 35px rgba(7,27,58,.10);
    border-bottom:5px solid var(--yellow);
}

.gerant-photo img{
    width:100%;
    height:100%;
    object-fit:cover;
}

.photo-placeholder,
.person-placeholder{
    display:grid;
    place-items:center;
    font-weight:800;
    color:#fff;
    background:var(--navy);
    width:100%;
    height:100%;
    font-size:52px;
}

.gerant-grid h2{
    font-size:44px;
    margin:7px 0 0;
}

.gerant-grid h3{
    color:var(--blue);
    margin:0 0 20px;
    font-weight:800;
}

/* =========================================================
   ÉQUIPE
   ========================================================= */

.staff-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:20px;
}

.person-card{
    overflow:hidden;
}

.person-card img,
.person-card .person-placeholder{
    width:100%;
    height:230px;
    object-fit:cover;
}

.person-card h3,
.person-card strong,
.person-card p{
    margin-left:20px;
    margin-right:20px;
}

.person-card h3{
    color:var(--navy);
    margin-top:18px;
    margin-bottom:4px;
}

.person-card strong{
    display:block;
    color:var(--blue);
    font-size:13px;
}

.person-card p{
    color:var(--gray-3);
    font-size:13px;
    margin-bottom:20px;
}

/* =========================================================
   PROJETS
   ========================================================= */

.project-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
}

.project-card{
    overflow:hidden;
}

.project-card img{
    width:100%;
    height:190px;
    object-fit:cover;
    transition:transform .4s ease;
}

.project-card:hover img{
    transform:scale(1.04);
}

.project-card>div{
    padding:24px;
}

.project-card span{
    font-size:11px;
    text-transform:uppercase;
    color:var(--blue);
    font-weight:800;
}

.project-card h3{
    color:var(--navy);
    margin:8px 0;
}

.project-card p{
    color:var(--gray-3);
    font-size:14px;
}

.project-card strong{
    color:var(--navy);
    font-size:13px;
}

/* =========================================================
   PARTENAIRES / LOGOS
   ========================================================= */

.logo-grid{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:18px;
}

.logo-card{
    height:110px;
    border:1px solid var(--border);
    border-radius:14px;
    background:#fff;
    display:grid;
    place-items:center;
    padding:15px;
    box-shadow:0 6px 18px rgba(7,27,58,.035);
    transition:.25s ease;
}

.logo-card:hover{
    transform:translateY(-4px);
    border-color:var(--yellow);
    box-shadow:0 12px 28px rgba(7,27,58,.08);
}

.logo-card img{
    max-width:100%;
    max-height:75px;
}

.large-logos{
    grid-template-columns:repeat(4,1fr);
}

/* =========================================================
   CLIENTS
   ========================================================= */

.client-card{
    padding:25px;
}

.client-card img{
    width:100%;
    height:130px;
    object-fit:contain;
}

.client-card h3{
    margin:16px 0 5px;
    color:var(--navy);
}

.client-card p{
    color:var(--gray-3);
    font-size:14px;
}

.logo-placeholder{
    height:130px;
    display:grid;
    place-items:center;
    background:var(--gray);
    color:var(--navy);
    font-size:38px;
    font-weight:800;
    border-radius:12px;
}

/* =========================================================
   CONTACT
   ========================================================= */

.contact-grid{
    display:grid;
    grid-template-columns:.8fr 1.2fr;
    gap:50px;
}

.contact-box{
    padding:20px;
    background:#fff;
    border:1px solid var(--border);
    border-radius:12px;
    margin:15px 0;
    box-shadow:0 8px 25px rgba(7,27,58,.045);
}

.contact-box strong{
    color:var(--navy);
}

.contact-form,
.form-grid{
    display:grid;
    gap:16px;
}

label{
    display:grid;
    gap:7px;
    font-weight:600;
    font-size:14px;
}

input,
textarea,
select{
    width:100%;
    border:1px solid #D5DCE6;
    border-radius:8px;
    padding:13px 14px;
    font:inherit;
    background:#fff;
    transition:.2s ease;
}

input:focus,
textarea:focus,
select:focus{
    border-color:var(--blue);
    outline:none;
    box-shadow:0 0 0 3px rgba(23,105,213,.10);
}

/* =========================================================
   PAGE HERO
   ========================================================= */

.page-hero{
    background:
        linear-gradient(135deg,var(--navy),var(--navy-2));
    color:#fff;
    padding:75px 0;
    border-bottom:4px solid var(--yellow);
}

.page-hero p{
    color:#C8D5E9;
    font-size:18px;
}

.narrow{
    max-width:850px;
}

.narrow h2{
    margin-top:35px;
}

/* =========================================================
   FOOTER
   ========================================================= */

.footer{
    background:var(--navy);
    color:#fff;
    padding:60px 0 0;
}

.footer-grid{
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    gap:30px;
}

.footer img{
    width:115px;
    background:#fff;
    border-radius:8px;
    padding:5px;
}

.footer p{
    color:#B8C7DA;
    line-height:1.7;
}

.footer a{
    color:#DCE6F4;
    transition:.2s ease;
}

.footer a:hover{
    color:var(--yellow);
}

.copyright{
    text-align:center;
    border-top:1px solid rgba(255,255,255,.12);
    padding:20px;
    margin-top:45px;
    color:#91A3BB;
    font-size:13px;
}

/* =========================================================
   MENU DÉROULANT
   ========================================================= */

.nav-dropdown{
    position:relative;
}

.nav-dropdown>button{
    border:0;
    background:transparent;
    font:inherit;
    font-weight:700;
    color:var(--navy);
    cursor:pointer;
    padding:0;
}

.nav-dropdown>button span{
    font-size:12px;
}

.dropdown-menu{
    display:none;
    position:absolute;
    top:28px;
    left:-15px;
    width:220px;
    background:#fff;
    border:1px solid var(--border);
    border-radius:12px;
    padding:8px;
    box-shadow:0 18px 45px rgba(7,27,58,.14);
    z-index:80;
}

.dropdown-menu a{
    display:block;
    padding:10px 12px;
    border-radius:8px;
}

.dropdown-menu a:hover{
    background:var(--gray);
    color:var(--blue);
}

.nav-dropdown:hover .dropdown-menu,
.nav-dropdown:focus-within .dropdown-menu{
    display:block;
}

/* =========================================================
   MOBILE
   ========================================================= */

.menu-toggle{
    display:none;
    border:0;
    background:var(--navy);
    color:#fff;
    border-radius:7px;
    padding:9px 11px;
    font-size:18px;
}

.admin-nav-link{
    display:inline-flex;
    align-items:center;
    border:1px solid #CFD8E5;
    border-radius:8px;
    padding:10px 13px;
    font-size:12px;
    font-weight:800;
    color:var(--navy);
    background:#fff;
}

.admin-nav-link:hover{
    border-color:var(--yellow);
    color:var(--blue);
}

.admin-nav-mobile{
    display:none;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */

@media(max-width:1100px){

    .nav-wrap{
        gap:18px;
    }

    .nav-wrap nav{
        gap:16px;
    }

    .nav-wrap nav a,
    .nav-dropdown>button{
        font-size:12px;
    }

    .nav-cta{
        padding:11px 15px;
    }

    .hero-carousel{
        height:540px;
    }

    .hero-carousel .slide-content{
        padding-right:10%;
    }

    .staff-grid{
        grid-template-columns:repeat(2,1fr);
    }

    .logo-grid{
        grid-template-columns:repeat(3,1fr);
    }
}

@media(max-width:900px){

    .nav-wrap{
        position:relative;
        min-height:74px;
    }

    .brand img{
        width:105px;
    }

    .menu-toggle{
        display:block;
        margin-left:auto;
    }

    .nav-wrap nav{
        display:none;
        position:absolute;
        top:74px;
        left:0;
        right:0;
        background:#fff;
        border:1px solid var(--border);
        border-radius:0 0 14px 14px;
        padding:15px;
        box-shadow:0 20px 40px rgba(7,27,58,.15);
        flex-direction:column;
        gap:4px;
    }

    .nav-wrap nav.open{
        display:flex;
    }

    .nav-wrap nav a,
    .nav-dropdown>button{
        display:block;
        padding:11px 12px;
        font-size:14px;
        text-align:left;
    }

    .nav-cta{
        display:none;
    }

    .dropdown-menu{
        position:static;
        width:auto;
        box-shadow:none;
        border:0;
        padding:2px 0 2px 12px;
    }

    .hero-grid,
    .contact-grid,
    .director-grid,
    .gerant-grid{
        grid-template-columns:1fr;
    }

    .info-grid,
    .cards,
    .formation-grid,
    .mission-grid{
        grid-template-columns:1fr;
    }

    .footer-grid{
        grid-template-columns:1fr 1fr;
    }

    .hero{
        padding:65px 0;
    }

    .section{
        padding:70px 0;
    }

    .hero-carousel{
        height:520px;
    }

    .hero-carousel .slide-content{
        padding-right:0;
    }

    .hero-carousel .slide h1{
        font-size:44px;
    }

    .section-head h2{
        font-size:34px;
    }

    .gerant-photo{
        max-width:380px;
    }

    .admin-nav-link{
        display:none;
    }

    .admin-nav-mobile{
        display:inline-flex;
        align-items:center;
        padding:10px 13px;
        border-radius:8px;
        background:var(--navy);
        color:#fff;
        font-weight:800;
        font-size:12px;
    }
}

@media(max-width:600px){

    .container{
        width:min(92%,520px);
    }

    .nav-wrap{
        min-height:70px;
    }

    .brand img{
        width:96px;
    }

    .hero-carousel{
        height:540px;
    }

    .hero-carousel .slide h1{
        font-size:38px;
        line-height:1.08;
        letter-spacing:-1px;
    }

    .hero-carousel .slide p{
        font-size:15px;
        line-height:1.65;
    }

    .hero-actions{
        flex-direction:column;
        align-items:flex-start;
    }

    .section{
        padding:60px 0;
    }

    .section-head h2{
        font-size:30px;
    }

    .lead{
        font-size:16px;
    }

    .staff-grid,
    .logo-grid,
    .project-grid{
        grid-template-columns:1fr;
    }

    .large-logos{
        grid-template-columns:1fr;
    }

    .footer-grid{
        grid-template-columns:1fr;
    }

    .carousel-controls{
        right:20px;
        bottom:20px;
    }

    .carousel-dots{
        bottom:28px;
    }

    .footer{
        padding-top:45px;
    }

    .director-label h2{
        font-size:32px;
    }

    .gerant-grid h2{
        font-size:36px;
    }
}
/* =========================================================
   MODALES D'INSCRIPTION
   ========================================================= */

.modal{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(6,26,54,.78);
    backdrop-filter:blur(5px);
    z-index:1000;
    padding:20px;
    align-items:center;
    justify-content:center;
    overflow-y:auto;
}

.modal.open{
    display:flex;
}

.modal-box{
    position:relative;
    width:min(650px,100%);
    max-height:90vh;
    overflow-y:auto;
    background:#fff;
    border-radius:18px;
    padding:32px;
    box-shadow:0 25px 70px rgba(0,0,0,.25);
    border-top:5px solid var(--yellow);
    animation:modalHavy .25s ease;
}

.modal-close{
    position:absolute;
    right:18px;
    top:14px;
    width:38px;
    height:38px;
    border:1px solid var(--border);
    border-radius:50%;
    background:#fff;
    color:var(--navy);
    font-size:22px;
    line-height:1;
    cursor:pointer;
    transition:.2s ease;
}

.modal-close:hover{
    background:var(--yellow);
    border-color:var(--yellow);
    transform:rotate(90deg);
}

@keyframes modalHavy{
    from{
        opacity:0;
        transform:translateY(15px) scale(.98);
    }

    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}

/* Formulaire dans la fenêtre */

.modal-box h1,
.modal-box h2,
.modal-box h3{
    color:var(--navy);
}

.modal-box input,
.modal-box textarea,
.modal-box select{
    background:#fff;
}

/* Mobile */

@media(max-width:600px){

    .modal{
        padding:12px;
        align-items:flex-start;
    }

    .modal-box{
        margin-top:20px;
        max-height:calc(100vh - 40px);
        padding:24px 20px;
        border-radius:15px;
    }

    .modal-close{
        right:12px;
        top:10px;
    }
}
/* =========================================================
   HAVY GROUP — V3 CORPORATE PREMIUM
   Palette : BLEU MARINE + GRIS + BLANC
   Présentation uniquement
   ========================================================= */

:root{
    --navy:#071A33;
    --navy-2:#0D2748;
    --blue:#1F5F9F;
    --blue-dark:#174B7D;

    --gray-50:#F8FAFC;
    --gray-100:#F1F4F7;
    --gray-200:#E2E8F0;
    --gray-300:#CBD5E1;
    --gray-500:#64748B;
    --gray-700:#334155;

    --text:#172033;
    --white:#FFFFFF;
    --border:#E2E8F0;
}

/* =========================================================
   BASE
   ========================================================= */

body{
    background:#fff;
    color:var(--text);
    font-family:Inter,Arial,sans-serif;
    line-height:1.65;
}

.container{
    width:min(1180px,92%);
}

/* =========================================================
   HEADER
   ========================================================= */

.site-header{
    background:rgba(255,255,255,.98);
    border-bottom:1px solid var(--gray-200);
    box-shadow:0 3px 15px rgba(7,26,51,.05);
}

.nav-wrap{
    min-height:80px;
    gap:30px;
}

.brand img{
    width:118px;
}

.nav-wrap nav{
    gap:27px;
}

.nav-wrap nav a,
.nav-dropdown>button{
    color:var(--navy);
    font-size:14px;
    font-weight:700;
    transition:color .2s ease;
}

.nav-wrap nav a:hover{
    color:var(--blue);
}

/* Ligne sous le menu */

.nav-wrap nav a:after{
    background:var(--blue);
    height:2px;
    bottom:-8px;
}

/* Bouton principal */

.nav-cta{
    background:var(--navy);
    color:#fff;
    border-radius:7px;
    padding:12px 19px;
    box-shadow:0 6px 16px rgba(7,26,51,.12);
}

.nav-cta:hover{
    background:var(--blue);
    transform:translateY(-1px);
}

/* =========================================================
   HERO
   ========================================================= */

.hero{
    background:
        linear-gradient(
            135deg,
            #06162D 0%,
            #0B2442 55%,
            #12385F 100%
        );
}

.hero .eyebrow,
.page-hero .eyebrow,
.section-dark .eyebrow{
    color:#B9C7D8;
}

.hero h1,
.page-hero h1{
    font-weight:800;
    letter-spacing:-2px;
}

.hero p{
    color:#D8E1EC;
}

/* =========================================================
   CAROUSEL
   ========================================================= */

.hero-carousel{
    height:560px;
    background:var(--navy);
}

.hero-carousel .slide:after{
    background:
        linear-gradient(
            90deg,
            rgba(5,18,35,.97) 0%,
            rgba(7,26,51,.85) 45%,
            rgba(7,26,51,.28) 100%
        );
}

.hero-carousel .slide h1{
    font-weight:800;
    letter-spacing:-2px;
}

.hero-carousel .slide h1:after{
    background:var(--blue);
    width:52px;
    height:3px;
}

.hero-carousel .slide p{
    color:#D7E0EB;
}

.hero-carousel .slide .eyebrow{
    color:#B9C7D8;
}

/* =========================================================
   BOUTONS
   ========================================================= */

.btn,
.btn-primary{
    border-radius:7px;
    padding:12px 20px;
    font-weight:800;
    transition:all .2s ease;
}

.btn-primary{
    background:var(--navy);
    color:#fff;
    box-shadow:0 7px 18px rgba(7,26,51,.14);
}

.btn-primary:hover{
    background:var(--blue);
    transform:translateY(-2px);
}

.btn-light{
    background:#fff;
    color:var(--navy);
    border:1px solid #D7DEE7;
}

.btn-light:hover{
    background:var(--gray-100);
    color:var(--navy);
}

/* =========================================================
   CONTROLES CAROUSEL
   ========================================================= */

.carousel-controls button{
    background:rgba(7,26,51,.72);
    border:1px solid rgba(255,255,255,.35);
}

.carousel-controls button:hover{
    background:var(--blue);
    border-color:var(--blue);
}

.carousel-dots button.active{
    background:#fff;
}

/* =========================================================
   SECTIONS
   ========================================================= */

.section{
    padding:90px 0;
}

.section-light,
.director-section,
.gerant-section{
    background:var(--gray-50);
}

.section-head h2,
.director-label h2,
.gerant-grid h2{
    color:var(--navy);
    font-weight:800;
    letter-spacing:-1px;
}

.section-head h2:after{
    background:var(--navy);
    width:45px;
    height:3px;
}

.lead{
    color:var(--gray-500);
}

/* =========================================================
   CARTES
   ========================================================= */

.info-grid article,
.service-card,
.formation-card,
.mission-card,
.person-card,
.project-card,
.client-card{
    border:1px solid var(--gray-200);
    border-radius:12px;
    box-shadow:0 6px 22px rgba(7,26,51,.045);
    transition:
        transform .22s ease,
        box-shadow .22s ease,
        border-color .22s ease;
}

.info-grid article:hover,
.service-card:hover,
.formation-card:hover,
.mission-card:hover,
.person-card:hover,
.project-card:hover,
.client-card:hover{
    transform:translateY(-4px);
    border-color:#B9C7D8;
    box-shadow:0 15px 32px rgba(7,26,51,.09);
}

/* =========================================================
   SERVICES
   ========================================================= */

.service-card{
    background:linear-gradient(
        145deg,
        #0A2342,
        #102F52
    );
    border-color:#183B61;
    color:#fff;
}

.service-card:hover{
    border-color:#7D91A8;
}

.service-number{
    color:#B9C7D8 !important;
}

.service-card h3{
    color:#fff;
}

.service-card p{
    color:#C5D0DD;
}

/* =========================================================
   FORMATIONS
   ========================================================= */

.formation-card{
    background:#fff;
    padding:28px;
}

.formation-card:before{
    background:var(--navy);
    height:3px;
}

.formation-date{
    color:var(--blue);
}

.formation-card h3{
    color:var(--navy);
}

.formation-card p{
    color:var(--gray-500);
}

.text-link{
    color:var(--blue);
}

.text-link:hover{
    color:var(--navy);
}

/* =========================================================
   MISSIONS
   ========================================================= */

.mission-card{
    background:#fff;
}

.mission-card:before{
    background:var(--blue);
}

.mission-category{
    color:var(--blue);
}

.mission-card h3{
    color:var(--navy);
}

.mission-card p{
    color:var(--gray-500);
}

.mission-meta{
    color:var(--gray-700);
}

/* =========================================================
   DIRECTION
   ========================================================= */

.director-message{
    border-left:4px solid var(--navy);
    background:#fff;
    box-shadow:0 12px 30px rgba(7,26,51,.07);
}

.director-message p{
    color:var(--gray-500);
}

.director-message strong{
    color:var(--navy);
}

.director-message span{
    color:var(--blue);
}

/* =========================================================
   GÉRANT
   ========================================================= */

.gerant-photo{
    border-radius:14px;
    box-shadow:0 12px 30px rgba(7,26,51,.09);
    border-bottom:3px solid var(--navy);
}

.gerant-grid h3{
    color:var(--blue);
}

/* =========================================================
   ÉQUIPE
   ========================================================= */

.person-card{
    overflow:hidden;
}

.person-card img,
.person-card .person-placeholder{
    height:225px;
}

.person-card h3{
    color:var(--navy);
}

.person-card strong{
    color:var(--blue);
}

.person-card p{
    color:var(--gray-500);
}

/* =========================================================
   PROJETS
   ========================================================= */

.project-card img{
    transition:transform .35s ease;
}

.project-card:hover img{
    transform:scale(1.025);
}

.project-card span{
    color:var(--blue);
}

.project-card h3{
    color:var(--navy);
}

.project-card p{
    color:var(--gray-500);
}

.project-card strong{
    color:var(--gray-700);
}

/* =========================================================
   PARTENAIRES
   ========================================================= */

.logo-card{
    background:#fff;
    border:1px solid var(--gray-200);
    border-radius:10px;
    box-shadow:0 5px 16px rgba(7,26,51,.035);
}

.logo-card:hover{
    border-color:#AAB8C8;
    transform:translateY(-3px);
    box-shadow:0 10px 25px rgba(7,26,51,.07);
}

/* =========================================================
   CONTACT
   ========================================================= */

.contact-box{
    background:#fff;
    border:1px solid var(--gray-200);
    border-radius:10px;
    box-shadow:0 6px 20px rgba(7,26,51,.04);
}

.contact-box strong{
    color:var(--navy);
}

input,
textarea,
select{
    border:1px solid #D3DBE5;
    border-radius:7px;
}

input:focus,
textarea:focus,
select:focus{
    border-color:var(--blue);
    box-shadow:0 0 0 3px rgba(31,95,159,.10);
}

/* =========================================================
   PAGE HERO
   ========================================================= */

.page-hero{
    background:linear-gradient(
        135deg,
        #06162D,
        #0D2948
    );
    border-bottom:0;
}

.page-hero p{
    color:#C8D3E0;
}

/* =========================================================
   FOOTER
   ========================================================= */

.footer{
    background:#06162D;
    color:#fff;
    padding-top:58px;
}

.footer p{
    color:#AEBBCB;
}

.footer a{
    color:#D4DDE7;
}

.footer a:hover{
    color:#fff;
}

.copyright{
    border-top:1px solid rgba(255,255,255,.10);
    color:#8999AC;
}

/* =========================================================
   MENU MOBILE
   ========================================================= */

.menu-toggle{
    background:var(--navy);
    border-radius:7px;
}

.nav-wrap nav.open{
    box-shadow:0 18px 35px rgba(7,26,51,.12);
}

/* =========================================================
   MODALES D'INSCRIPTION
   Important : les formulaires restent cachés
   ========================================================= */

.modal{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(5,18,35,.78);
    backdrop-filter:blur(5px);
    z-index:1000;
    padding:20px;
    align-items:center;
    justify-content:center;
    overflow-y:auto;
}

.modal.open{
    display:flex;
}

.modal-box{
    position:relative;
    width:min(650px,100%);
    max-height:90vh;
    overflow-y:auto;
    background:#fff;
    border-radius:14px;
    padding:32px;
    box-shadow:0 25px 70px rgba(0,0,0,.25);
    border-top:4px solid var(--navy);
}

.modal-close{
    position:absolute;
    right:18px;
    top:14px;
    width:36px;
    height:36px;
    border:1px solid var(--gray-300);
    border-radius:50%;
    background:#fff;
    color:var(--navy);
    font-size:20px;
    cursor:pointer;
    transition:.2s ease;
}

.modal-close:hover{
    background:var(--navy);
    color:#fff;
    border-color:var(--navy);
}

/* =========================================================
   RESPONSIVE
   ========================================================= */

@media(max-width:1100px){

    .nav-wrap{
        gap:18px;
    }

    .nav-wrap nav{
        gap:16px;
    }

    .hero-carousel{
        height:530px;
    }
}

@media(max-width:900px){

    .hero-carousel{
        height:510px;
    }

    .hero-carousel .slide h1{
        font-size:44px;
    }

    .section{
        padding:70px 0;
    }

    .section-head h2{
        font-size:34px;
    }

    .modal{
        align-items:flex-start;
    }

    .modal-box{
        margin-top:20px;
        max-height:calc(100vh - 40px);
    }
}

@media(max-width:600px){

    .container{
        width:92%;
    }

    .hero-carousel{
        height:520px;
    }

    .hero-carousel .slide h1{
        font-size:37px;
        letter-spacing:-1px;
    }

    .hero-carousel .slide p{
        font-size:15px;
    }

    .section{
        padding:60px 0;
    }

    .section-head h2{
        font-size:30px;
    }

    .modal{
        padding:10px;
    }

    .modal-box{
        padding:24px 18px;
        border-radius:12px;
    }
}
/* =========================================================
   HAVY GROUP — HEADER CORPORATE COMPACT
   ========================================================= */

.site-header{
    position:sticky;
    top:0;
    z-index:100;
    height:72px;
    background:rgba(255,255,255,.98);
    border-bottom:1px solid #e3e8ef;
    box-shadow:0 3px 14px rgba(7,26,51,.06);
}

.nav-wrap{
    height:72px;
    min-height:72px;
    display:flex;
    align-items:center;
    gap:25px;
}

/* Logo */

.brand{
    flex:0 0 auto;
    display:flex;
    align-items:center;
}

.brand img{
    width:94px;
    height:auto;
    display:block;
}

/* Navigation */

.nav-wrap nav{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:24px;
    margin-left:auto;
    margin-right:10px;
}

.nav-wrap nav a,
.nav-dropdown>button{
    white-space:nowrap;
    color:#13243b;
    font-size:14px;
    font-weight:700;
    line-height:1;
    padding:8px 0;
}

/* Petit indicateur pour le menu déroulant */

.nav-dropdown>button span{
    margin-left:3px;
    font-size:10px;
    color:#64748b;
}

/* Effet menu */

.nav-wrap nav a:after{
    bottom:0;
    height:2px;
    background:#1f5f9f;
    border-radius:4px;
}

.nav-wrap nav a:hover{
    color:#1f5f9f;
}

/* Demander un devis */

.nav-cta{
    flex:0 0 auto;
    white-space:nowrap;
    background:#071a33;
    color:#fff;
    border-radius:7px;
    padding:11px 17px;
    font-size:13px;
    font-weight:800;
    box-shadow:none;
    transition:.2s ease;
}

.nav-cta:hover{
    background:#1f5f9f;
    transform:translateY(-1px);
}

/* Administration */

.admin-nav-link{
    flex:0 0 auto;
    white-space:nowrap;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:42px;
    padding:9px 16px;
    border:1px solid #cbd5e1;
    border-radius:7px;
    background:#fff;
    color:#071a33;
    font-size:13px;
    font-weight:800;
    transition:.2s ease;
}

.admin-nav-link:hover{
    background:#f1f5f9;
    border-color:#1f5f9f;
    color:#1f5f9f;
}

/* =========================================================
   TABLETTE
   ========================================================= */

@media(max-width:1100px){

    .nav-wrap{
        gap:16px;
    }

    .nav-wrap nav{
        gap:15px;
    }

    .nav-wrap nav a,
    .nav-dropdown>button{
        font-size:12px;
    }

    .nav-cta{
        padding:10px 13px;
        font-size:12px;
    }

    .admin-nav-link{
        padding:9px 12px;
        font-size:12px;
    }
}

/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:900px){

    .site-header{
        height:70px;
    }

    .nav-wrap{
        height:70px;
        min-height:70px;
    }

    .brand img{
        width:92px;
    }

    .menu-toggle{
        margin-left:auto;
    }

    .nav-wrap nav{
        top:70px;
    }
}
/* =========================================================
   HAVY GROUP — MENU MOBILE PREMIUM
   Correction téléphone
   ========================================================= */

@media (max-width:900px){

    /* Header mobile */

    .site-header{
        height:70px;
    }

    .nav-wrap{
        height:70px;
        min-height:70px;
        padding:0;
        gap:12px;
    }

    .brand img{
        width:92px;
    }

    /* Bouton hamburger */

    .menu-toggle{
        display:flex;
        align-items:center;
        justify-content:center;
        width:46px;
        height:46px;
        margin-left:auto;
        padding:0;
        border:0;
        border-radius:9px;
        background:#071A33;
        color:#fff;
        font-size:22px;
    }

    .menu-toggle:hover{
        background:#1F5F9F;
    }

    /* =====================================================
       IMPORTANT :
       Un seul bouton Administration sur mobile
       ===================================================== */

    .admin-nav-link{
        display:none !important;
    }

    .admin-nav-mobile{
        display:flex !important;
        align-items:center;
        justify-content:center;
        min-height:42px;
        padding:9px 14px;
        margin-left:0;
        border-radius:8px;
        background:#071A33;
        color:#fff;
        border:1px solid #071A33;
        font-size:12px;
        font-weight:800;
        white-space:nowrap;
    }

    .admin-nav-mobile:hover{
        background:#1F5F9F;
        border-color:#1F5F9F;
    }

    /* =====================================================
       MENU DÉROULANT MOBILE
       ===================================================== */

    .nav-wrap nav{
        display:none;
        position:absolute;
        top:70px;
        left:10px;
        right:10px;

        width:auto;
        margin:0;

        padding:10px;

        background:#fff;
        border:1px solid #E2E8F0;
        border-radius:0 0 14px 14px;

        box-shadow:
            0 15px 35px rgba(7,26,51,.13);

        flex-direction:column;
        align-items:stretch;
        justify-content:flex-start;

        gap:2px;

        z-index:200;
    }

    .nav-wrap nav.open{
        display:flex;
    }

    /* Liens */

    .nav-wrap nav a,
    .nav-dropdown>button{
        display:flex;
        align-items:center;
        justify-content:flex-start;

        width:100%;
        min-height:44px;

        padding:10px 14px;

        border-radius:8px;

        color:#071A33;
        background:transparent;

        font-size:14px;
        font-weight:700;
        line-height:1.2;

        text-align:left;
    }

    .nav-wrap nav a:after{
        display:none;
    }

    .nav-wrap nav a:hover,
    .nav-dropdown>button:hover{
        background:#F1F5F9;
        color:#1F5F9F;
    }

    /* Menu Havy Group */

    .nav-dropdown{
        width:100%;
    }

    .nav-dropdown>button{
        cursor:pointer;
    }

    .nav-dropdown>button span{
        margin-left:6px;
        font-size:10px;
    }

    /* Sous-menu */

    .dropdown-menu{
        position:static;

        display:none;

        width:100%;

        margin:3px 0 5px;
        padding:4px;

        background:#F8FAFC;

        border:1px solid #E2E8F0;
        border-radius:8px;

        box-shadow:none;
    }

    .nav-dropdown:hover .dropdown-menu,
    .nav-dropdown:focus-within .dropdown-menu{
        display:block;
    }

    .dropdown-menu a{
        min-height:40px;
        padding:9px 12px;
        font-size:13px;
    }

    /* Pas de bouton devis géant sur mobile */

    .nav-cta{
        display:none !important;
    }
}

/* =========================================================
   PETITS TÉLÉPHONES
   ========================================================= */

@media(max-width:600px){

    .site-header{
        height:66px;
    }

    .nav-wrap{
        height:66px;
        min-height:66px;
    }

    .brand img{
        width:84px;
    }

    .menu-toggle{
        width:43px;
        height:43px;
        font-size:21px;
    }

    .admin-nav-mobile{
        min-height:40px;
        padding:8px 11px;
        font-size:11px;
    }

    .nav-wrap nav{
        top:66px;
        left:7px;
        right:7px;
        padding:8px;
    }

    .nav-wrap nav a,
    .nav-dropdown>button{
        min-height:42px;
        font-size:14px;
    }
}
/* =========================================================
   HAVY GROUP — STYLE PROFESSIONNEL DES IMAGES
   ========================================================= */

/* Images générales */

img{
    max-width:100%;
    height:auto;
}

/* =========================================================
   IMAGES DU CAROUSEL
   ========================================================= */

.hero-carousel .slide{
    background-size:cover;
    background-position:center center;
}

/* Légère profondeur sur les images du carousel */

.hero-carousel .slide:after{
    background:
        linear-gradient(
            90deg,
            rgba(5,18,35,.94) 0%,
            rgba(7,26,51,.72) 48%,
            rgba(7,26,51,.18) 100%
        );
}

/* =========================================================
   IMAGES DES PROJETS
   ========================================================= */

.project-card{
    overflow:hidden;
}

.project-card img{
    display:block;
    width:100%;
    height:210px;
    object-fit:cover;
    object-position:center;
    transition:
        transform .45s ease,
        filter .35s ease;
}

.project-card:hover img{
    transform:scale(1.035);
    filter:brightness(1.03);
}

/* =========================================================
   PHOTOS DE L'ÉQUIPE
   ========================================================= */

.person-card{
    overflow:hidden;
}

.person-card img{
    display:block;
    width:100%;
    height:230px;
    object-fit:cover;
    object-position:center top;
    transition:
        transform .4s ease,
        filter .3s ease;
}

.person-card:hover img{
    transform:scale(1.025);
}

/* =========================================================
   PHOTO DU GÉRANT
   ========================================================= */

.gerant-photo{
    position:relative;
    overflow:hidden;
    background:#E8EDF3;
    border-radius:14px;
    box-shadow:0 15px 35px rgba(7,26,51,.10);
}

.gerant-photo img{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
    transition:transform .5s ease;
}

.gerant-photo:hover img{
    transform:scale(1.02);
}

/* =========================================================
   LOGOS DES PARTENAIRES
   ========================================================= */

.logo-card{
    overflow:hidden;
}

.logo-card img{
    display:block;
    width:auto;
    max-width:90%;
    height:auto;
    max-height:72px;
    object-fit:contain;
    filter:grayscale(15%);
    opacity:.90;
    transition:
        filter .25s ease,
        opacity .25s ease,
        transform .25s ease;
}

.logo-card:hover img{
    filter:grayscale(0);
    opacity:1;
    transform:scale(1.04);
}

/* =========================================================
   LOGOS CLIENTS
   ========================================================= */

.client-card{
    overflow:hidden;
}

.client-card img{
    display:block;
    width:100%;
    height:135px;
    object-fit:contain;
    padding:10px;
    filter:grayscale(10%);
    opacity:.92;
    transition:
        transform .3s ease,
        filter .3s ease,
        opacity .3s ease;
}

.client-card:hover img{
    transform:scale(1.03);
    filter:grayscale(0);
    opacity:1;
}

/* =========================================================
   IMAGE DU LOGO PRINCIPAL
   ========================================================= */

.brand img{
    display:block;
    object-fit:contain;
    image-rendering:auto;
}

/* =========================================================
   IMAGE DU FOOTER
   ========================================================= */

.footer img{
    object-fit:contain;
}

/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:600px){

    .project-card img{
        height:200px;
    }

    .person-card img{
        height:250px;
    }

    .gerant-photo{
        max-width:100%;
    }

    .client-card img{
        height:120px;
    }

    .logo-card{
        min-height:100px;
    }
}
/* =========================================================
   HAVY GROUP — TYPOGRAPHIE CORPORATE
   Georgia pour les titres, Inter pour l'interface
   ========================================================= */

/* Titres principaux */

.hero h1,
.hero-carousel .slide h1,
.page-hero h1,
.section-head h2,
.director-label h2,
.gerant-grid h2{
    font-family:Georgia,"Times New Roman",serif;
    font-weight:700;
    letter-spacing:-.5px;
}

/* Titres des cartes */

.service-card h3,
.formation-card h3,
.mission-card h3,
.project-card h3,
.person-card h3,
.client-card h3,
.info-grid h3{
    font-family:Georgia,"Times New Roman",serif;
    font-weight:700;
}

/* Message de la direction */

.director-message p{
    font-family:Georgia,"Times New Roman",serif;
    font-size:19px;
    line-height:1.85;
}

/* Nom du dirigeant */

.director-message strong{
    font-family:Georgia,"Times New Roman",serif;
    font-size:18px;
}

/* Navigation : reste moderne */

.nav-wrap nav a,
.nav-dropdown>button,
.nav-cta,
.btn,
.admin-nav-link{
    font-family:Inter,Arial,sans-serif;
}

/* Formulaires : lisibilité */

input,
textarea,
select,
label{
    font-family:Inter,Arial,sans-serif;
}

/* Footer */

.footer h3,
.footer h4{
    font-family:Georgia,"Times New Roman",serif;
}
/* =========================================================
   HAVY GROUP — LOGO HEADER PREMIUM
   ========================================================= */

.site-header .brand{
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    height:72px;
}

.site-header .brand img{
    display:block;
    width:96px;
    height:auto;
    max-height:58px;
    object-fit:contain;
    object-position:center;
    margin:0;
    padding:0;
    background:transparent;
    border:0;
    box-shadow:none;
    transition:transform .25s ease;
}

.site-header .brand:hover img{
    transform:scale(1.03);
}

/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:900px){

    .site-header .brand{
        height:70px;
    }

    .site-header .brand img{
        width:88px;
        max-height:54px;
    }
}

@media(max-width:600px){

    .site-header .brand{
        height:66px;
    }

    .site-header .brand img{
        width:82px;
        max-height:50px;
    }
}
/* =========================================================
   HAVY GROUP — ANIMATIONS PREMIUM
   Apparence uniquement — aucune modification fonctionnelle
   ========================================================= */

/* ---------------------------------------------------------
   1. ANIMATION GÉNÉRALE DES SECTIONS
   --------------------------------------------------------- */

.section,
.page-hero,
.hero,
.hero-carousel{
    animation: havyFadeIn .8s ease both;
}

@keyframes havyFadeIn{
    from{
        opacity:0;
    }
    to{
        opacity:1;
    }
}


/* ---------------------------------------------------------
   2. TITRES — APPARITION ÉLÉGANTE
   --------------------------------------------------------- */

.section-head h2,
.director-label h2,
.gerant-grid h2,
.page-hero h1{
    animation:havyTitleIn .75s cubic-bezier(.22,1,.36,1) both;
}

@keyframes havyTitleIn{
    from{
        opacity:0;
        transform:translateY(18px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }
}


/* ---------------------------------------------------------
   3. PETITE LIGNE SOUS LES TITRES
   --------------------------------------------------------- */

.section-head h2:after{
    transform-origin:left center;
    animation:havyLineIn .8s ease .15s both;
}

@keyframes havyLineIn{
    from{
        transform:scaleX(0);
        opacity:0;
    }

    to{
        transform:scaleX(1);
        opacity:1;
    }
}


/* ---------------------------------------------------------
   4. CARTES — MOUVEMENT PROFESSIONNEL AU SURVOL
   --------------------------------------------------------- */

.info-grid article,
.service-card,
.formation-card,
.mission-card,
.person-card,
.project-card,
.client-card,
.logo-card,
.contact-box{
    transition:
        transform .3s cubic-bezier(.22,1,.36,1),
        box-shadow .3s ease,
        border-color .3s ease;
}

.info-grid article:hover,
.service-card:hover,
.formation-card:hover,
.mission-card:hover,
.person-card:hover,
.project-card:hover,
.client-card:hover,
.logo-card:hover,
.contact-box:hover{
    transform:translateY(-7px);
    box-shadow:0 20px 40px rgba(7,26,51,.12);
}


/* ---------------------------------------------------------
   5. IMAGES — ZOOM TRÈS LÉGER
   --------------------------------------------------------- */

.project-card img,
.person-card img,
.gerant-photo img{
    transition:
        transform .6s cubic-bezier(.22,1,.36,1),
        filter .4s ease;
}

.project-card:hover img,
.person-card:hover img{
    transform:scale(1.035);
}


/* ---------------------------------------------------------
   6. LOGOS PARTENAIRES
   --------------------------------------------------------- */

.logo-card img,
.client-card img{
    transition:
        transform .35s ease,
        opacity .35s ease;
}

.logo-card:hover img,
.client-card:hover img{
    transform:scale(1.045);
}


/* ---------------------------------------------------------
   7. BOUTONS
   --------------------------------------------------------- */

.btn,
.nav-cta,
.admin-nav-link{
    transition:
        transform .25s cubic-bezier(.22,1,.36,1),
        box-shadow .25s ease,
        background-color .25s ease,
        color .25s ease;
}

.btn:hover,
.nav-cta:hover{
    transform:translateY(-3px);
}

.btn:active,
.nav-cta:active{
    transform:translateY(-1px) scale(.98);
}


/* ---------------------------------------------------------
   8. LOGO
   --------------------------------------------------------- */

.brand img{
    transition:
        transform .35s cubic-bezier(.22,1,.36,1),
        filter .3s ease;
}

.brand:hover img{
    transform:scale(1.04);
}


/* ---------------------------------------------------------
   9. MENU — APPARITION FLUIDE
   --------------------------------------------------------- */

.nav-wrap nav a{
    transition:
        color .2s ease,
        transform .2s ease;
}

.nav-wrap nav a:hover{
    transform:translateY(-1px);
}


/* ---------------------------------------------------------
   10. CAROUSEL — TRANSITION PLUS CINÉMATIQUE
   --------------------------------------------------------- */

.hero-carousel .slide{
    transition:
        opacity .8s ease,
        transform 1.1s cubic-bezier(.22,1,.36,1),
        visibility .8s ease;
}

.hero-carousel .slide:not(.active){
    transform:scale(1.025);
}

.hero-carousel .slide.active{
    transform:scale(1);
}


/* Texte du carousel */

.hero-carousel .slide.active .slide-content{
    animation:havySlideContent .85s cubic-bezier(.22,1,.36,1) both;
}

@keyframes havySlideContent{
    from{
        opacity:0;
        transform:translateY(25px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }
}


/* ---------------------------------------------------------
   11. CONTRÔLES DU CAROUSEL
   --------------------------------------------------------- */

.carousel-controls button{
    transition:
        transform .25s ease,
        background-color .25s ease,
        border-color .25s ease;
}

.carousel-controls button:hover{
    transform:translateY(-3px) scale(1.04);
}

.carousel-controls button:active{
    transform:scale(.94);
}


/* ---------------------------------------------------------
   12. POINTS DU CAROUSEL
   --------------------------------------------------------- */

.carousel-dots button{
    transition:
        width .3s ease,
        transform .3s ease,
        opacity .3s ease;
}

.carousel-dots button:hover{
    transform:scale(1.25);
}


/* ---------------------------------------------------------
   13. FORMULAIRES
   --------------------------------------------------------- */

input,
textarea,
select{
    transition:
        border-color .25s ease,
        box-shadow .25s ease,
        transform .2s ease;
}

input:focus,
textarea:focus,
select:focus{
    transform:translateY(-1px);
}


/* ---------------------------------------------------------
   14. MESSAGE DE DIRECTION
   --------------------------------------------------------- */

.director-message{
    transition:
        transform .3s ease,
        box-shadow .3s ease;
}

.director-message:hover{
    transform:translateY(-4px);
    box-shadow:0 18px 38px rgba(7,26,51,.11);
}


/* ---------------------------------------------------------
   15. PHOTO DU GÉRANT
   --------------------------------------------------------- */

.gerant-photo{
    transition:
        transform .35s ease,
        box-shadow .35s ease;
}

.gerant-photo:hover{
    transform:translateY(-5px);
    box-shadow:0 20px 40px rgba(7,26,51,.13);
}


/* ---------------------------------------------------------
   16. MODALE
   --------------------------------------------------------- */

.modal{
    transition:
        background-color .3s ease,
        backdrop-filter .3s ease;
}

.modal-box{
    animation:havyModalIn .35s cubic-bezier(.22,1,.36,1) both;
}

@keyframes havyModalIn{
    from{
        opacity:0;
        transform:translateY(25px) scale(.97);
    }

    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}

.modal-close{
    transition:
        transform .25s ease,
        background-color .25s ease,
        color .25s ease;
}

.modal-close:hover{
    transform:rotate(90deg);
}


/* ---------------------------------------------------------
   17. ACCESSIBILITÉ
   Désactive les animations si l'utilisateur le demande
   --------------------------------------------------------- */

@media (prefers-reduced-motion:reduce){

    *,
    *::before,
    *::after{
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.01ms !important;
        scroll-behavior:auto !important;
    }

}


/* ---------------------------------------------------------
   18. MOBILE
   Animations légèrement réduites
   --------------------------------------------------------- */

@media(max-width:600px){

    .info-grid article:hover,
    .service-card:hover,
    .formation-card:hover,
    .mission-card:hover,
    .person-card:hover,
    .project-card:hover,
    .client-card:hover,
    .logo-card:hover,
    .contact-box:hover{
        transform:translateY(-4px);
    }

    .hero-carousel .slide.active .slide-content{
        animation-duration:.7s;
    }

}
/* =========================================================
   ANIMATIONS AU DÉFILEMENT — HAVY GROUP
   ========================================================= */

.reveal-on-scroll{
    opacity:0;
    transform:translateY(35px);
    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.22,1,.36,1);
}

.reveal-on-scroll.is-visible{
    opacity:1;
    transform:translateY(0);
}

.reveal-left{
    opacity:0;
    transform:translateX(-35px);
    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.22,1,.36,1);
}

.reveal-left.is-visible{
    opacity:1;
    transform:translateX(0);
}

.reveal-right{
    opacity:0;
    transform:translateX(35px);
    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.22,1,.36,1);
}

.reveal-right.is-visible{
    opacity:1;
    transform:translateX(0);
}

.reveal-scale{
    opacity:0;
    transform:scale(.94);
    transition:
        opacity .8s ease,
        transform .8s cubic-bezier(.22,1,.36,1);
}

.reveal-scale.is-visible{
    opacity:1;
    transform:scale(1);
}
/* =========================================================
   HAVY GROUP — ANIMATION PREMIUM DES GRANDS TITRES
   ========================================================= */

.hero-carousel .slide h1,
.page-hero h1,
.section-head h2,
.director-label h2,
.gerant-grid h2 {

    transition:
        transform 1s cubic-bezier(.22,1,.36,1),
        opacity 1s ease,
        letter-spacing 1s ease;
}

/* État initial */
.hero-carousel .slide h1,
.page-hero h1,
.section-head h2,
.director-label h2,
.gerant-grid h2 {

    opacity: 0;
    transform: translateY(28px);
    letter-spacing: 1px;
}

/* État visible */
.hero-carousel .slide h1.title-visible,
.page-hero h1.title-visible,
.section-head h2.title-visible,
.director-label h2.title-visible,
.gerant-grid h2.title-visible {

    opacity: 1;
    transform: translateY(0);
    letter-spacing: -0.5px;
}