/*==================================================
KINÉPULSE — V6
STYLE.CSS
Design premium : Fraunces + Inter + Plex Mono
Signature : ligne de pulsation (ECG)
==================================================*/


/*=========================================
GOOGLE FONTS
=========================================*/

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Inter:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');


/*=========================================
VARIABLES
=========================================*/

:root{

    --primary:#4F9D93;
    --primary-dark:#356E67;
    --primary-light:#9AD7D3;
    --primary-tint:#E9F3F2;

    --brass:#B08D57;
    --brass-tint:#F5EEE1;

    --secondary:#16212B;
    --text:#33424E;
    --text-light:#69747E;

    --background:#FAF8F4;
    --white:#FFFFFF;
    --border:#E7E2D8;

    --success:#16A34A;
    --danger:#DC2626;

    --shadow:0 20px 50px rgba(22,33,43,.08);
    --shadow-hover:0 28px 65px rgba(22,33,43,.14);

    --radius:20px;
    --transition:.35s cubic-bezier(.4,0,.2,1);

    --font-display:'Fraunces',serif;
    --font-body:'Inter',sans-serif;
    --font-mono:'IBM Plex Mono',monospace;

}


/*=========================================
RESET
=========================================*/

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    font-family:var(--font-body);
    background:var(--background);
    color:var(--text);
    line-height:1.7;
    overflow-x:hidden;
    -webkit-font-smoothing:antialiased;
}

h1,h2,h3{
    font-family:var(--font-display);
    font-weight:600;
    letter-spacing:-.01em;
    color:var(--secondary);
}

img{
    width:100%;
    display:block;
    background:linear-gradient(135deg,var(--primary-tint),var(--background));
    color:transparent;
    user-select:none;
    -webkit-user-drag:none;
}

a{
    text-decoration:none;
    color:inherit;
}

ul{
    list-style:none;
}

button{
    border:none;
    outline:none;
    cursor:pointer;
    font-family:inherit;
}

input,
textarea,
select{
    font-family:inherit;
    outline:none;
}

:focus-visible{
    outline:2px solid var(--primary);
    outline-offset:3px;
}

@media (prefers-reduced-motion:reduce){
    *{
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.01ms !important;
        scroll-behavior:auto !important;
    }
}


/*=========================================
ICÔNES SVG
=========================================*/

.icon{
    width:1em;
    height:1em;
    stroke:currentColor;
    fill:none;
    stroke-width:1.6;
    stroke-linecap:round;
    stroke-linejoin:round;
    vertical-align:-.15em;
}


/*=========================================
CONTAINER / SECTIONS
=========================================*/

.container{
    width:min(1200px,92%);
    margin:auto;
}

.section{
    padding:130px 0;
}

.section-title{
    text-align:center;
    max-width:740px;
    margin:0 auto 70px;
}

.section-title span,
.hero-tag{
    display:inline-block;
    padding:7px 18px;
    background:var(--primary-tint);
    color:var(--primary-dark);
    border-radius:999px;
    font-family:var(--font-mono);
    font-size:.78rem;
    letter-spacing:.05em;
    text-transform:uppercase;
    font-weight:500;
    margin-bottom:22px;
}

.section-title h2{
    font-size:clamp(2rem,3.4vw,2.7rem);
    margin:0 0 18px;
    line-height:1.2;
    font-weight:500;
}

.section-title p{
    color:var(--text-light);
    font-size:1.05rem;
    font-weight:300;
}


/*=========================================
LIGNE DE PULSATION — SIGNATURE
=========================================*/

.pulse-divider{
    width:100%;
    height:26px;
    display:flex;
    align-items:center;
    justify-content:center;
    opacity:.5;
    margin:0 auto 20px;
}

.pulse-divider svg{
    width:min(300px,55%);
    height:100%;
    stroke:var(--primary);
    fill:none;
    stroke-width:1.6;
    stroke-linecap:round;
    stroke-linejoin:round;
}

.pulse-svg path{
    stroke-dasharray:460;
    stroke-dashoffset:460;
    animation:draw-pulse 1.8s .2s ease-out forwards;
}

@keyframes draw-pulse{
    to{ stroke-dashoffset:0; }
}


/*=========================================
BOUTONS
=========================================*/

.btn-primary{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:16px 32px;
    background:var(--secondary);
    color:var(--white);
    border-radius:999px;
    font-weight:500;
    font-size:.94rem;
    transition:var(--transition);
}

.btn-primary:hover{
    background:var(--primary-dark);
    transform:translateY(-3px);
    box-shadow:0 16px 34px rgba(53,110,103,.30);
}

