/* Logo animé saisonnier — composant PHVLogo (copié tel quel de integration/logo-phv.css) */
.phv { position: relative; display: block; width: 100%; max-width: 760px; }
.phv svg.phv-logo { display: block; width: 100%; height: auto; overflow: visible; }
.phv canvas.phv-amb { position: absolute; inset: -16% -9% -6%; width: 118%; height: 122%;
  pointer-events: none; }
.phv .big, .phv .tag { opacity: 0; }
.phv[data-played] .big, .phv[data-played] .tag { opacity: 1; }
.phv-run .big { animation: phv-rise .46s cubic-bezier(.22,.61,.36,1) both; }
.phv-run .tag { animation: phv-rise .38s cubic-bezier(.22,.61,.36,1) both; }
.phv-run .blk { transform-box: fill-box; transform-origin: center;
  animation: phv-pop .62s cubic-bezier(.34,1.56,.64,1) 1.15s both; }
.phv-run .bar { transform-box: fill-box; transform-origin: left center;
  animation: phv-wipe .5s cubic-bezier(.22,.61,.36,1) 1.45s both; }
.phv-run .cross { transform-box: fill-box; transform-origin: center;
  animation: phv-cross .6s cubic-bezier(.34,1.56,.64,1) 2.05s both; }
.phv-run .dep { animation: phv-settle .9s cubic-bezier(.22,.61,.36,1) 2.5s both; }
.phv-run .vine { animation: phv-draw 1.5s cubic-bezier(.4,.5,.4,1) 2.35s both; }
.phv-run .flo { transform-box: fill-box; transform-origin: center;
  animation: phv-pop .5s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes phv-rise { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@keyframes phv-pop { from { opacity: 0; transform: scale(.72); } to { opacity: 1; transform: scale(1); } }
@keyframes phv-wipe { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes phv-cross { from { opacity: 0; transform: scale(.35) rotate(-22deg); } to { opacity: 1; transform: none; } }
@keyframes phv-settle { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: none; } }
@keyframes phv-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
.phv .phv-rest { opacity: 0; transform: translateY(-9px); transform-box: fill-box;
  transition: opacity .7s ease, transform .7s cubic-bezier(.34,1.56,.64,1); }
.phv .phv-rest.on { opacity: 1; transform: none; }
.phv-run .wave1 { animation: phv-wave 1.9s cubic-bezier(.33,.5,.4,1) .05s both; }
.phv-run .wave2 { animation: phv-wave 1.9s cubic-bezier(.33,.5,.4,1) .22s both; }
@keyframes phv-wave { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: .6; }
  30% { transform: translate(576px, -5px); } 60% { transform: translate(1152px, 4px); opacity: .55; }
  88% { opacity: 0; } 100% { transform: translate(1920px, 0); opacity: 0; } }
.phv .twinkle { animation: phv-tw 1.7s ease-in-out infinite; }
.phv .xswap { transform-box: fill-box; transform-origin: center; animation: phv-xp 10s ease-in-out infinite; }
.phv .xcross { animation: phv-xa 10s ease-in-out infinite; }
.phv .xheart { animation: phv-xb 10s ease-in-out infinite; }
@keyframes phv-xa { 0%, 46% { opacity: 1; } 50%, 96% { opacity: 0; } 100% { opacity: 1; } }
@keyframes phv-xb { 0%, 46% { opacity: 0; } 50%, 96% { opacity: 1; } 100% { opacity: 0; } }
@keyframes phv-xp { 0%, 44%, 56%, 94% { transform: scale(1); } 48%, 98% { transform: scale(1.22); } 52% { transform: scale(1); } 100% { transform: scale(1.05); } }
.phv .flame { transform-box: fill-box; transform-origin: 50% 100%; animation: phv-flk .7s ease-in-out infinite alternate; }
@keyframes phv-flk { from { transform: scale(1, 1) rotate(-3deg); } to { transform: scale(.86, 1.12) rotate(3deg); } }
.phv .bob { transform-box: fill-box; transform-origin: 50% 100%; animation: phv-bob 3.4s ease-in-out infinite; }
@keyframes phv-bob { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes phv-tw { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
@keyframes phv-sun { 0%,100% { transform: scale(1); } 50% { transform: scale(1.06); } }
.phv .sun { transform-box: fill-box; transform-origin: center; animation: phv-sun 5.5s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .phv-run .big, .phv-run .tag, .phv-run .blk, .phv-run .bar, .phv-run .cross,
  .phv-run .dep, .phv-run .vine, .phv-run .flo, .phv .sun { animation: none !important; opacity: 1 !important; transform: none !important; }
  .phv canvas.phv-amb { display: none; }
  .phv .phv-rest { opacity: 1 !important; transform: none !important; transition: none; }
  .phv-run .wave1, .phv-run .wave2 { display: none; }
  .phv .twinkle, .phv .flame, .phv .bob { animation: none; }
  .phv .xswap, .phv .xcross { animation: none; }
  .phv .xheart { animation: none; opacity: 0; }
}

/* ---------- pose dans l'en-tête WoodMart ----------
   L'image d'origine reste dans la page (elle garde sa place : aucun saut de mise en page,
   et elle reste le repli si le script ne tourne pas). Le logo animé se pose par-dessus.
   pointer-events: none → les décors qui débordent ne volent pas les clics des liens voisins ;
   le clic sur le logo traverse jusqu'au lien d'origine. */
.wd-logo.psv-logo-on { position: relative; }
.wd-logo.psv-logo-on > img { opacity: 0; }
.wd-logo.psv-logo-on > .phv { position: absolute; left: 0; top: 50%; width: 100%; max-width: none;
  transform: translateY(-50%); pointer-events: none; }

/* ---------- pied de page : logo neutre en thème sombre, à la place de l'image d'origine
   (l'image a un fond blanc ; le thème sombre du moteur s'en passe) ---------- */
.psv-logo-cadre { position: relative; display: inline-block; max-width: 100%; vertical-align: top; }
.psv-logo-cadre.psv-logo-on > img { opacity: 0 !important; }
.psv-logo-cadre > .phv { position: absolute; left: 0; top: 50%; width: 100%; max-width: none;
  transform: translateY(-50%); pointer-events: none; }
