/* Jardin des Saveurs — feuille de style v4
   Couleurs exactes extraites du logo officiel. Typo premium : Bricolage Grotesque + Plus Jakarta Sans. */

:root{
  --orange:       #F09020;
  --orange-dark:  #C97418;
  --orange-soft:  #FDEBD1;
  --green:        #107038;
  --green-dark:   #0B5228;
  --green-soft:   #E3F1E7;
  --green-line:   #BEE0CB;
  --lime:         #B8D030;
  --green-deep:   #0A3D1C;
  --orange-grad:  linear-gradient(135deg, #F2430A, #F2871A);
  --black:        #141414;
  --white:        #FFFFFF;
  --ink:          #1A1A1A;
  --ink-soft:     #55534C;
  --line:         #E7E4DB;
  --cream:        #FAF9F5;

  --font-display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;

  --radius: 6px;
  --max: 1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
}

body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--white);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%; display:block;}

.wrap{ max-width:var(--max); margin:0 auto; padding:0 24px; }

.skip-link{
  position:absolute; left:-999px; top:auto;
  background:var(--black); color:#fff; padding:12px 18px;
  z-index:200; border-radius:var(--radius);
}
.skip-link:focus{ left:16px; top:16px; }

a{ color:inherit; }
:focus-visible{ outline:2.5px solid var(--orange); outline-offset:2px; }