.btn-outline{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:15px 30px;
    border-radius:999px;
    border:1px solid var(--border);
    color:var(--secondary);
    font-weight:500;
    font-size:.94rem;
    transition:var(--transition);
}

.btn-outline:hover{
    border-color:var(--secondary);
    background:var(--secondary);
    color:var(--white);
}

.btn-secondary{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:16px 32px;
    border-radius:999px;
    background:var(--white);
    color:var(--secondary);
    border:1px solid var(--border);
    font-weight:500;
    font-size:.94rem;
    transition:var(--transition);
}

.btn-secondary:hover{
    border-color:var(--primary);
    color:var(--primary-dark);
    transform:translateY(-3px);
}


/*=========================================
CARDS (base commune)
=========================================*/

.service-card,
.adv-card,
.step-card,
.testimonial-card,
.contact-card{
    background:var(--white);
    border-radius:var(--radius);
    overflow:hidden;
    border:1px solid var(--border);
    transition:transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}

.service-card:hover,
.adv-card:hover,
.step-card:hover,
.testimonial-card:hover,
.contact-card:hover{
    transform:translateY(-8px);
    box-shadow:var(--shadow);
    border-color:var(--primary);
}


/*==================================================
HEADER
==================================================*/

header{
    position:fixed;
    top:0;
    left:0;
    width:100%;
    z-index:999;
    padding:20px 0;
    transition:.35s ease;
    background:rgba(250,248,244,.75);
    backdrop-filter:blur(18px);
    -webkit-backdrop-filter:blur(18px);
}

header.scrolled{
    background:rgba(250,248,244,.94);
    box-shadow:0 1px 0 var(--border);
    padding:14px 0;
}

.header-container{
    display:flex;
    align-items:center;
    justify-content:space-between;
}

.logo img{
    width:160px;
    transition:.3s;
    background:none;
}

header.scrolled .logo img{
    width:146px;
}


/*=========================================
NAVIGATION
=========================================*/

.nav-menu{
    display:flex;
    align-items:center;
    gap:38px;
}

.nav-menu li{
    position:relative;
}

.nav-menu a{
    font-weight:500;
    font-size:.95rem;
    color:var(--secondary);
    transition:.3s;
    position:relative;
}

.nav-menu a:hover,
.nav-menu a.active{
    color:var(--primary-dark);
}

.nav-menu a::after{
    content:"";
    position:absolute;
    left:0;
    bottom:-8px;
    width:0;
    height:1.5px;
    background:var(--primary);
    transition:.3s;
}

.nav-menu a:hover::after,
.nav-menu a.active::after{
    width:100%;
}


/*=========================================
HEADER BUTTONS
=========================================*/

.header-buttons{
    display:flex;
    align-items:center;
    gap:14px;
}

.header-buttons .btn-outline,
.header-buttons .btn-primary{
    padding:12px 24px;
    font-size:.88rem;
}


/*=========================================
HAMBURGER + MENU MOBILE
=========================================*/

.hamburger{
    display:none;
    width:46px;
    height:46px;
    border-radius:12px;
    background:var(--secondary);
    color:var(--white);
    transition:.3s;
    align-items:center;
    justify-content:center;
}

.hamburger .icon{
    width:22px;
    height:22px;
}

.hamburger:hover{
    background:var(--primary-dark);
}

@media(max-width:991px){

    .nav-menu{
        position:fixed;
        top:80px;
        left:-100%;
        width:100%;
        background:var(--white);
        flex-direction:column;
        gap:0;
        box-shadow:var(--shadow);
        transition:.35s ease;
        overflow:hidden;
        z-index:1000;
    }

    .nav-menu.active{
        left:0;
    }

    .nav-menu li{
        width:100%;
        text-align:center;
        border-bottom:1px solid var(--border);
    }

    .nav-menu a{
        display:block;
        padding:22px;
    }

    .header-buttons{
        display:none;
    }

    .hamburger{
        display:flex;
    }

}


/*==================================================
HERO
==================================================*/

.hero{
    position:relative;
    min-height:100vh;
    display:flex;
    align-items:center;
    padding:180px 0 120px;
    background:linear-gradient(150deg,var(--background) 0%,var(--primary-tint) 100%);
    overflow:hidden;
}

.hero-overlay{
    position:absolute;
    inset:0;
    background:radial-gradient(circle at top right,rgba(79,157,147,.18),transparent 45%);
    pointer-events:none;
}

.hero-grid{
    display:grid;
    grid-template-columns:1.1fr 1fr;
    align-items:center;
    gap:70px;
    position:relative;
    z-index:2;
}

