/* KM ISOCAL — animations de survol V3.43. Aucune modification des ressources photographiques. */
:root {
 --km-elevation-duration: .26s;
 --km-elevation-easing: cubic-bezier(.2,.75,.25,1);
 --km-elevation-shadow: 0 22px 45px rgba(12,41,53,.19);
 --km-elevation-border: rgba(11,179,196,.55);
}
/* Éléments visuels et commandes : modèle d'interaction harmonisé. */
.proofbar-item, .benefit, .card, .step, .km-value-card, .km-about-commitment,
.km-about-conclusion, .photo-card, .project-card, .sector-photo, .service-card,
.gallery figure, .contact-panel, .km-upload-dropzone, .km-response-option,
.km-network-choice, .km-home-about-priority-v339, a.btn, .nav-cta,
button[type="submit"].btn, .choice, .sector:not(.sector-photo), .kpi, .proof-card,
.why, .faq details, .km-territory-map-v324 {
 transition: transform var(--km-elevation-duration) var(--km-elevation-easing),
             box-shadow var(--km-elevation-duration) var(--km-elevation-easing),
             filter var(--km-elevation-duration) var(--km-elevation-easing),
             border-color var(--km-elevation-duration) var(--km-elevation-easing),
             background-color var(--km-elevation-duration) var(--km-elevation-easing);
}
.proofbar-item {border-radius:12px;}
.proofbar-grid {padding-block:6px; gap:3px;}
.photo-card img, .project-card img, .sector-photo img, .service-card img,
.gallery figure img { transition: transform .34s var(--km-elevation-easing), filter .34s var(--km-elevation-easing); }
.km-response-option, .km-network-choice, .km-upload-dropzone {cursor:pointer;}
/* La carte régionale est un SVG accessible intégré dans le HTML, non une photographie. */
.km-territory-map-v324 > svg {width:100%;height:auto;display:block;overflow:visible;}
.km-territory-map-v324 svg .region {cursor:pointer; transform-box:fill-box; transform-origin:center;
 transition: transform .2s ease, fill .2s ease, filter .2s ease, stroke .2s ease;}
.km-territory-map-v324 svg .region:is(:hover,:focus-visible) {
 fill:#49d8e5 !important;stroke:#0f2c3e !important;stroke-width:3.2;
 filter:drop-shadow(0 8px 12px rgba(16,46,66,.25));transform:translateY(-2px) scale(1.015);outline:none;
}
/* Clavier : effets visibles sur contrôles et cartes contenant des liens/champs. */
:is(a.btn, .nav-cta, button[type="submit"].btn):focus-visible {
 outline:3px solid #0bb3c4;outline-offset:3px; box-shadow:0 14px 30px rgba(11,34,46,.22);
}
:is(.km-response-option,.km-network-choice,.km-upload-dropzone):focus-within {
 box-shadow: 0 12px 28px rgba(12,41,53,.16);border-color:var(--km-elevation-border)!important;background-color:#eef9fb;
}
:is(.contact-panel,.km-about-conclusion,.service-card,.project-card,.photo-card,.sector-photo,.km-about-commitment):focus-within {
 box-shadow:var(--km-elevation-shadow);
}
@media (hover:hover) and (pointer:fine) {
 :is(.proofbar-item,.benefit,.card,.step,.km-value-card,.km-about-commitment,.km-about-conclusion,
     .photo-card,.project-card,.sector-photo,.service-card,.gallery figure,
     .km-upload-dropzone,.km-response-option,.km-network-choice,.km-home-about-priority-v339,
     .choice,.sector:not(.sector-photo),.kpi,.proof-card,.why,.faq details):hover {
   transform:translateY(-6px) !important;
   box-shadow:var(--km-elevation-shadow) !important;
   outline:1px solid rgba(11,179,196,.38);border-color:var(--km-elevation-border) !important;
   position:relative;z-index:2;
 }
 :is(a.btn,.nav-cta,button[type="submit"].btn):hover {
   transform:translateY(-5px) !important;
   box-shadow:0 14px 30px rgba(11,34,46,.25) !important;
   outline:2px solid rgba(11,179,196,.65);outline-offset:2px;
   filter:brightness(1.07);position:relative;z-index:2;
 }
 :is(.photo-card,.project-card,.sector-photo,.service-card,.gallery figure):hover img {
   transform:scale(1.023) !important;filter:saturate(1.04) contrast(1.01) !important;
 }
 :is(.km-response-option,.km-network-choice,.km-upload-dropzone):hover {background-color:#eef9fb;}
 .km-about-conclusion:hover {box-shadow:0 22px 48px rgba(3,15,22,.28) !important;}
 :is(.field input,.field textarea,.field select):hover:not(:disabled) {border-color:#37bdca;box-shadow:0 0 0 2px rgba(11,179,196,.12);}
}
@media(prefers-reduced-motion:reduce) {
 .proofbar-item,.benefit,.card,.step,.km-value-card,.km-about-commitment,
 .km-about-conclusion,.photo-card,.project-card,.sector-photo,.service-card,.gallery figure,
 .contact-panel,.km-upload-dropzone,.km-response-option,.km-network-choice,.km-home-about-priority-v339,
 a.btn,.nav-cta,button[type="submit"].btn,.choice,.sector,.kpi,.proof-card,.why,.faq details,
 .photo-card img,.project-card img,.sector-photo img,.service-card img,.gallery figure img,
 .km-territory-map-v324 svg .region {transition:none !important;transform:none !important;}
}

/* Décalage de la section ciblée sous l’en-tête fixe. */
#contact-rapide, #formulaire, #a-propos {scroll-margin-top:100px;}

/* V3.43.2 — Relief du panneau contact identique aux autres cartes.
   Le cadre positionne la zone de survol sans bouger. Seule la surface interieure
   se souleve. Cela evite la boucle de survol au bord et preserve position:sticky. */
.contact-panel {
  background: transparent !important;
  padding: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  filter: none !important;
}
.km-contact-panel-surface {
  background: var(--ink);
  color: #fff;
  border-radius: 20px;
  padding: 30px;
  transition: transform var(--km-elevation-duration) var(--km-elevation-easing),
              box-shadow var(--km-elevation-duration) var(--km-elevation-easing),
              filter var(--km-elevation-duration) var(--km-elevation-easing),
              outline-color var(--km-elevation-duration) var(--km-elevation-easing);
}
@media (hover:hover) and (pointer:fine) {
  .contact-panel:hover > .km-contact-panel-surface {
    transform: translateY(-6px) !important;
    box-shadow: 0 24px 50px rgba(3,20,31,.32), 0 0 0 2px rgba(11,179,196,.50) !important;
    filter: brightness(1.045);
  }
}
.contact-panel:focus-within > .km-contact-panel-surface {
  box-shadow: 0 22px 45px rgba(3,20,31,.24), 0 0 0 2px rgba(11,179,196,.45);
}
@media (prefers-reduced-motion: reduce) {
  .km-contact-panel-surface { transition: none !important; }
  .contact-panel:hover > .km-contact-panel-surface { transform: none !important; }
}
