/* --------- STYLES GÉNÉRAUX --------- */
body {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.6;
    color: #222;
    background-color: #f5f5f5;
}

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

h1, h2, h3 {
    margin-top: 0;
}

.container {
    width: 90%;
    max-width: 1100px;
    margin: 0 auto;
}

/* --------- EN-TÊTE & NAVIGATION --------- */
header {
    background-color: #143642;
    color: #ffffff;
    padding: 10px 0;
    position: sticky;
    top: 0;
    z-index: 100;
}

.logo-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.logo-block {
    display: flex;
    align-items: center;
    gap: 12px;
}

.logo-img {
    height: 50px;
    width: auto;
    display: block;
}

.logo-text {
    display: flex;
    flex-direction: column;
}

.logo-title{
  font-size: 1.4rem;
  line-height: 1.15;   /* ou 1.2 */
  padding-top: 1px;    /* optionnel : évite tout crop iOS */
}


.logo-tagline {
    font-size: 0.8rem;
    opacity: 0.9;
}

nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 15px;
    font-size: 0.95rem;
}

nav li a {
    padding: 6px 10px;
    border-radius: 4px;
}

nav li a:hover {
    background-color: #275a6b;
}

/* --------- SECTION HERO --------- */
.hero {
    background: linear-gradient(135deg, #143642, #24596b);
    color: #ffffff;
    padding: 60px 0 50px 0;
}

.hero-inner {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.hero-title {
    font-size: 2.2rem;
    margin-bottom: 10px;
}

.hero-subtitle {
    font-size: 1.1rem;
    max-width: 600px;
}

.hero-cta {
    margin-top: 15px;
}

.btn {
    display: inline-block;
    padding: 10px 20px;
    border-radius: 30px;
    border: none;
    cursor: pointer;
    font-size: 0.95rem;
}

.btn-primary {
    background-color: #f1b24a;
    color: #143642;
    font-weight: bold;
}

.btn-primary:hover {
    background-color: #ffcf7d;
}

.hero-note {
    font-size: 0.9rem;
    opacity: 0.9;
}

/* --------- SECTIONS --------- */
section {
    padding: 50px 0;
    background-color: #f5f5f5;
}

section:nth-of-type(even) {
    background-color: #ffffff;
}

.section-title {
    text-align: center;
    margin-bottom: 30px;
    font-size: 1.7rem;
    color: #143642;
}

.section-subtitle {
    text-align: center;
    font-size: 0.95rem;
    margin-top: -15px;
    margin-bottom: 25px;
    color: #555;
}

/* --------- BLOC "CE QUE NOUS FAISONS" --------- */
.grid-2 {
    display: grid;
    gap: 25px;
}

@media (min-width: 800px) {
    .grid-2 {
        grid-template-columns: 1.3fr 1fr;
    }
}

.card {
    background-color: #ffffff;
    border-radius: 8px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}

.card h3 {
    margin-bottom: 10px;
}

.card ul {
    padding-left: 18px;
    margin-top: 8px;
}

/* --------- OFFRES / PACKAGES --------- */
.offers {
    display: grid;
    gap: 20px;
}

@media (min-width: 900px) {
    .offers {
        grid-template-columns: repeat(3, 1fr);
    }
}

.offer-card {
    background-color: #ffffff;
    border-radius: 10px;
    padding: 20px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.07);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    border-top: 4px solid #143642;
}

.offer-name {
    font-weight: bold;
    font-size: 1.1rem;
    margin-bottom: 5px;
}

.offer-tagline {
    font-size: 0.9rem;
    color: #555;
    margin-bottom: 15px;
}

.offer-price {
    font-size: 1.6rem;
    font-weight: bold;
    margin-bottom: 5px;
    color: #143642;
}

.offer-price span {
    font-size: 0.9rem;
    font-weight: normal;
    color: #555;
}

.offer-list {
    font-size: 0.9rem;
}

.offer-list li {
    margin-bottom: 6px;
}

.offer-footer {
    margin-top: 15px;
    font-size: 0.85rem;
    color: #666;
}

/* --------- À PROPOS & ZONE --------- */
.two-columns {
    display: grid;
    gap: 20px;
}

@media (min-width: 800px) {
    .two-columns {
        grid-template-columns: 1.2fr 1fr;
    }
}

.highlight-box {
    background-color: #e7f0f3;
    border-radius: 8px;
    padding: 15px;
    font-size: 0.9rem;
}

/* --------- CONTACT --------- */
.contact-grid {
    display: grid;
    gap: 25px;
}

.contact-info p {
    margin: 6px 0;
}

.contact-small {
    font-size: 0.9rem;
    color: #555;
}

/* --------- PIED DE PAGE --------- */
footer {
    background-color: #143642;
    color: #ffffff;
    padding: 15px 0;
    font-size: 0.85rem;
}

footer .container {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

@media (min-width: 700px) {
    footer .container {
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }
}

/* --------- RESPONSIVE GLOBAL --------- */
@media (max-width: 700px) {
    .logo-nav {
        flex-direction: column;
        align-items: flex-start;
    }

    nav ul {
        flex-wrap: wrap;
    }
}
.zone-img {
    width: 100%;
    max-width: 900px;
    display: block;
    margin: 20px auto;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
/* --------- ZONE D'INTERVENTION / SERVICE AREA --------- */

.zone-wrapper h3 {
    margin-top: 0;
    margin-bottom: 10px;
    font-size: 1.1rem;
    color: #143642;
}

.zone-img {
    width: 100%;
    max-width: 900px;
    display: block;
    margin: 15px auto;
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.15);
    border: 1px solid rgba(0,0,0,0.08);
}

.zone-caption {
    font-size: 0.9rem;
    font-style: italic;
    text-align: center;
    margin-bottom: 20px;
    color: #555;
}
/* ---- Formulaire login propre ---- */

.kpx-form {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 14px 16px;
  align-items: center;
}

.kpx-form label {
  text-align: right;
  opacity: .9;
}

.kpx-field {
  display: contents; /* permet label / champ sur la même ligne */
}

.kpx-password {
  display: flex;
  gap: 10px;
  align-items: center;
}

.kpx-actions {
  grid-column: 2;
  margin-top: 8px;
}

.kpx-btn--ghost {
  background: transparent;
  border: 1px solid rgba(255,255,255,.25);
}

/* Responsive */
@media (max-width: 640px) {
  .kpx-form {
    grid-template-columns: 1fr;
  }
  .kpx-form label {
    text-align: left;
  }
  .kpx-actions {
    grid-column: 1;
  }
}
/* Largeur des champs */
.kpx-input { 
  min-width: 0;        /* IMPORTANT : enlève le blocage */
  width: 100%;
}

/* Champ identifiant plus court */
.kpx-input--login {
  max-width: 160px;    /* ajuste : 220 / 240 / 260 */
}

/* Champ mot de passe un peu plus long (optionnel) */
#password.kpx-input {
  max-width: 160px;    /* ajuste : 300 / 320 / 360 */
}
.kpx-form label {
  white-space: nowrap;
}
.kpx-error{
  margin-top:12px;
  padding:10px;
  border-radius:10px;
  border:1px solid rgba(255,80,80,.35);
  opacity:.95;
  text-align: center;   /* ← AJOUT */
}
/* Header sur une seule ligne */
.logo-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

/* Bloc logo */
.logo-block {
  display: flex;
  align-items: center;
  gap: 12px;
  white-space: nowrap;
}

/* Texte logo plus compact */
.logo-title {
  font-size: 1.4rem;
  line-height: 1;
}

.logo-tagline {
  font-size: 0.8rem;
  line-height: 1.2;
}

/* Navigation */
nav ul {
  display: flex;
  align-items: center;
  gap: 16px;
  list-style: none;
  margin: 0;
  padding: 0;
  white-space: nowrap;   /* empêche le retour à la ligne */
}

/* Liens */
nav a {
  text-decoration: none;
  font-size: 0.95rem;
}
header .logo-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

/* Le menu peut rétrécir, le switch langue reste visible */
header nav{ flex: 1 1 auto; min-width:0; }

/* Switch langue à droite */
.lang-switch{
  display:flex;
  align-items:center;
  gap:10px;
  white-space:nowrap;
  flex: 0 0 auto;
}

.lang-active{
  font-weight:700;
  opacity:.95;
}

.lang-link{
  text-decoration:none;
  opacity:.85;
}

/* Mobile : on autorise le menu à scroller horizontalement si besoin,
   MAIS la langue reste toujours visible car elle est hors du <ul> */
@media (max-width: 520px){
  header nav ul{
    overflow-x:auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; /* Firefox */
  }
  header nav ul::-webkit-scrollbar{ display:none; } /* iOS/Safari/Chrome */
  header nav ul{ gap:12px; }
  header .logo-tagline{ display:none; } /* optionnel: libère de la place */
}
header{
  padding-top: calc(10px + env(safe-area-inset-top));
}
#apropos p {
  text-align: justify;
  hyphens: auto;
}

.hero-subtitle {
  text-align: justify;
}

@media (max-width: 768px) {
  .hero-subtitle {
    text-align: left;
  }