.hero-pulse{
    width:180px;
    height:36px;
    margin-bottom:22px;
    stroke:var(--brass);
    fill:none;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
    opacity:.9;
}

.hero-pulse path{
    stroke-dasharray:460;
    stroke-dashoffset:460;
    animation:draw-pulse 1.6s .2s ease-out forwards;
}

.hero-content h1{
    font-size:clamp(2.6rem,5vw,3.8rem);
    line-height:1.15;
    margin:20px 0 24px;
    font-weight:500;
}

.hero-content p{
    font-size:1.1rem;
    color:var(--text-light);
    max-width:580px;
    margin-bottom:38px;
    font-weight:300;
}

.hero-buttons{
    display:flex;
    flex-wrap:wrap;
    gap:16px;
    margin-bottom:36px;
}

.hero-buttons.center{
    justify-content:center;
}


/*=========================================
FEATURES / TAGS
=========================================*/

.hero-features{
    display:flex;
    flex-wrap:wrap;
    gap:14px;
}

.hero-feature{
    background:var(--white);
    border:1px solid var(--border);
    padding:12px 20px;
    border-radius:999px;
    font-weight:500;
    font-size:.88rem;
    color:var(--secondary);
    display:flex;
    align-items:center;
    gap:8px;
}

.hero-feature::before{
    content:"";
    width:5px;
    height:5px;
    border-radius:50%;
    background:var(--brass);
    flex-shrink:0;
}


/*=========================================
IMAGE HERO + CARTES FLOTTANTES
=========================================*/

.hero-image{
    position:relative;
    min-height:340px;
}

.hero-image img{
    width:100%;
    height:100%;
    min-height:340px;
    object-fit:cover;
    border-radius:var(--radius);
    box-shadow:0 35px 80px rgba(22,33,43,.16);
}

.floating-card{
    position:absolute;
    background:rgba(255,255,255,.92);
    backdrop-filter:blur(15px);
    padding:18px 24px;
    border-radius:16px;
    box-shadow:var(--shadow);
    animation:floatCard 4s ease-in-out infinite;
    border:1px solid var(--border);
}

.floating-card strong{
    display:block;
    font-family:var(--font-display);
    font-size:1.5rem;
    color:var(--primary-dark);
    font-weight:600;
}

.floating-card span{
    color:var(--text-light);
    font-size:.85rem;
}

.card-one{
    top:20px;
    left:-30px;
}

.card-two{
    right:-30px;
    bottom:30px;
    animation-delay:2s;
}

@keyframes floatCard{
    0%{ transform:translateY(0); }
    50%{ transform:translateY(-12px); }
    100%{ transform:translateY(0); }
}

@media(max-width:991px){

    .hero{
        text-align:center;
        padding-top:150px;
    }

    .hero-grid{
        grid-template-columns:1fr;
    }

    .hero-buttons,
    .hero-features{
        justify-content:center;
    }

    .hero-image{
        margin-top:40px;
    }

    .card-one{ left:10px; }
    .card-two{ right:10px; }

}

@media(max-width:576px){

    .hero{
        padding-bottom:90px;
    }

    .floating-card{
        position:relative;
        margin:16px auto 0;
        left:auto; right:auto; top:auto; bottom:auto;
    }

}


/*==================================================
ABOUT / GRILLES "IMAGE + TEXTE"
==================================================*/

.about{
    background:var(--white);
}

.about-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:64px;
    align-items:center;
}

.about-image img,
.analysis-image img{
    min-height:320px;
    object-fit:cover;
    border-radius:var(--radius);
    box-shadow:var(--shadow);
}

.img-contain{
    object-fit:contain !important;
    background:var(--white) !important;
    padding:16px;
}

.photo-placeholder{
    min-height:320px;
    height:100%;
    border-radius:var(--radius);
    background:linear-gradient(135deg,var(--primary-tint),var(--background));
    border:1px solid var(--border);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:14px;
    color:var(--primary-dark);
}

.photo-placeholder .icon{
    width:34px;
    height:34px;
    opacity:.5;
}

.photo-placeholder span{
    font-size:.85rem;
    font-weight:500;
    opacity:.6;
    font-family:var(--font-mono);
    text-transform:uppercase;
    letter-spacing:.04em;
}

.hero-image .photo-placeholder{
    min-height:340px;
}

.about-content h3{
    font-size:1.8rem;
    margin-bottom:18px;
    font-weight:500;
}

.about-content p{
    color:var(--text-light);
    margin-bottom:24px;
    font-weight:300;
}

