
  :root{
    --forest:#1f3d2b;
    --forest-light:#2f5a3f;
    --forest-pale:#e7efe6;
    --terracotta:#c0693e;
    --terracotta-dark:#a6532e;
    --cream:#faf6ef;
    --stone:#efe9df;
    --stone-dark:#ddd4c2;
    --ink:#2b2620;
    --ink-soft:#5b544a;
    --gold:#b98d46;
    --radius:14px;
    --shadow: 0 10px 30px rgba(31,61,43,0.12);
    --serif: 'Fraunces', Georgia, 'Times New Roman', serif;
    --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    font-family:var(--sans);
    color:var(--ink);
    background:var(--cream);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  img,svg{display:block; max-width:100%;}
  a{color:inherit;}
  h1,h2,h3,h4{font-family:var(--serif); font-weight:600; line-height:1.15; color:var(--forest);}
  .container{max-width:1180px; margin:0 auto; padding:0 24px;}
  .eyebrow{
    display:inline-flex; align-items:center; gap:8px;
    font-size:0.78rem; letter-spacing:0.14em; text-transform:uppercase;
    color:var(--terracotta-dark); font-weight:700; margin-bottom:14px;
  }
  .eyebrow::before{content:""; width:22px; height:2px; background:var(--terracotta); display:inline-block;}
  .btn{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    padding:14px 26px; border-radius:999px; font-weight:600; font-size:0.95rem;
    text-decoration:none; cursor:pointer; border:2px solid transparent;
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
  }
  .btn:hover{transform:translateY(-2px);}
  .btn-primary{background:var(--terracotta); color:#fff; box-shadow:0 8px 20px rgba(192,105,62,0.35);}
  .btn-primary:hover{background:var(--terracotta-dark);}
  .btn-outline{border-color:rgba(255,255,255,0.55); color:#fff;}
  .btn-outline:hover{background:rgba(255,255,255,0.12);}
  .btn-dark{background:var(--forest); color:#fff;}
  .btn-dark:hover{background:var(--forest-light);}

  /* Header */
  header{
    position:sticky; top:0; z-index:100;
    background:rgba(250,246,239,0.92); backdrop-filter:blur(8px);
    border-bottom:1px solid var(--stone-dark);
  }
  .nav-wrap{display:flex; align-items:center; justify-content:space-between; padding:16px 24px;}
  .brand{display:flex; align-items:center; gap:10px; text-decoration:none;}
  .brand-mark{
    width:38px; height:38px; border-radius:10px; background:var(--forest);
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .brand-name{font-family:var(--serif); font-weight:700; font-size:1.15rem; color:var(--forest); line-height:1.1;}
  .brand-sub{font-size:0.68rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-soft);}
  nav ul{list-style:none; display:flex; gap:28px; align-items:center;}
  nav a{text-decoration:none; font-weight:500; font-size:0.95rem; color:var(--ink); position:relative;}
  nav a:hover{color:var(--terracotta-dark);}
  .nav-cta{display:flex; align-items:center; gap:14px;}
  .nav-phone{display:flex; align-items:center; gap:6px; font-weight:600; font-size:0.92rem; text-decoration:none; color:var(--forest);}
  .menu-toggle{display:none; background:none; border:none; cursor:pointer; padding:6px;}
  .menu-toggle span{display:block; width:24px; height:2px; background:var(--forest); margin:5px 0; border-radius:2px;}

  /* Hero */
  .hero{
    position:relative; overflow:hidden;
    background:
      linear-gradient(100deg, rgba(8,20,13,0.92) 0%, rgba(8,20,13,0.78) 32%, rgba(8,20,13,0.38) 62%, rgba(8,20,13,0.08) 88%),
      linear-gradient(0deg, rgba(8,20,13,0.6) 0%, rgba(8,20,13,0.05) 32%, rgba(8,20,13,0.05) 55%, rgba(8,20,13,0.4) 100%),
      url("img/hero-chalet-neige.jpg") center 30%/cover no-repeat;
    color:#fff; padding:72px 0 0;
  }
  .hero-inner{
    display:block;
    max-width:720px;
    padding-bottom:64px;
  }
  .hero h1{color:#fff; font-size:clamp(2.4rem, 4.6vw, 3.7rem); margin-bottom:18px; text-shadow:0 2px 24px rgba(0,0,0,0.25);}
  .hero-tagline{font-size:1.15rem; color:rgba(255,255,255,0.92); max-width:540px; margin-bottom:28px;}
  .hero-highlights{display:flex; flex-wrap:wrap; gap:12px; margin-bottom:30px;}
  .hi-chip{
    display:flex; align-items:center; gap:9px; padding:10px 16px; border-radius:12px;
    background:rgba(255,255,255,0.14); backdrop-filter:blur(6px); border:1px solid rgba(255,255,255,0.2);
    font-size:0.88rem; font-weight:600; color:#fff;
  }
  .hi-chip svg{width:18px; height:18px; stroke:#fff; flex-shrink:0;}
  .hero-badges{display:flex; flex-wrap:wrap; gap:8px 18px; margin-top:22px;}
  .badge{
    font-size:0.8rem; color:rgba(255,255,255,0.78); display:flex; align-items:center; gap:6px;
  }
  .hero-actions{display:flex; flex-wrap:wrap; gap:14px; align-items:center;}
  .btn-primary.btn-lg{padding:17px 32px; font-size:1.02rem; box-shadow:0 12px 30px rgba(192,105,62,0.45);}
  .scroll-cue{
    position:absolute; left:50%; bottom:22px; transform:translateX(-50%);
    display:flex; flex-direction:column; align-items:center; gap:6px;
    color:rgba(255,255,255,0.75); font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase;
    text-decoration:none; animation:bounce 2.4s ease-in-out infinite;
  }
  .scroll-cue svg{width:16px; height:16px;}
  @keyframes bounce{0%,100%{transform:translate(-50%,0);} 50%{transform:translate(-50%,6px);}}
  .hero-art{position:relative; height:380px;}
  .mountain-scene{width:100%; height:100%;}

  .stats-bar{
    background:var(--stone); border-top:1px solid var(--stone-dark);
  }
  .stats-grid{
    display:grid; grid-template-columns:repeat(5,1fr); gap:0;
    text-align:center; padding:26px 0;
  }
  .stats-grid div{padding:8px 12px; border-right:1px solid var(--stone-dark);}
  .stats-grid div:last-child{border-right:none;}
  .stat-num{font-family:var(--serif); font-size:1.7rem; font-weight:700; color:var(--forest);}
  .stat-label{font-size:0.8rem; color:var(--ink-soft); margin-top:2px;}

  section{padding:88px 0;}
  .section-head{max-width:640px; margin-bottom:48px;}
  .section-head p{color:var(--ink-soft); font-size:1.05rem;}
  .alt-bg{background:var(--forest-pale);}

  /* Le chalet */
  .chalet-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:56px; align-items:start;}
  .chalet-text p{margin-bottom:16px; color:var(--ink-soft);}
  .room-list{list-style:none; margin-top:20px;}
  .room-list li{
    display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--stone-dark);
    font-size:0.95rem; color:var(--ink);
  }
  .room-list li strong{color:var(--forest); min-width:118px; flex-shrink:0;}

  .photo-grid{display:grid; grid-template-columns:repeat(2,1fr); grid-template-rows:repeat(3,140px); gap:14px;}
  .photo-grid .ph:first-child{grid-row:span 2;}
  .ph{
    position:relative; border-radius:var(--radius); overflow:hidden;
    background:repeating-linear-gradient(135deg, var(--stone) 0px, var(--stone) 14px, #e3dccb 14px, #e3dccb 28px);
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
    border:1.5px dashed var(--stone-dark); color:var(--ink-soft); text-align:center; padding:10px;
  }
  .ph svg{width:28px; height:28px; opacity:0.55;}
  .ph span{font-size:0.78rem; font-weight:600; opacity:0.75;}

  /* Equipements */
  .equip-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
  .equip-card{
    background:#fff; border-radius:var(--radius); padding:28px; box-shadow:var(--shadow);
    border:1px solid var(--stone-dark);
  }
  .equip-icon{
    width:46px; height:46px; border-radius:12px; background:var(--forest-pale);
    display:flex; align-items:center; justify-content:center; margin-bottom:16px;
  }
  .equip-icon svg{width:24px; height:24px; stroke:var(--forest);}
  .equip-card h3{font-size:1.1rem; margin-bottom:12px;}
  .equip-card ul{list-style:none;}
  .equip-card li{
    font-size:0.92rem; color:var(--ink-soft); padding:5px 0 5px 22px; position:relative;
  }
  .equip-card li::before{
    content:"✓"; position:absolute; left:0; color:var(--terracotta); font-weight:700;
  }

  /* Environs */
  .env-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
  .env-card{
    background:#fff; border-radius:var(--radius); overflow:hidden; border:1px solid var(--stone-dark);
    box-shadow:var(--shadow); display:flex; flex-direction:column;
  }
  .env-top{
    height:96px; background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%);
    display:flex; align-items:center; justify-content:space-between; padding:16px 20px;
  }
  .env-top svg{width:30px; height:30px; stroke:#fff; opacity:0.9;}
  .env-dist{color:#fff; font-size:0.78rem; font-weight:700; background:rgba(255,255,255,0.18); padding:5px 10px; border-radius:999px;}
  .env-body{padding:20px 22px 24px;}
  .env-body h3{font-size:1.02rem; margin-bottom:8px;}
  .env-body p{font-size:0.9rem; color:var(--ink-soft);}
  .env-source{margin-top:36px; font-size:0.82rem; color:var(--ink-soft);}
  .env-source a{color:var(--terracotta-dark); font-weight:600; text-decoration:none;}

  /* Tarifs */
  .pricing-wrap{display:grid; grid-template-columns:1.1fr 0.9fr; gap:40px;}
  .pricing-card{
    background:var(--forest); color:#fff; border-radius:20px; padding:40px;
    display:flex; flex-direction:column; gap:20px; justify-content:center;
  }
  .pricing-card h3{color:#fff; font-size:1.5rem;}
  .pricing-card p{color:rgba(255,255,255,0.82); font-size:0.95rem;}
  .price-note{
    background:rgba(255,255,255,0.1); border:1px solid rgba(255,255,255,0.2);
    border-radius:12px; padding:16px 18px; font-size:0.88rem; color:rgba(255,255,255,0.9);
  }
  .conditions-list{list-style:none;}
  .conditions-list li{
    display:flex; justify-content:space-between; gap:16px; padding:14px 0;
    border-bottom:1px solid var(--stone-dark); font-size:0.93rem;
  }
  .conditions-list li span:first-child{color:var(--ink-soft);}
  .conditions-list li span:last-child{font-weight:700; color:var(--forest); text-align:right;}

  /* Association */
  .assoc-wrap{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center;}
  .assoc-card{
    background:#fff; border-radius:var(--radius); padding:32px; box-shadow:var(--shadow);
    border:1px solid var(--stone-dark);
  }
  .assoc-card + .assoc-card{margin-top:20px;}
  .assoc-card h4{font-size:1rem; margin-bottom:8px;}
  .assoc-card p{font-size:0.92rem; color:var(--ink-soft);}

  /* Contact / footer */
  footer{background:var(--forest); color:rgba(255,255,255,0.85); padding:70px 0 30px;}
  .footer-grid{display:grid; grid-template-columns:1.1fr 0.9fr 0.9fr 1.1fr; gap:40px; margin-bottom:50px;}
  footer h4{color:#fff; font-size:1rem; margin-bottom:16px; font-family:var(--sans); font-weight:700;}
  footer p, footer a{color:rgba(255,255,255,0.72); font-size:0.9rem;}
  footer ul{list-style:none;}
  footer li{margin-bottom:10px;}
  footer a{text-decoration:none;}
  footer a:hover{color:#fff;}
  .footer-brand p{margin-top:14px; max-width:280px;}
  .map-embed{border-radius:12px; overflow:hidden; border:1px solid rgba(255,255,255,0.15); height:180px;}
  .map-embed iframe{width:100%; height:100%; border:0;}
  .footer-bottom{
    border-top:1px solid rgba(255,255,255,0.15); padding-top:24px;
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:0.82rem; color:rgba(255,255,255,0.55);
  }

  .sticky-cta{
    position:fixed; bottom:18px; left:50%; transform:translateX(-50%) translateY(120%); z-index:200;
    display:none; box-shadow:0 12px 28px rgba(0,0,0,0.25);
    transition:transform .3s ease; opacity:0; pointer-events:none;
  }
  .sticky-cta.is-visible{transform:translateX(-50%) translateY(0); opacity:1; pointer-events:auto;}

  @media (max-width:960px){
    nav ul, .nav-cta .nav-phone{display:none;}
    .menu-toggle{display:block;}
    .stats-grid{grid-template-columns:repeat(2,1fr); row-gap:18px;}
    .stats-grid div{border-right:none; border-bottom:1px solid var(--stone-dark);}
    .chalet-grid, .assoc-wrap, .pricing-wrap{grid-template-columns:1fr;}
    .equip-grid, .env-grid{grid-template-columns:1fr 1fr;}
    .footer-grid{grid-template-columns:1fr 1fr;}
    .sticky-cta{display:inline-flex;}
    body{padding-bottom:70px;}
  }
  @media (max-width:600px){
    .equip-grid, .env-grid, .footer-grid{grid-template-columns:1fr;}
    .photo-grid{grid-template-rows:repeat(3,110px);}
    section{padding:60px 0;}
  }

  [data-reveal]{opacity:1; transform:none;}

/* Multi-page additions */
nav a.active{color:var(--terracotta-dark);}
nav a.active::after{content:""; position:absolute; left:0; right:0; bottom:-6px; height:2px; background:var(--terracotta);}
nav a{position:relative;}

/* En-tête retravaillé : plus de sous-titre "Luchon · Pyrénées", libellés
   multi-lignes (Réservation / Tarif) proprement centrés plutôt que collés à
   gauche quand ils passent sur deux lignes ; le numéro de téléphone ne passe
   plus jamais à la ligne (mot par mot) et reste sur une seule ligne propre. */
.brand{gap:12px;}
.brand-name{line-height:1.15;}
nav ul{row-gap:4px;}
nav a{text-align:center; display:block; line-height:1.3;}
.nav-phone{flex-shrink:0;}
.nav-phone-num{white-space:nowrap;}

/* Page d'accueil plus lumineuse (13/08/2026) : bandeau d'accueil moins
   sombre (le voile vert-noir très opaque masquait beaucoup la photo) et
   nouvelle galerie photo pour donner davantage envie de réserver.
   Voile retravaillé en dégradé radial centré (19/08/2026) : quand tout le
   contenu du héro a été centré (voir plus bas), l'ancien dégradé diagonal
   gauche→droite (pensé pour un texte aligné à gauche) laissait le texte
   sur une zone trop claire de la photo au centre. Le dégradé radial fonce
   la zone centrale où se trouve désormais le texte, tout en laissant les
   bords de la photo plus visibles. */
.hero{
  background:
    linear-gradient(0deg, rgba(22,42,29,0.42) 0%, rgba(22,42,29,0.08) 28%, rgba(22,42,29,0.08) 58%, rgba(22,42,29,0.32) 100%),
    radial-gradient(ellipse 70% 60% at 50% 42%, rgba(16,32,21,0.58) 0%, rgba(16,32,21,0.34) 48%, rgba(16,32,21,0.08) 78%),
    url("img/hero-chalet-neige.jpg") center 30%/cover no-repeat;
}

/* Titre d'accueil en deux tailles (19/08/2026) : "Bienvenue à Bellevue"
   nettement plus gros (l'accroche), le reste plus discret (le sous-texte)
   — demande explicite de l'utilisateur. Remplace la taille unique héritée
   de la règle de base ".hero h1" (voir BASE_CSS). Titre centré (19/08/2026,
   demande explicite) : text-align:center ci-dessous. */
.hero h1{display:flex; flex-direction:column; gap:10px; text-align:center;}
.hero-title-hook{font-size:clamp(3.4rem, 7.2vw, 5.6rem); line-height:1.05;}
.hero-title-sub{font-size:clamp(1.4rem, 2.4vw, 2rem); font-weight:600; line-height:1.35; color:rgba(255,255,255,0.94);}

/* Toute la zone héro centrée (19/08/2026, demande explicite : "centre
   toute la zone ou il y a la photo pour que ca soit beau") — le bloc de
   contenu (accroche, titre, texte, badges, boutons) est maintenant centré
   horizontalement au-dessus de la photo, au lieu d'être plaqué à gauche.
   Les rangées en "chips" (hero-highlights/actions/badges) sont aussi
   recentrées, et le texte d'intro (max-width fixe) est centré via
   margin:auto. */
.hero-inner{margin:0 auto; text-align:center; padding-bottom:92px;}
.hero-tagline{margin-left:auto; margin-right:auto;}
.hero-highlights, .hero-actions, .hero-badges{justify-content:center;}

.home-gallery{padding:64px 0;}
.gallery-grid{
  display:grid; grid-template-columns:1.3fr 1fr 1fr; grid-template-rows:1fr 1fr;
  gap:10px; height:460px; border-radius:20px; overflow:hidden;
}
.gallery-item{position:relative; display:block; overflow:hidden; background:var(--stone);}
.gallery-item img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .45s ease;}
.gallery-item:hover img{transform:scale(1.06);}
.gallery-item::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(0deg, rgba(8,16,11,0.45) 0%, rgba(8,16,11,0) 42%);
}
.gallery-item-lg{grid-row:1 / 3;}
.gallery-caption{
  position:absolute; left:14px; bottom:12px; z-index:1; color:#fff;
  font-size:0.8rem; font-weight:700; letter-spacing:0.01em;
}
.gallery-item.img-fallback{background:linear-gradient(135deg, var(--stone) 0%, var(--stone-dark) 100%);}
.gallery-item.img-fallback img{display:none;}
.gallery-item.img-fallback::after{display:none;}
@media (max-width:820px){
  .gallery-grid{grid-template-columns:1fr 1fr; grid-template-rows:repeat(3,180px); height:auto;}
  .gallery-item-lg{grid-column:1 / 3; grid-row:1;}
}
@media (max-width:520px){
  .gallery-grid{grid-template-columns:1fr; grid-template-rows:repeat(5,220px);}
  .gallery-item-lg{grid-column:1; grid-row:1;}
}

/* Vraies photos du chalet dans les encarts "photo à ajouter" de la page
   "Le chalet & équipements" (19/08/2026, photos envoyées par l'utilisateur) :
   on retire le style pointillé/hachuré réservé aux encarts vides, l'image
   remplit le cadre comme les autres photos du site. */
.ph.is-photo{border:none; background:none; padding:0;}
.ph.is-photo img{width:100%; height:100%; object-fit:cover; display:block;}

/* Petite galerie "Autres espaces du chalet" (19/08/2026) : 4 photos
   supplémentaires envoyées par l'utilisateur, affichées en cartes avec
   légende sous la page "Le chalet & équipements". */
.chalet-extra-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:18px;
}
.chalet-extra-item{margin:0;}
.chalet-extra-item img{
  width:100%; height:200px; object-fit:cover; display:block;
  border-radius:var(--radius);
}
.chalet-extra-item figcaption{
  margin-top:10px; font-size:0.86rem; color:var(--ink-soft); text-align:center;
}
@media (max-width:820px){
  .chalet-extra-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:520px){
  .chalet-extra-grid{grid-template-columns:1fr;}
  .chalet-extra-item img{height:240px;}
}

/* Cliquer sur une photo pour l'afficher en grand (19/08/2026, demande
   explicite) — indice visuel (curseur loupe) sur les photos concernées,
   plus la fenêtre plein écran elle-même (créée par assets/site.js). */
.zoomable-img{cursor:zoom-in;}
/* Le bouton flottant "Réserver le chalet" (position:fixed) peut, sur
   certains navigateurs, rester visible par-dessus la fenêtre plein écran
   même avec un z-index inférieur (bug de rendu constaté en test) — on le
   masque explicitement tant que la fenêtre plein écran est ouverte. */
.lightbox-locked .sticky-cta{display:none !important;}
.lightbox-overlay{
  position:fixed; inset:0; z-index:300; display:none;
  align-items:center; justify-content:center;
  background:rgba(10,16,12,0.92); padding:56px 20px;
}
.lightbox-overlay.is-open{display:flex;}
.lightbox-figure{margin:0; max-width:min(92vw,1200px); max-height:88vh; text-align:center;}
.lightbox-img{max-width:100%; max-height:80vh; border-radius:8px; display:block; margin:0 auto; box-shadow:0 20px 60px rgba(0,0,0,0.5);}
.lightbox-caption{color:rgba(255,255,255,0.88); font-size:0.9rem; margin-top:14px;}
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:fixed; background:rgba(255,255,255,0.12); color:#fff; border:none; border-radius:999px;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:background .2s ease;
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{background:rgba(255,255,255,0.24);}
.lightbox-close{top:18px; right:18px; width:44px; height:44px; font-size:1.6rem; line-height:1;}
.lightbox-prev, .lightbox-next{top:50%; transform:translateY(-50%); width:52px; height:52px; font-size:2rem; line-height:1;}
.lightbox-prev{left:16px;}
.lightbox-next{right:16px;}
@media (max-width:640px){
  .lightbox-prev, .lightbox-next{width:42px; height:42px; font-size:1.6rem;}
  .lightbox-close{width:38px; height:38px; font-size:1.3rem;}
}

.nav-account:hover{color:var(--terracotta-dark);}
@media (max-width:1080px){
  .nav-account-label{display:none;}
}
@media (max-width:820px){
  .nav-account{display:none !important;}
}

.page-banner{
  background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%);
  color:#fff; padding:64px 0 56px;
}
.breadcrumb{font-size:0.85rem; color:rgba(255,255,255,0.7); margin-bottom:14px;}
.breadcrumb a{color:rgba(255,255,255,0.85); text-decoration:none;}
.breadcrumb a:hover{color:#fff; text-decoration:underline;}
.page-banner h1{color:#fff; font-size:clamp(2rem, 3.6vw, 2.8rem); margin-bottom:12px;}
.page-banner p{color:rgba(255,255,255,0.85); font-size:1.05rem; max-width:600px;}

.explore-section{padding:88px 0;}
.explore-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.explore-card{
  background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius);
  padding:26px; text-decoration:none; color:var(--ink); box-shadow:var(--shadow);
  display:flex; flex-direction:column; gap:10px; transition:transform .15s ease;
}
.explore-card:hover{transform:translateY(-3px);}
.explore-card .equip-icon{margin-bottom:4px;}
.explore-card h3{font-size:1.08rem; color:var(--forest);}
.explore-card p{font-size:0.9rem; color:var(--ink-soft); flex-grow:1;}
.explore-card .go{font-size:0.85rem; font-weight:700; color:var(--terracotta-dark);}

.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:start;}
.contact-info-card{background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius); padding:32px; box-shadow:var(--shadow);}
.contact-info-card ul{list-style:none;}
.contact-info-card li{display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--stone-dark); font-size:0.95rem;}
.contact-info-card li:last-child{border-bottom:none;}
.contact-info-card li svg{width:20px; height:20px; stroke:var(--forest); flex-shrink:0; margin-top:2px;}
.contact-info-card a{color:var(--forest); text-decoration:none; font-weight:600;}
.contact-map{border-radius:var(--radius); overflow:hidden; border:1px solid var(--stone-dark); box-shadow:var(--shadow); height:100%; min-height:360px;}
.contact-map iframe{width:100%; height:100%; border:0; min-height:360px;}

/* Environs — bandeau photo + cartes photo */
.page-banner-photo{
  position:relative; background-size:cover; background-position:center; padding:0;
}
.page-banner-photo::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(135deg, rgba(31,61,43,0.90) 0%, rgba(58,107,74,0.80) 100%);
}
.page-banner-photo .container{position:relative; z-index:1; padding-top:64px; padding-bottom:56px;}
.page-banner-photo .banner-credit{
  position:relative; z-index:1; font-size:0.72rem; color:rgba(255,255,255,0.6);
  padding:0 0 14px; margin:0;
}

.env-photo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
.env-photo-card{
  background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius);
  overflow:hidden; box-shadow:var(--shadow); display:flex; flex-direction:column;
}
.env-photo-wrap{position:relative; height:190px; background:var(--stone);}
.env-photo-wrap img{width:100%; height:100%; object-fit:cover; display:block;}
.env-photo-wrap.img-fallback{background:linear-gradient(135deg, var(--stone) 0%, var(--stone-dark) 100%);}
.env-photo-wrap.img-fallback img{display:none;}
.page-banner-photo.img-fallback{background-color:var(--forest);}
.env-photo-dist{
  position:absolute; top:12px; right:12px; background:rgba(31,61,43,0.88); color:#fff;
  font-size:0.74rem; font-weight:700; padding:4px 11px; border-radius:999px;
}
.env-photo-body{padding:20px 22px 22px; display:flex; flex-direction:column; gap:8px; flex-grow:1;}
.env-photo-body h3{font-size:1.05rem; color:var(--forest); margin:0;}
.env-photo-body p{font-size:0.88rem; color:var(--ink-soft); margin:0; line-height:1.5;}
.env-photo-credit{font-size:0.66rem; color:var(--ink-soft); opacity:0.75; margin-top:auto; padding-top:4px;}
.env-photo-card{cursor:pointer; transition:transform .15s ease, box-shadow .15s ease;}
.env-photo-card:hover, .env-photo-card:focus-visible{transform:translateY(-3px); box-shadow:0 14px 30px rgba(31,61,43,0.16);}
.env-photo-card:focus-visible{outline:2px solid var(--forest); outline-offset:2px;}
.env-photo-more{font-size:0.78rem; font-weight:700; color:var(--terracotta); margin-top:2px;}

/* Fenêtre "en savoir plus" par activité */
.env-modal-backdrop{
  position:fixed; inset:0; background:rgba(20,30,24,0.55); display:none;
  align-items:flex-start; justify-content:center; padding:5vh 16px; z-index:200; overflow-y:auto;
}
.env-modal-backdrop.is-open{display:flex;}
.env-modal{
  background:#fff; border-radius:var(--radius); max-width:720px; width:100%;
  box-shadow:0 30px 70px rgba(0,0,0,0.35); overflow:hidden; margin-bottom:5vh;
}
.env-modal-photo{position:relative; height:220px; background:var(--stone);}
.env-modal-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.env-modal-photo.img-fallback{background:linear-gradient(135deg, var(--stone) 0%, var(--stone-dark) 100%);}
.env-modal-photo.img-fallback img{display:none;}
.env-modal-close{
  position:absolute; top:14px; right:14px; width:36px; height:36px; border-radius:50%;
  background:rgba(31,61,43,0.85); color:#fff; border:none; font-size:1.2rem; line-height:1;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.env-modal-close:hover{background:var(--forest);}
.env-modal-dist{
  position:absolute; bottom:14px; left:20px; background:rgba(31,61,43,0.88); color:#fff;
  font-size:0.78rem; font-weight:700; padding:5px 12px; border-radius:999px;
}
.env-modal-body{padding:26px 28px 30px;}
.env-modal-body h2{color:var(--forest); font-size:1.5rem; margin:0 0 14px;}
.env-modal-body p{font-size:0.93rem; line-height:1.65; color:var(--ink-soft); margin:0 0 12px;}
.env-modal-practical{
  background:var(--cream, #faf6ef); border:1px solid var(--stone-dark); border-radius:12px;
  padding:16px 18px; margin:18px 0; list-style:none;
}
.env-modal-practical li{font-size:0.85rem; color:var(--ink-soft); padding:5px 0 5px 22px; position:relative; line-height:1.5;}
.env-modal-practical li::before{content:"—"; position:absolute; left:0; color:var(--terracotta); font-weight:700;}
.env-modal-map-wrap{border-radius:12px; overflow:hidden; border:1px solid var(--stone-dark); height:260px; margin-top:6px; background:var(--stone);}
.env-modal-map-wrap iframe{width:100%; height:100%; border:0;}
.env-modal-links{display:flex; flex-wrap:wrap; gap:10px 18px; margin-top:14px; font-size:0.85rem;}
.env-modal-links a{color:var(--forest); font-weight:700; text-decoration:none;}
.env-modal-links a:hover{text-decoration:underline;}
.env-modal-credit{font-size:0.66rem; color:var(--ink-soft); opacity:0.75; margin-top:16px;}
@media (max-width:640px){
  .env-modal-body{padding:20px 18px 24px;}
  .env-modal-photo{height:170px;}
}

/* Agenda / événements du secteur luchonnais */
.agenda-section{margin-top:64px; padding:48px 0 12px; border-top:3px solid var(--terracotta);}
.agenda-section > .agenda-heading{max-width:680px; margin-bottom:14px;}
.agenda-section .eyebrow{color:var(--terracotta-dark); font-size:0.88rem; font-weight:700; text-transform:uppercase; letter-spacing:0.08em;}
.agenda-section h2{color:var(--forest); font-size:2.3rem; margin:8px 0 16px; line-height:1.1;}
.agenda-note{
  background:var(--forest-pale); border:2px solid var(--terracotta); border-radius:14px;
  padding:20px 24px; font-size:1.02rem; color:var(--ink); line-height:1.65; margin:0 0 40px;
  font-weight:500;
}
.agenda-note a{color:var(--terracotta-dark); font-weight:700; text-decoration:underline;}
.agenda-note a:hover{color:var(--terracotta);}
.agenda-cats{display:flex; flex-direction:column; gap:52px;}
.agenda-cat-photo{
  position:relative; height:190px; border-radius:16px; overflow:hidden; margin-bottom:8px;
  background:var(--stone);
}
.agenda-cat-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.agenda-cat-photo::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(31,61,43,0) 35%, rgba(20,38,27,0.85) 100%);
}
.agenda-cat-photo h3{
  position:absolute; left:24px; right:24px; bottom:16px; color:#fff; font-size:1.6rem;
  margin:0; z-index:2; line-height:1.15;
}
.agenda-cat-photo.img-fallback{background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%);}
.agenda-cat-photo.img-fallback img{display:none;}
.agenda-cat-credit{font-size:0.68rem; color:var(--ink-soft); opacity:0.75; margin:0 0 18px;}
.agenda-list{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
.agenda-item{
  background:#fff; border:1px solid var(--stone-dark); border-radius:14px; padding:22px 24px;
  display:flex; flex-direction:column; gap:10px; box-shadow:var(--shadow);
  transition:transform .15s ease, box-shadow .15s ease;
}
.agenda-item:hover{transform:translateY(-3px); box-shadow:0 16px 34px rgba(31,61,43,0.18);}
.agenda-dates{
  align-self:flex-start; background:var(--terracotta); color:#fff; font-size:0.82rem; font-weight:700;
  padding:6px 14px; border-radius:999px; text-transform:uppercase; letter-spacing:0.03em;
}
.agenda-item h4{font-size:1.2rem; color:var(--forest); margin:0; line-height:1.3;}
.agenda-item .agenda-loc{font-size:0.92rem; color:var(--terracotta-dark); font-weight:700; margin:0;}
.agenda-item p.agenda-desc{font-size:0.95rem; color:var(--ink-soft); margin:0; line-height:1.6;}

/* Avis clients — page d'accueil (14/08/2026) */
.reviews-section{padding:72px 0;}
.reviews-google-card{
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:var(--forest); color:#fff; border-radius:18px; padding:28px 32px; margin:32px 0;
}
.reviews-google-card h3{margin:0 0 6px; font-size:1.25rem; color:#fff;}
.reviews-google-card p{margin:0; color:rgba(255,255,255,0.82); font-size:0.94rem; max-width:520px;}
.btn-outline-dark{
  border:1.5px solid rgba(255,255,255,0.6); color:#fff; background:transparent;
  padding:11px 22px; border-radius:999px; font-weight:700; font-size:0.92rem;
  white-space:nowrap; transition:background .15s ease;
}
.btn-outline-dark:hover{background:rgba(255,255,255,0.12);}
.reviews-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(260px,1fr)); gap:20px; margin-bottom:36px;
}
.review-card{
  background:#fff; border:1px solid var(--stone-dark); border-radius:14px; padding:22px 24px;
  box-shadow:var(--shadow); display:flex; flex-direction:column; gap:10px;
}
.review-card-stars{color:var(--gold); font-size:1.05rem; letter-spacing:2px;}
.review-card-stars span{opacity:0.28;}
.review-card-stars span.is-filled{opacity:1;}
.review-card-comment{margin:0; color:var(--ink); font-size:0.96rem; line-height:1.6; flex:1;}
.review-card-author{margin:0; font-size:0.85rem; font-weight:700; color:var(--forest);}
.review-card-author span{font-weight:400; color:var(--ink-soft);}
.reviews-form-card{
  background:var(--stone); border:1px solid var(--stone-dark); border-radius:18px;
  padding:30px 32px; max-width:640px;
}
.reviews-form-card h3{margin:0 0 18px; font-size:1.2rem; color:var(--forest);}
.review-stars-input{display:flex; gap:6px; margin-bottom:18px;}
.review-star-input{
  background:none; border:none; font-size:1.7rem; line-height:1; cursor:pointer; padding:0;
  color:var(--stone-dark); transition:color .1s ease;
}
.review-star-input.is-filled{color:var(--gold);}
.review-form-row{margin-bottom:14px;}
.review-form-row label{display:block; font-size:0.82rem; font-weight:600; margin-bottom:5px; color:var(--ink);}
.review-form-row input, .review-form-row textarea{
  width:100%; border:1px solid var(--stone-dark); border-radius:8px; padding:10px 12px;
  font-family:'Inter',sans-serif; font-size:0.9rem; box-sizing:border-box; background:#fff;
}
.review-form-feedback{margin:12px 0 0; font-size:0.88rem; font-weight:600;}
.review-form-feedback.is-success{color:var(--forest);}
.review-form-feedback.is-error{color:var(--terracotta-dark);}

