:root{--rd-seasonal-z:60}
.rd-seasonal-layer{position:fixed;inset:0;z-index:var(--rd-seasonal-z);pointer-events:none;overflow:hidden;contain:layout paint style}
.rd-seasonal-layer[hidden]{display:none!important}
.rd-seasonal-snow-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.92}
.rd-seasonal-spark-modern{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;box-shadow:0 0 10px 2px color-mix(in srgb,var(--accent) 65%,transparent);animation:rd-modern-twinkle 4.8s ease-in-out infinite}
@keyframes rd-modern-twinkle{0%,100%{opacity:.08;transform:scale(.65)}48%{opacity:.8;transform:scale(1.45)}55%{opacity:.18;transform:scale(.7)}}
body.rd-seasonal-modules .module-heading{position:relative;overflow:visible}
body.rd-seasonal-modules .module-heading::after{content:"";position:absolute;right:9px;top:50%;width:22px;height:22px;transform:translateY(-50%);background:center/contain no-repeat;opacity:.68;pointer-events:none;filter:drop-shadow(0 4px 8px rgba(0,0,0,.25))}
body[data-seasonal-mode="sinterklaas"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/mitre.svg')}
body[data-seasonal-mode="kerst"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/present.svg')}
body[data-seasonal-mode="nieuwjaar"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/firework.svg')}
body[data-seasonal-mode="top1000"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/top1000.svg');width:30px}
body[data-seasonal-mode="winter"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/snowflake.svg')}
body[data-seasonal-mode="herfst"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/leaf.svg')}
body[data-seasonal-mode="zomer"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/sun.svg')}
body[data-seasonal-mode="lente"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/blossom.svg')}
body.rd-seasonal-header .masthead{position:relative}
body[data-seasonal-mode="winter"].rd-seasonal-header .masthead::after,body[data-seasonal-mode="kerst"].rd-seasonal-header .masthead::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:5px;background:linear-gradient(90deg,rgba(225,246,255,.2),rgba(255,255,255,.9) 20%,rgba(208,239,252,.55) 45%,rgba(255,255,255,.88) 70%,rgba(221,244,255,.2));filter:blur(.15px);box-shadow:0 3px 12px rgba(184,226,247,.2)}
.rd-seasonal-actor{position:fixed;left:-130px;bottom:16px;width:84px;height:128px;z-index:4;filter:drop-shadow(0 12px 20px rgba(0,0,0,.32));transform:translateZ(0)}
.rd-actor-shadow{position:absolute;left:13px;bottom:0;width:62px;height:13px;border-radius:50%;background:rgba(0,0,0,.28);filter:blur(4px)}
.rd-actor-body{position:absolute;left:24px;bottom:16px;width:42px;height:70px;border-radius:20px 20px 14px 14px;background:linear-gradient(145deg,#bd1f2d,#7b0d18);box-shadow:inset -8px 0 12px rgba(0,0,0,.18)}
.rd-actor-head{position:absolute;left:29px;bottom:78px;width:34px;height:37px;border-radius:48% 48% 45% 45%;background:linear-gradient(145deg,#f0c5a4,#c79072);border:2px solid rgba(255,255,255,.28)}
.rd-seasonal-actor--sint .rd-actor-head::before{content:"";position:absolute;left:4px;top:-28px;width:27px;height:35px;background:url('../seasonal/mitre.svg') center/contain no-repeat}
.rd-seasonal-actor--sint .rd-actor-head::after{content:"";position:absolute;left:3px;top:24px;width:29px;height:28px;border-radius:0 0 45% 45%;background:linear-gradient(#fff,#e8edf0);clip-path:polygon(0 0,100% 0,84% 100%,50% 76%,16% 100%)}
.rd-seasonal-actor--santa .rd-actor-head::before{content:"";position:absolute;left:-3px;top:-17px;width:39px;height:23px;border-radius:70% 10% 40% 0;background:#d72232;transform:rotate(-10deg);box-shadow:13px -2px 0 -7px #fff}
.rd-seasonal-actor--santa .rd-actor-head::after{content:"";position:absolute;left:2px;top:23px;width:31px;height:25px;border-radius:0 0 45% 45%;background:#f8f8f6;clip-path:polygon(0 0,100% 0,82% 100%,50% 72%,18% 100%)}
.rd-actor-prop{position:absolute;right:7px;bottom:25px;width:24px;height:35px;border-radius:8px;background:linear-gradient(145deg,#6b2f18,#3f1b10);transform:rotate(-9deg)}
.rd-seasonal-actor.is-walking-in{animation:rd-walk-in 8.8s cubic-bezier(.2,.7,.25,1) forwards}
.rd-seasonal-actor.is-walking-out{animation:rd-walk-out 7.2s cubic-bezier(.4,0,.6,1) forwards}
.rd-seasonal-actor.is-paused .rd-actor-body{animation:rd-breathe 1.8s ease-in-out infinite}
@keyframes rd-walk-in{0%{left:-130px;transform:translateY(0) rotate(-2deg)}20%{transform:translateY(-3px) rotate(2deg)}40%{transform:translateY(0) rotate(-1deg)}100%{left:calc(50% - 42px);transform:translateY(0)}}
@keyframes rd-walk-out{0%{left:calc(50% - 42px)}100%{left:calc(100% + 80px)}}
@keyframes rd-breathe{50%{transform:scaleY(1.025)}}
.rd-seasonal-toss{position:fixed;width:22px;height:22px;z-index:5;animation:rd-toss 3.5s cubic-bezier(.18,.72,.28,1) forwards;filter:drop-shadow(0 5px 6px rgba(0,0,0,.25))}
@keyframes rd-toss{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:1}55%{transform:translateY(-85px) rotate(210deg)}100%{transform:translateY(12px) rotate(420deg);opacity:0}}
.rd-seasonal-placed-decor{position:fixed;z-index:3;display:flex;align-items:flex-end;gap:2px;opacity:0;transform:translateY(10px) scale(.92);transition:opacity .7s ease,transform .7s ease}.rd-seasonal-placed-decor.is-visible{opacity:1;transform:none}.rd-seasonal-placed-decor img:first-child{width:58px;height:76px}.rd-seasonal-placed-decor img:last-child{width:35px;height:35px;margin-left:-8px;filter:drop-shadow(0 5px 6px rgba(0,0,0,.2))}
.rd-seasonal-firework{position:fixed;width:1px;height:1px;z-index:3}.rd-seasonal-firework i{position:absolute;left:0;top:0;width:4px;height:4px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:rd-firework 1.8s ease-out forwards;transform:rotate(var(--a)) translateX(0)}@keyframes rd-firework{0%{opacity:0;transform:rotate(var(--a)) translateX(0) scale(.3)}15%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--d)) scale(1)}}
.rd-seasonal-top1000-badge{position:fixed;width:74px;height:74px;z-index:4;filter:drop-shadow(0 12px 18px rgba(0,0,0,.28));animation:rd-badge-in 5.2s ease both}@keyframes rd-badge-in{0%,100%{opacity:0;transform:translateY(10px) scale(.88)}15%,80%{opacity:1;transform:none}}
.rd-seasonal-top1000-pulse{animation:rd-t1000-pulse 1.8s ease-in-out 2}@keyframes rd-t1000-pulse{50%{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 70%,transparent),0 0 28px color-mix(in srgb,var(--accent) 22%,transparent)}}
@media(prefers-reduced-motion:reduce){.rd-seasonal-actor,.rd-seasonal-toss,.rd-seasonal-firework,.rd-seasonal-top1000-badge,.rd-seasonal-spark-modern{animation:none!important}.rd-seasonal-actor{display:none}}
@media(max-width:700px){.rd-seasonal-actor{transform:scale(.78);transform-origin:bottom left}.rd-seasonal-placed-decor{transform:scale(.78);transform-origin:top left}.rd-seasonal-modules .module-heading::after{width:18px;height:18px}}

/* R3: eigen feestdag-afbeelding, Halloween en kleine interactieve decoraties. */
body[data-seasonal-mode="halloween"].rd-seasonal-modules .module-heading::after{background-image:url('../seasonal/pumpkin.svg')}
body.rd-seasonal-custom-icon.rd-seasonal-modules .module-heading::after{background-image:var(--rd-seasonal-module-icon)!important}
.rd-seasonal-floating-icon{position:absolute;bottom:-52px;width:var(--size,28px);height:var(--size,28px);object-fit:contain;opacity:.78;pointer-events:none;animation:rd-seasonal-float var(--time,25s) linear infinite;filter:drop-shadow(0 4px 6px rgba(0,0,0,.2))}
@keyframes rd-seasonal-float{0%{transform:translate3d(0,50px,0) rotate(-12deg);opacity:0}9%{opacity:.8}90%{opacity:.75}100%{transform:translate3d(54px,-112vh,0) rotate(85deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.rd-seasonal-floating-icon{display:none}}

/* R3 fix: feestdecoratie als hoeksticker buiten de modulekop, niet over de titel. */
body.rd-seasonal-modules .module-heading {
  position: relative;
  overflow: visible;
  padding-right: 22px;
}
body.rd-seasonal-modules .module-heading::after {
  right: -16px;
  top: -13px;
  width: 40px !important;
  height: 40px !important;
  transform: rotate(12deg);
  opacity: 1;
  z-index: 7;
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  pointer-events: none;
  filter: drop-shadow(0 3px 3px rgba(0,0,0,.46));
}
/* Oude Snowstorm-sneeuwvlokken mogen nooit knoppen of links onderscheppen. */
.rd-seasonal-classic-flake {
  pointer-events: none !important;
  user-select: none !important;
}
@media (max-width: 700px) {
  body.rd-seasonal-modules .module-heading { padding-right: 17px; }
  body.rd-seasonal-modules .module-heading::after {
    right: -11px;
    top: -10px;
    width: 33px !important;
    height: 33px !important;
  }
}
