
.tp-snow{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden}

.tp-snow i{position:absolute;display:block;top:-26px;opacity:0;filter:drop-shadow(0 0 1.5px #3b78c4) drop-shadow(0 0 var(--g,3px) #bfe0ff) drop-shadow(0 0 calc(var(--g,3px)*2) #ffffffcc);animation:tpfall linear infinite,tptwinkle ease-in-out infinite}
.tp-snow i svg{display:block;width:100%;height:100%}
@keyframes tpfall{to{transform:translate3d(var(--dx,20px),calc(100vh + 52px),0) rotate(200deg)}}
@keyframes tptwinkle{0%,100%{opacity:0}50%{opacity:1}}
.site-header{position:relative}
.tp-deco{position:absolute;left:0;right:0;bottom:0;height:0;pointer-events:none;z-index:5}
.tp-gar{position:absolute;left:0;top:-2px;width:100%;height:30px;display:block}
.tp-flk{position:absolute;left:0;top:0;width:100%;height:80px;display:block}
.tp-drift{position:absolute;left:0;top:-12px;width:100%;height:14px;display:block}
.fl{transform-box:fill-box;transform-origin:50% 0;animation:tpsway 4.5s ease-in-out infinite}
.fl.f1{animation-delay:-1.5s}.fl.f2{animation-delay:-3s}
@keyframes tpsway{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
.bulb{animation:tpglow 2.4s ease-in-out infinite}
.bulb.b1{animation-delay:-.8s}.bulb.b2{animation-delay:-1.6s}
@keyframes tpglow{0%,100%{opacity:1}50%{opacity:.35}}
.site-header .brand{position:relative}
.tp-hat{position:absolute;left:-6px;top:-13px;width:34px;height:30px;transform:rotate(-16deg);pointer-events:none;z-index:3}
.tp-hat svg{display:block;width:100%;height:100%}
.tp-tree{position:fixed;right:6px;bottom:78px;width:118px;z-index:45;pointer-events:none;filter:drop-shadow(0 0 16px #ffd24a66)}
.tp-tree svg{display:block;width:100%;height:auto}
.tp-note{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;max-width:min(680px,calc(100vw - 32px));display:flex;gap:12px;align-items:center;background:#fff;border:1px solid #14263f1f;border-radius:999px;padding:10px 12px 10px 20px;box-shadow:0 8px 24px #14263f22;font:600 14px/1.35 Inter,system-ui,sans-serif;color:#1b2a47}
.tp-note button{flex:none;border:0;background:#f1f4f8;color:#1b2a47;width:28px;height:28px;border-radius:50%;font-size:16px;line-height:1;cursor:pointer}
.tp-note button:focus-visible{outline:3px solid #1b2a4755;outline-offset:2px}
body.tp-admin .tp-snow,body.tp-admin .tp-note,body.tp-admin .tp-tree{display:none}
@media(max-width:900px){.tp-tree{display:none}}
@media(max-width:640px){.tp-note{left:12px;right:12px;width:auto;max-width:none;transform:none;bottom:84px;border-radius:16px;font-size:12px;padding:8px 8px 8px 14px}.tp-hat{left:-4px;top:-11px;width:28px;height:25px}.tp-flk{display:none}}
@media(prefers-reduced-motion:reduce){.tp-snow i{animation:none;opacity:.7;top:calc(var(--y,10)*1vh)}.fl,.bulb{animation:none}}

.tp-hero-snow{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;border-radius:inherit}
.tp-hero-snow i{position:absolute;display:block;top:-26px;opacity:0;filter:drop-shadow(0 0 1.5px #3b78c4) drop-shadow(0 0 var(--g,3px) #bfe0ff) drop-shadow(0 0 calc(var(--g,3px)*2) #ffffffcc);animation:tpfallh linear infinite,tptwinkle ease-in-out infinite}
.tp-hero-snow i svg{display:block;width:100%;height:100%}
@keyframes tpfallh{to{transform:translate3d(var(--dx,20px),calc(var(--hh,700px) + 52px),0) rotate(200deg)}}
@media(prefers-reduced-motion:reduce){.tp-hero-snow i{animation:none;opacity:.7;top:calc(var(--y,10)*1%)}}
/* bannière d'hiver : petite, festive, ne cache plus le contenu */
html body .tp-note{left:16px!important;bottom:14px!important;transform:none!important;max-width:min(560px,calc(100vw - 32px))!important;background:linear-gradient(100deg,#d8232a,#a81820)!important;color:#fff!important;border:0!important;border-radius:22px!important;padding:9px 10px 9px 16px!important;font-size:13px!important;font-weight:600!important;box-shadow:0 12px 24px -12px #a81820!important;line-height:1.35!important;backdrop-filter:none!important}
html body .tp-note,html body .tp-note *{color:#fff!important}
html body .tp-note button{background:#ffffff33!important}
@media(max-width:640px){html body .tp-note{left:12px!important;right:auto!important;bottom:84px!important;max-width:calc(100vw - 24px)!important;font-size:12.5px!important}}
/* neige visible sur tous les écrans : au-dessus du fond (z-index:-1 la cachait derrière le fond de page sur beaucoup d'ordinateurs) */
html body .tp-snow{z-index:2!important;position:fixed!important;inset:0!important;pointer-events:none!important;contain:strict}
html body .tp-snow i{will-change:transform}
html body .tp-note{z-index:60!important}
/* « réduire les animations » du système : chute très lente au lieu de flocons figés ou absents */
@media(prefers-reduced-motion:reduce){html body .tp-snow i{animation:tpfall linear infinite!important;animation-duration:38s!important;opacity:.85}}
/* Automne : feuilles qui tombent, bannière orangée */
html body .tp-snow.tp-leaves i{filter:drop-shadow(0 1px 1.5px #5a2a0a55)!important;opacity:0}
html[data-season="autumn"] .tp-note{background:linear-gradient(90deg,#d8232a,#e8761d)!important}
html[data-season="autumn"] .tp-hero-snow i{filter:drop-shadow(0 1px 2px #0006)}
/* Automne : les feuilles doivent bouger même si le système demande « moins d'animations » (mouvement doux, sans rotation rapide) */
@media(prefers-reduced-motion:reduce){
html body .tp-snow.tp-leaves i{animation:tpfall linear infinite!important;animation-duration:17s!important;opacity:.95!important}
html body .tp-hero-snow i{animation:tpfallh linear infinite!important;animation-duration:15s!important;opacity:.95!important}
}

/* Bandeau saisonnier v3 : fine bande en haut de page, ne cache plus aucun contenu */
html body .tp-note.tp-band{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;top:auto!important;transform:none!important;width:100%!important;max-width:none!important;margin:0!important;display:flex!important;justify-content:center!important;align-items:center!important;gap:10px!important;padding:7px 44px!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff4ec!important;font-size:14px!important;font-weight:500!important;line-height:1.35!important;text-align:center!important;z-index:5!important}
html body .tp-note.tp-band,html body .tp-note.tp-band *{color:#9a3d12!important}
html[data-season="winter"] body .tp-note.tp-band{background:#eef5fd!important}
html[data-season="winter"] body .tp-note.tp-band,html[data-season="winter"] body .tp-note.tp-band *{color:#1d4f86!important}
html[data-season="noel"] body .tp-note.tp-band{background:#fdeeee!important}
html[data-season="noel"] body .tp-note.tp-band,html[data-season="noel"] body .tp-note.tp-band *{color:#a3151d!important}
html body .tp-note.tp-band span::before{content:"🍂 "}
html[data-season="winter"] body .tp-note.tp-band span::before{content:"❄️ "}
html[data-season="noel"] body .tp-note.tp-band span::before{content:"🎄 "}
html body .tp-note.tp-band button{position:absolute!important;right:10px!important;top:50%!important;transform:translateY(-50%)!important;width:26px!important;height:26px!important;min-height:0!important;background:transparent!important;font-size:18px!important}
html body .tp-note.tp-band button:hover{background:#0000000f!important}
@media(max-width:640px){html body .tp-note.tp-band{font-size:12.5px!important;padding:7px 40px 7px 12px!important;bottom:auto!important;left:auto!important}}
/* feuilles d'automne : seulement sur les bords, jamais au-dessus du texte */
html[data-season="autumn"] body .tp-snow.tp-leaves i{opacity:.8}
html body:has(#dashboard:not([hidden])) .tp-note.tp-band{top:auto!important;left:auto!important;transform:none!important;max-width:none!important;width:100%!important}
