/* ==========================================================================
   Groupe Dallaba — feuille de style unique (zéro dépendance externe hors
   Google Fonts). Thème sombre natif, mobile-first, respecte
   prefers-reduced-motion partout où il y a de l'animation.
   ========================================================================== */

/* Polices hébergées (plus de dépendance à Google Fonts). Repli aux métriques proches : pas de saut de texte au chargement. */
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:600 800;font-display:swap;src:url(/assets/fonts/bricolage-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:600 800;font-display:swap;src:url(/assets/fonts/bricolage-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/inter-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/inter-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Inter Fallback';src:local('Arial'),local('Helvetica Neue'),local('Helvetica');size-adjust:108.6%;ascent-override:89.2%;descent-override:22.2%;line-gap-override:0%;}
@font-face{font-family:'Bricolage Fallback';src:local('Arial Bold'),local('Arial-BoldMT'),local('Arial');font-weight:600 800;size-adjust:103.5%;ascent-override:89.9%;descent-override:26.1%;line-gap-override:0%;}

:root{
  --bg:#0b1220;
  --bg-raised:#111a2e;
  --bg-card:#141f38;
  --border:#22304d;
  --text:#e9edf6;
  --text-dim:#9aa7bd;
  --text-faint:#8b96ad; /* relevé depuis #6b7690 : contraste 3.7:1 -> 5.4:1 sur --bg, conforme WCAG AA */
  --gold:#f5b342;
  --gold-soft:#f5b34222;
  --focus:#7ab8ff;

  --c-education:#a48df2; /* éclairci depuis #8c6fe0 : contraste 4,26:1 -> 5,4:1 (WCAG AA) */
  --c-transport:#e8863a;
  --c-commerce:#3ec9a7;
  --c-boulangerie:#d9a441;
  --c-btp:#b5824f;

  --radius-lg:20px;
  --radius-md:14px;
  --radius-sm:9px;

  --header-h:72px;

  --shadow-1:0 8px 30px -12px rgba(0,0,0,.55);
  --shadow-2:0 20px 60px -20px rgba(0,0,0,.65);

  /* ---- Grille d'espacement 8px ---- */
  --sp-1:8px; --sp-2:16px; --sp-3:24px; --sp-4:32px; --sp-5:40px;
  --sp-6:48px; --sp-8:64px; --sp-10:80px; --sp-12:96px; --sp-15:120px;

  /* ---- Échelle typographique fluide (clamp: mobile -> desktop) ---- */
  --fs-h1:clamp(1.75rem, 1.1rem + 3.2vw, 4.5rem);    /* 28px -> 72px */
  --fs-h2:clamp(2rem, 1.6rem + 1.2vw, 3rem);          /* 32px -> 48px */
  --fs-h3:clamp(1.5rem, 1.35rem + 0.5vw, 2rem);       /* 24px -> 32px */
  --fs-body:clamp(1rem, 0.97rem + 0.3vw, 1.25rem);    /* 16px -> 20px */

  /* ---- Tailles d'icônes (mobile / tablette / desktop) ---- */
  --icon-sm:28px; --icon-md:36px; --icon-lg:44px;
  color-scheme:dark;
}
/* Sur grand écran les icônes restent discrètes : elles accompagnent le contenu. */
@media (min-width:640px){
  :root{ --icon-sm:30px; --icon-md:40px; --icon-lg:48px; }
}
@media (min-width:1024px){
  :root{ --icon-sm:32px; --icon-md:40px; --icon-lg:48px; }
}


*,*::before,*::after{ box-sizing:border-box; }
/* Sans cette règle, tout élément dont une classe force display:flex/grid
   ignore l'attribut hidden (panneau assistant, filtres, sélecteur contact). */
[hidden]{ display:none !important; }
html{ scroll-behavior:smooth; overflow-x:hidden; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Inter','Inter Fallback',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  font-size:var(--fs-body);
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

h1,h2,h3,h4{
  font-family:'Bricolage Grotesque','Bricolage Fallback','Inter',system-ui,sans-serif;
  font-weight:700;
  line-height:1.15;
  margin:0 0 .5em;
  letter-spacing:-.01em;
}
h1{ font-size:var(--fs-h1); }
h2{ font-size:var(--fs-h2); }
h3{ font-size:var(--fs-h3); font-weight:600; }
h1,h2{ text-wrap:balance; }

p{ margin:0 0 1em; color:var(--text-dim); font-size:1em; }
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
svg{ max-width:100%; }
ul{ margin:0; padding:0; list-style:none; }
button{ font:inherit; }

:focus-visible{ outline:2px solid var(--focus); outline-offset:3px; border-radius:4px; }

.container{ width:100%; max-width:1180px; margin:0 auto; padding:0 var(--sp-3); }

.visually-hidden{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

.skip-link{
  position:absolute; left:12px; top:-60px; z-index:200;
  background:var(--gold); color:#1a1206; padding:10px 16px;
  border-radius:var(--radius-sm); font-weight:700; transition:top .2s;
}
.skip-link:focus{ top:12px; }

/* ---------- Boutons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.55em;
  padding:.85em 1.4em; border-radius:999px; font-weight:600;
  font-size:.95rem; border:1px solid transparent; cursor:pointer;
  transition:transform .15s ease, box-shadow .2s ease, background .2s ease;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); }
.btn svg{ width:1.1em; height:1.1em; flex:none; }

.btn-gold{ background:linear-gradient(135deg,#ffd27a,var(--gold)); color:#1c1406; box-shadow:var(--shadow-1); }
.btn-gold:hover{ box-shadow:0 14px 34px -10px #f5b34266; }

.btn-outline{ background:transparent; border-color:var(--border); color:var(--text); }
.btn-outline:hover{ border-color:var(--gold); color:var(--gold); }

.btn-whatsapp{ background:#25d366; color:#06210f; }
.btn-whatsapp:hover{ box-shadow:0 14px 34px -10px #25d36677; }

.btn-call{ background:var(--bg-raised); border-color:var(--border); color:var(--text); }
.btn-call:hover{ border-color:var(--focus); }

.btn-sm{ padding:.6em 1.1em; font-size:.85rem; }
.btn-block{ width:100%; justify-content:center; }

/* ---------- Header / navigation ---------- */
#nav-root{ position:relative; z-index:100; }

.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  height:var(--header-h);
  display:flex; align-items:center;
  background:rgba(11,18,32,.82);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
}

.site-header .container{ display:flex; align-items:center; justify-content:space-between; height:100%; }

.brand{ display:flex; align-items:center; gap:.65em; font-family:'Bricolage Grotesque','Bricolage Fallback',sans-serif; }
.brand-mark{ width:38px; height:38px; flex:none; }
.brand-text{ display:flex; flex-direction:column; line-height:1.05; }
.brand-text .kicker{ font-size:.75rem; letter-spacing:.22em; color:var(--text-faint); font-weight:600; }
.brand-text .name{ font-size:1.05rem; font-weight:700; color:var(--text); }
.brand-text .name b{ color:var(--gold); font-weight:700; }

.nav-desktop{ display:none; }
@media (min-width:768px){
  .nav-desktop{ display:flex; align-items:center; gap:1.9rem; }
  .nav-desktop a{ font-size:.92rem; color:var(--text-dim); font-weight:500; position:relative; padding:.3em 0; }
  .nav-desktop a[aria-current="page"]{ color:#fff; }
  .nav-desktop a[aria-current="page"]::after{ transform:scaleX(1); }
  .nav-desktop a:hover{ color:var(--text); }
  .nav-desktop a::after{
    content:''; position:absolute; left:0; right:0; bottom:-2px; height:2px;
    background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform .2s ease;
  }
  .nav-desktop a:hover::after{ transform:scaleX(1); }
}

.nav-actions{ display:flex; align-items:center; gap:.6rem; }
/* Tablette : 6 liens + bouton ne tiennent pas sur 768-1023px (le bouton dépassait de 14px). */
@media (min-width:768px) and (max-width:1023px){
  .nav-desktop{ gap:1.1rem; }
  .nav-desktop a{ font-size:.86rem; }
  .nav-actions .btn{ display:none; }
}
.nav-toggle{
  display:flex; align-items:center; justify-content:center;
  width:42px; height:42px; border-radius:50%;
  background:var(--bg-raised); border:1px solid var(--border); color:var(--text);
  cursor:pointer;
}
@media (min-width:768px){ .nav-toggle{ display:none; } }
.nav-toggle svg{ width:20px; height:20px; }

.nav-panel{
  position:fixed; top:0; right:0; bottom:0; width:min(320px,86vw);
  background:var(--bg-raised); border-left:1px solid var(--border);
  transform:translateX(100%); transition:transform .3s ease;
  z-index:110; padding:24px; overflow-y:auto;
}
.nav-panel.is-open{ transform:translateX(0); }
.nav-panel .panel-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:1.5rem; }
.nav-panel a{ display:block; padding:.9em 0; font-size:1.05rem; border-bottom:1px solid var(--border); color:var(--text); }
.nav-panel a[aria-current="page"]{ color:var(--gold); font-weight:700; }
.nav-scrim{
  position:fixed; inset:0; background:rgba(4,7,14,.6); z-index:105;
  opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.nav-scrim.is-open{ opacity:1; pointer-events:auto; }
@media (prefers-reduced-motion:reduce){ .nav-panel,.nav-scrim{ transition:none; } }

/* ---------- Hero ---------- */
.hero{
  position:relative; padding:calc(var(--header-h) + 56px) 0 40px;
  overflow:hidden;
}
.hero-bg{
  position:absolute; inset:0; z-index:-2;
  background:
    radial-gradient(60% 50% at 15% 10%, #8c6fe022, transparent 60%),
    radial-gradient(55% 45% at 85% 15%, #f5b34222, transparent 60%),
    radial-gradient(70% 60% at 50% 100%, #3ec9a71a, transparent 60%),
    var(--bg);
}
#particles{ position:absolute; inset:0; z-index:-1; opacity:.55; }

.hero-grid{
  display:grid; gap:2.5rem; align-items:center;
}
@media (min-width:960px){ .hero-grid{ grid-template-columns:1.05fr .95fr; gap:2rem; } }
/* Un enfant de grille a min-width:auto par défaut : le carrousel (piste à 70vw
   par carte) élargissait la colonne au-delà de 375px et tronquait le titre. */
.hero-grid > *{ min-width:0; }
.split-hero .container > *{ min-width:0; }

.eyebrow{
  display:inline-flex; align-items:center; gap:.5em;
  font-size:.78rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gold); font-weight:700; margin-bottom:1.1rem;
}
.eyebrow::before{ content:''; width:22px; height:2px; background:var(--gold); }

.hero h1{ font-size:var(--fs-h1); color:#fff; }
.hero h1 .accent{ color:var(--gold); }
.hero-lede{ font-size:1.08rem; max-width:52ch; }

.hero-ctas{ display:flex; flex-wrap:wrap; gap:.8rem; margin-top:1.6rem; }

.hero-stats{ display:flex; gap:1.6rem; margin-top:2.2rem; flex-wrap:wrap; }
.hero-stats .stat b{ display:block; font-family:'Bricolage Grotesque','Bricolage Fallback',sans-serif; font-size:1.5rem; color:#fff; }
.hero-stats .stat span{ font-size:.8rem; color:var(--text-faint); }

/* ---------- Carrousel 3D des activités (accueil) ---------- */
.carousel3d{
  /* Volontairement pas flex : .carousel-track (100%x100%) remplit exactement
     les 340px, les points/compteur qui suivent dans le flux débordent donc
     proprement EN DESSOUS plutôt que de se retrouver à côté en flex-row. */
  position:relative; height:340px;
  perspective:1200px; width:100%; max-width:640px; min-width:0; margin:0 auto;
}
.carousel-track{
  position:relative; width:100%; height:100%; outline:none;
  overflow:hidden; /* les cartes à offset ±2 débordaient dans la colonne voisine (hero) sans ça */
}
/* Compense le clip : la carte active garde toute sa place, seules les
   voisines lointaines (offset ≥2, déjà quasi invisibles) sont coupées net. */
.carousel-card{ will-change:transform; }
.carousel-card{
  position:absolute; top:50%; left:50%; width:220px; margin:-140px 0 0 -110px;
  border-radius:var(--radius-lg); background:var(--bg-card); border:1px solid var(--border);
  padding:1.6rem 1.3rem; text-align:center; text-decoration:none; color:var(--text);
  display:flex; flex-direction:column; align-items:center; gap:.6em;
  box-shadow:var(--shadow-2);
  transition:transform .6s cubic-bezier(.22,.68,.35,1), opacity .6s ease, box-shadow .3s ease;
  cursor:pointer;
}
.carousel-card img,.carousel-card svg{ width:64px; height:64px; border-radius:16px; object-fit:contain; background:#f7f3ea; padding:4px; }
.carousel-card svg{ background:none; padding:0; }
.carousel-card h3,.carousel-card .carousel-title{ font-family:'Bricolage Grotesque','Bricolage Fallback','Inter',system-ui,sans-serif; font-weight:600; line-height:1.15; font-size:1.05rem; color:#fff; margin:0; }
.carousel-card p{ font-size:.82rem; margin:0; }
.carousel-card .card-link{ font-size:.8rem; font-weight:700; margin-top:.2em; }
.carousel-card:not(.is-active) .card-link{ display:none; }
.carousel-card:not(.is-active) p{ display:none; }
.carousel-card.is-active{ box-shadow:0 24px 60px -16px rgba(0,0,0,.6), 0 0 0 1px var(--gold) inset; z-index:5; }
@media (prefers-reduced-motion:reduce){ .carousel-card{ transition:opacity .3s ease; } }

.carousel-arrow{
  position:absolute; top:50%; margin-top:-20px; z-index:10; width:40px; height:40px; border-radius:50%;
  background:var(--bg-raised); border:1px solid var(--border); color:var(--text); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.carousel-arrow.prev{ left:0; } .carousel-arrow.next{ right:0; }
.carousel-arrow svg{ width:18px; height:18px; }
.carousel-arrow:hover{ border-color:var(--gold); color:var(--gold); }

.carousel-dots{ display:flex; justify-content:center; gap:0; margin-top:.8rem; }
/* Zone tactile de 24 px (WCAG 2.2) ; le point visible reste petit (pseudo-élément) */
.carousel-dots button{ position:relative; width:24px; height:24px; background:none; border:none; padding:0; cursor:pointer; }
.carousel-dots button::before{ content:''; position:absolute; top:8px; left:8px; width:8px; height:8px; border-radius:50%; background:var(--border); transition:all .25s ease; }
.carousel-dots button.is-active::before{ background:var(--gold); width:24px; left:0; border-radius:999px; }
.carousel-counter{ text-align:center; font-size:.76rem; color:var(--text-faint); margin-top:.5rem; }

@media (max-width:639px){
  .carousel3d{ height:auto; perspective:none; }
  .carousel-arrow{ display:none; }
  .carousel-track{
    display:flex; gap:1rem; overflow-x:auto; scroll-snap-type:x mandatory;
    padding:.5rem 30vw .5rem 30vw; -webkit-overflow-scrolling:touch;
  }
  .carousel-track::-webkit-scrollbar{ display:none; }
  .carousel-card{
    position:static; margin:0; flex:none; width:70vw; scroll-snap-align:center;
    transform:none !important; opacity:1 !important;
  }
  .carousel-card:not(.is-active){ opacity:.6 !important; transform:scale(.92) !important; }
}

/* ---------- Sélecteur "trouver le bon contact" ---------- */
.contact-finder{
  position:fixed; inset:0; z-index:180; display:flex; align-items:center; justify-content:center;
  background:rgba(4,7,14,.75); opacity:0; pointer-events:none; transition:opacity .25s ease; padding:20px;
}
.contact-finder.is-open{ opacity:1; pointer-events:auto; }
.contact-finder-box{
  background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:1.8rem; width:min(420px,92vw); max-height:85vh; overflow-y:auto;
}
.contact-finder-box h3{ color:#fff; margin-bottom:1rem; }
.contact-finder-list{ display:flex; flex-direction:column; gap:.6rem; }
.contact-finder-list button{
  display:flex; align-items:center; gap:.7em; padding:.8em 1em; border-radius:10px;
  background:var(--bg-raised); border:1px solid var(--border); color:var(--text); font-size:.92rem;
  font-weight:600; cursor:pointer; text-align:left;
}
.contact-finder-list button:hover{ border-color:var(--gold); }
.contact-finder-close{ margin-top:1.2rem; }
.contact-finder-result{ margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border); }
@media (prefers-reduced-motion:reduce){ .contact-finder{ transition:none; } }

/* ---------- Besoin — cartes de conversion finale ---------- */
.need-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:640px){ .need-grid{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:960px){ .need-grid{ grid-template-columns:repeat(5,1fr); } }
.need-card{
  display:flex; flex-direction:column; align-items:center; gap:.6em; text-align:center;
  padding:1.3rem 1rem; border-radius:var(--radius-md); background:var(--bg-card); border:1px solid var(--border);
}
.need-card svg{ width:var(--icon-sm); height:var(--icon-sm); }
.need-card span{ font-size:.85rem; font-weight:600; color:#fff; }

/* ---------- Histoire compacte ---------- */
.histoire-card{
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:1.3rem;
  max-width:640px; margin:0 auto; padding:2rem 1.6rem; background:var(--bg-card);
  border:1px solid var(--border); border-radius:var(--radius-lg);
}
@media (min-width:640px){
  .histoire-card{ flex-direction:row; text-align:left; padding:2rem 2.4rem; }
}
.histoire-mark{ flex:none; width:64px; height:64px; }
.histoire-mark svg{ width:100%; height:100%; }
.histoire-text p{ color:var(--text-dim); max-width:46ch; }
.histoire-badge{
  display:inline-block; margin-top:.9rem; font-size:.72rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--text-faint); border:1px solid var(--border); border-radius:999px;
  padding:.3em .8em;
}

/* Histoire rédigée depuis l'admin : carte élargie, lecture confortable */
.histoire-card:has(.histoire-titre){ max-width:860px; align-items:flex-start; text-align:left; }
.histoire-titre{ font-size:clamp(1.5rem,3vw,2rem); color:#fff; margin:0 0 1rem; line-height:1.2; }
.histoire-intertitre{ font-size:1.05rem; color:var(--gold); margin:1.6rem 0 .5rem; }
.histoire-card:has(.histoire-titre) .histoire-text p{ max-width:68ch; margin:0 0 .9rem; line-height:1.7; }

/* ---------- Sections génériques ---------- */
.section{ padding:var(--sp-10) 0; }
.section-head{ max-width:640px; margin:0 0 var(--sp-4); }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head h2{ font-size:var(--fs-h2); color:#fff; }

/* Masqué uniquement quand le JS est actif (classe .js posée par main.js) :
   sans JS, le contenu reste visible au lieu de rester à opacity:0. */
.js .reveal{
  opacity:0; transform:perspective(1200px) translateY(24px) rotateX(5deg); transform-origin:top center;
  transition:opacity .6s ease, transform .6s ease;
}
.reveal.is-visible{ opacity:1; transform:none; }
/* Le premier écran (en-tête) s'affiche sans attendre le JavaScript : sinon la photo/le texte principal arrivent en retard (LCP). */
.js .hero .reveal,.js .split-hero .reveal{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

/* ---------- Cartes activités ---------- */
.activities-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:640px){ .activities-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px){ .activities-grid{ grid-template-columns:repeat(3,1fr); } }

.activity-card{
  position:relative; border-radius:var(--radius-lg); padding:1.7rem;
  background:linear-gradient(180deg,var(--bg-card),var(--bg-raised));
  border:1px solid var(--border); overflow:hidden;
  transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
  transform-style:preserve-3d; will-change:transform;
}
.activity-card:hover{ box-shadow:var(--shadow-2); }
@media (prefers-reduced-motion:reduce){ .activity-card{ transition:box-shadow .2s ease; } }

.activity-card .glow{
  position:absolute; inset:-40% -40% auto auto; width:220px; height:220px; border-radius:50%;
  filter:blur(60px); opacity:.35; z-index:0; pointer-events:none;
}
.activity-card > *{ position:relative; z-index:1; }

.activity-card .tag{
  display:inline-block; font-size:.78rem; font-weight:700; letter-spacing:.06em;
  padding:.3em .8em; border-radius:999px; margin-bottom:.9em;
}
.activity-card h3{ font-size:1.3rem; color:#fff; margin-bottom:.4em; }
.activity-card p{ font-size:1rem; margin-bottom:1.1em; }
.activity-card .card-link{ font-size:.88rem; font-weight:700; display:inline-flex; align-items:center; gap:.4em; }
.activity-card .card-link svg{ width:14px; height:14px; transition:transform .2s ease; }
.activity-card:hover .card-link svg{ transform:translateX(3px); }

.card-education .tag{ background:#8c6fe022; color:var(--c-education); }
.card-education .glow{ background:var(--c-education); }
.card-education .card-link{ color:var(--c-education); }

.card-transport .tag{ background:#e8863a22; color:var(--c-transport); }
.card-transport .glow{ background:var(--c-transport); }
.card-transport .card-link{ color:var(--c-transport); }

.card-commerce .tag{ background:#3ec9a722; color:var(--c-commerce); }
.card-commerce .glow{ background:var(--c-commerce); }
.card-commerce .card-link{ color:var(--c-commerce); }

.card-boulangerie .tag{ background:#d9a44122; color:var(--c-boulangerie); }
.card-boulangerie .glow{ background:var(--c-boulangerie); }
.card-boulangerie .card-link{ color:var(--c-boulangerie); }

.card-btp .tag{ background:#b5824f22; color:var(--c-btp); }
.card-btp .glow{ background:var(--c-btp); }
.card-btp .card-link{ color:var(--c-btp); }

/* ---------- Détails repliables ---------- */
details.disclosure{
  border:1px solid var(--border); border-radius:var(--radius-md);
  background:var(--bg-card); padding:1rem 1.2rem; margin-bottom:.8rem;
}
details.disclosure summary{
  cursor:pointer; font-weight:600; color:#fff; list-style:none;
  display:flex; align-items:center; justify-content:space-between;
}
details.disclosure summary::-webkit-details-marker{ display:none; }
details.disclosure summary::after{ content:'+'; font-size:1.3rem; color:var(--gold); }
details.disclosure[open] summary::after{ content:'–'; }
details.disclosure .disclosure-body{ padding-top:.8rem; color:var(--text-dim); font-size:.93rem; }

/* ---------- Bloc confiance ---------- */
.trust-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:768px){ .trust-grid{ grid-template-columns:repeat(4,1fr); } }
.trust-item{
  padding:1.4rem; border-radius:var(--radius-md); border:1px solid var(--border);
  background:var(--bg-card); text-align:center;
}
.trust-item svg{ width:var(--icon-md); height:var(--icon-md); color:var(--gold); margin:0 auto .7rem; }
.trust-item h3{ font-size:1.05rem; color:#fff; margin-bottom:.3em; }
.trust-item p{ font-size:1rem; margin:0; }

/* ---------- Contact / cartes de contact ---------- */
.contact-card{
  border:1px solid var(--border); background:var(--bg-card); border-radius:var(--radius-md);
  padding:1.3rem 1.4rem; margin-bottom:1rem;
}
.contact-card h3{ color:#fff; font-size:1.05rem; margin-bottom:.6em; }
.contact-line{ display:flex; align-items:center; gap:.6em; font-size:.9rem; color:var(--text-dim); margin-bottom:.45em; }
.contact-line svg{ width:16px; height:16px; flex:none; color:var(--gold); }
.contact-actions{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:.9rem; }
.contact-note{ font-size:.78rem; color:var(--text-faint); margin-top:.4rem; }

/* ---------- Formulaire ---------- */
.form-card{
  border:1px solid var(--border); background:var(--bg-card); border-radius:var(--radius-lg);
  padding:1.8rem;
}
.form-row{ display:grid; gap:1rem; grid-template-columns:1fr; margin-bottom:1rem; }
@media (min-width:640px){ .form-row.cols-2{ grid-template-columns:1fr 1fr; } }
.field{ display:flex; flex-direction:column; gap:.4em; }
.field label{ font-size:.82rem; font-weight:600; color:var(--text-dim); }
.field input,.field select,.field textarea{
  background:var(--bg-raised); border:1px solid var(--border); color:var(--text);
  padding:.75em .9em; border-radius:var(--radius-sm); font:inherit;
  width:100%; max-width:100%; min-width:0; /* un <select> à option longue élargissait la page mobile */
}
.field input:focus,.field select:focus,.field textarea:focus{ border-color:var(--focus); }
.field textarea{ resize:vertical; min-height:96px; }
.form-consent{ display:flex; gap:.6em; align-items:flex-start; font-size:.8rem; color:var(--text-faint); margin:1rem 0; }
.form-consent input{ margin-top:.1em; width:24px; height:24px; flex:none; accent-color:var(--gold); cursor:pointer; }
.form-honeypot{ position:absolute; left:-9999px; opacity:0; height:0; }
.form-note{ font-size:.78rem; color:var(--text-faint); margin-top:.8rem; }
.form-success{
  display:none; align-items:center; gap:.7em; background:#153428; border:1px solid #1f5c3f;
  color:#8ff0c4; padding:1rem 1.1rem; border-radius:var(--radius-sm); margin-top:1rem; font-size:.9rem;
}
.form-success.is-visible{ display:flex; }
.form-success svg{ width:20px; height:20px; flex:none; }

/* ---------- Galerie ---------- */
.gallery{ display:grid; gap:.8rem; grid-template-columns:repeat(2,1fr); }
@media (min-width:640px){ .gallery{ grid-template-columns:repeat(4,1fr); } }
.gallery figure{ margin:0; border-radius:var(--radius-md); overflow:hidden; border:1px solid var(--border); background:var(--bg-card); }
.gallery img{ width:100%; height:150px; object-fit:cover; aspect-ratio:4/3; }
.gallery figcaption{ font-size:.78rem; color:var(--text-faint); padding:.5em .7em; }

/* ---------- Page hero secondaire (activités) ---------- */
.page-hero{
  position:relative; padding:calc(var(--header-h) + 48px) 0 60px;
  border-bottom:1px solid var(--border);
}
.page-hero .logo-badge{
  width:78px; height:78px; border-radius:22px; object-fit:cover;
  border:1px solid var(--border); background:#fff; padding:6px; margin-bottom:1.2rem;
}
.page-hero h1{ font-size:var(--fs-h1); color:#fff; }
.page-hero .devise{
  display:inline-block; margin-top:.6rem; font-style:italic; color:var(--gold);
  font-size:.95rem; letter-spacing:.03em;
}

/* ---------- Hero scindé (pages activité) ---------- */
.split-hero{
  position:relative; padding:calc(var(--header-h) + 44px) 0 60px; overflow:hidden;
  border-bottom:1px solid var(--border);
}
.split-hero .container{ display:grid; gap:2.4rem; align-items:center; grid-template-columns:1fr; }
@media (min-width:960px){ .split-hero .container{ grid-template-columns:1.05fr .95fr; gap:2.6rem; } }

.split-hero .activity-badge{
  display:inline-flex; align-items:center; gap:.5em; padding:.35em .9em .35em .5em;
  border-radius:999px; background:var(--bg-card); border:1px solid var(--border);
  font-size:.78rem; font-weight:700; margin-bottom:1.1rem;
}
.split-hero .activity-badge img,.split-hero .activity-badge svg{ width:30px; height:30px; border-radius:50%; object-fit:cover; }

.split-hero h1{ font-size:var(--fs-h1); color:#fff; }
.split-hero .devise{ display:inline-block; margin-top:.5rem; font-style:italic; font-size:.95rem; letter-spacing:.03em; }
.split-hero .hero-lede{ margin-top:1rem; }
.split-hero .hero-ctas{ margin-top:1.6rem; }

/* Parallaxe 3D par calques : --px/--py (de -1 à 1) sont posés par main.js
   selon la position de la souris ; sans JS ou en reduced-motion ils valent 0. */
.hero-visual{
  position:relative; aspect-ratio:4/3.1; border-radius:28px; overflow:hidden;
  perspective:1000px; width:100%; max-width:560px; margin:0 auto;
}
.hero-visual-inner{
  position:relative; width:100%; height:100%; border-radius:28px; overflow:hidden;
  transform:rotateY(calc(var(--px,0)*7deg)) rotateX(calc(var(--py,0)*-5deg));
  transition:transform .25s ease-out; transform-style:preserve-3d;
}
@media (prefers-reduced-motion:reduce){ .hero-visual-inner{ transition:none !important; transform:none !important; } }

.hero-visual-photo{ position:absolute; inset:0; }
.hero-visual-photo img{
  width:100%; height:100%; object-fit:cover;
  transform:scale(1.08) translate(calc(var(--px,0)*-10px), calc(var(--py,0)*-8px));
  transition:transform .25s ease-out;
}
.hero-visual-photo::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(200deg,transparent 30%,rgba(6,10,20,.85) 100%);
}
.hero-visual-shape{
  position:absolute; border-radius:50%; filter:blur(50px); opacity:.5; z-index:-1; pointer-events:none;
  transform:translate(calc(var(--px,0)*-22px), calc(var(--py,0)*-16px));
  transition:transform .35s ease-out;
}
.hero-visual-caption{
  position:absolute; left:1.2rem; right:1.2rem; bottom:1.1rem; z-index:2;
  color:#fff; font-size:.82rem; font-weight:600; text-shadow:0 2px 8px rgba(0,0,0,.6);
}
.hero-medallion{
  position:absolute; top:-16px; right:-16px; width:124px; height:124px; border-radius:50%;
  background:#f7f3ea; display:flex; align-items:center; justify-content:center; padding:12px;
  box-shadow:0 14px 30px -8px rgba(0,0,0,.55), 0 0 0 6px var(--bg); z-index:3;
  transform:translate(calc(var(--px,0)*10px), calc(var(--py,0)*8px));
  transition:transform .3s ease-out;
}
.hero-medallion img{ width:100%; height:100%; object-fit:cover; border-radius:50%; }

/* Lockup large (logo + texte) posé en haut à gauche du visuel hero (ex. Transport) */
.hero-visual-lockup{
  position:absolute; left:1.2rem; top:1.2rem; right:1.2rem; z-index:2;
  width:auto; max-width:220px; height:auto;
  filter:drop-shadow(0 6px 16px rgba(0,0,0,.6)); pointer-events:none;
  transform:translate(calc(var(--px,0)*6px), calc(var(--py,0)*4px)); transition:transform .3s ease-out;
}

/* Logo mis en avant au centre du visuel hero (ex. Boulangerie) */
.hero-visual-logo{
  position:absolute; left:50%; top:50%; z-index:2; width:44%; max-width:210px; height:auto; aspect-ratio:1;
  border-radius:50%; object-fit:cover; pointer-events:none;
  box-shadow:0 20px 50px -12px rgba(0,0,0,.7), 0 0 0 5px rgba(247,243,234,.9);
  transform:translate(-50%,-50%) translate(calc(var(--px,0)*8px), calc(var(--py,0)*6px));
  transition:transform .3s ease-out;
}
@media (max-width:479px){ .hero-medallion{ width:92px; height:92px; top:-10px; right:-10px; padding:9px; } }

/* ---------- Blocs de capacité (3 colonnes courtes) ---------- */
.capacity-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:768px){ .capacity-grid{ grid-template-columns:repeat(3,1fr); } }
.capacity-card{
  background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:1.5rem; text-align:left;
}
.capacity-card svg{ width:var(--icon-md); height:var(--icon-md); margin-bottom:.9em; }
.capacity-card h3{ font-size:1.05rem; color:#fff; margin-bottom:.4em; }
.capacity-card p{ font-size:1rem; margin-bottom:1em; }

/* ---------- Section éditoriale campus / vie de campus ---------- */
.editorial{ display:grid; gap:2.2rem; align-items:center; grid-template-columns:1fr; }
@media (min-width:900px){ .editorial{ grid-template-columns:1fr 1fr; } }
.editorial-photo{ position:relative; border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--border); }
.editorial-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.editorial-photo::after{ content:''; position:absolute; inset:0; background:linear-gradient(0deg,rgba(6,10,20,.55),transparent 55%); }

/* ---------- Galerie premium avec lightbox ---------- */
.gallery-premium{ display:grid; gap:.8rem; grid-template-columns:repeat(4,1fr); grid-auto-rows:120px; }
.gallery-premium a{ grid-column:span 1; grid-row:span 1; border-radius:var(--radius-md); overflow:hidden; position:relative; border:1px solid var(--border); }
.gallery-premium a:first-child{ grid-column:span 2; grid-row:span 2; }
.gallery-premium img{ width:100%; height:100%; object-fit:cover; transition:transform .3s ease; }
.gallery-premium a:hover img{ transform:scale(1.05); }
@media (max-width:639px){ .gallery-premium{ grid-template-columns:repeat(2,1fr); grid-auto-rows:110px; } .gallery-premium a:first-child{ grid-column:span 2; grid-row:span 1; } }
.gallery-caption{ font-size:.72rem; color:var(--text-faint); margin-top:.6rem; }

.lightbox{
  position:fixed; inset:0; background:rgba(4,7,14,.92); z-index:200;
  display:flex; align-items:center; justify-content:center; padding:5vh 5vw;
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.lightbox.is-open{ opacity:1; pointer-events:auto; }
.lightbox img{ max-width:100%; max-height:100%; border-radius:12px; }
.lightbox-close{ position:absolute; top:20px; right:20px; background:none; border:none; color:#fff; cursor:pointer; }
.lightbox-close svg{ width:28px; height:28px; }
@media (prefers-reduced-motion:reduce){ .lightbox{ transition:none; } }

/* ---------- Parcours en étapes ---------- */
.steps{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; counter-reset:step; }
@media (min-width:768px){ .steps{ grid-template-columns:repeat(3,1fr); } .steps-4{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px){ .steps-4{ grid-template-columns:repeat(4,1fr); } }
.step{ position:relative; padding:1.5rem 1.4rem 1.4rem; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-lg); }
.step::before{
  counter-increment:step; content:counter(step);
  display:flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:50%; background:var(--gold); color:#1c1406;
  font-weight:800; margin-bottom:1em;
}
.step h3{ font-size:1rem; color:#fff; margin-bottom:.3em; }
.step p{ font-size:1rem; margin:0; }

/* ---------- Bande de réassurance sombre ---------- */
.assurance-band{ background:#070b14; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.assurance-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:768px){ .assurance-grid{ grid-template-columns:repeat(4,1fr); } }
.assurance-item{ display:flex; gap:.8em; align-items:flex-start; }
.assurance-item svg{ width:var(--icon-sm); height:var(--icon-sm); color:var(--gold); flex:none; margin-top:.1em; }
.assurance-item p{ margin:0; font-size:1rem; color:var(--text-dim); }

/* ---------- Boulangerie : filtres + cartes produit ---------- */
.filter-bar{ display:flex; flex-wrap:wrap; gap:.6rem; margin-bottom:1.8rem; }
.filter-btn{
  padding:.5em 1.1em; border-radius:999px; border:1px solid var(--border); background:var(--bg-card);
  color:var(--text-dim); font-size:.85rem; font-weight:600; cursor:pointer;
}
.filter-btn.is-active{ background:var(--gold); color:#1c1406; border-color:var(--gold); }

.product-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:560px){ .product-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:960px){ .product-grid{ grid-template-columns:repeat(3,1fr); } }

.product-card{
  background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-lg);
  overflow:hidden; display:flex; flex-direction:column;
}

/* Relief 3D léger et homogène sur toutes les cartes (souris uniquement). */
.product-card,.capacity-card,.path-card,.step,.trust-item,.need-card,.contact-card{
  transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
@media (hover:hover){
  .product-card:hover,.capacity-card:hover,.path-card:hover,.step:hover,.trust-item:hover,.need-card:hover,.contact-card:hover{
    transform:perspective(900px) translateY(-6px) rotateX(1.5deg);
    box-shadow:var(--shadow-2); border-color:#2f3f63;
  }
}
@media (prefers-reduced-motion:reduce){
  .product-card:hover,.capacity-card:hover,.path-card:hover,.step:hover,.trust-item:hover,.need-card:hover,.contact-card:hover{ transform:none; }
}
.activity-card > img{ width:44px; height:44px; border-radius:12px; object-fit:contain; background:#f7f3ea; padding:3px; }
.product-visual{
  position:relative; aspect-ratio:4/3; overflow:hidden;
  background:linear-gradient(150deg,#2a1c10,#3a2414 55%,#4a2f18);
  display:flex; align-items:center; justify-content:center;
}
.product-visual svg{ width:46%; height:46%; position:relative; z-index:1; transition:transform .35s ease; }
.product-visual::after{
  content:''; position:absolute; inset:0;
  background:radial-gradient(120% 90% at 15% 0%,#f5b34233,transparent 60%);
}
.product-card:hover .product-visual svg{ transform:scale(1.08) rotate(-2deg); }
@media (prefers-reduced-motion:reduce){ .product-card:hover .product-visual svg{ transform:none; } }
.product-body{ padding:1.2rem 1.3rem 1.4rem; display:flex; flex-direction:column; flex:1; }
.product-body h3{ font-size:1.05rem; color:#fff; margin-bottom:.35em; }
.product-body p{ font-size:1rem; margin-bottom:1.1em; flex:1; }

.product-card.featured{ grid-column:1/-1; }
@media (min-width:560px){ .product-card.featured{ display:grid; grid-template-columns:1fr 1fr; } }
.product-card.featured .product-visual{ aspect-ratio:auto; min-height:220px; }

/* ---------- Commerce : deux parcours + badges produit ---------- */
.path-grid{ display:grid; gap:var(--sp-3); grid-template-columns:1fr; }
@media (min-width:768px){ .path-grid{ grid-template-columns:1fr 1fr; } }
.path-card{
  padding:1.8rem; border-radius:var(--radius-lg); border:1px solid var(--border);
  background:linear-gradient(160deg,var(--bg-card),var(--bg-raised));
}
.path-card .tag{ display:inline-block; font-size:.78rem; font-weight:700; padding:.3em .8em; border-radius:999px; margin-bottom:1em; }
.path-card h2,.path-card h3{ font-size:1.3rem; color:#fff; margin-bottom:.5em; }

.product-badge{
  position:absolute; top:.7rem; right:.7rem; z-index:2; font-size:.75rem; font-weight:700;
  padding:.25em .7em; border-radius:999px; letter-spacing:.03em;
}
.badge-export{ background:#123a2a; color:#4fd39a; }
.badge-import{ background:#0e2a3a; color:#5cc3e0; }

.radio-toggle{ display:flex; gap:1.2rem; margin-bottom:1.2rem; }
.radio-toggle label{ display:flex; align-items:center; gap:.5em; font-size:.9rem; font-weight:600; cursor:pointer; }
.radio-toggle input{ width:auto; }

/* ---------- Footer ---------- */
.site-footer{ border-top:1px solid var(--border); padding:56px 0 28px; background:var(--bg-raised); }
.footer-grid{ display:grid; gap:2rem; grid-template-columns:1fr; margin-bottom:2.4rem; }
@media (min-width:768px){ .footer-grid{ grid-template-columns:1.4fr repeat(3,1fr); } }
.footer-grid h5,.footer-grid h3{ color:#fff; font-family:'Inter','Inter Fallback',system-ui,sans-serif; font-weight:700; line-height:1.4; font-size:.85rem; letter-spacing:.06em; text-transform:uppercase; margin-bottom:1em; }
.footer-grid a{ display:block; color:var(--text-dim); font-size:.9rem; padding:.3em 0; min-height:24px; }
.footer-grid a:hover{ color:var(--gold); }
.footer-bottom{
  border-top:1px solid var(--border); padding-top:1.6rem;
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between; align-items:center;
  font-size:.8rem; color:var(--text-faint);
}

/* ---------- Bandeau annonce (réservé Phase future) ---------- */
.announce-bar{
  background:linear-gradient(90deg,#1a1206,#241a08); color:var(--gold);
  font-size:.82rem; text-align:center; padding:.55em 1em;
  border-bottom:1px solid #3a2a0e;
}

/* ---------- Assistant Dallaba ---------- */
.assistant-fab{
  position:fixed; right:20px; bottom:20px; z-index:150;
  display:flex; align-items:center; gap:.55em;
  background:linear-gradient(135deg,#ffd27a,var(--gold)); color:#1c1406;
  border:none; border-radius:999px; padding:.55em 1.15em .55em .55em; font-weight:700; font-size:.85rem;
  box-shadow:0 10px 30px rgba(245,179,66,.28),var(--shadow-2); cursor:pointer;
  transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s;
  animation:a-entree .7s cubic-bezier(.16,1,.3,1) 1.2s both;
}
.assistant-fab:hover{ transform:translateY(-3px); box-shadow:0 16px 40px rgba(245,179,66,.38),var(--shadow-2); }
/* Onde qui s'échappe du bouton toutes les quelques secondes (attire l'œil sans gêner) */
.assistant-fab::before{ content:''; position:absolute; inset:0; border-radius:inherit; border:2px solid var(--gold); opacity:0; pointer-events:none; animation:a-onde 3.6s cubic-bezier(0,0,.2,1) 2.5s infinite; }
.is-ouvert .assistant-fab::before{ animation:none; }
@keyframes a-onde{ 0%{ opacity:.7; transform:scale(1); } 70%,100%{ opacity:0; transform:scale(1.35,1.6); } }
@keyframes a-entree{ from{ opacity:0; transform:translateY(24px) scale(.9); } to{ opacity:1; transform:none; } }
/* Petit écran : le libellé reste lu par les lecteurs d'écran (masquage visuel, pas display:none) */
@media (max-width:479px){ .assistant-fab > span:last-child{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; } .assistant-fab{ padding:.5em; } }

.assistant-avatar{ position:relative; display:grid; place-items:center; width:34px; height:34px; flex:none; border-radius:50%; color:var(--gold); background:#0b1220; }
.assistant-avatar svg{ width:26px; height:26px; }
/* L'hexagone se dessine une fois, à l'apparition du bouton puis à l'ouverture du panneau */
.assistant-avatar svg path{ stroke-dasharray:110; stroke-dashoffset:0; animation:a-trace 1.4s cubic-bezier(.65,0,.35,1) 1.4s both; }
.is-ouvert .assistant-head .assistant-avatar svg path{ animation:a-trace 1.2s cubic-bezier(.65,0,.35,1) .15s both; }
@keyframes a-trace{ from{ stroke-dashoffset:110; } to{ stroke-dashoffset:0; } }
/* En-tête : anneau dégradé qui tourne autour de l'avatar (fond intérieur + dégradé conique) */
.assistant-head .assistant-avatar{ width:42px; height:42px;
  background:radial-gradient(circle,#0b1220 0 64%,transparent 66%),conic-gradient(from var(--a-r,0deg),var(--gold),#8c6fe0,#3ec9a7,var(--gold));
  animation:a-tour 5s linear infinite; }
@property --a-r{ syntax:'<angle>'; inherits:false; initial-value:0deg; }
@keyframes a-tour{ to{ --a-r:360deg; } }

.assistant-teaser{
  position:fixed; right:20px; bottom:84px; z-index:150; width:min(260px,80vw);
  background:var(--bg-card); color:var(--text-dim); border:1px solid var(--border); border-radius:16px 16px 4px 16px;
  padding:.85em 2.2em .85em 1em; font-size:.82rem; line-height:1.45; box-shadow:var(--shadow-2); cursor:pointer;
  animation:a-bulle .6s cubic-bezier(.16,1,.3,1) both; transform-origin:100% 100%;
}
.assistant-teaser strong{ color:#fff; display:block; margin-bottom:.15em; }
.assistant-teaser.is-sortie{ animation:a-bulle-sortie .3s ease-in both; }
.assistant-teaser-fermer{ position:absolute; top:.45em; right:.45em; background:none; border:0; color:var(--text-faint); cursor:pointer; padding:.2em; }
.assistant-teaser-fermer svg{ width:14px; height:14px; }
@keyframes a-bulle{ from{ opacity:0; transform:translateY(10px) scale(.85); } to{ opacity:1; transform:none; } }
@keyframes a-bulle-sortie{ to{ opacity:0; transform:translateY(8px) scale(.9); } }

.assistant-panel{
  position:fixed; right:20px; bottom:88px; z-index:150;
  width:min(370px,calc(100vw - 32px)); max-height:min(560px,72vh);
  background:var(--bg-card); border:1px solid var(--border); border-radius:20px;
  box-shadow:0 30px 80px rgba(0,0,0,.45); display:flex; flex-direction:column; overflow:hidden;
  transform-origin:calc(100% - 30px) calc(100% + 40px);
  opacity:0; transform:translateY(16px) scale(.92); transition:opacity .26s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.is-ouvert .assistant-panel{ opacity:1; transform:none; }
.assistant-head{
  display:flex; align-items:center; gap:.75em;
  padding:.9em 1em; border-bottom:1px solid var(--border); color:#fff;
  background:radial-gradient(120% 140% at 0 0,rgba(245,179,66,.16),transparent 60%),var(--bg-raised);
}
.assistant-titre{ flex:1; display:flex; flex-direction:column; line-height:1.25; }
.assistant-titre span{ font-size:.72rem; color:var(--text-dim); display:flex; align-items:center; gap:.4em; }
.assistant-titre i{ width:7px; height:7px; border-radius:50%; background:#3ec98a; box-shadow:0 0 0 0 rgba(62,201,138,.6); animation:a-vivant 2s infinite; }
@keyframes a-vivant{ 70%{ box-shadow:0 0 0 6px rgba(62,201,138,0); } 100%{ box-shadow:0 0 0 0 rgba(62,201,138,0); } }
.assistant-close{ background:none; border:none; color:var(--text-dim); cursor:pointer; padding:.3em; border-radius:8px; transition:background .2s,color .2s; }
.assistant-close:hover{ background:rgba(255,255,255,.06); color:#fff; }
.assistant-close svg{ width:18px; height:18px; }
.assistant-body{ flex:1; overflow-y:auto; padding:1em; display:flex; flex-direction:column; gap:.55em; min-height:200px; scroll-behavior:smooth; }
.assistant-msg{ max-width:86%; padding:.65em .95em; border-radius:16px; font-size:.88rem; line-height:1.5; white-space:pre-line; animation:a-msg .4s cubic-bezier(.16,1,.3,1) both; }
@keyframes a-msg{ from{ opacity:0; transform:translateY(8px) scale(.97); } to{ opacity:1; transform:none; } }
.assistant-msg-bot{ align-self:flex-start; background:var(--bg-raised); color:var(--text); border-bottom-left-radius:4px; transform-origin:0 100%; }
.assistant-msg-user{ align-self:flex-end; background:linear-gradient(135deg,#ffd27a,var(--gold)); color:#1c1406; border-bottom-right-radius:4px; transform-origin:100% 100%; }
.assistant-typing{ display:flex; gap:5px; padding:.85em 1em; }
.assistant-typing i{ width:7px; height:7px; border-radius:50%; background:var(--text-dim); animation:a-point 1.1s ease-in-out infinite; }
.assistant-typing i:nth-child(2){ animation-delay:.15s; } .assistant-typing i:nth-child(3){ animation-delay:.3s; }
@keyframes a-point{ 0%,60%,100%{ transform:translateY(0); opacity:.4; } 30%{ transform:translateY(-5px); opacity:1; } }
.assistant-source{ align-self:flex-start; font-size:.7rem; color:var(--text-faint); margin:-.2em 0 0 .3em; animation:a-msg .4s .1s both; }
.assistant-actions{ display:flex; flex-wrap:wrap; gap:.5em; animation:a-msg .4s .15s both; }
.assistant-suggestions{ display:flex; flex-wrap:wrap; gap:.45em; margin-top:.2em; }
.assistant-suggestions button{ background:none; border:1px solid var(--border); color:var(--text); border-radius:999px; padding:.4em .85em; font:inherit; font-size:.78rem; cursor:pointer;
  transition:border-color .2s,background .2s,transform .2s; animation:a-msg .4s cubic-bezier(.16,1,.3,1) both; animation-delay:calc(var(--i) * .07s); }
.assistant-suggestions button:hover{ border-color:var(--gold); background:rgba(245,179,66,.08); transform:translateY(-1px); }
.assistant-form{ display:flex; gap:.5em; padding:.8em; border-top:1px solid var(--border); }
.assistant-form input{
  flex:1; background:var(--bg-raised); border:1px solid var(--border); color:var(--text);
  padding:.65em .95em; border-radius:999px; font:inherit; font-size:.88rem; transition:border-color .2s,box-shadow .2s;
}
.assistant-form input:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(245,179,66,.18); }
.assistant-form button{
  background:var(--gold); border:none; border-radius:50%; width:40px; height:40px; flex:none;
  display:flex; align-items:center; justify-content:center; color:#1c1406; cursor:pointer; transition:transform .25s cubic-bezier(.16,1,.3,1);
}
.assistant-form button:hover{ transform:scale(1.08) rotate(-8deg); }
.assistant-form button svg{ width:16px; height:16px; }
.assistant-note{ font-size:.68rem; color:var(--text-faint); padding:0 1em .8em; margin:0; }
@media (prefers-reduced-motion:reduce){
  .assistant-fab,.assistant-fab::before,.assistant-avatar svg path,.assistant-head .assistant-avatar,.assistant-teaser,.assistant-msg,.assistant-typing i,
  .assistant-source,.assistant-actions,.assistant-suggestions button,.assistant-titre i{ animation:none !important; }
  .assistant-panel{ transition:none; }
}

/* ---------- Utilitaires ---------- */
.text-center{ text-align:center; }
.mt-0{ margin-top:0; }

/* Blocs alimentés par le back-office : actualités, photos produits, prix, horaires */
.product-visual img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; }
.news-meta{ font-size:.78rem; color:var(--text-faint); margin-bottom:.5em; }
.news-meta a{ color:var(--gold); }
.news-card .product-body p{ white-space:normal; }
.product-price{ font-weight:700; color:var(--gold); margin:-.4em 0 1em; }
.contact-hours{ font-size:.9rem; color:var(--text-dim); margin-top:.4em; }

/* Petit téléphone (320-379 px) : l'en-tête ne tient pas ; « Nous contacter » est déjà dans le menu */
@media (max-width:379px){ .nav-actions .btn{ display:none; } .brand-text .kicker{ display:none; } }
/* Liens dans un texte : toujours soulignés (pas seulement par la couleur) */
.news-meta a,.footer-bottom a,.contact-note a,.form-note a{ text-decoration:underline; text-underline-offset:2px; }
.footer-bottom a{ color:var(--text-dim); }

/* « Découvrir aussi » : maillage entre les pôles */
.related{ padding:2.2rem 0 3rem; border-top:1px solid var(--border); }
.related h2{ font-size:1.15rem; margin:0 0 1rem; }
.related-list{ display:grid; gap:1rem; grid-template-columns:1fr; list-style:none; margin:0; padding:0; }
@media (min-width:640px){ .related-list{ grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); } }
.related-list a{ display:block; height:100%; padding:1rem 1.2rem; border:1px solid var(--border); border-radius:var(--radius-md); background:var(--bg-card); color:var(--text-dim); transition:border-color .25s,transform .25s; }
.related-list a:hover{ border-color:var(--gold); transform:translateY(-2px); }
.related-list strong{ display:block; color:#fff; margin-bottom:.25em; font-family:'Bricolage Grotesque','Bricolage Fallback',sans-serif; }
.related-list span{ display:block; font-size:.88rem; line-height:1.5; }

/* Pages de texte (mentions légales, confidentialité) */
.prose{ max-width:760px; }
.prose h1{ font-size:clamp(1.8rem,4vw,2.4rem); color:#fff; margin-bottom:.3em; }
.prose h2{ font-size:1.35rem; color:#fff; margin:2.2rem 0 .6rem; padding-top:1.2rem; border-top:1px solid var(--border); }
.prose h3{ font-size:1.02rem; color:var(--gold); margin:1.4rem 0 .4rem; }
.prose p,.prose li{ color:var(--text-dim); line-height:1.7; }
.prose li{ margin:.4em 0; }
.prose a{ color:var(--gold); text-decoration:underline; text-underline-offset:2px; }
.prose .muted{ color:var(--text-faint); font-size:.88rem; }

/* Contacts et réseaux sociaux : gérés depuis « Coordonnées & horaires » ; seuls les champs remplis s'affichent */
.contact-links{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:.6rem .7rem; }
.contact-link{ display:inline-flex; align-items:center; gap:.5em; padding:.55em 1.05em; min-height:44px; border:1px solid var(--border); border-radius:999px; background:var(--bg-card); color:var(--text); font-size:.9rem; transition:border-color .25s,color .25s,transform .25s; }
.contact-link:hover{ border-color:var(--gold); color:var(--gold); transform:translateY(-2px); }
.contact-link svg{ width:18px; height:18px; flex:none; }
.social-links{ display:inline-flex; flex-wrap:wrap; gap:.5rem; }
.social-link{ display:inline-grid; place-items:center; width:44px; height:44px; border:1px solid var(--border); border-radius:50%; background:var(--bg-card); color:var(--text-dim); transition:border-color .25s,color .25s,transform .25s; }
.social-link:hover{ border-color:var(--gold); color:var(--gold); transform:translateY(-2px); }
.social-link svg{ width:20px; height:20px; }
.contact-extra{ margin-top:1.2rem; }
.contact-extra:empty{ display:none; }
.contact-general{ margin-top:2.6rem; text-align:center; }
.contact-general h3{ font-size:1.05rem; color:#fff; margin-bottom:.9rem; }
.footer-grid .contact-links{ flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:.2rem; }
.footer-grid .contact-link{ display:inline-flex; align-items:center; padding:.3em 0; min-height:24px; border:0; background:none; color:var(--text-dim); font-size:.9rem; transform:none; }
.footer-grid .contact-link:hover{ color:var(--gold); }
.footer-grid .social-links{ margin-top:.6rem; gap:.4rem; }
.footer-grid .social-link{ display:inline-grid; width:38px; height:38px; padding:0; min-height:0; }
@media (prefers-reduced-motion:reduce){ .contact-link,.social-link{ transition:none; } .contact-link:hover,.social-link:hover{ transform:none; } }