.about-list{
    display:flex;
    flex-direction:column;
    gap:14px;
}

.about-list li,
.analysis-list li{
    background:var(--background);
    padding:14px 20px;
    border-radius:12px;
    font-weight:500;
    font-size:.94rem;
    border:1px solid var(--border);
}

@media(max-width:768px){
    .about-grid{ grid-template-columns:1fr; }
}


/*==================================================
ANALYSE 3D — MISE EN AVANT CROISÉE
==================================================*/

.analysis-highlight{
    background:var(--white);
}

.analysis-grid{
    display:grid;
    grid-template-columns:1fr 1.1fr;
    gap:64px;
    align-items:center;
}

.section-subtitle{
    display:inline-block;
    padding:7px 18px;
    background:var(--brass-tint);
    color:var(--brass);
    border-radius:999px;
    font-family:var(--font-mono);
    font-size:.78rem;
    letter-spacing:.05em;
    text-transform:uppercase;
    font-weight:500;
    margin-bottom:20px;
}

.analysis-content h2{
    font-size:2rem;
    margin-bottom:18px;
    font-weight:500;
}

.analysis-content p{
    color:var(--text-light);
    margin-bottom:16px;
    font-weight:300;
}

.analysis-list{
    display:flex;
    flex-direction:column;
    gap:12px;
    margin:24px 0 30px;
}

@media(max-width:900px){
    .analysis-grid{
        grid-template-columns:1fr;
    }
    .analysis-image{
        order:-1;
    }
}


/*==================================================
SERVICES
==================================================*/

.services{
    background:var(--background);
}

.services-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:32px;
}

.service-card{
    display:flex;
    flex-direction:column;
}

.service-card img{
    height:230px;
    object-fit:cover;
}

.service-content{
    padding:34px;
    display:flex;
    flex-direction:column;
    flex:1;
}

.service-content h3{
    font-size:1.45rem;
    margin-bottom:14px;
    font-weight:500;
}

.service-content p{
    color:var(--text-light);
    margin-bottom:20px;
    font-weight:300;
}

.service-content ul{
    display:flex;
    flex-direction:column;
    gap:10px;
    margin-bottom:28px;
}

.service-content li{
    color:var(--text);
    font-weight:500;
    font-size:.92rem;
    display:flex;
    align-items:center;
    gap:9px;
}

.service-content li::before{
    content:"";
    width:5px;
    height:5px;
    border-radius:50%;
    background:var(--brass);
    flex-shrink:0;
}

.service-content .btn-primary{
    margin-top:auto;
    width:100%;
}


/*==================================================
ADVANTAGES
==================================================*/

.advantages{
    background:var(--white);
}

.advantages-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:28px;
}

.adv-card{
    text-align:center;
    padding:40px 26px;
}

.adv-icon{
    width:64px;
    height:64px;
    margin:0 auto 22px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--primary-tint);
    color:var(--primary-dark);
    border-radius:50%;
}

.adv-icon .icon{
    width:26px;
    height:26px;
}

.adv-card h3{
    font-size:1.1rem;
    margin-bottom:13px;
    font-weight:500;
}

.adv-card p{
    color:var(--text-light);
    font-weight:300;
    font-size:.94rem;
}

.cta-box .advantages-grid{
    margin-top:36px;
}

.cta-box .adv-card{
    background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.15);
}

.cta-box .adv-card h3,
.cta-box .adv-card p{
    color:var(--white);
}

.cta-box .adv-card p{
    opacity:.8;
}

.cta-box .adv-icon{
    background:rgba(255,255,255,.12);
    color:var(--brass);
}


/*==================================================
PREMIÈRE VISITE / ÉTAPES
==================================================*/

.first-visit{
    background:var(--background);
}

.steps-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:26px;
}

.step-card{
    text-align:center;
    padding:42px 26px;
}

.step-number{
    width:56px;
    height:56px;
    margin:auto auto 22px;
    border-radius:50%;
    background:var(--secondary);
    color:var(--white);
    display:flex;
    align-items:center;
    justify-content:center;
    font-family:var(--font-mono);
    font-size:1.05rem;
}

.step-card h3{
    font-size:1.1rem;
    margin-bottom:13px;
    font-weight:500;
}

.step-card p{
    color:var(--text-light);
    font-weight:300;
    font-size:.94rem;
}

@media(max-width:1100px){
    .services-grid,
    .advantages-grid,
    .steps-grid{
        grid-template-columns:repeat(2,1fr);
    }
}

@media(max-width:768px){
    .services-grid,
    .advantages-grid,
    .steps-grid{
        grid-template-columns:1fr;
    }
}


