/* ==========================================================================
   PASSPAM 2.63.0 — DÉCORS SAISONNIERS (Apparence › Décorations)
   Posés PAR-DESSUS n'importe quel thème (Classique, Boleto, Lumière…) : rien ici ne recolore le site.
   Tout est décoratif : aria-hidden, pointer-events: none, z-index sous les menus et fenêtres, jamais sur les boutons
   (les particules passent derrière le contenu cliquable grâce à pointer-events), coupé si l'appareil demande moins
   d'animations, absent à l'impression.
   ========================================================================== */
.pp-season { position: absolute; left: 0; right: 0; top: 0; height: 0; z-index: 45; pointer-events: none; }
.pp-season * { pointer-events: none; }
@media print { .pp-season, .pp-decorbanner { display: none !important; } }

/* ---------- Accessoires du logo (Noël : bonnet ; Halloween : chapeau de sorcière) ---------- */
.pp-logo__hat--noel { position: absolute; left: -9px; top: -12px; width: 30px; height: 24px; transform: rotate(-24deg); pointer-events: none; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 48'><path d='M6 38 C10 18 26 4 44 6 C50 7 54 12 56 20 C50 16 44 16 40 20 C36 26 36 32 38 38 Z' fill='%23d7263d'/><path d='M14 28 C20 16 32 10 44 10' stroke='%23ffffff' stroke-opacity='.25' stroke-width='3' fill='none' stroke-linecap='round'/><rect x='2' y='34' width='42' height='11' rx='5.5' fill='%23ffffff'/><circle cx='55' cy='22' r='5.5' fill='%23ffffff'/></svg>") no-repeat center / contain; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .18)); }
.pp-footer .pp-logo__hat--noel { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .35)); }
.pp-logo__hat--halloween { position: absolute; left: -10px; top: -14px; width: 32px; height: 28px; transform: rotate(-18deg); pointer-events: none; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 56'><path d='M22 40 L34 4 C36 1 40 2 41 6 L46 18 C42 16 39 18 40 22 L44 40 Z' fill='%236a44b0' stroke='%23b99cff' stroke-width='1.2'/><path d='M34 4 C30 14 28 26 27 40' stroke='%23ffffff' stroke-opacity='.12' stroke-width='3' fill='none'/><ellipse cx='32' cy='42' rx='30' ry='8' fill='%23553395' stroke='%23b99cff' stroke-width='1.2'/><path d='M23 34 L43 34 L44 40 L22 40 Z' fill='%23ff7a18'/><rect x='30' y='33.5' width='6' height='7' rx='1' fill='none' stroke='%23ffe9a8' stroke-width='1.6'/></svg>") no-repeat center / contain; filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .45)) drop-shadow(0 0 6px rgba(255, 122, 24, .25)); }

/* ---------- Noël : guirlande lumineuse sous l'en-tête, neige ---------- */
.pp-garland { position: absolute; left: 0; right: 0; top: calc(var(--pp-header-h) + env(safe-area-inset-top) - 2px); height: 22px; display: flex; justify-content: space-around; overflow: hidden; }
.pp-garland::before { content: ""; position: absolute; left: -5%; right: -5%; top: -10px; height: 20px; border-bottom: 1.5px solid rgba(16, 41, 31, .35); border-radius: 0 0 50% 50% / 0 0 100% 100%; }
.pp-garland i { position: relative; top: calc(6px + 3px * sin(var(--i) * 1rad)); width: 7px; height: 11px; border-radius: 50% 50% 45% 45%; background: #f2c14e; box-shadow: 0 0 10px 2px rgba(242, 193, 78, .6); animation: xm-twinkle 2.4s ease-in-out infinite; animation-delay: calc(var(--i) * -.37s); }
.pp-garland i::before { content: ""; position: absolute; left: 1.5px; top: -3px; width: 4px; height: 4px; border-radius: 1px; background: #3d4d45; }
.pp-garland i:nth-child(4n+1) { background: #e0384d; box-shadow: 0 0 10px 2px rgba(224, 56, 77, .55); }
.pp-garland i:nth-child(4n+2) { background: #3fbf7f; box-shadow: 0 0 10px 2px rgba(63, 191, 127, .55); }
.pp-garland i:nth-child(4n+3) { background: #fff6dc; box-shadow: 0 0 10px 2px rgba(255, 246, 220, .7); }
@keyframes xm-twinkle { 0%, 100% { opacity: 1; filter: brightness(1.15); } 50% { opacity: .45; filter: brightness(.8); } }
@media (max-width: 767px) { .pp-garland i:nth-child(n+16) { display: none; } }
.pp-snow { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 45; }
.pp-snow i { position: absolute; top: -12px; left: var(--x); width: var(--s); height: var(--s); border-radius: 50%; background: radial-gradient(circle, #fff 0%, rgba(255, 255, 255, .85) 45%, rgba(255, 255, 255, 0) 70%); opacity: var(--o); animation: xm-fall var(--d) linear infinite, xm-sway calc(var(--d) / 3) ease-in-out infinite alternate; animation-delay: var(--delay), var(--delay); filter: drop-shadow(0 0 2px rgba(120, 150, 140, .35)); }
@keyframes xm-fall { to { transform: translateY(110vh); } }
@keyframes xm-sway { from { margin-left: calc(-1 * var(--sw)); } to { margin-left: var(--sw); } }
@media (max-width: 767px) { .pp-snow i:nth-child(n+22) { display: none; } }
@media (prefers-reduced-motion: reduce) { .pp-snow { display: none; } .pp-garland i { animation: none; } }
@media print { .pp-season { display: none !important; } }

/* ---------- Halloween : toile d'araignée, chauves-souris, brume ---------- */
.pp-web { position: fixed; right: 0; top: calc(var(--pp-header-h) + env(safe-area-inset-top)); width: 170px; height: 170px; opacity: .55; z-index: 45; pointer-events: none; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200' fill='none' stroke='%23cbbcf0' stroke-width='1.1' stroke-linecap='round'><path d='M200 0 L40 0 M200 0 L60 90 M200 0 L120 160 M200 0 L200 200 M200 0 L110 30'/><path d='M160 0 Q172 12 180 22 Q186 30 200 34'/><path d='M120 0 Q140 24 160 44 Q178 58 200 70'/><path d='M80 0 Q108 38 132 70 Q160 96 200 110'/><path d='M46 0 Q78 52 106 98 Q140 136 200 150'/><line x1='150' y1='58' x2='150' y2='118'/><circle cx='150' cy='124' r='6' fill='%23140b24'/><circle cx='150' cy='124' r='6'/><path d='M144 121 l-6 -4 M144 125 l-7 0 M144 128 l-6 4 M156 121 l6 -4 M156 125 l7 0 M156 128 l6 4'/></svg>") no-repeat right top / contain; animation: hw-spider 6s ease-in-out infinite alternate; transform-origin: top right; }
@keyframes hw-spider { from { transform: rotate(0deg); } to { transform: rotate(-2.5deg); } }
.pp-bats { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 45; }
.pp-bats i { position: absolute; left: -60px; top: var(--y); width: var(--s); height: calc(var(--s) * .5); opacity: .8; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 32'><path d='M32 10 C30 6 27 6 26 9 C22 4 14 2 2 6 C8 9 10 14 9 20 C13 16 18 17 20 21 C23 17 27 17 29 22 L32 26 L35 22 C37 17 41 17 44 21 C46 17 51 16 55 20 C54 14 56 9 62 6 C50 2 42 4 38 9 C37 6 34 6 32 10 Z' fill='%23080312'/><circle cx='29.5' cy='12' r='1' fill='%23ff9a4a'/><circle cx='34.5' cy='12' r='1' fill='%23ff9a4a'/></svg>") no-repeat center / contain; filter: drop-shadow(0 0 6px rgba(139, 92, 246, .35)); animation: hw-fly var(--d) linear infinite, hw-flap .28s ease-in-out infinite alternate; animation-delay: var(--delay), 0s; }
@keyframes hw-fly { 0% { transform: translate(0, 0); } 25% { transform: translate(28vw, -4vh); } 50% { transform: translate(56vw, 3vh); } 75% { transform: translate(84vw, -3vh); } 100% { transform: translate(calc(100vw + 120px), 2vh); } }
@keyframes hw-flap { from { scale: 1 1; } to { scale: 1 .55; } }
.pp-fog { position: fixed; left: 0; right: 0; bottom: 0; height: 160px; overflow: hidden; pointer-events: none; z-index: 44; }
.pp-fog span { position: absolute; bottom: -40px; left: -50%; width: 200%; height: 150px; background: radial-gradient(50% 60% at 20% 70%, rgba(180, 160, 230, .16), transparent 70%), radial-gradient(40% 55% at 55% 80%, rgba(180, 160, 230, .12), transparent 70%), radial-gradient(45% 60% at 85% 70%, rgba(180, 160, 230, .14), transparent 70%); animation: hw-fog 38s linear infinite; }
.pp-fog span + span { bottom: -60px; opacity: .7; animation-duration: 56s; animation-direction: reverse; }
@keyframes hw-fog { from { transform: translateX(0); } to { transform: translateX(25%); } }
@media (max-width: 767px) { .pp-web { width: 110px; height: 110px; opacity: .45; } .pp-bats i:nth-child(n+4) { display: none; } .pp-fog { height: 110px; bottom: 64px; } }
@media (prefers-reduced-motion: reduce) { .pp-bats { display: none; } .pp-web, .pp-fog span { animation: none; } }
@media print { .pp-season { display: none !important; } }

/* ---------- Ruban sous l'en-tête (drapeau : bleu / rouge ; Kanaval : couleurs vives) ---------- */
.pp-ribbon { position: absolute; left: 0; right: 0; top: calc(var(--pp-header-h) + env(safe-area-inset-top)); height: 4px; }
.pp-ribbon--flag { background: linear-gradient(90deg, #00209f 0 50%, #d21034 50% 100%); box-shadow: 0 2px 8px rgba(0, 32, 159, .18); }
.pp-ribbon--kanaval { background: linear-gradient(90deg, #ff4fa3, #ffb800, #21c4e8, #7c4dff, #ff4fa3); background-size: 200% 100%; animation: dc-slide 8s linear infinite; }
@keyframes dc-slide { to { background-position: 200% 0; } }

/* ---------- Particules qui tombent doucement (confettis, cœurs, pétales, étoiles, bulles) ---------- */
.pp-fall { position: fixed; inset: 0; overflow: hidden; z-index: 44; }
.pp-fall i { position: absolute; top: -24px; left: var(--x); width: var(--s); height: var(--s); opacity: .75; animation: dc-fall var(--d) linear infinite, dc-sway calc(var(--d) / 3) ease-in-out infinite alternate; animation-delay: var(--delay), var(--delay); }
@keyframes dc-fall { to { transform: translateY(112vh) rotate(var(--r)); } }
@keyframes dc-sway { from { margin-left: calc(-1 * var(--sw)); } to { margin-left: var(--sw); } }
.pp-fall--confetti i, .pp-fall--flag i { height: calc(var(--s) * .45); border-radius: 2px; }
.pp-fall--confetti i:nth-child(5n+1) { background: #ff4fa3; } .pp-fall--confetti i:nth-child(5n+2) { background: #ffb800; } .pp-fall--confetti i:nth-child(5n+3) { background: #21c4e8; } .pp-fall--confetti i:nth-child(5n+4) { background: #7c4dff; } .pp-fall--confetti i:nth-child(5n) { background: #ff6a3d; }
.pp-fall--flag i:nth-child(odd) { background: #00209f; } .pp-fall--flag i:nth-child(even) { background: #d21034; }
.pp-fall--hearts i { background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'><path d='M12 21 C5 15 1 11 1 6.5 C1 3.4 3.4 1 6.4 1 C8.6 1 10.6 2.2 12 4.2 C13.4 2.2 15.4 1 17.6 1 C20.6 1 23 3.4 23 6.5 C23 11 19 15 12 21 Z' fill='%23ff4f7b'/></svg>") no-repeat center / contain; width: calc(var(--s) * 1.4); height: calc(var(--s) * 1.3); opacity: .55; }
.pp-fall--hearts i:nth-child(3n) { filter: hue-rotate(-20deg) saturate(.7); }
.pp-fall--petals i { background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><g fill='%23ffb3c7'><ellipse cx='12' cy='6' rx='4' ry='6'/><ellipse cx='12' cy='18' rx='4' ry='6'/><ellipse cx='6' cy='12' rx='6' ry='4'/><ellipse cx='18' cy='12' rx='6' ry='4'/></g><circle cx='12' cy='12' r='3' fill='%23ffd166'/></svg>") no-repeat center / contain; width: calc(var(--s) * 1.5); height: calc(var(--s) * 1.5); opacity: .6; }
.pp-fall--petals i:nth-child(3n) { filter: hue-rotate(60deg); }
.pp-fall--stars i { background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 1 L14.9 8.6 L23 9 L16.6 14 L18.8 22 L12 17.5 L5.2 22 L7.4 14 L1 9 L9.1 8.6 Z' fill='%23ffc24b'/></svg>") no-repeat center / contain; width: calc(var(--s) * 1.3); height: calc(var(--s) * 1.3); opacity: .55; }
.pp-fall--bubbles i { border-radius: 50%; background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, .9), rgba(255, 200, 120, .35) 60%, rgba(255, 170, 80, .15)); width: calc(var(--s) * 1.6); height: calc(var(--s) * 1.6); opacity: .45; animation-name: dc-rise, dc-sway; top: auto; bottom: -30px; }
@keyframes dc-rise { to { transform: translateY(-112vh); } }
.pp-sun { position: fixed; right: -120px; top: -120px; width: 340px; height: 340px; border-radius: 50%; z-index: 0; background: radial-gradient(circle, rgba(255, 210, 120, .55) 0%, rgba(255, 170, 90, .25) 40%, transparent 70%); animation: dc-pulse 9s ease-in-out infinite alternate; }
@keyframes dc-pulse { from { transform: scale(.94); } to { transform: scale(1.06); } }
@media (max-width: 767px) { .pp-fall i:nth-child(n+11) { display: none; } .pp-sun { width: 220px; height: 220px; right: -80px; top: -80px; } }
@media (prefers-reduced-motion: reduce) { .pp-fall, .pp-ribbon--kanaval { animation: none; } .pp-fall { display: none; } .pp-sun { animation: none; } }

/* ---------- Bannière de la période (réglée dans Apparence › Décorations, refermable) ---------- */
.pp-decorbanner { position: relative; z-index: 40; margin: 10px 0 0; }
.pp-decorbanner__inner { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 16px; background: #fff; box-shadow: 0 8px 24px rgba(31, 35, 64, .10); border: 1px solid rgba(31, 35, 64, .06); }
.pp-decorbanner__ico { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 12px; background: linear-gradient(135deg, #ffd7c2, #ffb39a); }
.pp-decorbanner--christmas .pp-decorbanner__ico { background: linear-gradient(135deg, #e0384d, #16543f); }
.pp-decorbanner--halloween .pp-decorbanner__ico { background: linear-gradient(135deg, #ff7a18, #6a44b0); }
.pp-decorbanner--independence .pp-decorbanner__ico, .pp-decorbanner--flagDay .pp-decorbanner__ico, .pp-decorbanner--vertieres .pp-decorbanner__ico { background: linear-gradient(90deg, #00209f 50%, #d21034 50%); }
.pp-decorbanner--valentine .pp-decorbanner__ico { background: linear-gradient(135deg, #ff7b9c, #ff4f7b); }
.pp-decorbanner--kanaval .pp-decorbanner__ico { background: linear-gradient(135deg, #ff4fa3, #ffb800, #21c4e8); }
.pp-decorbanner__txt { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; color: #1f2340; }
.pp-decorbanner__txt span { color: #5f6380; font-size: .92rem; }
.pp-decorbanner__close { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; border: 0; background: rgba(31, 35, 64, .06); color: #1f2340; font-size: 20px; line-height: 1; cursor: pointer; }
.pp-decorbanner__close:focus-visible { outline: 3px solid rgba(204, 69, 16, .5); outline-offset: 2px; }
@media (max-width: 600px) { .pp-decorbanner__inner { flex-wrap: wrap; } .pp-decorbanner__txt { flex-basis: calc(100% - 90px); } }