/* Retour d'expérience — onglet admin regroupant Avis (public) et Retour
   client (privé) dans deux espaces bien distincts (18/08/2026) */
.experience-intro{color:var(--ink-soft); font-size:0.9rem; max-width:720px; margin:0 0 18px;}
.experience-block{margin-bottom:22px;}
.experience-block:last-child{margin-bottom:0;}
.experience-tag{
  display:inline-block; font-size:0.68rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em;
  padding:3px 9px; border-radius:999px; vertical-align:middle; margin-left:8px;
}
.experience-tag-public{background:rgba(184,141,70,0.16); color:var(--terracotta-dark);}
.experience-tag-private{background:rgba(31,61,43,0.1); color:var(--forest);}

/* Retour d'amélioration — onglet de l'espace abonnés (18/08/2026) */
.amelioration-item{
  background:#fff; border:1px solid var(--stone-dark); border-radius:14px;
  padding:20px 22px; margin-bottom:16px;
}
.amelioration-item-head{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:6px;}
.amelioration-item-head h4{margin:0; font-size:1.02rem; color:var(--forest);}
.amelioration-item-dates{color:var(--ink-soft); font-size:0.86rem; margin:0 0 14px;}
.amelioration-already{color:var(--forest); font-weight:600; font-size:0.9rem; margin:0;}
.amelioration-item form .review-stars-input{margin-bottom:12px;}
.amelioration-item form .review-form-row{margin-bottom:10px;}