/*==================================================
TESTIMONIALS
==================================================*/

.testimonials{
    background:var(--white);
}

.testimonials-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:28px;
}

.testimonial-card{
    padding:38px 32px;
}

.stars{
    color:var(--brass);
    font-size:1.15rem;
    margin-bottom:18px;
    letter-spacing:2px;
}

.testimonial-card p{
    color:var(--text);
    font-style:italic;
    margin-bottom:22px;
    font-weight:300;
}

.testimonial-card h4{
    color:var(--secondary);
    font-weight:500;
    font-size:.95rem;
}

@media(max-width:991px){
    .testimonials-grid{ grid-template-columns:1fr; }
}


/*==================================================
FAQ
==================================================*/

.faq{
    background:var(--background);
}

.faq-container{
    max-width:860px;
    margin:auto;
}

.faq-item{
    background:var(--white);
    border:1px solid var(--border);
    border-radius:16px;
    margin-bottom:14px;
    overflow:hidden;
    transition:border-color .3s;
}

.faq-item.active{
    border-color:var(--primary);
}

.faq-question{
    width:100%;
    background:none;
    padding:24px 26px;
    text-align:left;
    font-size:1rem;
    font-weight:500;
    color:var(--secondary);
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
}

.faq-question::after{
    content:"";
    flex-shrink:0;
    width:10px;
    height:10px;
    border-right:1.5px solid var(--text-light);
    border-bottom:1.5px solid var(--text-light);
    transform:rotate(45deg);
    transition:transform .3s;
}

.faq-item.active .faq-question::after{
    transform:rotate(225deg);
}

.faq-answer{
    max-height:0;
    overflow:hidden;
    transition:.35s ease;
}

.faq-item.active .faq-answer{
    max-height:260px;
}

.faq-answer p{
    padding:0 26px 26px;
    color:var(--text-light);
    font-weight:300;
}


/*==================================================
CTA
==================================================*/

.cta-section{
    padding:110px 0;
    background:var(--secondary);
    position:relative;
    overflow:hidden;
}

.cta-section::before{
    content:"";
    position:absolute;
    inset:0;
    background:radial-gradient(ellipse at 50% 0%,rgba(79,157,147,.35),transparent 60%);
    pointer-events:none;
}

.cta-box{
    color:var(--white);
    text-align:center;
    position:relative;
}

.cta-box span{
    display:inline-block;
    margin-bottom:18px;
    font-family:var(--font-mono);
    font-weight:500;
    text-transform:uppercase;
    letter-spacing:.06em;
    font-size:.8rem;
    color:var(--primary-light);
}

.cta-box h2{
    font-size:clamp(1.9rem,3.6vw,2.6rem);
    margin-bottom:22px;
    color:var(--white);
    font-weight:500;
}

.cta-box p{
    max-width:720px;
    margin:0 auto 36px;
    opacity:.85;
    font-weight:300;
}

.cta-buttons{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:16px;
}

.cta-buttons .btn-secondary{
    background:var(--white);
}

.cta-box .btn-primary{
    background:var(--brass);
    color:var(--secondary);
}

.cta-box .btn-primary:hover{
    background:#c4a06b;
    box-shadow:0 16px 34px rgba(176,141,87,.35);
}


/*==================================================
CONTACT (accueil : grille coordonnées + carte)
==================================================*/

.contact{
    background:var(--white);
}

.contact-grid{
    display:grid;
    grid-template-columns:420px 1fr;
    gap:36px;
}

.contact-info{
    display:flex;
    flex-direction:column;
    gap:18px;
}

.contact-card{
    padding:28px;
}

.contact-card h3{
    color:var(--secondary);
    margin-bottom:10px;
    font-size:1.05rem;
    font-weight:500;
    display:flex;
    align-items:center;
    gap:10px;
}

.contact-card p{
    color:var(--text-light);
    font-weight:300;
}

.contact-map iframe,
.map-container iframe{
    width:100%;
    height:100%;
    min-height:440px;
    border:none;
    border-radius:var(--radius);
    border:1px solid var(--border);
}

@media(max-width:991px){
    .contact-grid{ grid-template-columns:1fr; }
}


/*==================================================
FORMULAIRES (booking-form / booking-input)
==================================================*/

.booking-form{
    max-width:640px;
    margin:auto;
    display:flex;
    flex-direction:column;
    gap:16px;
}

.booking-input{
    width:100%;
    padding:16px 18px;
    border:1px solid var(--border);
    border-radius:14px;
    font-size:.96rem;
    font-family:inherit;
    color:var(--secondary);
    background:var(--white);
    transition:.3s;
}