/* ---------- Buttons — compacts, vifs, toujours encadrés ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:7px;
  font-family:var(--font-body);
  font-weight:700;
  font-size:.85rem;
  padding:9px 18px;
  border-radius:var(--radius);
  border:2px solid transparent;
  text-decoration:none;
  cursor:pointer;
  transition:transform .15s ease, background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
  line-height:1.2;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-1px); }
.btn-primary{
  background:var(--orange-grad);
  border-color:var(--black);
  border-radius:100px;
  color:#fff;
  box-shadow:0 6px 14px -8px rgba(20,20,20,.5);
}
.btn-primary:hover{ filter:brightness(1.06); }
.btn-outline{
  background:var(--white);
  border-color:var(--green);
  color:var(--green-dark);
}
.btn-outline:hover{ background:var(--green-soft); }
.btn-ghost-light{
  background:rgba(255,255,255,.92);
  border-color:var(--black);
  color:var(--black);
}
.btn-ghost-light:hover{ background:#fff; }
.btn-white{
  background:#fff;
  border-color:var(--black);
  color:var(--black);
}
.btn-white:hover{ background:var(--cream); }
.btn-dark{
  background:var(--black);
  border-color:var(--black);
  color:#fff;
}
.btn-dark:hover{ background:#000; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(8px);
  border-bottom:2px solid var(--black);
}
.header-inner{ display:flex; align-items:center; gap:28px; padding:10px 24px; }
.brand{ display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--black); margin-right:auto; }
.brand-mark{ height:42px; width:auto; flex:none; object-fit:contain; display:block; }
.main-nav{ display:none; gap:22px; font-size:.92rem; font-weight:600; }
.main-nav a{ text-decoration:none; color:var(--ink-soft); padding-bottom:4px; border-bottom:2px solid transparent; }
.main-nav a:hover{ color:var(--green-dark); }
.main-nav a.is-active{ color:var(--orange); border-bottom-color:var(--orange); }
.nav-cta{ display:none; }
.nav-toggle{
  width:36px; height:30px; border:2px solid var(--black); border-radius:var(--radius);
  background:var(--white); cursor:pointer;
  display:flex; flex-direction:column; justify-content:center; align-items:center; gap:5px; padding:0;
}
.nav-toggle span{ display:block; height:2px; width:16px; background:var(--black); }
.mobile-nav{ display:none; flex-direction:column; padding:6px 24px 22px; border-top:2px solid var(--black); gap:2px; background:var(--white); }
.mobile-nav.open{ display:flex; }
.mobile-nav a{ padding:12px 4px; text-decoration:none; color:var(--ink); border-bottom:1px solid var(--line); font-weight:600; }
.mobile-nav a.is-active{ color:var(--orange); }
.mobile-nav .btn{ margin-top:14px; align-self:flex-start; }
@media (min-width: 960px){
  .main-nav{ display:flex; }
  .nav-cta{ display:inline-flex; }
  .nav-toggle{ display:none; }
}

/* ---------- Hero — la photo n'est JAMAIS recouverte ---------- */
.hero-photo{
  position:relative;
  width:100%;
  aspect-ratio:16/10;
  max-height:78vh;
  overflow:hidden;
}
.hero-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.hero-accent{ height:6px; width:100%; background:linear-gradient(90deg, #F2430A, #F2871A, var(--green-deep)); }

.hero-intro{ background:var(--white); padding:44px 0 52px; }
.status-row{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:20px; }
.hero-eyebrow{ font-size:.85rem; letter-spacing:.03em; color:var(--orange-dark); font-weight:700; margin:0 0 12px; }
.hero-intro h1{
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(2rem, 4.6vw, 3.2rem);
  line-height:1.06; margin:0 0 16px; color:var(--black); max-width:18ch;
}
.hero-lede{ font-size:clamp(1rem, 1.4vw, 1.1rem); max-width:56ch; color:var(--ink-soft); margin:0 0 26px; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:12px; margin-bottom:20px; }
.hero-contact{ font-size:.9rem; color:var(--ink-soft); }
.hero-contact a{ color:var(--green-dark); text-decoration:none; border-bottom:1.5px solid var(--orange); font-weight:700; }
.hero-contact span{ margin:0 10px; color:#C9C6BC; }

/* ---------- Status pill ---------- */
.status-pill{
  display:inline-flex; align-items:center; gap:8px;
  font-size:.78rem; font-weight:700; color:var(--green-dark);
  background:var(--green-soft); border:1.5px solid var(--green-line);
  padding:6px 13px 6px 10px; border-radius:100px;
}
.status-pill-rating{ color:var(--orange-dark); background:var(--orange-soft); border-color:#F3CE9C; letter-spacing:.02em; }
.status-dot{ width:8px; height:8px; border-radius:50%; background:var(--green); flex:none; position:relative; }
.status-dot::after{
  content:""; position:absolute; inset:-4px; border-radius:50%;
  background:var(--green); opacity:.45; animation:pulse-dot 1.8s ease-out infinite;
}
@keyframes pulse-dot{ 0%{ transform:scale(0.6); opacity:.5; } 100%{ transform:scale(2.2); opacity:0; } }

/* ---------- Page banner (sous-pages) ---------- */
.page-banner-photo{ width:100%; aspect-ratio:21/9; max-height:52vh; overflow:hidden; }
.page-banner-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.page-banner-content{ background:var(--white); padding:38px 0 8px; }
.page-banner-content .section-eyebrow{ color:var(--orange-dark); }
.page-banner-content h1{
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(1.9rem, 4.2vw, 2.9rem); margin:6px 0 14px; max-width:20ch; color:var(--black);
}
.page-banner-content p{ max-width:60ch; color:var(--ink-soft); font-size:1.02rem; margin:0 0 18px; }

/* ---------- Sections, generic ---------- */
.section{ padding:72px 0; }
.section-eyebrow{ font-size:.85rem; font-weight:700; color:var(--orange-dark); margin:0 0 10px; }
.section-title{
  font-family:var(--font-display); font-weight:700;
  font-size:clamp(1.6rem, 3.2vw, 2.3rem); line-height:1.16; margin:0 0 18px; max-width:20ch; color:var(--black);
}
.section-intro{ max-width:62ch; color:var(--ink-soft); font-size:1.02rem; }

/* ---------- Highlights (accueil → liens vers chaque page) ---------- */
.highlights{ background:var(--white); }
.highlight-grid{ display:grid; grid-template-columns:1fr; gap:16px; margin-top:40px; }
.highlight-card{
  display:flex; flex-direction:column; gap:10px;
  background:var(--white); border:2px solid var(--black); border-radius:10px;
  padding:24px 22px; text-decoration:none; color:var(--ink);
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.highlight-card:hover{ transform:translateY(-4px); box-shadow:6px 6px 0 var(--orange); border-color:var(--orange); }
.highlight-icon{ font-size:1.7rem; }
.highlight-card h3{ font-family:var(--font-display); font-size:1.15rem; font-weight:700; margin:0; color:var(--green-dark); }
.highlight-card p{ margin:0; color:var(--ink-soft); font-size:.94rem; }
.highlight-link{ margin-top:6px; font-size:.83rem; font-weight:700; color:var(--orange-dark); }
@media (min-width:620px){ .highlight-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:960px){ .highlight-grid{ grid-template-columns:repeat(3,1fr); } }

/* ---------- Pillars ---------- */
.pillars{ list-style:none; margin:48px 0 0; padding:0; display:grid; grid-template-columns:1fr; border-top:2px solid var(--black); }
.pillar{ padding:24px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:1fr; gap:8px; }
.pillar-label{ font-family:var(--font-display); font-size:1.15rem; font-weight:700; color:var(--green-dark); }
.pillar p{ margin:0; color:var(--ink-soft); max-width:52ch; }
@media (min-width:760px){ .pillar{ grid-template-columns:250px 1fr; align-items:baseline; padding:26px 0; } }

/* ---------- Menu / plats ---------- */
.table{ background:var(--white); }
.table .wrap{ margin-bottom:40px; }
.dish-row{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; padding:0 24px; max-width:var(--max); margin:0 auto; }
.dish{ position:relative; margin:0; overflow:hidden; border-radius:var(--radius); background:var(--black); border:2px solid var(--black); }
.dish img{ width:100%; height:100%; aspect-ratio:4/5; object-fit:cover; transition:transform .5s ease; }
.dish:hover img{ transform:scale(1.05); }
.dish-tall{ grid-row:span 2; }
.dish-tall img{ aspect-ratio:4/8.6; }
.dish-small img{ aspect-ratio:4/3.2; }
.dish figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:14px 14px 11px;
  font-size:.9rem; font-weight:700; color:#fff;
  background:linear-gradient(0deg, rgba(0,0,0,.72), rgba(0,0,0,0));
}
@media (min-width:640px){
  .dish-row{ grid-template-columns:repeat(4,1fr); }
  .dish-tall{ grid-column:span 2; grid-row:span 2; }
  .dish-tall img{ aspect-ratio:8/8.6; }
}

/* ---------- Cuisine du monde / boissons ---------- */
.cuisine-tags{ display:flex; flex-wrap:wrap; gap:10px; margin:20px 0 0; }
.cuisine-tags span{
  font-size:.85rem; font-weight:700; color:var(--white); background:var(--green);
  border:2px solid var(--black); border-radius:100px; padding:7px 15px;
}
.drinks-block{ background:var(--orange-soft); border:2px solid var(--black); border-radius:12px; padding:28px 26px; margin-top:16px; }
.drinks-block h3{ font-family:var(--font-display); margin:0 0 6px; font-size:1.3rem; color:var(--black); }
.drinks-block p{ margin:0 0 16px; color:var(--ink-soft); }
.drinks-list{ display:flex; flex-wrap:wrap; gap:10px; list-style:none; margin:0; padding:0; }
.drinks-list li{
  font-size:.86rem; font-weight:700; color:var(--black); background:var(--white);
  border:2px solid var(--black); border-radius:100px; padding:7px 15px;
}

/* ---------- Carte complète (texte, prix) ---------- */
.menu-full{ margin-top:10px; }
.menu-category{ margin-bottom:36px; }
.menu-category h3{
  font-family:var(--font-display); font-weight:700; font-size:1.3rem;
  color:var(--green-dark); margin:0 0 14px;
  padding-bottom:8px; border-bottom:2px solid var(--black);
}
.menu-items{ list-style:none; margin:0; padding:0; }
.menu-items li{
  display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  padding:9px 0; border-bottom:1px dashed var(--line);
}
.menu-item-name{ color:var(--ink); font-weight:600; font-size:.95rem; }
.menu-item-note{ color:var(--ink-soft); font-weight:400; font-size:.85rem; }
.menu-item-fill{ flex:1; border-bottom:1px dotted #C9C6BC; margin-bottom:5px; min-width:12px; }
.menu-item-price{ color:var(--orange-dark); font-weight:700; font-size:.92rem; white-space:nowrap; }
.menu-categories-grid{ display:grid; grid-template-columns:1fr; gap:0 56px; }
@media (min-width:860px){ .menu-categories-grid{ grid-template-columns:1fr 1fr; } }
.menu-note{
  background:var(--green-soft); border:2px solid var(--black); border-radius:10px;
  padding:16px 20px; font-size:.9rem; color:var(--ink-soft); margin-top:6px;
}

/* ---------- Commande — stepper de quantité sur chaque plat ---------- */
.qty-stepper{
  display:flex; align-items:center; gap:0;
  border:2px solid var(--black); border-radius:100px; overflow:hidden;
  flex:none; margin-left:auto;
}
.qty-btn{
  width:26px; height:26px; border:none; background:var(--white);
  color:var(--black); font-weight:700; font-size:.95rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center; line-height:1;
}
.qty-btn:hover{ background:var(--green-soft); }
.qty-val{
  min-width:20px; text-align:center; font-size:.85rem; font-weight:700; color:var(--black);
}
.menu-item-added{ background:var(--green) !important; color:#fff !important; }

/* ---------- Barre panier flottante ---------- */
.cart-bar{
  position:fixed; left:16px; right:16px; bottom:16px; max-width:420px; margin:0 auto;
  background:var(--black); color:#fff; border-radius:100px;
  padding:12px 10px 12px 20px; z-index:160;
  display:none; align-items:center; justify-content:space-between; gap:12px;
  box-shadow:0 14px 30px -14px rgba(0,0,0,.5);
}
.cart-bar.visible{ display:flex; }
.cart-bar-info{ font-size:.88rem; font-weight:700; }
.cart-bar-info span{ color:var(--orange); }
.cart-bar .btn{ padding:8px 16px; font-size:.8rem; }
@media (min-width:560px){ .cart-bar{ left:auto; right:24px; bottom:24px; margin:0; } }

/* ---------- Résumé de commande (page réservation) ---------- */
.cart-summary{
  background:var(--white); border:2px solid var(--black); border-radius:10px;
  padding:20px 22px; margin-bottom:22px;
}
.cart-summary h3{ font-family:var(--font-display); margin:0 0 4px; font-size:1.1rem; color:var(--black); }
.cart-summary-empty{ color:var(--ink-soft); font-size:.9rem; margin:6px 0 0; }
.cart-summary-list{ list-style:none; margin:14px 0 0; padding:0; }
.cart-summary-list li{
  display:flex; align-items:center; gap:10px;
  padding:8px 0; border-bottom:1px dashed var(--line); font-size:.9rem;
}
.cart-summary-list .csi-name{ flex:1; font-weight:600; }
.cart-summary-list .csi-qty{ color:var(--ink-soft); }
.cart-summary-list .csi-price{ color:var(--orange-dark); font-weight:700; white-space:nowrap; }
.cart-summary-list .csi-remove{
  border:1.5px solid var(--line); background:var(--cream); border-radius:50%;
  width:22px; height:22px; font-size:.85rem; color:var(--ink-soft); cursor:pointer; line-height:1;
}
.cart-summary-total{
  display:flex; justify-content:space-between; margin-top:14px; padding-top:12px;
  border-top:2px solid var(--black); font-weight:700; font-size:.95rem;
}
.cart-summary-link{ display:inline-block; margin-top:14px; font-size:.85rem; font-weight:700; color:var(--green-dark); text-decoration:none; }

/* ---------- Jardin ---------- */
.jardin{ background:var(--green-soft); }
.jardin-grid{ display:grid; grid-template-columns:1fr; gap:36px; align-items:center; }
.jardin-text p{ color:var(--ink-soft); max-width:50ch; margin-bottom:24px; }
.jardin-media{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.jardin-media img{ border-radius:var(--radius); aspect-ratio:3/3.3; object-fit:cover; border:2px solid var(--white); box-shadow:0 8px 20px -14px rgba(20,20,20,.4); }
.jardin-media img:first-child{ grid-column:1/-1; aspect-ratio:16/9; }
@media (min-width:880px){ .jardin-grid{ grid-template-columns:0.85fr 1.15fr; gap:52px; } }

/* ---------- Cérémonies ---------- */
.ceremonies{ background:var(--white); }
.ceremonies .wrap{ margin-bottom:34px; }
.ceremony-gallery{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; padding:0 24px; max-width:var(--max); margin:0 auto 36px; }
.ceremony-gallery img{ border-radius:var(--radius); aspect-ratio:4/3; object-fit:cover; border:2px solid var(--black); transition:transform .35s ease; }
.ceremony-gallery img:hover{ transform:translateY(-4px); }
@media (min-width:760px){ .ceremony-gallery{ grid-template-columns:repeat(4,1fr); } }
.ceremony-types{ display:flex; flex-wrap:wrap; gap:10px 12px; border-top:2px solid var(--black); padding-top:22px; }
.ceremony-types span{
  font-size:.86rem; font-weight:700; color:var(--green-dark);
  border:2px solid var(--green-line); background:var(--green-soft);
  border-radius:100px; padding:7px 15px;
}

/* ---------- Galerie ---------- */
.galerie{ background:var(--white); }
.mosaic{ display:grid; grid-template-columns:1fr; gap:12px; padding:0 24px; max-width:var(--max); margin:0 auto; }
.mosaic img{ border-radius:var(--radius); aspect-ratio:16/10; object-fit:cover; border:2px solid var(--black); }
@media (min-width:760px){
  .mosaic{ grid-template-columns:1.1fr 0.9fr; grid-auto-rows:1fr; }
  .mosaic img:nth-child(1){ grid-row:1/3; aspect-ratio:auto; height:100%; }
}

/* ---------- Infobar ---------- */
.infobar{ background:var(--white); border-top:2px solid var(--black); border-bottom:2px solid var(--black); }
.infobar-grid{ display:grid; grid-template-columns:1fr; gap:0; }
.infobar-item{ display:flex; align-items:center; gap:14px; padding:18px 4px; border-bottom:1px solid var(--line); }
.infobar-item:last-child{ border-bottom:none; }
.infobar-icon{ font-size:1.4rem; line-height:1; flex:none; }
.infobar-item div{ display:flex; flex-direction:column; gap:2px; }
.infobar-item strong{ font-size:.94rem; font-weight:700; color:var(--black); }
.infobar-item span{ font-size:.8rem; color:var(--ink-soft); }
@media (min-width:760px){
  .infobar-grid{ grid-template-columns:repeat(4,1fr); }
  .infobar-item{ border-bottom:none; border-right:1px solid var(--line); padding:22px 18px; }
  .infobar-item:last-child{ border-right:none; }
}

/* ---------- Bandeau photo défilant en continu ---------- */
.photo-marquee{
  overflow:hidden;
  background:var(--black);
  padding:18px 0;
}
.photo-marquee-track{
  display:flex;
  align-items:center;
  gap:14px;
  width:max-content;
  animation:photo-marquee-scroll 42s linear infinite;
}
.photo-marquee:hover .photo-marquee-track{ animation-play-state:paused; }
.photo-marquee-track img{
  height:220px;
  width:auto;
  flex:none;
  border-radius:var(--radius);
  border:2px solid #333;
  object-fit:cover;
  transition:transform .4s ease, filter .4s ease;
  filter:saturate(1.02);
}
.photo-marquee-track img:hover{ transform:scale(1.04) translateY(-3px); filter:saturate(1.15); }
@keyframes photo-marquee-scroll{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (max-width:640px){
  .photo-marquee-track img{ height:150px; }
}
@media (prefers-reduced-motion: reduce){
  .photo-marquee-track{ animation:none; }
}

/* ---------- Ken Burns léger sur la photo du hero ---------- */
@keyframes kenburns{
  0%{ transform:scale(1); }
  100%{ transform:scale(1.07); }
}
.hero-photo img{ animation:kenburns 18s ease-in-out infinite alternate; }
.page-banner-photo img{ animation:kenburns 20s ease-in-out infinite alternate; }
@media (prefers-reduced-motion: reduce){
  .hero-photo img, .page-banner-photo img{ animation:none; }
}

/* ---------- Marquee ribbon — vif ---------- */
.marquee{ background:var(--green-deep); border-top:2px solid var(--black); border-bottom:2px solid var(--black); overflow:hidden; white-space:nowrap; padding:12px 0; }
.marquee-track{
  display:inline-flex; align-items:center; gap:14px;
  font-family:var(--font-display); font-weight:600; font-size:.98rem; color:#fff;
  animation:marquee-scroll 26s linear infinite; padding-left:100%;
}
.marquee-track span:nth-child(even){ color:var(--lime); }
@keyframes marquee-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .marquee-track{ animation:none; padding-left:0; } }

/* ---------- Réservation ---------- */
.reservation{ background:var(--cream); }
.reservation .section-eyebrow{ color:var(--orange-dark); }
.reservation .section-title{ color:var(--black); }
.reservation-intro p{ color:var(--ink-soft); max-width:44ch; }
.reservation-direct{ display:flex; flex-wrap:wrap; gap:12px; margin-top:22px; }
.reservation-grid{ display:grid; grid-template-columns:1fr; gap:44px; align-items:start; }
@media (min-width:900px){ .reservation-grid{ grid-template-columns:0.85fr 1.15fr; gap:60px; } }
.reservation-form{
  background:var(--white); color:var(--ink); padding:28px;
  border-radius:var(--radius); border:2px solid var(--black);
  box-shadow:6px 6px 0 var(--green);
  display:flex; flex-direction:column; gap:15px;
}
.form-row{ display:flex; flex-direction:column; gap:6px; }
.form-row-split{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-row label{ font-size:.83rem; font-weight:700; color:var(--ink-soft); }
.reservation-form input, .reservation-form select, .reservation-form textarea{
  font-family:var(--font-body); font-size:.98rem; padding:10px 12px;
  border:1.5px solid var(--line); border-radius:var(--radius);
  background:var(--cream); color:var(--ink);
}
.reservation-form input:focus, .reservation-form select:focus, .reservation-form textarea:focus{ border-color:var(--green); }
.form-submit{ margin-top:4px; width:100%; }
.form-note{ font-size:.8rem; color:var(--ink-soft); margin:0; }

/* ---------- Localisation / carte ---------- */
.localisation{ background:var(--white); }
.localisation-grid{ display:grid; grid-template-columns:1fr; gap:26px; align-items:center; }
.localisation-text p{ color:var(--ink-soft); max-width:46ch; margin-bottom:20px; }
.localisation-text strong{ color:var(--black); }
.localisation-map{ width:100%; aspect-ratio:16/11; border-radius:var(--radius); overflow:hidden; border:2px solid var(--black); }
.localisation-map iframe{ width:100%; height:100%; display:block; }
@media (min-width:880px){ .localisation-grid{ grid-template-columns:0.8fr 1.2fr; gap:52px; } }

/* ---------- Contact info cards ---------- */
.contact-cards{ display:grid; grid-template-columns:1fr; gap:14px; margin-top:18px; }
.contact-card{
  background:var(--white); border:2px solid var(--black); border-radius:10px;
  padding:18px 20px; display:flex; gap:12px; align-items:flex-start;
}
.contact-card .ico{ font-size:1.25rem; }
.contact-card h3{ margin:0 0 4px; font-size:1rem; font-family:var(--font-display); color:var(--green-dark); }
.contact-card p{ margin:0; color:var(--ink-soft); font-size:.9rem; }
.contact-card a{ color:var(--orange-dark); text-decoration:none; font-weight:700; }
@media (min-width:700px){ .contact-cards{ grid-template-columns:repeat(2,1fr); } }

/* ---------- Scroll reveal ---------- */
[data-reveal], [data-reveal-group] > *{ opacity:0; transform:translateY(12px); transition:opacity .5s ease, transform .5s ease; }
[data-reveal].in-view, [data-reveal-group].in-view > *{ opacity:1; transform:translateY(0); }
[data-reveal-group].in-view > *:nth-child(2){ transition-delay:.06s; }
[data-reveal-group].in-view > *:nth-child(3){ transition-delay:.12s; }
[data-reveal-group].in-view > *:nth-child(4){ transition-delay:.18s; }
[data-reveal-group].in-view > *:nth-child(5){ transition-delay:.24s; }
[data-reveal-group].in-view > *:nth-child(6){ transition-delay:.3s; }
@media (prefers-reduced-motion: reduce){ [data-reveal], [data-reveal-group] > *{ opacity:1; transform:none; transition:none; } }

/* ---------- Floating WhatsApp button ---------- */
.float-whatsapp{
  position:fixed; right:20px; bottom:20px; width:52px; height:52px; border-radius:50%;
  background:#25D366; color:#fff; border:2px solid var(--black);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 22px -12px rgba(20,20,20,.5); z-index:150;
  transition:transform .2s ease;
}
.float-whatsapp svg{ width:26px; height:26px; }
.float-whatsapp:hover{ transform:translateY(-3px) scale(1.04); }

/* ---------- Welcome toast ---------- */
.welcome-toast{
  position:fixed; left:16px; right:16px; bottom:16px; max-width:370px; margin:0 auto;
  background:var(--white); color:var(--ink); border-radius:10px; border:2px solid var(--black);
  box-shadow:6px 6px 0 var(--orange); padding:16px 38px 16px 16px; z-index:200;
  transform:translateY(140%); opacity:0;
  transition:transform .55s cubic-bezier(.2,.8,.2,1), opacity .55s ease;
  pointer-events:none;
}
.welcome-toast.show{ transform:translateY(0); opacity:1; pointer-events:auto; }
@media (min-width:560px){ .welcome-toast{ left:auto; right:24px; bottom:24px; margin:0; } }
.welcome-toast-row{ display:flex; gap:11px; align-items:flex-start; }
.welcome-toast-mark{ height:22px; width:auto; flex:none; object-fit:contain; margin-top:2px; }
.welcome-toast strong{ display:block; font-size:.92rem; margin-bottom:4px; }
.welcome-toast p{ margin:0 0 10px; font-size:.84rem; color:var(--ink-soft); line-height:1.4; }
.welcome-toast-cta{ display:inline-block; font-size:.83rem; font-weight:700; color:var(--orange-dark); text-decoration:none; }
.welcome-toast-cta:hover{ text-decoration:underline; }
.welcome-toast-close{
  position:absolute; top:8px; right:9px; width:24px; height:24px; border:1.5px solid var(--line);
  background:var(--cream); font-size:1.05rem; line-height:1; color:var(--ink-soft); cursor:pointer; border-radius:50%;
}
.welcome-toast-close:hover{ background:var(--line); }

/* ---------- Footer ---------- */
.site-footer{ background:var(--white); color:var(--ink); padding:56px 0 0; border-top:2px solid var(--black); }
.footer-grid{ display:grid; grid-template-columns:1fr; gap:36px; padding-bottom:40px; }
@media (min-width:760px){ .footer-grid{ grid-template-columns:1.3fr 1fr 1fr 1fr; } }
.site-footer .brand{ color:var(--black); }
.footer-brand .brand-mark{ height:48px; }
.footer-tagline{ font-family:var(--font-display); font-style:italic; font-weight:500; color:var(--ink-soft); margin-top:10px; }
.footer-col h3{ font-size:.8rem; text-transform:uppercase; letter-spacing:.06em; color:var(--orange-dark); margin:0 0 12px; font-weight:700; }
.footer-col p{ margin:0 0 8px; color:var(--ink-soft); }
.footer-col a{ text-decoration:none; }
.footer-col a:hover{ text-decoration:underline; color:var(--green-dark); }
.footer-link{ display:inline-block; margin-top:6px; color:var(--green-dark); text-decoration:none; font-weight:700; }
.footer-address-code{ display:inline-block; margin-top:6px; font-size:.8rem; color:var(--ink-soft); }
.footer-bottom{ background:var(--black); color:#fff; padding:16px 0; }
.footer-bottom-inner{ font-size:.8rem; display:flex; flex-wrap:wrap; gap:6px 18px; justify-content:space-between; }
.footer-bottom-inner p{ margin:0; color:#D8D5CC; }
.footer-credit{ display:inline-flex; align-items:center; gap:8px; }
.footer-credit strong{ color:var(--orange); font-weight:700; }
.footer-credit-dot{ width:6px; height:6px; border-radius:50%; background:var(--lime); flex:none; }