/* Retour client — page privée liée depuis l'e-mail post-séjour (14/08/2026) */
.feedback-page{padding:56px 0 80px;}
.feedback-page .reviews-form-card{margin:0 auto; max-width:560px;}
.feedback-recap{
  background:#fff; border:1px solid var(--stone-dark); border-radius:12px;
  padding:14px 18px; margin-bottom:20px; font-size:0.9rem; color:var(--ink-soft);
}
.feedback-recap strong{color:var(--forest);}
.feedback-state{text-align:center; padding:20px 0; color:var(--ink-soft); font-size:0.95rem;}
.feedback-state.is-success{color:var(--forest); font-weight:600;}
.feedback-state.is-error{color:var(--terracotta-dark); font-weight:600;}

@media (max-width:960px){
  .explore-grid{grid-template-columns:1fr 1fr;}
  .contact-grid{grid-template-columns:1fr;}
  .env-photo-grid{grid-template-columns:1fr 1fr;}
  .agenda-list{grid-template-columns:1fr;}
  .agenda-section h2{font-size:1.9rem;}
}
@media (max-width:600px){
  .explore-grid{grid-template-columns:1fr;}
  .env-photo-grid{grid-template-columns:1fr;}
  .reviews-google-card{flex-direction:column; align-items:flex-start;}
}