.booking-input:focus{
    border-color:var(--primary);
    box-shadow:0 0 0 4px rgba(79,157,147,.14);
}

textarea.booking-input{
    resize:vertical;
    min-height:130px;
}

.booking-form .btn-primary{
    margin-top:8px;
    width:100%;
}

.consent-check{
    display:flex;
    align-items:flex-start;
    gap:10px;
    font-size:.85rem;
    color:var(--text-light);
    line-height:1.5;
    cursor:pointer;
}

.cta-box .consent-check{
    color:rgba(255,255,255,.75);
}

.consent-check input[type="checkbox"]{
    width:17px;
    height:17px;
    margin-top:2px;
    accent-color:var(--primary);
    flex-shrink:0;
}

.consent-check a{
    text-decoration:underline;
    color:inherit;
}

.consent-check a:hover{
    color:var(--primary);
}

.cal-loading{
    grid-column:1/-1;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:24px 0;
    font-size:.85rem;
    color:var(--text-light);
}

.cta-box .cal-loading{
    color:rgba(255,255,255,.7);
}

.cal-spinner{
    width:16px;
    height:16px;
    border:2px solid var(--border);
    border-top-color:var(--primary);
    border-radius:50%;
    animation:cal-spin .7s linear infinite;
    flex-shrink:0;
}

.cta-box .cal-spinner{
    border-color:rgba(255,255,255,.25);
    border-top-color:var(--brass);
}

@keyframes cal-spin{
    to{ transform:rotate(360deg); }
}

#massage-calendar-wrap{
    background:var(--white);
    border:1px solid var(--border);
    border-radius:18px;
    padding:20px;
    max-width:360px;
    margin:0 auto;
}

.cta-box #massage-calendar-wrap{
    background:rgba(255,255,255,.05);
    border-color:rgba(255,255,255,.14);
}

.calendar-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:16px;
    font-family:var(--font-display);
    font-weight:500;
    font-size:1.05rem;
    text-transform:capitalize;
    color:var(--secondary);
}

.cta-box .calendar-header{
    color:var(--white);
}

.calendar-nav{
    width:30px;
    height:30px;
    border-radius:50%;
    background:var(--background);
    color:var(--secondary);
    display:flex;
    align-items:center;
    justify-content:center;
    transition:.25s;
    flex-shrink:0;
}

.cta-box .calendar-nav{
    background:rgba(255,255,255,.1);
    color:var(--white);
}

.calendar-nav .icon{
    width:14px;
    height:14px;
}

.calendar-nav:hover:not(:disabled){
    background:var(--primary);
    color:var(--white);
}

.calendar-nav:disabled{
    opacity:.25;
    cursor:not-allowed;
}

.calendar-weekdays{
    display:grid;
    grid-template-columns:repeat(7,1fr);
    text-align:center;
    font-family:var(--font-mono);
    font-size:.7rem;
    font-weight:500;
    letter-spacing:.04em;
    color:var(--text-light);
    margin-bottom:8px;
}

.cta-box .calendar-weekdays{
    color:rgba(255,255,255,.5);
}

.calendar-grid{
    display:grid;
    grid-template-columns:repeat(7,1fr);
    gap:4px;
}

.cal-day{
    position:relative;
    aspect-ratio:1;
    max-height:38px;
    border-radius:50%;
    background:none;
    color:var(--text-light);
    font-size:.82rem;
    font-weight:400;
    font-family:var(--font-body);
    display:flex;
    align-items:center;
    justify-content:center;
    opacity:.35;
}

.cta-box .cal-day{
    color:rgba(255,255,255,.5);
}

.cal-day.empty{
    visibility:hidden;
}

.cal-day.available{
    color:var(--primary-dark);
    background:var(--primary-tint);
    font-weight:600;
    opacity:1;
    cursor:pointer;
    transition:.2s ease;
}

.cta-box .cal-day.available{
    color:var(--white);
    background:rgba(255,255,255,.14);
}

.cal-day.available:hover{
    background:var(--primary);
    color:var(--white);
    transform:scale(1.08);
}

.cal-day.selected{
    background:var(--primary) !important;
    color:var(--white) !important;
    transform:scale(1.08);
    box-shadow:0 4px 14px rgba(79,157,147,.4);
}

#cal-timeslots{
    margin-top:20px;
    border-top:1px solid var(--border);
    padding-top:18px;
}

.cta-box #cal-timeslots{
    border-top-color:rgba(255,255,255,.14);
}

