/* ============================================================
   buttons-premium.css — STYLE GLOBAL DES BOUTONS (premium / glow)
   23/06/2026 — demande Julien. 100 % VISUEL.
   ✔ ne touche NI structure, NI liens, NI actions, NI textes
   ✔ ATTRAPE-TOUT par MOTIF de classe : tout élément dont la classe contient
     btn / cta / chip / filter / tab / radbtn, + <button>/<input>/[role=button]/[onclick]
   ✔ glow en !important → passe devant les ombres déjà posées sur certains boutons
   ✔ s'adapte à l'état du Phare : body.phare-on / body.phare-off
   ✔ filet lumineux tournant = uniquement boutons IMPORTANTS (pas de surcharge)
   ✔ réversible : retirer le <link ... buttons-premium.css> dans includes/header.php
   Chargé EN DERNIER. (Pas pre-ouverture.php : autre en-tête.)
   ============================================================ */

@property --btnang { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
@keyframes btnRingSpin { to { --btnang: 360deg; } }

/* ---------- SOCLE : transition douce sur tout cliquable ---------- */
:where(
  [class*="btn"], [class*="cta"], [class*="chip"], [class*="-filter"], [class*="filter-"], [class*="-tab"], [class*="radbtn"],
  button, input[type="submit"], input[type="button"], input[type="reset"], [role="button"], [onclick],
  .ai-qa, .ai-mic, .ai-more, .ai-send, .mch-fav, .av-helpful,
  .pub-rail-item, .pub-topnav a, .bottom-nav a, .bn-item, .mc-nav-link, .mc-qa, .pub-lang-menu a, .pub-profile, .pub-phare
) {
  transition: box-shadow .28s ease, border-color .28s ease, filter .28s ease;
}

/* ============================================================
   PHARE ALLUMÉ — body.phare-on : glow cyan VISIBLE
   ============================================================ */
/* Attrape-tout : glow doux sur tout cliquable */
body.phare-on :where(
  [class*="btn"], [class*="cta"], [class*="chip"], [class*="-filter"], [class*="filter-"], [class*="-tab"], [class*="radbtn"],
  button, input[type="submit"], input[type="button"], input[type="reset"], [role="button"], [onclick],
  .ai-qa, .ai-mic, .ai-more, .ai-send, .mch-fav, .av-helpful,
  .pub-rail-item, .pub-topnav a, .bottom-nav a, .bn-item, .mc-nav-link, .mc-qa, .pub-lang-menu a, .pub-profile, .pub-phare,
  .btn-site-secondary, .btn-glow-soft
) {
  box-shadow: 0 2px 8px rgba(4,12,28,0.18), 0 0 12px rgba(61,169,252,0.18) !important;
}
/* Boutons PRINCIPAUX : glow cyan plus fort */
body.phare-on :is(.btn, .btn-primary, .btn-premium, .btn-premium-dark, .adm-btn-primary, .adm-btn-green, .pub-btn-cta, .fc-cta-btn, .fc-phare-btn, .pg-send, .gw-send, .mg-send, .mc-btn-gold, .jr-btn-primary, .btn-site-primary, .mch-sell-cta, .mch-cart-btn, .ppx-btn-save, .pv-new-btn, .carte-btn-itinerary, button[type="submit"], input[type="submit"]) {
  box-shadow: 0 3px 12px rgba(4,12,28,0.28), 0 0 18px rgba(61,169,252,0.34) !important;
}
/* Icônes : petit glow cyan */
body.phare-on :where([class*="btn"], [class*="cta"], button, [role="button"], .pub-rail-item, .pub-icon-btn, .ai-more, .pg-send, .gw-send) svg {
  filter: drop-shadow(0 0 5px rgba(61,169,252,0.50));
}
/* Survol : glow renforcé */
body.phare-on :where([class*="btn"], [class*="cta"], [class*="chip"], [class*="-filter"], [class*="-tab"], button, input[type="submit"], input[type="button"], [role="button"], [onclick], .pub-rail-item, .bn-item, .mc-nav-link):hover {
  box-shadow: 0 4px 16px rgba(4,12,28,0.32), 0 0 24px rgba(61,169,252,0.48) !important;
}
/* Cartes cliquables : glow au survol */
body.phare-on :where(.voyage-card, .sortir-card, .sortir-featured, .pv-conv-item, .mch-card):hover {
  box-shadow: 0 6px 20px rgba(4,12,28,0.30), 0 0 20px rgba(61,169,252,0.28) !important;
}

/* ============================================================
   PHARE ÉTEINT — body.phare-off : glow DISCRET, froid
   ============================================================ */
body.phare-off :where(
  [class*="btn"], [class*="cta"], [class*="chip"], [class*="-filter"], [class*="filter-"], [class*="-tab"], [class*="radbtn"],
  button, input[type="submit"], input[type="button"], input[type="reset"], [role="button"], [onclick],
  .ai-qa, .ai-mic, .ai-more, .ai-send, .mch-fav, .av-helpful,
  .pub-rail-item, .pub-topnav a, .bottom-nav a, .bn-item, .mc-nav-link, .mc-qa, .pub-lang-menu a, .pub-profile, .pub-phare,
  .btn-site-secondary, .btn-glow-soft
) {
  box-shadow: 0 2px 8px rgba(0,0,0,0.26), 0 0 9px rgba(96,124,160,0.16) !important;
}
body.phare-off :is(.btn, .btn-primary, .btn-premium, .btn-premium-dark, .adm-btn-primary, .adm-btn-green, .pub-btn-cta, .fc-cta-btn, .fc-phare-btn, .pg-send, .gw-send, .mg-send, .mc-btn-gold, .jr-btn-primary, .btn-site-primary, .mch-sell-cta, .mch-cart-btn, .ppx-btn-save, .pv-new-btn, .carte-btn-itinerary, button[type="submit"], input[type="submit"]) {
  box-shadow: 0 3px 12px rgba(0,0,0,0.34), 0 0 12px rgba(96,124,160,0.22) !important;
}
body.phare-off :where([class*="btn"], [class*="cta"], button, [role="button"], .pub-rail-item, .pub-icon-btn, .ai-more, .pg-send, .gw-send) svg {
  filter: drop-shadow(0 0 4px rgba(150,180,210,0.32));
}
body.phare-off :where([class*="btn"], [class*="cta"], [class*="chip"], [class*="-filter"], [class*="-tab"], button, input[type="submit"], input[type="button"], [role="button"], [onclick], .pub-rail-item, .bn-item, .mc-nav-link):hover {
  box-shadow: 0 4px 16px rgba(0,0,0,0.40), 0 0 16px rgba(120,150,185,0.30) !important;
}
body.phare-off :where(.voyage-card, .sortir-card, .sortir-featured, .pv-conv-item, .mch-card):hover {
  box-shadow: 0 6px 20px rgba(0,0,0,0.36), 0 0 16px rgba(120,150,185,0.22) !important;
}

/* ============================================================
   FILET LUMINEUX TOURNANT — uniquement boutons IMPORTANTS (CTA + submit)
   (<input> ne rend pas ::before → glow seul)
   ============================================================ */
:is(.btn-premium, .btn-primary, .adm-btn-primary, .pub-btn-cta, .fc-cta-btn, .adm-btn-green, .mc-btn-gold, .mch-sell-cta, .btn-glow-modern, .btn-glow-active, .btn-phare-on, .btn-site-primary, button[type="submit"]) {
  position: relative;
  isolation: isolate;
}
:is(.btn-premium, .btn-primary, .adm-btn-primary, .pub-btn-cta, .fc-cta-btn, .adm-btn-green, .mc-btn-gold, .mch-sell-cta, .btn-glow-modern, .btn-glow-active, .btn-phare-on, .btn-site-primary, button[type="submit"])::before {
  content: "";
  position: absolute; inset: 0; border-radius: inherit; padding: 1.4px;
  pointer-events: none; z-index: 3;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  background: conic-gradient(from var(--btnang), transparent 0deg, transparent 215deg, rgba(125,211,255,0.90) 300deg, #e2f6ff 332deg, transparent 360deg);
  animation: btnRingSpin 5.5s linear infinite;
}
body.phare-off :is(.btn-premium, .btn-primary, .adm-btn-primary, .pub-btn-cta, .fc-cta-btn, .adm-btn-green, .mc-btn-gold, .mch-sell-cta, .btn-glow-modern, .btn-glow-active, .btn-phare-on, .btn-site-primary, button[type="submit"])::before {
  background: conic-gradient(from var(--btnang), transparent 0deg, transparent 255deg, rgba(120,150,185,0.55) 320deg, rgba(178,200,224,0.72) 342deg, transparent 360deg);
  animation-duration: 9s;
}
@media (prefers-reduced-motion: reduce) {
  :is(.btn-premium, .btn-primary, .adm-btn-primary, .pub-btn-cta, .fc-cta-btn, .adm-btn-green, .mc-btn-gold, .mch-sell-cta, .btn-glow-modern, .btn-glow-active, .btn-phare-on, .btn-site-primary, button[type="submit"])::before {
    animation: none;
  }
}

/* ============================================================
   CLASSES RÉUTILISABLES (opt-in)
   ============================================================ */
.btn-glow-modern, .btn-site-primary, .btn-site-secondary {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 10px 18px; border-radius: 14px; font-weight: 600; cursor: pointer;
  text-decoration: none; border: 1px solid transparent; font-family: inherit; font-size: 14px;
}
.btn-site-primary {
  background: linear-gradient(135deg, rgba(61,169,252,0.95), rgba(27,111,184,0.96));
  color: #fff; border-color: rgba(125,211,255,0.55);
}
.btn-site-secondary {
  background: rgba(255,255,255,0.06); color: #e9eff8; border-color: rgba(125,211,255,0.30);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.btn-glow-active, .btn-phare-on {
  box-shadow: 0 0 18px rgba(61,169,252,0.50), 0 2px 10px rgba(4,12,28,0.30) !important;
  border-color: rgba(125,211,255,0.70) !important;
}
.btn-glow-soft {
  box-shadow: 0 0 10px rgba(61,169,252,0.20), 0 2px 8px rgba(4,12,28,0.18) !important;
}
.btn-glow-off, .btn-phare-off {
  box-shadow: 0 0 8px rgba(96,124,160,0.18), 0 2px 8px rgba(0,0,0,0.24) !important;
  border-color: rgba(120,150,185,0.40) !important;
}
