/* =====================================================================
   VERSION 36 : STUDIO DU LOGO — effets partagés (boutique + aperçu admin)
   Les classes logo--* et les variables --logo-* sont posées par
   applyLogoDesign() (js/data.js). Sans réglage, le logo reste celui d'origine.
   ===================================================================== */

/* ---- Nom : police, taille, graisse, espacement, majuscules ---- */
.logo--fx .logo__text { font-weight: var(--logo-w, 800); letter-spacing: var(--logo-ls, 0); text-transform: var(--logo-tt, none); }
.logo--fx .logo__text strong { font-weight: inherit; }
.logo--font .logo__text { font-family: var(--logo-font) !important; }
.logo--sized .logo__text { font-size: var(--logo-size) !important; }
.logo--gap { gap: var(--logo-gap) !important; }

/* ---- Nom : couleurs ---- */
.logo--tc .logo__text { color: var(--logo-text) !important; }
.logo--ac .logo__text strong { color: var(--logo-accent) !important; }
/* Dégradé sur tout le nom */
.logo--grad .logo__text,
.logo--grad .logo__text strong {
  background-image: linear-gradient(90deg,
    var(--logo-g1, var(--color-dark, #1a1a2e)),
    var(--logo-g2, var(--color-primary, #e53935)),
    var(--logo-g1, var(--color-dark, #1a1a2e)));
  background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text;
  color: transparent !important; -webkit-text-fill-color: transparent;
}
.logo--grad .logo__text strong { background: none; -webkit-background-clip: initial; background-clip: initial; }
.logo--grad.logo--light:not(.logo--tc) .logo__text { --logo-g1: #ffffff; }

/* ---- Icône : taille, forme, fond, bordure, ombre ---- */
.logo--isized .logo__icon { width: var(--logo-isize) !important; height: var(--logo-isize) !important; font-size: calc(var(--logo-isize) * .36) !important; }
.logo--isized .logo__img { height: calc(var(--logo-isize) * 1.05) !important; }
.logo--ibg .logo__icon:not(.logo__icon--tint):not(.logo__icon--original) {
  background: var(--logo-ibg, var(--color-primary)) !important;
}
.logo--igrad .logo__icon:not(.logo__icon--tint):not(.logo__icon--original) {
  background: linear-gradient(135deg, var(--logo-ibg, var(--color-primary)),
    var(--logo-ibg2, color-mix(in srgb, var(--logo-ibg, var(--color-primary)) 65%, #000))) !important;
}
.logo--shape-square .logo__icon { border-radius: 3px !important; }
.logo--shape-circle .logo__icon { border-radius: 50% !important; }
.logo--shape-leaf .logo__icon { border-radius: 50% 8% 50% 8% !important; }
.logo--shape-hexagon .logo__icon { border-radius: 0 !important; clip-path: polygon(25% 4%, 75% 4%, 100% 50%, 75% 96%, 25% 96%, 0 50%); }
.logo--border .logo__icon { box-shadow: inset 0 0 0 var(--logo-bw) var(--logo-bc) !important; }
.logo--shadow-soft .logo__icon, .logo--shadow-soft .logo__img { filter: drop-shadow(0 3px 6px rgba(0,0,0,.18)); }
.logo--shadow-strong .logo__icon, .logo--shadow-strong .logo__img { filter: drop-shadow(0 6px 12px rgba(0,0,0,.35)); }
.logo--shadow-glow .logo__icon, .logo--shadow-glow .logo__img { filter: drop-shadow(0 0 10px color-mix(in srgb, var(--logo-ibg, var(--color-primary)) 80%, transparent)); }
.logo--shadow-strong .logo__text { text-shadow: 0 3px 8px rgba(0,0,0,.25); }
.logo--shadow-glow .logo__text { text-shadow: 0 0 14px color-mix(in srgb, var(--logo-accent, var(--color-primary)) 60%, transparent); }
.logo--grad.logo--shadow-strong .logo__text, .logo--grad.logo--shadow-glow .logo__text { text-shadow: none; }

/* ---- Survol ---- */
.logo--fx .logo__icon, .logo--fx .logo__text, .logo--fx .logo__img { transition: transform calc(.35s * var(--logo-speed, 1)) cubic-bezier(.2,.8,.2,1); }
.logo--hover-lift:hover .logo__icon, .logo--hover-lift:hover .logo__img { transform: translateY(-4px) scale(1.06); }
.logo--hover-lift:hover .logo__text { transform: translateY(-2px); }
.logo--hover-pulse:hover .logo__icon, .logo--hover-pulse:hover .logo__img { animation: logoPulse calc(.6s * var(--logo-speed, 1)) ease-in-out 2; }
.logo--hover-rotate:hover .logo__icon { transform: rotate(360deg); transition-duration: calc(.7s * var(--logo-speed, 1)); }
.logo--hover-wiggle:hover .logo__icon, .logo--hover-wiggle:hover .logo__img { animation: logoWiggle calc(.5s * var(--logo-speed, 1)) ease-in-out 2; }
.logo--hover-shine .logo__icon, .logo--loop-shine .logo__icon { position: relative; }
.logo--hover-shine:hover .logo__icon::after,
.logo--loop-shine .logo__icon::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,.75) 50%, transparent 70%);
  background-size: 250% 100%; background-position: 150% 0;
  animation: logoShine calc(.9s * var(--logo-speed, 1)) ease-out;
}
.logo--hover-shine:hover .logo__text { animation: logoTextShine calc(.9s * var(--logo-speed, 1)) ease-out; }

/* ---- Animations en continu ---- */
.logo--loop-shine .logo__icon::after { animation: logoShine calc(3.2s * var(--logo-speed, 1)) ease-in-out infinite; }
.logo--loop-pulse .logo__icon, .logo--loop-pulse .logo__img { animation: logoPulse calc(2.4s * var(--logo-speed, 1)) ease-in-out infinite; }
.logo--loop-float .logo__icon, .logo--loop-float .logo__img { animation: logoFloat calc(3s * var(--logo-speed, 1)) ease-in-out infinite; }
.logo--loop-gradient .logo__text { animation: logoGradient calc(4s * var(--logo-speed, 1)) linear infinite; }
.logo--loop-glow .logo__icon, .logo--loop-glow .logo__img { animation: logoGlow calc(2.4s * var(--logo-speed, 1)) ease-in-out infinite; }

@keyframes logoPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.12); } }
@keyframes logoFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes logoWiggle { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-12deg); } 75% { transform: rotate(12deg); } }
@keyframes logoShine { 0% { background-position: 150% 0; } 60%, 100% { background-position: -60% 0; } }
@keyframes logoTextShine { 0% { filter: brightness(1); } 40% { filter: brightness(1.6); } 100% { filter: brightness(1); } }
@keyframes logoGradient { from { background-position: 0% 0; } to { background-position: 200% 0; } }
@keyframes logoGlow {
  0%, 100% { filter: drop-shadow(0 0 0 transparent); }
  50% { filter: drop-shadow(0 0 12px color-mix(in srgb, var(--logo-ibg, var(--color-primary)) 85%, transparent)); }
}

/* Respect du réglage « réduire les animations » du téléphone / ordinateur */
@media (prefers-reduced-motion: reduce) {
  .logo--fx .logo__icon, .logo--fx .logo__text, .logo--fx .logo__img,
  .logo--fx .logo__icon::after { animation: none !important; transition: none !important; }
}

/* En-tête mobile : la taille choisie est réduite pour ne pas déborder */
@media (max-width: 768px) {
  .logo--sized .logo__text { font-size: min(var(--logo-size), 4.6vw) !important; }
  .logo--isized .logo__icon { width: min(var(--logo-isize), 40px) !important; height: min(var(--logo-isize), 40px) !important; font-size: min(calc(var(--logo-isize) * .36), 14px) !important; }
}