.cal-selected-date{
    font-family:var(--font-display);
    font-weight:500;
    font-size:.95rem;
    text-transform:capitalize;
    color:var(--secondary);
    margin-bottom:12px;
}

.cta-box .cal-selected-date{
    color:var(--white);
}

.cal-times{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(76px,1fr));
    gap:8px;
}

.cal-time-btn{
    padding:10px 6px;
    border:1.5px solid var(--border);
    border-radius:10px;
    background:var(--white);
    color:var(--secondary);
    font-weight:600;
    font-size:.85rem;
    transition:.2s;
}

.cta-box .cal-time-btn{
    background:transparent;
    border-color:rgba(255,255,255,.25);
    color:var(--white);
}

.cal-time-btn:hover{
    border-color:var(--primary);
    color:var(--primary-dark);
}

.cta-box .cal-time-btn:hover{
    color:var(--white);
    border-color:var(--white);
}

.cal-time-btn.active{
    background:var(--primary);
    border-color:var(--primary);
    color:var(--white);
}

@media(max-width:480px){
    #massage-calendar-wrap{
        max-width:100%;
        padding:16px;
    }
    .cal-day{
        font-size:.78rem;
    }
}

.booking-form .btn-primary:disabled{
    opacity:.6;
    cursor:not-allowed;
    transform:none !important;
}

.success{
    text-align:center;
    padding:20px 0;
}

.success h2{
    color:var(--primary);
    margin-bottom:14px;
    font-size:1.8rem;
}

.cta-box .success h2{
    color:var(--primary-light);
}

.success p{
    color:var(--text-light);
    font-weight:300;
}

.success-detail{
    font-family:var(--font-mono);
    font-weight:500 !important;
    text-transform:capitalize;
    background:var(--primary-tint);
    color:var(--primary-dark) !important;
    display:inline-block;
    padding:8px 18px;
    border-radius:999px;
    margin:8px 0 18px;
    font-size:.85rem !important;
}

.cta-box .success-detail{
    background:rgba(255,255,255,.12);
    color:var(--white) !important;
}

.cta-box .success p{
    color:var(--white);
    opacity:.85;
}

.availability-label{
    font-weight:500;
    color:var(--secondary);
    font-size:.92rem;
    margin-bottom:4px;
}

.availability-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
}

.duration-choice{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:12px;
    margin-bottom:6px;
}

.duration-option{
    display:flex;
    align-items:center;
    gap:10px;
    padding:16px 18px;
    border:1px solid var(--border);
    border-radius:14px;
    cursor:pointer;
    transition:.3s;
    font-size:.94rem;
    font-weight:500;
    color:var(--text);
    background:var(--white);
}

.duration-option:has(input:checked){
    border-color:var(--primary);
    background:var(--primary-tint);
    color:var(--primary-dark);
}

.duration-option input[type="radio"]{
    width:16px;
    height:16px;
    accent-color:var(--primary);
    flex-shrink:0;
}

@media(max-width:600px){
    .duration-choice{
        grid-template-columns:1fr;
    }
}

.availability-grid label{
    display:flex;
    align-items:center;
    gap:10px;
    padding:14px 16px;
    border:1px solid var(--border);
    border-radius:14px;
    cursor:pointer;
    transition:.3s;
    font-size:.92rem;
    font-weight:500;
    color:var(--text);
    background:var(--white);
}

.cta-box .availability-label{
    color:var(--white);
}

.availability-grid label:has(input:checked){
    border-color:var(--primary);
    background:var(--primary-tint);
    color:var(--primary-dark);
}

.availability-grid input[type="checkbox"]{
    width:16px;
    height:16px;
    accent-color:var(--primary);
    flex-shrink:0;
}

@media(max-width:600px){
    .availability-grid{
        grid-template-columns:1fr;
    }
}


/*==================================================
FOOTER
==================================================*/

footer{
    background:var(--secondary);
    color:var(--white);
    padding:80px 0 30px;
}

.footer-grid{
    display:grid;
    grid-template-columns:2fr 1fr 1fr 1fr;
    gap:50px;
    padding-top:80px;
    padding-bottom:0;
}

.footer-content{
    display:grid;
    grid-template-columns:2fr 1fr;
    gap:50px;
    margin-bottom:50px;
}

.footer-logo{
    width:170px;
    margin-bottom:20px;
    background:var(--white);
    padding:14px 20px;
    border-radius:12px;
}

footer > .container > div > p,
.footer-content p{
    opacity:.7;
    font-weight:300;
    font-size:.94rem;
}

