.holiday-snowflake { position: absolute; left: 0; top: -20px; width: var(--size); height: var(--size); opacity: var(--opacity); animation: holiday-snow var(--duration) linear var(--delay) infinite; }
.holiday-snowflake:not(.snow-crystal) { border-radius: 50%; background: #e4f4ff; }
.holiday-snowflake.snow-crystal { color: #e4f4ff; font: 13px/1 Arial, sans-serif; }
.new-year-sleigh { width: var(--sleigh-width); height: calc(var(--sleigh-width) * .5); filter: drop-shadow(0 0 6px #edcb7a44); }
.new-year-gift { width: 62px; height: 66px; }
.gift-box { position: absolute; left: 6px; bottom: 0; width: 50px; height: 43px; border: 1px solid #78a4c3; border-radius: 2px 2px 5px 5px; background: linear-gradient(120deg, #3d7b9e, #214761); box-shadow: 0 4px 10px #060e1c55; }
.gift-box::after, .gift-lid::after { content: ''; position: absolute; left: 20px; width: 9px; height: 100%; background: linear-gradient(90deg, #f5d58c, #d4a858); }
.gift-lid { position: absolute; left: 3px; top: 16px; width: 56px; height: 12px; border: 1px solid #87b5cf; border-radius: 3px; background: #3c789b; transform-origin: 5px 10px; transition: transform 550ms ease; }
.gift-lid::after { left: 23px; }
.gift-bow { position: absolute; left: 15px; top: -12px; width: 25px; height: 15px; border: 3px solid #e6c27d; border-radius: 50%; transform: rotate(-12deg); }
.gift-bow::after { content: ''; position: absolute; left: 8px; top: -3px; width: 19px; height: 13px; border: 3px solid #e6c27d; border-radius: 50%; transform: rotate(32deg); }
.gift-glow { position: absolute; left: -10px; bottom: -10px; width: 82px; height: 82px; border-radius: 50%; background: radial-gradient(circle, #f5ce7466, transparent 70%); animation: gift-glimmer 4s ease-in-out infinite; }
.new-year-gift[data-open="1"] .gift-lid { transform: translateY(-18px) rotate(-22deg); }
.holiday-gift-spark { position: absolute; color: var(--spark-color); font: 15px/1 Arial, sans-serif; animation: gift-spark 1600ms ease-out both; }
@keyframes holiday-snow {
    from { transform: translate3d(var(--x), -20px, 0) rotate(0); }
    50% { transform: translate3d(calc(var(--x) + var(--drift) * .35), 50vh, 0) rotate(90deg); }
    to { transform: translate3d(calc(var(--x) + var(--drift)), calc(100vh + 30px), 0) rotate(180deg); }
}
@keyframes gift-glimmer { 0%, 100% { opacity: .4; transform: scale(.85); } 50% { opacity: .8; transform: scale(1.1); } }
@keyframes gift-spark { 0% { opacity: 0; transform: translate3d(0, 0, 0) scale(.4); } 15% { opacity: .9; } 100% { opacity: 0; transform: translate3d(var(--dx), var(--dy), 0) rotate(100deg) scale(.3); } }
/* Modified 2026-11-12: Display twelve rabbit poses without blocking controls underneath. */
.christmas-rabbit { width: 140px; height: 176px; }
.christmas-rabbit-pose { width: 100%; height: 100%; background: url('rabbit.png') no-repeat; background-size: 400% 300%; }
/* Modified 2026-11-12: Wrap falling gifts in colored paper, ribbons and bows. */
.christmas-parcel { position: absolute; left: 0; top: 0; width: 30px; height: 28px; border: 1px solid #ffffff88; border-radius: 3px; background: linear-gradient(90deg, transparent 40%, #ffe7a0 40% 58%, transparent 58%), linear-gradient(0deg, transparent 40%, #ffe7a0 40% 58%, transparent 58%), radial-gradient(circle, #ffffff77 1px, transparent 2px) 0 0 / 8px 8px, var(--paper); box-shadow: 0 2px 5px #0003; }
.christmas-parcel::before { content: ''; position: absolute; width: 22px; height: 10px; left: 3px; top: -9px; border: 3px solid #ffe7a0; border-radius: 50%; }
.christmas-parcel.landed::after { content: '✦'; position: absolute; inset: -15px; text-align: center; color: #ffe7a0; font-size: 48px; animation: christmas-landing 1s ease-out both; }
@keyframes christmas-landing { from { opacity: 1; transform: scale(.4); } to { opacity: 0; transform: scale(1.6); } }