/* ===== Réservation — widget type Airbnb ===== */
.booking-layout{
  display:grid; grid-template-columns:1.4fr 1fr; gap:36px; align-items:start;
}
@media (max-width: 900px){
  .booking-layout{grid-template-columns:1fr;}
}

.booking-card{
  background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:28px;
}

/* Calendar */
.cal-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:18px;}
.cal-head h3{font-family:'Fraunces',Georgia,serif; font-size:1.3rem; margin:0;}
.cal-nav{display:flex; gap:8px;}
.cal-nav button{
  width:36px; height:36px; border-radius:50%; border:1px solid var(--stone-dark);
  background:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center;
  color:var(--forest); transition:background .15s ease;
}
.cal-nav button:hover{background:var(--stone);}
.cal-nav button:disabled{opacity:0.35; cursor:not-allowed;}

.cal-months{display:grid; grid-template-columns:1fr 1fr; gap:28px;}
@media (max-width: 640px){ .cal-months{grid-template-columns:1fr;} }

.cal-month-name{
  font-family:'Inter',sans-serif; font-weight:700; font-size:0.95rem; text-align:center;
  margin-bottom:10px; color:var(--ink);
}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:3px;}
.cal-dow{font-size:0.72rem; text-align:center; color:var(--ink-soft); font-weight:600; padding-bottom:4px;}
.cal-day{
  position:relative; aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  font-size:0.85rem; border-radius:8px; cursor:pointer; color:var(--ink);
  background:transparent; border:none; font-family:'Inter',sans-serif;
}
.cal-day.is-empty{cursor:default;}
.cal-day.is-past, .cal-day.is-blocked{
  color:var(--stone-dark); cursor:not-allowed; text-decoration:line-through; opacity:0.55;
}
.cal-day.is-no-checkin{position:relative;}
.cal-day.is-no-checkin::after{
  content:""; position:absolute; bottom:4px; left:50%; transform:translateX(-50%);
  width:4px; height:4px; border-radius:50%; background:var(--terracotta);
}
.cal-day:not(.is-past):not(.is-blocked):not(.is-empty):not(.is-selected-start):not(.is-selected-end):hover{background:var(--stone);}
.cal-day.is-selected-start, .cal-day.is-selected-end{
  background:var(--forest); color:#fff; font-weight:700;
}
.cal-day.is-in-range{background:rgba(31,61,43,0.14);}
.cal-legend{display:flex; gap:18px; margin-top:16px; font-size:0.78rem; color:var(--ink-soft); flex-wrap:wrap;}
.cal-legend span{display:inline-flex; align-items:center; gap:6px;}
.cal-legend i{width:12px; height:12px; border-radius:3px; display:inline-block;}
.leg-free{background:#fff; border:1px solid var(--stone-dark);}
.leg-blocked{background:var(--stone-dark); opacity:0.6;}
.leg-selected{background:var(--forest);}

.booking-note{
  margin-top:16px; padding:12px 14px; background:var(--stone); border-radius:10px;
  font-size:0.85rem; color:var(--ink-soft); border-left:3px solid var(--gold);
}

/* Summary / sticky sidebar */
.booking-summary{
  background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:28px; position:sticky; top:100px;
}
.booking-summary h3{font-family:'Fraunces',Georgia,serif; font-size:1.25rem; margin:0 0 4px;}
.booking-dates{font-size:0.95rem; color:var(--ink-soft); margin-bottom:18px;}
.guest-stepper{
  display:flex; align-items:center; justify-content:space-between; margin-bottom:18px;
  padding:12px 14px; border:1px solid var(--stone-dark); border-radius:10px;
}
.guest-stepper button{
  width:30px; height:30px; border-radius:50%; border:1px solid var(--stone-dark); background:#fff;
  cursor:pointer; font-size:1.1rem; line-height:1; color:var(--forest);
}
.guest-stepper button:disabled{opacity:0.35; cursor:not-allowed;}
.price-lines{border-top:1px solid var(--stone); margin-top:6px; padding-top:14px;}
.price-line{display:flex; justify-content:space-between; font-size:0.9rem; color:var(--ink-soft); padding:5px 0;}
.price-line.total{
  border-top:1px solid var(--stone-dark); margin-top:10px; padding-top:12px;
  font-size:1.05rem; font-weight:700; color:var(--ink);
}
.price-line.deposit{color:var(--terracotta-dark); font-weight:600;}
.booking-actions{display:flex; flex-direction:column; gap:10px; margin-top:20px;}
.booking-actions .btn{width:100%; justify-content:center;}
.booking-form{margin-top:18px; display:none; flex-direction:column; gap:12px;}
.booking-form.is-open{display:flex;}
.booking-form label{font-size:0.82rem; font-weight:600; color:var(--ink); display:block; margin-bottom:4px;}
.booking-form input, .booking-form textarea{
  width:100%; border:1px solid var(--stone-dark); border-radius:8px; padding:10px 12px;
  font-family:'Inter',sans-serif; font-size:0.92rem; box-sizing:border-box;
}
.booking-form textarea{resize:vertical; min-height:70px;}
.booking-empty-msg{color:var(--ink-soft); font-size:0.9rem; text-align:center; padding:20px 0;}

.booking-confirm{
  display:none; text-align:center; padding:20px 4px;
}
.booking-confirm.is-open{display:block;}
.booking-confirm .icon-ok{
  width:52px; height:52px; border-radius:50%; background:var(--forest); color:#fff;
  display:flex; align-items:center; justify-content:center; margin:0 auto 14px; font-size:1.5rem;
}
.booking-confirm h3{font-family:'Fraunces',Georgia,serif; margin:0 0 8px;}
.booking-confirm p{color:var(--ink-soft); font-size:0.92rem;}

.rate-table{width:100%; border-collapse:collapse; margin-top:10px;}
.rate-table th, .rate-table td{text-align:left; padding:9px 6px; border-bottom:1px solid var(--stone); font-size:0.9rem;}
.rate-table th{color:var(--ink-soft); font-weight:600; font-size:0.78rem; text-transform:uppercase; letter-spacing:0.04em;}

.demo-banner{
  background:linear-gradient(90deg, var(--gold), var(--terracotta));
  color:#fff; text-align:center; font-size:0.85rem; font-weight:600; padding:10px 16px;
}

/* ===== Connexion / Espace abonnés / Espace admin ===== */

.auth-wrap{
  min-height:calc(100vh - 74px); display:flex; align-items:center; justify-content:center;
  padding:60px 20px; background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%);
}
.auth-card{
  background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:40px;
  width:100%; max-width:420px;
}
.auth-card h1{font-family:'Fraunces',Georgia,serif; font-size:1.7rem; margin:0 0 6px;}
.auth-card p.sub{color:var(--ink-soft); font-size:0.92rem; margin-bottom:26px;}
.auth-field{margin-bottom:16px;}
.auth-field label{display:block; font-size:0.85rem; font-weight:600; margin-bottom:6px;}
.auth-field input{
  width:100%; border:1px solid var(--stone-dark); border-radius:8px; padding:11px 13px;
  font-family:'Inter',sans-serif; font-size:0.95rem; box-sizing:border-box;
}
.auth-error{
  background:#fdecea; border:1px solid #f3b7ae; color:#8a2e22; border-radius:8px;
  padding:10px 13px; font-size:0.87rem; margin-bottom:16px; display:none;
}
.auth-error.is-visible{display:block;}
.auth-submit{width:100%; justify-content:center; margin-top:6px;}