footer h3,
footer h4{
    margin-bottom:18px;
    font-weight:500;
    font-family:var(--font-mono);
    text-transform:uppercase;
    font-size:.85rem;
    letter-spacing:.05em;
    opacity:.65;
    color:var(--white);
}

footer ul{
    display:flex;
    flex-direction:column;
    gap:12px;
}

footer li a{
    opacity:.8;
    transition:.3s;
    font-size:.94rem;
}

footer li a:hover{
    color:var(--primary-light);
    opacity:1;
}

.social-links{
    display:flex;
    flex-direction:column;
    gap:12px;
}

.social-links a{
    opacity:.85;
}

.social-links a:hover{
    color:var(--primary-light);
}

.legal-links{
    display:flex;
    justify-content:center;
    gap:24px;
    flex-wrap:wrap;
    margin-top:50px;
    padding-top:26px;
    border-top:1px solid rgba(255,255,255,.1);
    font-size:.85rem;
}

.legal-links a{
    opacity:.6;
    transition:.3s;
}

.legal-links a:hover{
    opacity:1;
    color:var(--primary-light);
}

.copyright{
    margin-top:20px;
    text-align:center;
    opacity:.5;
    font-size:.85rem;
    padding-top:0;
    border-top:none;
}

@media(max-width:991px){
    .footer-grid,
    .footer-content{
        grid-template-columns:1fr 1fr;
    }
}

@media(max-width:576px){
    .footer-grid,
    .footer-content{
        grid-template-columns:1fr;
        text-align:center;
    }
    .footer-logo{
        margin:0 auto 20px;
    }
    .cta-buttons{
        flex-direction:column;
    }
}


/*==================================================
BACK TO TOP
==================================================*/

#backToTop{
    position:fixed;
    right:24px;
    bottom:24px;
    width:52px;
    height:52px;
    border-radius:50%;
    background:var(--secondary);
    color:var(--white);
    font-size:1.2rem;
    display:flex;
    align-items:center;
    justify-content:center;
    box-shadow:var(--shadow);
    opacity:0;
    visibility:hidden;
    transition:.35s;
    z-index:999;
}

#backToTop.show{
    opacity:1;
    visibility:visible;
}

#backToTop:hover{
    background:var(--primary-dark);
    transform:translateY(-5px);
}


/*==================================================
ANIMATIONS / DÉTAILS
==================================================*/

.fade-up{
    opacity:0;
    transform:translateY(44px);
    transition:opacity .8s ease, transform .8s ease;
}

.fade-up.show{
    opacity:1;
    transform:translateY(0);
}

.about-image img,
.hero-image img,
.service-card img{
    transition:transform .6s ease;
}

.about-image:hover img,
.hero-image:hover img,
.service-card:hover img{
    transform:scale(1.04);
}


/*==================================================
SCROLLBAR / SÉLECTION / ACCESSIBILITÉ
==================================================*/

::-webkit-scrollbar{
    width:10px;
}

::-webkit-scrollbar-track{
    background:var(--background);
}

::-webkit-scrollbar-thumb{
    background:var(--primary);
    border-radius:20px;
}

::-webkit-scrollbar-thumb:hover{
    background:var(--primary-dark);
}

::selection{
    background:var(--primary);
    color:var(--white);
}

iframe{
    border:0;
}


/*==================================================
UTILITAIRES
==================================================*/

.text-center{ text-align:center; }
.mt-1{ margin-top:10px; }
.mt-2{ margin-top:20px; }
.mt-3{ margin-top:30px; }
.mb-1{ margin-bottom:10px; }
.mb-2{ margin-bottom:20px; }
.mb-3{ margin-bottom:30px; }


/*==================================================
RESPONSIVE GLOBAL
==================================================*/

@media(max-width:1200px){
    .container{ width:94%; }
}

@media(max-width:991px){
    body{ font-size:15px; }
    .section{ padding:90px 0; }
    .cta-section{ padding:80px 0; }
}

@media(max-width:768px){
    h1{ font-size:2.4rem; }
    h2{ font-size:1.9rem; }
    .section{ padding:70px 0; }
    .cta-section{ padding:60px 0; }
    .btn-primary,
    .btn-secondary,
    .btn-outline{ width:100%; }
    .header-buttons{
        display:none;
    }
}

@media(max-width:480px){
    body{ font-size:14px; }
    .hero{ padding-top:140px; }
    .section-title h2{ font-size:1.7rem; }
}


/*==================================================
IMPRESSION
==================================================*/

@media print{
    header,
    footer,
    .hero-buttons,
    #backToTop{
        display:none !important;
    }
}
