  :root{
    --sage:#2C3848;
    --sage-dark:#1B2430;
    --sage-light:#D9D2C2;
    --sage-mist:#F6F4EE;
    --plum:#3A4A60;
    --plum-dark:#263243;
    --gold:#C1A879;
    --gold-light:#DCC79B;
    --ink:#26303C;
    --ink-soft:#6C7382;
    --paper:#ffffff;
    --cream:#FAF8F3;
    --line:#E4DFD3;
    --gold-deep:#8A7443;
    --radius-pill:34px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    font-family:"Jost","Helvetica Neue",Arial,sans-serif;
    font-weight:300;
    color:var(--ink);
    background:var(--paper);
    line-height:1.72;
    font-size:17px;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.serif{font-family:"Prata",Georgia,serif;font-weight:400;letter-spacing:0.005em;}
  a{color:inherit;}
  img,svg{max-width:100%;display:block;}
  .wrap{max-width:1200px;margin:0 auto;padding:0 40px;}
  strong,b{font-weight:500;}

  /* Reveal-on-scroll */
  .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.2,.7,.3,1), transform .8s cubic-bezier(.2,.7,.3,1);}
  .reveal.in{opacity:1;transform:translateY(0);}
  .reveal-delay-1{transition-delay:.1s;}
  .reveal-delay-2{transition-delay:.2s;}
  .reveal-delay-3{transition-delay:.3s;}

  /* Header */
  header{
    position:sticky;top:0;z-index:60;
    background:rgba(27,36,48,0.97);
    backdrop-filter:blur(10px);
    transition:box-shadow .3s, background .3s;
  }
  header.scrolled{box-shadow:0 8px 30px rgba(38,38,42,0.12);}
  .nav{
    display:flex;align-items:center;justify-content:space-between;
    padding:20px 32px;max-width:1180px;margin:0 auto;
  }
  .brand{display:flex;align-items:center;gap:15px;text-decoration:none;color:white;}
  .brand-mark{
    width:50px;height:50px;border-radius:50%;border:1.3px solid rgba(255,255,255,0.7);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;
  }
  .brand-mark svg{width:24px;height:24px;}
  .brand-logo{height:46px;width:auto;}
  .footer-brand .brand-logo{height:52px;}
  .brand-text{display:flex;flex-direction:column;line-height:1.3;}
  .brand-text .name{font-family:"Prata",serif;font-size:1.05rem;letter-spacing:0.03em;}
  .brand-text .sub{font-size:0.62rem;letter-spacing:0.22em;text-transform:uppercase;opacity:0.82;font-weight:400;margin-top:1px;}
  nav.links{display:flex;gap:28px;font-size:0.79rem;letter-spacing:0.07em;text-transform:uppercase;}
  nav.links a{text-decoration:none;color:white;opacity:0.9;position:relative;padding-bottom:4px;transition:opacity .15s;}
  nav.links a::after{
    content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);
    transition:width .25s ease;
  }
  nav.links a:hover{opacity:1;}
  nav.links a:hover::after{width:100%;}
  .nav-cta{
    background:white;color:var(--plum);padding:12px 28px;border-radius:var(--radius-pill);
    text-decoration:none;font-weight:600;font-size:0.78rem;letter-spacing:0.08em;text-transform:uppercase;
    white-space:nowrap;transition:background .2s, color .2s, transform .2s;
    box-shadow:0 6px 18px rgba(0,0,0,0.08);
  }
  .nav-cta:hover{background:var(--plum);color:white;transform:translateY(-1px);}

  /* Buttons */
  .btn{
    display:inline-flex;align-items:center;gap:10px;
    padding:16px 34px;border-radius:var(--radius-pill);font-weight:500;font-size:0.78rem;
    letter-spacing:0.1em;text-transform:uppercase;text-decoration:none;
    transition:transform .2s, box-shadow .2s, background .2s, color .2s;
  }
  .btn svg{width:15px;height:15px;transition:transform .2s;}
  .btn:hover svg{transform:translateX(3px);}
  .btn-primary{background:var(--plum);color:white;box-shadow:0 10px 26px rgba(58,74,96,0.30);}
  .btn-primary:hover{background:var(--plum-dark);transform:translateY(-2px);box-shadow:0 14px 30px rgba(58,74,96,0.38);}
  .btn-outline{background:transparent;color:var(--plum);border:1.3px solid var(--plum);}
  .btn-outline:hover{background:var(--plum);color:white;transform:translateY(-2px);}
  .btn-light{background:white;color:var(--plum);}
  .btn-light:hover{background:var(--sage-mist);transform:translateY(-2px);}

  /* Hero */
  .hero{
    background:
      linear-gradient(160deg, rgba(27,36,48,0.38) 0%, rgba(27,36,48,0.26) 100%),
      url(images/cabinet-salle-vue-ensemble.webp) center 32%/cover no-repeat;
    position:relative;overflow:hidden;
  }
  .hero-inner{
    max-width:1200px;margin:0 auto;padding:150px 40px 130px;
    min-height:84vh;display:flex;align-items:center;
    position:relative;z-index:2;
  }
  .hero-inner > div{max-width:660px;}
  .kicker{
    display:flex;align-items:center;gap:12px;
    font-size:0.72rem;letter-spacing:0.26em;text-transform:uppercase;
    color:var(--gold-deep);font-weight:500;margin-bottom:24px;
  }
  .kicker .rule{width:46px;height:1px;background:var(--gold);display:inline-block;}
  .hero h1{font-size:3.6rem;line-height:1.12;letter-spacing:-0.018em;
           color:var(--plum);margin:0 0 28px;}
  .hero p.lead{font-size:1.06rem;font-weight:300;color:var(--ink-soft);margin:0 0 36px;max-width:44ch;}
  .hero-actions{display:flex;gap:18px;flex-wrap:wrap;}

  /* ---- video de fond ----
     L'iframe YouTube est en 16/9 fixe : pour couvrir le bandeau sans bandes
     noires, on la dimensionne au plus grand des deux ratios et on la recentre.
     pointer-events:none pour qu'elle n'intercepte aucun clic. */
  .hero-video{position:absolute;inset:0;overflow:hidden;z-index:0;}
  .hv-couche{
    position:absolute;inset:0;background-size:cover;background-position:center 42%;
    opacity:0;transition:opacity 2s ease;will-change:opacity,transform;
  }
  .hv-couche.on{opacity:1;animation:hv-zoom 16s ease-out forwards;}
  @keyframes hv-zoom{from{transform:scale(1.03);}to{transform:scale(1.16);}}
  .hero-scrim{
    position:absolute;inset:0;z-index:1;pointer-events:none;
    background:
      linear-gradient(90deg, rgba(27,36,48,0.82) 0%, rgba(27,36,48,0.58) 48%, rgba(27,36,48,0.28) 100%),
      linear-gradient(180deg, rgba(27,36,48,0.40) 0%, transparent 30%, rgba(27,36,48,0.48) 100%);
  }
  /* texte du bandeau, en clair sur la video */
  .hero .kicker{color:var(--gold-light);}
  .hero h1{color:#fff;}
  .hero p.lead{color:rgba(255,255,255,0.86);}
  .hero .btn-outline{border-color:rgba(255,255,255,0.55);color:#fff;}
  .hero .btn-outline:hover{background:rgba(255,255,255,0.12);border-color:#fff;}

  /* la video est un decor : on la coupe pour qui demande moins d'animations */
  @media (prefers-reduced-motion:reduce){
    .hero-video{display:none;}
  }

  .hero-art{position:relative;display:flex;align-items:center;justify-content:center;}
  .hero-art .ring{
    position:absolute;border-radius:50%;border:1px solid rgba(193,168,121,0.45);
  }
  .hero-art .ring.r1{width:112%;height:112%;}
  .hero-art .ring.r2{width:96%;height:96%;border-color:rgba(27,36,48,0.25);}
  .hero-medallion{
    width:100%;max-width:420px;aspect-ratio:1/1;border-radius:50%;
    background:linear-gradient(150deg,var(--sage) 0%, var(--sage-dark) 55%, var(--plum) 130%);
    display:flex;align-items:center;justify-content:center;position:relative;
    box-shadow:0 30px 60px -12px rgba(38,50,67,0.35), inset 0 0 0 1px rgba(255,255,255,0.15);
  }
  .hero-medallion svg{width:46%;height:46%;}
  .hero-badge{
    position:absolute;bottom:6%;left:-6%;
    background:white;border-radius:16px;padding:16px 20px;
    box-shadow:0 16px 36px rgba(38,38,42,0.14);
    display:flex;align-items:center;gap:12px;max-width:220px;
  }
  .hero-badge .b-icon{
    width:38px;height:38px;border-radius:50%;background:var(--sage-mist);color:var(--sage-dark);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .hero-badge .b-icon svg{width:19px;height:19px;}
  .hero-badge strong{display:block;font-size:0.86rem;color:var(--plum);font-weight:600;line-height:1.3;}
  .hero-badge span{font-size:0.72rem;color:var(--ink-soft);}

  /* Trust bar */
  .trust-bar{
    background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  }
  .trust-inner{
    max-width:1180px;margin:0 auto;padding:34px 32px;
    display:grid;grid-template-columns:repeat(4,1fr);
  }
  .trust-item{
    display:flex;align-items:center;gap:14px;padding:0 24px;
    border-right:1px solid var(--line);
  }
  .trust-item:last-child{border-right:none;}
  .trust-item svg{width:26px;height:26px;color:var(--gold);flex-shrink:0;}
  .trust-item strong{display:block;font-size:0.88rem;color:var(--plum);font-weight:600;}
  .trust-item span{font-size:0.78rem;color:var(--ink-soft);}

  /* Sections */
  section{padding:130px 32px;}
  .section-head{max-width:660px;margin:0 auto 70px;text-align:center;}
  .section-head .kicker{justify-content:center;}
  .section-head h2{font-size:2.7rem;line-height:1.2;letter-spacing:-0.012em;
                   margin:0 0 20px;color:var(--plum);}
  .section-head p{color:var(--ink-soft);margin:0;font-size:1.02rem;font-weight:300;}

  /* About */
  .about{background:var(--cream);position:relative;}
  .about-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:72px;align-items:center;max-width:1180px;margin:0 auto;}
  .about-art{position:relative;}
  .about-art .frame{
    aspect-ratio:3/4;border-radius:6px 120px 6px 6px;
    background:linear-gradient(165deg,var(--sage-dark),var(--plum));
    display:flex;align-items:center;justify-content:center;position:relative;
    box-shadow:0 26px 50px -10px rgba(38,50,67,0.28);
  }
  .about-art .frame svg{width:38%;opacity:0.92;}
  .about-art .frame-outline{
    position:absolute;inset:-18px 18px 18px -18px;border:1px solid var(--sage);
    border-radius:6px 120px 6px 6px;z-index:-1;
  }
  .about-text h2{font-size:2.45rem;line-height:1.22;letter-spacing:-0.012em;
                 color:var(--plum);margin:0 0 22px;}
  .about-text p{color:var(--ink-soft);margin:0 0 18px;font-weight:300;}
  .about-list{list-style:none;margin:28px 0 0;padding:0;display:flex;flex-direction:column;gap:14px;}
  .about-list li{display:flex;align-items:center;gap:14px;font-size:0.95rem;color:var(--ink);}
  .about-list .check{
    width:24px;height:24px;border-radius:50%;background:var(--sage-mist);color:var(--sage-dark);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .about-list .check svg{width:12px;height:12px;}

  /* Implantologie */
  .implanto{
    background:
      radial-gradient(circle at 78% 10%, rgba(193,168,121,0.17), transparent 46%),
      radial-gradient(circle at 10% 92%, rgba(193,168,121,0.09), transparent 52%),
      linear-gradient(165deg,#232D3B 0%, #1B2430 62%, #161E28 100%);
    color:rgba(255,255,255,0.74);
  }
  .implanto .kicker{color:var(--gold-light);}
  .implanto .section-head h2{color:#fff;}
  .implanto .section-head p{color:rgba(255,255,255,0.68);}
  .imp-fr{
    max-width:820px;margin:0 auto;text-align:center;
    border-top:1px solid rgba(193,168,121,0.38);
    border-bottom:1px solid rgba(193,168,121,0.38);
    padding:46px 30px;
  }
  .imp-fr .t{
    font-size:0.68rem;letter-spacing:0.24em;text-transform:uppercase;
    color:var(--gold-light);font-weight:500;margin:0 0 18px;
  }
  .imp-fr .phrase{
    font-family:"Prata",Georgia,serif;font-size:1.72rem;line-height:1.35;
    color:#fff;margin:0 0 20px;
  }
  .imp-fr .phrase em{font-style:normal;color:var(--gold);}
  .imp-fr .detail{
    margin:0 auto;max-width:60ch;font-size:0.92rem;line-height:1.7;
    font-weight:300;color:rgba(255,255,255,0.68);
  }
  .imp-bas{max-width:1200px;margin:72px auto 0;}
  .imp-bas h3.t{
    font-family:"Jost",sans-serif;font-size:0.7rem;letter-spacing:0.24em;
    text-transform:uppercase;color:var(--gold-deep);font-weight:500;margin:0 0 6px;
  }
  .implanto .imp-bas h3.t{color:var(--gold-light);}
  .imp-cas{
    list-style:none;padding:0;margin:0;
    display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
    background:rgba(255,255,255,0.12);
    border:1px solid rgba(255,255,255,0.12);border-radius:6px;overflow:hidden;
  }
  .imp-cas li{padding:32px 28px;background:rgba(255,255,255,0.03);}
  .imp-cas strong{display:block;color:#fff;font-weight:500;font-size:1rem;margin-bottom:8px;}
  .imp-cas span{font-size:0.88rem;line-height:1.62;font-weight:300;color:rgba(255,255,255,0.66);}
  .imp-cta{margin-top:46px;text-align:center;}
  .imp-note{
    margin:0 auto 26px;max-width:56ch;font-size:0.88rem;line-height:1.65;
    font-weight:300;color:rgba(255,255,255,0.62);
  }

  @media (max-width:960px){
    .imp-fr{padding:34px 6px;}
    .imp-fr .phrase{font-size:1.35rem;}
    .imp-cas{grid-template-columns:1fr;}
    .imp-bas{margin-top:52px;}
  }

  /* Team */
  .team-grid{display:grid;grid-template-columns:1fr 1fr;gap:72px;max-width:1020px;
             margin:0 auto;align-items:start;}
  .team-card{text-align:center;}
  .avatar-wrap{position:relative;width:100%;max-width:310px;aspect-ratio:4/5;
               margin:0 auto 34px;}
  .avatar-wrap .ring{
    position:absolute;inset:-16px;border-radius:3px;border:1px solid var(--gold);
    opacity:.55;
  }
  .avatar{
    width:100%;height:100%;border-radius:3px;
    background:linear-gradient(155deg,var(--sage),var(--plum));
    color:white;display:flex;align-items:center;justify-content:center;
    font-family:"Prata",serif;font-size:2.7rem;
    box-shadow:0 20px 40px rgba(58,74,96,0.24);
  }
  .avatar.photo{background:none;padding:0;}
  .avatar img{width:100%;height:100%;border-radius:3px;object-fit:cover;
              object-position:50% 50%;display:block;}
  .team-card h3{margin:0 0 6px;color:var(--plum);font-size:1.42rem;}
  .team-card .role{
    color:var(--gold);font-weight:500;font-size:0.76rem;margin-bottom:18px;
    letter-spacing:0.14em;text-transform:uppercase;
  }
  .team-card p{color:var(--ink-soft);font-size:0.94rem;margin:0 auto;max-width:34ch;font-weight:300;}
  .cred{margin:30px auto 0;max-width:38ch;text-align:left;border-top:1px solid var(--gold);
        padding-top:22px;}
  .cred h4{font-size:0.68rem;letter-spacing:0.24em;text-transform:uppercase;
           color:var(--gold-deep);font-weight:500;margin:0 0 14px;font-family:inherit;}
  .cred ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:11px;}
  .cred li{position:relative;padding-left:19px;font-size:0.88rem;
           line-height:1.55;color:var(--ink-soft);font-weight:300;}
  .cred li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;
                   border-radius:50%;background:var(--gold);}
  .cred .langues{margin:16px 0 0;font-size:0.85rem;color:var(--ink-soft);max-width:none;}

  /* Services */
  .services{
    background:
      linear-gradient(180deg, rgba(246,244,238,0.94), rgba(246,244,238,0.96)),
      url(images/cabinet-salle-vue-montagnes.webp) center/cover no-repeat;
  }
  .services-grid{
    display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
    max-width:1180px;margin:0 auto;background:var(--line);
    border:1px solid var(--line);border-radius:8px;overflow:hidden;
  }
  .service-card{
    background:var(--paper);padding:44px 34px;
    transition:background .25s, transform .25s;
  }
  .service-card:hover{background:white;transform:translateY(-4px);position:relative;z-index:1;box-shadow:0 20px 40px rgba(38,38,42,0.08);}
  .service-icon{
    width:52px;height:52px;border-radius:50%;background:var(--sage-mist);color:var(--sage-dark);
    display:flex;align-items:center;justify-content:center;margin-bottom:22px;
  }
  .service-icon svg{width:24px;height:24px;}
  .service-card h3{margin:0 0 12px;color:var(--plum);font-size:1.15rem;}
  .service-card p{margin:0;color:var(--ink-soft);font-size:0.92rem;font-weight:300;}
  .service-card.featured{background:var(--plum);grid-column:span 2;}
  .svc-lien{display:inline-flex;align-items:center;gap:8px;margin-top:20px;
            font-size:0.78rem;letter-spacing:0.12em;text-transform:uppercase;
            text-decoration:none;color:var(--gold-light);font-weight:500;}
  .svc-lien svg{width:15px;height:15px;transition:transform .25s;}
  .svc-lien:hover svg{transform:translateX(4px);}
  .service-card.featured:hover{background:var(--plum-dark);}
  .service-card.featured .service-icon{background:rgba(255,255,255,0.14);color:white;}
  .service-card.featured h3{color:white;}
  .service-card.featured p{color:rgba(255,255,255,0.8);}

  /* Contact */
  .contact-band{
    background:
      linear-gradient(150deg, rgba(38,50,67,0.90), rgba(58,74,96,0.86) 55%, rgba(26,30,38,0.94)),
      url(images/cabinet-accueil.webp) center/cover no-repeat;
    color:white;position:relative;overflow:hidden;
  }
  .contact-band::before{
    content:"";position:absolute;top:-20%;right:-8%;width:420px;height:420px;
    border-radius:50%;border:1px solid rgba(255,255,255,0.08);
  }
  .contact-band .section-head h2{color:white;}
  .contact-band .section-head p{color:rgba(255,255,255,0.72);}
  .contact-band .kicker{color:var(--gold);}
  .contact-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:48px;max-width:1180px;margin:0 auto;align-items:stretch;position:relative;z-index:1;}
  .contact-card{
    background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.16);
    border-radius:10px;padding:42px;display:flex;flex-direction:column;gap:28px;backdrop-filter:blur(6px);
  }
  .contact-item{display:flex;gap:16px;align-items:flex-start;}
  .contact-item .c-icon{
    width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,0.1);color:var(--gold);
    display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .contact-item .c-icon svg{width:17px;height:17px;}
  .contact-item strong{display:block;font-size:0.7rem;letter-spacing:0.16em;text-transform:uppercase;
    color:rgba(255,255,255,0.55);margin-bottom:6px;font-weight:400;}
  .contact-item span, .contact-item a{color:white;font-weight:400;text-decoration:none;font-size:1rem;}
  .hours-table{width:100%;border-collapse:collapse;margin-top:4px;}
  .hours-table td{padding:5px 0;font-size:0.92rem;color:rgba(255,255,255,0.78);}
  .hours-table td:last-child{text-align:right;font-weight:500;color:white;}
  .map-frame{border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,0.16);min-height:360px;}
  .map-frame iframe{width:100%;height:100%;min-height:360px;border:0;display:block;filter:grayscale(0.2) contrast(1.02);}

  footer{
    background:var(--plum-dark);color:rgba(255,255,255,0.6);
    padding:0;
  }
  .footer-inner{
    max-width:1180px;margin:0 auto;padding:64px 32px 32px;
    display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:48px;
  }
  .footer-brand{display:flex;align-items:center;gap:14px;margin-bottom:16px;}
  .footer-brand .brand-mark{border-color:rgba(255,255,255,0.4);}
  .footer-brand .name{font-family:"Prata",serif;color:white;font-size:1.1rem;}
  footer p{font-size:0.88rem;line-height:1.7;max-width:34ch;font-weight:300;}
  footer h4{color:white;font-size:0.76rem;letter-spacing:0.14em;text-transform:uppercase;font-weight:500;margin:0 0 18px;}
  footer ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;font-size:0.9rem;}
  footer ul a{text-decoration:none;color:rgba(255,255,255,0.68);transition:color .15s;}
  footer ul a:hover{color:white;}
  .footer-bottom{
    border-top:1px solid rgba(255,255,255,0.1);padding:24px 32px;
    text-align:center;font-size:0.8rem;color:rgba(255,255,255,0.45);
  }


  .hero-medallion{overflow:hidden;}
  .hero-medallion img{width:100%;height:100%;object-fit:cover;border-radius:50%;}
  .about-art .frame{overflow:hidden;}
  .about-art .frame img{width:100%;height:100%;object-fit:cover;}

  /* Gallery */
  .gallery{background:var(--paper);}
  .gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;max-width:1180px;margin:0 auto;}
  .gallery-item{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:4/5;box-shadow:0 16px 32px rgba(38,50,67,0.14);}
  .gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.7,.3,1);}
  .gallery-item:hover img{transform:scale(1.07);}
  .gallery-item .cap{
    position:absolute;left:0;right:0;bottom:0;padding:16px 16px 13px;
    background:linear-gradient(0deg,rgba(26,30,38,0.78),transparent);
    color:white;font-size:0.78rem;letter-spacing:0.03em;font-weight:400;
  }

  @media (max-width:960px){
    nav.links{display:none;}
    .hero-inner{padding:104px 24px 84px;min-height:0;}
    .hero-scrim{background:linear-gradient(180deg, rgba(27,36,48,0.60) 0%, rgba(27,36,48,0.44) 45%, rgba(27,36,48,0.68) 100%);}
    .hero-art{order:-1;max-width:340px;margin:0 auto;}
    .hero h1{font-size:2.3rem;}
    .trust-inner{grid-template-columns:1fr 1fr;gap:24px;}
    .trust-item{border-right:none;padding:0;}
    .about-grid{grid-template-columns:1fr;}
    .gallery-grid{grid-template-columns:1fr 1fr;gap:14px;}
    .about-art{max-width:300px;margin:0 auto;order:-1;}
    .team-grid{grid-template-columns:1fr;gap:52px;}
    .services-grid{grid-template-columns:1fr;}
    .contact-grid{grid-template-columns:1fr;}
    .section-head h2{font-size:2rem;}
    .hero h1{font-size:2.5rem;}
    .avatar-wrap{max-width:250px;}
    .brand-logo{height:38px;}
    section{padding:88px 24px;}
    .wrap{padding:0 24px;}
    .footer-inner{grid-template-columns:1fr;gap:36px;}
  }

  /* ---- lien d'évitement (accessibilité clavier) ---- */
  .skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--navy,#1B2430);color:#fff;
        padding:12px 18px;border-radius:0 0 10px 0;font-weight:500;}
  .skip:focus{left:0;}
  a:focus-visible,button:focus-visible{outline:3px solid #3A4A60;outline-offset:3px;border-radius:4px;}

  /* ---- menu mobile ---- */
  /* flex:none indispensable : sans lui le bouton se fait écraser à 14 px de
     large par le bouton d'appel voisin, et devient intouchable au doigt. */
  .burger{display:none;flex:none;background:none;border:1px solid rgba(255,255,255,.55);
          border-radius:10px;width:44px;height:44px;min-width:44px;cursor:pointer;
          align-items:center;justify-content:center;color:#fff;}
  .burger svg{width:22px;height:22px;}
  /* visibility plutôt que display : display:none couperait la transition,
     et surtout .open ne le rétablirait pas — le menu resterait invisible. */
  .mobile-menu{position:fixed;inset:0;background:rgba(28,32,40,.55);z-index:120;
               opacity:0;visibility:hidden;pointer-events:none;
               transition:opacity .25s ease,visibility 0s linear .25s;}
  .mobile-menu.open{opacity:1;visibility:visible;pointer-events:auto;
                    transition:opacity .25s ease,visibility 0s;}
  .mobile-panel{position:absolute;top:0;right:0;height:100%;width:min(84vw,320px);background:#fff;
                box-shadow:-18px 0 50px rgba(28,32,40,.18);padding:22px 22px 30px;
                display:flex;flex-direction:column;gap:6px;transform:translateX(100%);
                transition:transform .28s cubic-bezier(.4,0,.2,1);}
  .mobile-menu.open .mobile-panel{transform:translateX(0);}
  .mobile-panel .close{align-self:flex-end;background:none;border:none;font-size:1.9rem;line-height:1;
                       color:#6C7382;cursor:pointer;padding:2px 6px;}
  .mobile-panel a{padding:14px 6px;border-bottom:1px solid #EDE9E0;color:#123;font-size:1.05rem;
                  text-decoration:none;}
  .mobile-panel a:last-of-type{border-bottom:none;}
  .mobile-panel .btn{margin-top:14px;justify-content:center;}

  /* ---- badge ouvert / fermé ---- */
  .open-badge{display:inline-flex;align-items:center;gap:7px;font-size:.83rem;font-weight:500;
              padding:5px 12px;border-radius:999px;margin-top:8px;}
  .open-badge .dot{width:8px;height:8px;border-radius:50%;flex:none;}
  .open-badge.is-open{background:rgba(58,74,96,.16);color:#dff6ec;}
  .open-badge.is-open .dot{background:#5FE0B0;}
  .open-badge.is-closed{background:rgba(255,255,255,.14);color:#F1EDE4;}
  .open-badge.is-closed .dot{background:#F0A98C;}

  /* ---- infos pratiques ---- */
  .practical{padding:96px 0;background:#FBF9F4;}
  .practical-grid{max-width:1160px;margin:34px auto 0;padding:0 26px;display:grid;
                  grid-template-columns:repeat(3,1fr);gap:22px;}
  .p-card{background:#fff;border:1px solid #E8E3D8;border-radius:16px;padding:26px 24px;
          box-shadow:0 10px 30px rgba(27,36,48,.05);}
  .p-card h3{font-size:1.06rem;color:#1B2430;margin:0 0 12px;display:flex;align-items:center;gap:9px;}
  .p-card h3 svg{width:19px;height:19px;flex:none;color:#3A4A60;}
  .p-card ul{margin:0;padding-left:0;list-style:none;}
  .p-card li{position:relative;padding-left:17px;margin-bottom:9px;font-size:.93rem;
             line-height:1.55;color:#565E6C;}
  .p-card li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;
                     border-radius:50%;background:#C1A879;}
  .p-note{max-width:1160px;margin:24px auto 0;padding:18px 22px;background:#FFF6E9;
          border-left:3px solid #E0A458;border-radius:0 12px 12px 0;font-size:.93rem;color:#7A5518;}
  .p-note strong{color:#5E3F09;}

  /* ---- barre d'action mobile ---- */
  .action-bar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:110;
              background:rgba(255,255,255,.97);backdrop-filter:blur(10px);
              border-top:1px solid #E4DFD3;padding:9px 12px calc(9px + env(safe-area-inset-bottom));
              gap:10px;box-shadow:0 -6px 24px rgba(28,32,40,.09);}
  .action-bar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
                padding:13px 10px;border-radius:12px;font-size:.95rem;font-weight:500;
                text-decoration:none;}
  .action-bar svg{width:17px;height:17px;}
  .action-bar .ab-call{background:#1B2430;color:#fff;}
  .action-bar .ab-map{background:#F1EDE4;color:#1B2430;}

  /* ---- retour en haut ---- */
  .to-top{position:fixed;right:18px;bottom:18px;z-index:105;width:46px;height:46px;border-radius:50%;
          border:none;background:#1B2430;color:#fff;cursor:pointer;display:flex;align-items:center;
          justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;
          box-shadow:0 8px 24px rgba(27,36,48,.28);}
  .to-top.show{opacity:1;pointer-events:auto;}
  .to-top:hover{transform:translateY(-3px);}
  .to-top svg{width:19px;height:19px;}

  @media (max-width:960px){
    .burger{display:flex;}
    /* le bouton d'appel du bandeau devient redondant : le menu en contient un,
       et la barre fixe du bas en propose un en permanence. */
    .nav-cta{display:none;}
    .practical-grid{grid-template-columns:1fr;}
    .action-bar{display:flex;}
    body{padding-bottom:74px;}
    .to-top{bottom:82px;right:14px;}
  }

  /* ---- respect du réglage système « animations réduites » ---- */
  @media (prefers-reduced-motion:reduce){
    *{animation-duration:.001ms !important;transition-duration:.001ms !important;
      scroll-behavior:auto !important;}
    .reveal{opacity:1 !important;transform:none !important;}
  }

  /* ---- impression : garder l'essentiel, retirer le décor ---- */
  @media print{
    #site-header,.action-bar,.to-top,.mobile-menu,.hero-art,.map-frame,.gallery{display:none !important;}
    body{padding:0;background:#fff;}
    .reveal{opacity:1 !important;transform:none !important;}
    section{padding:18px 0 !important;break-inside:avoid;}
    a[href^="tel:"]::after{content:" (" attr(href) ")";font-size:.85em;}
  }


/* ============ Pages de soins ============ */
.page-hero{
  background:
    radial-gradient(circle at 82% 14%, rgba(193,168,121,0.16), transparent 48%),
    linear-gradient(160deg,#232D3B 0%, #1B2430 68%, #161E28 100%);
  color:rgba(255,255,255,0.74);padding:148px 0 82px;
}
.page-hero .kicker{color:var(--gold-light);}
.page-hero h1{color:#fff;font-size:2.9rem;line-height:1.16;letter-spacing:-0.016em;
              margin:0 0 22px;max-width:22ch;}
.page-hero .lead{font-size:1.06rem;font-weight:300;max-width:62ch;margin:0;
                 color:rgba(255,255,255,0.72);}
.fil{font-size:0.72rem;letter-spacing:0.1em;text-transform:uppercase;
     margin-bottom:28px;color:rgba(255,255,255,0.48);}
.fil a{color:inherit;text-decoration:none;}
.fil a:hover{color:#fff;}
.fil span{margin:0 6px;opacity:.6;}
.fil strong{color:var(--gold-light);font-weight:500;}

.article{padding:92px 0 104px;}
.art{display:grid;grid-template-columns:236px 1fr;gap:76px;align-items:start;}
.sommaire{position:sticky;top:112px;}
.sommaire .t{font-size:0.66rem;letter-spacing:0.24em;text-transform:uppercase;
             color:var(--gold-deep);font-weight:500;margin:0 0 16px;}
.sommaire ol{list-style:none;padding:0;margin:0;counter-reset:s;
             border-left:1px solid var(--line);}
.sommaire li{counter-increment:s;}
.sommaire a{display:block;padding:9px 0 9px 18px;margin-left:-1px;
            border-left:1px solid transparent;text-decoration:none;
            font-size:0.84rem;line-height:1.4;color:var(--ink-soft);
            transition:color .2s, border-color .2s;}
.sommaire a:hover{color:var(--plum);border-left-color:var(--gold);}
.som-cta{display:inline-block;margin-top:26px;margin-left:18px;font-family:"Prata",serif;
         font-size:1.06rem;color:var(--plum);text-decoration:none;}

.corps{max-width:70ch;}
.corps h2{font-size:1.72rem;line-height:1.28;color:var(--plum);margin:56px 0 18px;
          letter-spacing:-0.008em;scroll-margin-top:110px;}
.corps h2:first-child{margin-top:0;}
.corps h3{font-size:1.08rem;color:var(--plum);margin:34px 0 8px;}
.corps p{margin:0 0 17px;color:var(--ink-soft);font-weight:300;}
.corps a:not(.btn){color:var(--plum);text-decoration:underline;
         text-underline-offset:3px;text-decoration-color:var(--gold);}
.corps em{font-style:italic;}
.encadre{border-left:2px solid var(--gold);background:var(--cream);
         padding:22px 26px;margin:30px 0;border-radius:0 8px 8px 0;}
.encadre p{margin:0;color:var(--ink);}
.fin-page{margin-top:60px;padding-top:34px;border-top:1px solid var(--line);}
.fin-page p{color:var(--ink-soft);font-weight:300;margin:0 0 20px;}

.autres{background:var(--sage-mist);padding:96px 32px 104px;}
.autres-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;
             max-width:1100px;margin:0 auto;}
.autre-carte{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:var(--paper);border:1px solid var(--line);border-radius:8px;
  padding:24px 22px;text-decoration:none;color:var(--plum);
  font-size:0.96rem;transition:transform .25s, box-shadow .25s, border-color .25s;
}
.autre-carte svg{width:18px;height:18px;color:var(--gold);flex-shrink:0;
                 transition:transform .25s;}
.autre-carte:hover{transform:translateY(-3px);border-color:var(--gold);
                   box-shadow:0 18px 34px rgba(38,38,42,0.08);}
.autre-carte:hover svg{transform:translateX(4px);}

@media (max-width:1000px){
  .art{grid-template-columns:1fr;gap:0;}
  .sommaire{position:static;margin-bottom:44px;}
  .autres-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:640px){
  .page-hero{padding:110px 0 60px;}
  .page-hero h1{font-size:2rem;}
  .article{padding:64px 0 76px;}
  .corps h2{font-size:1.42rem;margin:42px 0 14px;}
  .autres-grid{grid-template-columns:1fr;}
}

a.service-card{text-decoration:none;color:inherit;display:block;}

.schema{
  margin:34px 0 36px;padding:22px 24px 18px;
  background:var(--cream);border:1px solid var(--line);border-radius:10px;
}
.schema svg{width:100%;height:auto;display:block;}
.schema figcaption{margin-top:12px;font-size:0.8rem;color:var(--ink-soft);
                   font-weight:300;text-align:center;}
@media (max-width:640px){ .schema{padding:14px 12px 12px;margin:26px -12px 28px;
                                  border-radius:8px;} }

/* La mention sous l'adresse de courriel : elle evite que le mail
   devienne le canal des urgences, qui doivent passer par le telephone. */
.mail-note{display:block;margin-top:2px;font-size:.78rem;line-height:1.35;opacity:.72;}

/* Accès Doctolib : palette du cabinet et accès permanent sur mobile. */
.nav { gap: 20px; }
.nav-cta.booking-link { padding: 12px 20px; font-size: .875rem; letter-spacing: .02em; text-transform: none; }
.booking-link:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
.action-bar .ab-book { flex: 2; background: #3A4A60; color: #fff; font-size: .875rem; }
.action-bar .ab-call { flex: 1; }
@media (min-width: 961px) and (max-width: 1180px) {
  nav.links { display: none; }
  .burger { display: flex; }
  .nav-cta { margin-left: auto; }
}
@media (max-width: 960px) {
  body { padding-bottom: calc(74px + env(safe-area-inset-bottom)); }
  .to-top { bottom: calc(82px + env(safe-area-inset-bottom)); }
}
.mobile-panel { overflow-y: auto; }
.mobile-panel > * { flex-shrink: 0; }
.mobile-panel .booking-link { font-size: .875rem; letter-spacing: .02em; }
@media (max-width: 480px) {
  .nav { padding: 18px 16px; gap: 12px; }
  .brand-logo { max-width: 100%; height: auto; max-height: 46px; }
  .brand { min-width: 0; }
  .burger { flex-shrink: 0; }
}

/* Schémas de soins : illustrations vectorielles et légendes adaptatives. */
.schema-redrawn { padding: 24px; background: #f7f9fa; border-color: #dce4e8; border-radius: 18px; }
.schema-panels { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); gap: 20px; }
.schema-panel { min-width: 0; background: #fff; border: 1px solid #e3e9ed; border-radius: 12px; padding: 18px 12px 14px; }
.corps .schema-panel h3 { margin: 0; color: #3A4A60; font: 600 1rem/1.4 Jost, sans-serif; text-align: center; }
.schema-panel img { display: block; width: 100%; max-width: 330px; height: auto; margin: 8px auto; }
.corps .schema-panel p { margin: 4px 6px 0; color: #526170; font: 400 .95rem/1.55 Jost, sans-serif; text-align: center; }
.schema-redrawn figcaption { font-size: .85rem; line-height: 1.5; margin-top: 16px; }
@media (max-width: 640px) { .schema-redrawn { padding: 14px; } .schema-panels { grid-template-columns: 1fr; gap: 14px; } }

/* Cadrage des nouvelles photographies du cabinet. */
.hv-couche { background-position: center 62%; }
.avatar img.portrait-albacha { object-position: 66% 45%; }

/* Illustrations éditoriales, légendes indépendantes et présentation mobile. */
.schema-quality { background:#f7f9fa; }
.corps .schema-quality > h3 { font-size:1rem; text-align:center; margin:0 0 16px; }
.schema-art-full { display:block; width:100%; height:auto; border-radius:12px; }
.schema-art-crop { overflow:hidden; width:100%; aspect-ratio:calc(1.5 / var(--parts)); background:white; margin:10px 0; }
.schema-panel .schema-art-crop img { width:calc(100% * var(--parts)); max-width:none; height:auto; margin:0; transform:translateX(calc(-100% * var(--part) / var(--parts))); }