/* Dashboard shell */
.dash-shell{background:var(--stone); min-height:calc(100vh - 74px);}
.dash-header{
  background:linear-gradient(135deg, var(--forest) 0%, var(--forest-light) 100%);
  color:#fff; padding:36px 0 28px;
}
.dash-header h1{color:#fff; font-size:1.8rem; margin:0 0 4px;}
.dash-header p{color:rgba(255,255,255,0.85); margin:0;}
.dash-header .logout-btn{
  background:rgba(255,255,255,0.15); border:1px solid rgba(255,255,255,0.4); color:#fff;
  padding:9px 18px; border-radius:999px; font-size:0.85rem; font-weight:600; cursor:pointer;
}
.dash-header .logout-btn:hover{background:rgba(255,255,255,0.25);}
.dash-top-row{display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap;}

.dash-tabs{display:flex; gap:6px; margin:26px 0 0; flex-wrap:wrap;}
.dash-tab{
  background:#fff; border:1px solid var(--stone-dark); border-radius:999px; padding:9px 18px;
  font-size:0.88rem; font-weight:600; cursor:pointer; color:var(--ink-soft);
}
.dash-tab.is-active{background:var(--forest); color:#fff; border-color:var(--forest);}

.dash-panel{display:none; padding:32px 0 60px;}
.dash-panel.is-active{display:block;}

.dash-card{
  background:#fff; border:1px solid var(--stone-dark); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:26px; margin-bottom:22px;
}
.dash-card h2{font-family:'Fraunces',Georgia,serif; font-size:1.2rem; margin:0 0 16px;}

.data-table{width:100%; border-collapse:collapse;}
.data-table th, .data-table td{text-align:left; padding:10px 8px; border-bottom:1px solid var(--stone); font-size:0.88rem;}
.data-table th{color:var(--ink-soft); font-weight:600; font-size:0.76rem; text-transform:uppercase; letter-spacing:0.03em;}
.data-table tr:last-child td{border-bottom:none;}
.data-table .actions{display:flex; gap:6px; flex-wrap:wrap;}

.badge{display:inline-block; padding:3px 10px; border-radius:999px; font-size:0.76rem; font-weight:700;}
.badge-pending{background:#fdf0dd; color:#93610f;}
.badge-confirmed{background:#e2f0e5; color:#1f3d2b;}
.badge-cancelled{background:#fdecea; color:#8a2e22;}
.badge-paid{background:#e2f0e5; color:#1f3d2b;}
.badge-failed{background:#fdecea; color:#8a2e22;}

.btn-sm{padding:7px 14px; font-size:0.8rem; border-radius:999px; border:1px solid var(--stone-dark); background:#fff; cursor:pointer; font-weight:600;}
.btn-sm.primary{background:var(--forest); color:#fff; border-color:var(--forest);}
.btn-sm.danger{background:#fdecea; color:#8a2e22; border-color:#f3b7ae;}

.form-row{display:grid; grid-template-columns:repeat(auto-fit, minmax(160px,1fr)); gap:14px; margin-bottom:14px;}
.form-row label{display:block; font-size:0.82rem; font-weight:600; margin-bottom:5px;}
.form-row input, .form-row select, .form-row textarea{
  width:100%; border:1px solid var(--stone-dark); border-radius:8px; padding:9px 11px;
  font-family:'Inter',sans-serif; font-size:0.9rem; box-sizing:border-box;
}

.mini-cal{display:grid; grid-template-columns:repeat(7,1fr); gap:3px; max-width:340px;}
.mini-cal .cal-dow{font-size:0.68rem; text-align:center; color:var(--ink-soft); font-weight:600;}
.mini-cal button{
  aspect-ratio:1; border-radius:6px; border:1px solid var(--stone); background:#fff; cursor:pointer;
  font-size:0.78rem; font-family:'Inter',sans-serif;
}
.mini-cal button.is-blocked{background:var(--terracotta); color:#fff; border-color:var(--terracotta-dark);}
.mini-cal button.is-past{opacity:0.3; cursor:not-allowed;}
.mini-cal button.is-selected{outline:2px solid var(--forest); outline-offset:1px;}

.must-change-banner{
  background:#fdf0dd; border:1px solid #f0d19a; color:#7a5108; border-radius:10px;
  padding:14px 18px; margin-bottom:22px; font-size:0.88rem;
}

.empty-state{color:var(--ink-soft); font-size:0.9rem; padding:14px 0;}

.finance-stats{display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:14px;}
.finance-stat{
  background:var(--stone); border-radius:10px; padding:14px 16px; display:flex; flex-direction:column; gap:4px;
}
.finance-stat-label{font-size:0.76rem; color:var(--ink-soft); font-weight:600; text-transform:uppercase; letter-spacing:0.03em;}
.finance-stat-value{font-family:'Fraunces',Georgia,serif; font-size:1.4rem; color:var(--forest);}

.role-select{border:1px solid var(--stone-dark); border-radius:8px; padding:5px 8px; font-family:'Inter',sans-serif; font-size:0.85rem;}

.badge-expense{background:#fdecea; color:#8a2e22;}
.badge-overdue{background:#fdecea; color:#8a2e22; margin-left:6px; font-size:0.7rem;}

.filter-bar{display:flex; flex-wrap:wrap; gap:12px; align-items:end; margin-bottom:18px; padding-bottom:18px; border-bottom:1px solid var(--stone);}
.filter-bar > div{display:flex; flex-direction:column; gap:4px;}
.filter-bar label{font-size:0.76rem; font-weight:600; color:var(--ink-soft);}
.filter-bar select, .filter-bar input{border:1px solid var(--stone-dark); border-radius:8px; padding:7px 9px; font-family:'Inter',sans-serif; font-size:0.85rem;}
.filter-bar .filter-check{flex-direction:row; align-items:center; gap:6px; padding-bottom:8px;}

.modal-overlay{
  position:fixed; inset:0; background:rgba(31,61,43,0.55); display:flex;
  align-items:center; justify-content:center; z-index:300; padding:20px;
}
.modal-box{
  background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:28px;
  width:100%; max-width:680px; max-height:85vh; overflow-y:auto; position:relative;
}
.modal-close{
  position:absolute; top:14px; right:16px; background:none; border:none; font-size:1.5rem;
  cursor:pointer; color:var(--ink-soft); line-height:1;
}
.modal-box h2{font-family:'Fraunces',Georgia,serif; font-size:1.2rem; margin:0 0 16px;}

.invoice-print-btn{background:none; border:none; color:var(--forest); text-decoration:underline; cursor:pointer; font-size:0.8rem; font-weight:600; padding:0;}

.project-year-group{margin-bottom:26px;}
.project-year-group:last-child{margin-bottom:0;}
.project-year-group h3{font-family:'Fraunces',Georgia,serif; font-size:1.05rem; margin:0 0 12px; color:var(--forest); border-bottom:1px solid var(--stone); padding-bottom:6px;}
.project-card{border:1px solid var(--stone); border-radius:10px; padding:14px 16px; margin-bottom:12px; background:var(--stone);}
.project-card-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:10px;}
.project-card-head strong{flex:1; font-size:0.98rem;}
.project-notes-input{
  width:100%; border:1px solid var(--stone-dark); border-radius:8px; padding:9px 11px;
  font-family:'Inter',sans-serif; font-size:0.88rem; box-sizing:border-box; margin-bottom:8px; background:#fff;
}

.toast{
  position:fixed; bottom:24px; right:24px; background:var(--forest); color:#fff;
  padding:12px 20px; border-radius:10px; font-size:0.88rem; box-shadow:var(--shadow);
  opacity:0; transform:translateY(10px); transition:all .25s ease; pointer-events:none; z-index:50;
}
.toast.is-visible{opacity:1; transform:translateY(0);}
.toast.is-error{background:#8a2e22;}

@media (max-width:960px){
  nav ul.open{
    display:flex !important; flex-direction:column; position:absolute; top:72px; left:0; right:0;
    background:#faf6ef; padding:20px 24px; border-bottom:1px solid #ddd4c2; gap:16px; z-index:150;
  }
}


/* --- RGPD (audit 12/10/2026) : cartes chargées au clic --- */
.map-embed-gated{
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:8px;
  height:auto; min-height:180px; padding:16px; background:rgba(255,255,255,0.06);
}
.env-modal-map-wrap.map-embed-gated{
  min-height:0; height:auto; background:var(--stone); border-radius:12px; padding:14px;
}
.map-load-btn{
  border:1px solid currentColor; background:transparent; color:inherit; cursor:pointer;
  font-weight:600; font-size:0.9rem; padding:9px 16px; border-radius:999px;
  transition:background 0.15s ease;
}
.map-load-btn:hover{ background:rgba(0,0,0,0.06); }
.map-gate-note{ font-size:0.78rem; opacity:0.75; margin:0; }
#env-modal-map{ width:100%; height:220px; border:0; border-radius:10px; }

/* --- RGPD : consentement avis + aide sous formulaires --- */
.review-form-hint{ font-size:0.78rem; color:var(--ink-soft); margin:4px 0 0; }
.review-consent-row{ margin-top:4px; }
.review-consent-label{
  display:flex; align-items:flex-start; gap:10px; font-size:0.85rem; color:var(--ink-soft);
  cursor:pointer; line-height:1.4;
}
.review-consent-label input[type="checkbox"]{ margin-top:3px; flex-shrink:0; width:16px; height:16px; }
.review-moderation-note{ font-size:0.78rem; color:var(--ink-soft); margin:10px 0 0; }
.form-rgpd-note{ font-size:0.78rem; color:var(--ink-soft); margin:10px 0 14px; max-width:520px; }

/* --- Pages légales (mentions-legales.html, politique-confidentialite.html) --- */
.legal-content{ max-width:760px; padding-top:40px; padding-bottom:60px; }
.legal-content h2{ font-family:var(--serif); font-size:1.3rem; margin:32px 0 12px; color:var(--forest); }
.legal-content h2:first-child{ margin-top:0; }
.legal-content p{ color:var(--ink-soft); line-height:1.6; margin-bottom:14px; }
.legal-content ul{ margin:0 0 16px; padding-left:20px; color:var(--ink-soft); line-height:1.6; }
.legal-content li{ margin-bottom:8px; }
.legal-content a{ color:var(--forest); font-weight:600; }
