/*
 * CPMG Christmas: everything is scoped to body.cpmg-xmas, so with the plugin off nothing leaks.
 * Palette keeps the brand burgundy as the base and adds gold, pine and snow.
 */
body.cpmg-xmas {
	--xm-gold: #f4c95d;
	--xm-gold-soft: #ffe7a3;
	--xm-pine: #1f6f4a;
	--xm-berry: #d7263d;
	--xm-snow: #fff;
	--xm-wine: #3a0211;
}

/* ---------- Layers that sit over the page and never block clicks ---------- */
.cpmg-xmas-snow,
.cpmg-xmas-frost,
.cpmg-xmas-sleigh,
.cpmg-xmas-spark {
	position: fixed;
	pointer-events: none;
}
.cpmg-xmas-snow {
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 99980;
}
.cpmg-xmas-frost {
	inset: 0;
	z-index: 99979;
	background:
		radial-gradient(120% 70% at 50% 120%, rgba(255, 255, 255, .10), transparent 60%),
		radial-gradient(60% 40% at 0% 0%, rgba(255, 255, 255, .06), transparent 70%),
		radial-gradient(60% 40% at 100% 0%, rgba(255, 255, 255, .06), transparent 70%);
}

/* ---------- Banner (normal flow, so it scrolls away and never fights the sticky header) ---------- */
.cpmg-xmas-banner {
	position: relative;
	z-index: 100;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 14px;
	padding: 9px 44px 9px 16px;
	font: 500 13px/1.4 Montserrat, system-ui, sans-serif;
	letter-spacing: .01em;
	color: var(--xm-gold-soft, #ffe7a3);
	text-align: center;
	background:
		linear-gradient(90deg, transparent 0 8%, rgba(244, 201, 93, .10) 50%, transparent 92%),
		linear-gradient(180deg, #1c0109, #2b020d);
	border-bottom: 1px solid rgba(244, 201, 93, .35);
}
.cpmg-xmas-banner[hidden] { display: none; }
.cpmg-xmas-banner__text { margin: 0; }
.cpmg-xmas-banner__text strong { color: #fff; font-weight: 600; }
.cpmg-xmas-banner__star {
	flex: none;
	width: 16px;
	height: 16px;
	background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23f4c95d' d='M12 1l2.6 7.4L22 9.2l-6 4.6 2.2 7.6L12 17l-6.2 4.4L8 13.8 2 9.2l7.4-.8z'/%3E%3C/svg%3E");
	animation: cpmg-twinkle 2.4s ease-in-out infinite;
}
.cpmg-xmas-banner__cta {
	flex: none;
	padding: 5px 14px;
	border-radius: 999px;
	font-weight: 700;
	font-size: 12px;
	color: #3a0211;
	text-decoration: none;
	background: linear-gradient(180deg, #ffe08a, #f4c95d);
	box-shadow: 0 0 14px rgba(244, 201, 93, .35);
	transition: transform .2s, box-shadow .2s;
}
.cpmg-xmas-banner__cta:hover { transform: translateY(-1px); box-shadow: 0 0 20px rgba(244, 201, 93, .6); color: #3a0211; }
.cpmg-xmas-banner__close {
	position: absolute;
	right: 10px;
	top: 50%;
	translate: 0 -50%;
	width: 28px;
	height: 28px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--xm-gold-soft, #ffe7a3);
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	opacity: .7;
}
.cpmg-xmas-banner__close:hover { opacity: 1; background: transparent; color: #fff; }
@media (max-width: 640px) {
	.cpmg-xmas-banner { flex-wrap: wrap; gap: 6px 12px; padding: 8px 40px 8px 12px; font-size: 12px; }
	.cpmg-xmas-banner__star { display: none; }
}

/* ---------- Fairy lights under the header pill ---------- */
.cpmg-xmas-lights {
	position: absolute;
	z-index: 60;
	height: 34px;
	pointer-events: none;
	overflow: visible;
}
.cpmg-xmas-lights > i {
	position: absolute;
	inset: 0;
	background-repeat: repeat-x;
	background-size: 120px 34px;
	filter: drop-shadow(0 0 5px rgba(255, 220, 140, .75));
}
.cpmg-xmas-lights > i:nth-child(1) { background-image: var(--xm-lights-a); }
.cpmg-xmas-lights > i:nth-child(2) { background-image: var(--xm-lights-b); animation: cpmg-blink 2.6s ease-in-out infinite; }
.cpmg-xmas-lights > i:nth-child(3) { background-image: var(--xm-lights-wire); filter: none; }

/* ---------- Santa hat on the logo ---------- */
.cpmg-xmas-hat {
	position: absolute;
	z-index: 5;
	width: 52%;
	right: -14%;
	top: -22%;
	rotate: 14deg;
	pointer-events: none;
	filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .35));
}
.cpmg-xmas-hat-host { position: relative; }

/* ---------- Snow on top of sections and cards ---------- */
.cpmg-xmas-cap {
	position: absolute;
	left: 0;
	right: 0;
	top: -1px;
	height: 26px;
	z-index: 4;
	pointer-events: none;
	background:
		repeat-x -70px top / 337px 19px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 26' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0h220v8c-9 0-12 7-22 7s-11-5-19-5-13 12-26 12-14-9-24-9-12 8-23 8-13-10-22-10-13 7-22 7-12-8-20-8-10 6-18 6-8-6-14-6z'/%3E%3C/svg%3E"),
		repeat-x top left / 220px 26px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 26' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0h220v8c-9 0-12 7-22 7s-11-5-19-5-13 12-26 12-14-9-24-9-12 8-23 8-13-10-22-10-13 7-22 7-12-8-20-8-10 6-18 6-8-6-14-6z'/%3E%3C/svg%3E");
	filter: drop-shadow(0 3px 3px rgba(0, 0, 0, .22));
	opacity: .96;
}

/* Holly sprig on the glass cards */
body.cpmg-xmas .cpmg-xmas-card { position: relative; }
body.cpmg-xmas .cpmg-xmas-card::after {
	content: "";
	position: absolute;
	top: -14px;
	right: -8px;
	width: 56px;
	height: 40px;
	pointer-events: none;
	z-index: 3;
	background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 70 50'%3E%3Cpath fill='%231f7a4d' stroke='%23125035' stroke-width='1.2' d='M35 28C28 14 12 12 4 20c8 2 12 10 20 12-8 1-14 8-14 8 12 4 24-2 25-12z'/%3E%3Cpath fill='%23268a57' stroke='%23125035' stroke-width='1.2' d='M35 28c7-14 23-16 31-8-8 2-12 10-20 12 8 1 14 8 14 8-12 4-24-2-25-12z'/%3E%3Ccircle cx='35' cy='30' r='6.2' fill='%23d7263d'/%3E%3Ccircle cx='26' cy='34' r='5.4' fill='%23c01f35'/%3E%3Ccircle cx='43' cy='34' r='5.4' fill='%23e03048'/%3E%3Ccircle cx='33' cy='28' r='1.8' fill='%23fff' opacity='.6'/%3E%3C/svg%3E");
	filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .3));
}

/* ---------- Hanging ornaments (desktop only, in the side margins of the hero) ---------- */
.cpmg-xmas-ornaments {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 70;
	overflow: hidden;
}
.cpmg-xmas-orn {
	position: absolute;
	top: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	transform-origin: 50% 0;
	animation: cpmg-swing var(--dur, 4.2s) ease-in-out var(--delay, 0s) infinite alternate;
}
.cpmg-xmas-orn__string {
	width: 1px;
	height: var(--len, 90px);
	background: linear-gradient(rgba(255, 255, 255, .15), rgba(255, 255, 255, .7));
}
.cpmg-xmas-orn svg {
	width: var(--size, 46px);
	height: auto;
	filter: drop-shadow(0 6px 6px rgba(0, 0, 0, .4));
}
@media (max-width: 1180px) { .cpmg-xmas-ornaments { display: none; } }

/* ---------- Buttons: warm gold edge + slow shimmer ---------- */
body.cpmg-xmas .elementor-button {
	position: relative;
	overflow: hidden;
	box-shadow: 0 0 0 1px rgba(244, 201, 93, .5);
	transition: box-shadow .3s, transform .3s;
}
body.cpmg-xmas .elementor-button::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(105deg, transparent 35%, rgba(255, 231, 163, .38) 50%, transparent 65%);
	transform: translateX(-120%);
	animation: cpmg-shimmer 9s ease-in-out 2s infinite;
}
body.cpmg-xmas .elementor-button:hover {
	box-shadow: 0 0 0 1px rgba(244, 201, 93, .9), 0 0 30px rgba(244, 201, 93, .45);
	transform: translateY(-1px);
}

/* Testimonial stars glow gold */
body.cpmg-xmas .elementskit-stars i,
body.cpmg-xmas .elementskit-stars svg {
	color: var(--xm-gold);
	fill: var(--xm-gold);
	filter: drop-shadow(0 0 4px rgba(244, 201, 93, .7));
}

/* Gentle gold underline on the main hero headline word emphasis */
body.cpmg-xmas .elementor-widget-heading .elementor-heading-title b,
body.cpmg-xmas .elementor-widget-heading .elementor-heading-title strong {
	text-shadow: 0 0 22px rgba(244, 201, 93, .35);
}

/* ---------- Footer winter scene ---------- */
#footer { position: relative; }
.cpmg-xmas-scene {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 100%;
	height: 92px;
	pointer-events: none;
	z-index: 6;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	padding: 0 3vw;
}
.cpmg-xmas-scene::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 16px;
	z-index: 1;
	background: repeat-x bottom left / 240px 16px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 16' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 16V9Q30 1 60 8T120 8T180 7T240 9V16z'/%3E%3C/svg%3E");
}
.cpmg-xmas-scene svg {
	position: relative;
	z-index: 2; height: 100%; width: auto; max-width: 46%; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .25)); }
.cpmg-xmas-scene .win { animation: cpmg-glow 3s ease-in-out infinite alternate; }
@media (max-width: 700px) { .cpmg-xmas-scene { height: 64px; } }

/* ---------- Sleigh pass ---------- */
.cpmg-xmas-sleigh {
	z-index: 99985;
	top: 22vh;
	left: 0;
	width: clamp(190px, 24vw, 360px);
	translate: -120% 0;
	opacity: 0;
	filter: drop-shadow(0 0 10px rgba(255, 224, 150, .55));
}
.cpmg-xmas-sleigh.is-flying { animation: cpmg-fly var(--fly, 15s) cubic-bezier(.35, .1, .65, .9) forwards; }
.cpmg-xmas-sleigh svg { display: block; width: 100%; height: auto; overflow: visible; }
.cpmg-xmas-sleigh .bob { animation: cpmg-bob 1.2s ease-in-out infinite alternate; transform-box: fill-box; }
.cpmg-xmas-sleigh .nose { animation: cpmg-glow 1s ease-in-out infinite alternate; }

/* ---------- Cursor sparkles ---------- */
.cpmg-xmas-spark {
	z-index: 99990;
	width: 10px;
	height: 10px;
	margin: -5px 0 0 -5px;
	background: no-repeat center / contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffe7a3' d='M12 0l3 9 9 3-9 3-3 9-3-9-9-3 9-3z'/%3E%3C/svg%3E");
	animation: cpmg-spark .8s ease-out forwards;
}

/* ---------- Keyframes ---------- */
@keyframes cpmg-twinkle { 0%, 100% { opacity: 1; transform: scale(1) rotate(0); } 50% { opacity: .55; transform: scale(.8) rotate(20deg); } }
@keyframes cpmg-blink { 0%, 100% { opacity: 1; } 50% { opacity: .08; } }
@keyframes cpmg-swing { from { rotate: -5deg; } to { rotate: 5deg; } }
@keyframes cpmg-shimmer { 0%, 70% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }
@keyframes cpmg-glow { from { opacity: .55; } to { opacity: 1; } }
@keyframes cpmg-bob { from { transform: translateY(-2px); } to { transform: translateY(3px); } }
@keyframes cpmg-fly {
	0% { translate: -120% 2vh; rotate: 5deg; opacity: 0; }
	6% { opacity: 1; }
	30% { translate: calc(30vw - 50%) -2vh; rotate: -3deg; }
	55% { translate: calc(55vw - 50%) 1vh; rotate: 3deg; }
	78% { translate: calc(80vw - 50%) -2vh; rotate: -2deg; }
	94% { opacity: 1; }
	100% { translate: calc(100vw + 10%) 1vh; rotate: 2deg; opacity: 0; }
}
@keyframes cpmg-spark { from { opacity: 1; transform: translateY(0) scale(1) rotate(0); } to { opacity: 0; transform: translateY(18px) scale(.2) rotate(120deg); } }

/* ---------- Respect motion preferences ---------- */
@media (prefers-reduced-motion: reduce) {
	.cpmg-xmas-snow,
	.cpmg-xmas-sleigh,
	.cpmg-xmas-spark { display: none !important; }
	.cpmg-xmas-orn,
	.cpmg-xmas-lights > i,
	.cpmg-xmas-banner__star,
	body.cpmg-xmas .elementor-button::before,
	.cpmg-xmas-scene .win { animation: none !important; }
}

/* ---------- Subtle level (default) ---------- */
.cpmg-xmas-lights--warm > i { filter: drop-shadow(0 0 4px rgba(255, 214, 130, .55)); }
.cpmg-xmas-lights--warm > i:nth-child(2) { animation: cpmg-breathe 3.6s ease-in-out infinite; }
@keyframes cpmg-breathe { 0%, 100% { opacity: 1; } 50% { opacity: .5; } }

/* Gold on the hero headline words that are already set apart in the design. */
body.cpmg-xmas .cpmg-xmas-hero .elementor-heading-title span {
	color: #f6dc9c;
	text-shadow: 0 0 28px rgba(244, 201, 93, .25);
}

/* Footer drift: a single soft edge, not a repeated pattern. */
#footer > .cpmg-xmas-cap { top: -2px; height: 22px; opacity: .92; }

/* ---------- Cursor (mouse users only; text fields keep the normal I-beam) ---------- */
@media (pointer: fine) {
	body.cpmg-xmas { cursor: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22%3E%3Cpath d=%22M4 3v19.5l5.2-4.6 3.5 8 3.4-1.5-3.4-7.7h7.3z%22 fill=%22%23fff%22 stroke=%22%233a0211%22 stroke-width=%221.6%22 stroke-linejoin=%22round%22/%3E%3Cpath d=%22M25.5 21l1.2 3.1 3.1 1.2-3.1 1.2-1.2 3.1-1.2-3.1-3.1-1.2 3.1-1.2z%22 fill=%22%23f4c95d%22 stroke=%22%238a6a14%22 stroke-width=%22.6%22/%3E%3C/svg%3E") 4 3, auto; }
	body.cpmg-xmas a,
	body.cpmg-xmas button,
	body.cpmg-xmas summary,
	body.cpmg-xmas select,
	body.cpmg-xmas [role="button"],
	body.cpmg-xmas .elementor-button,
	body.cpmg-xmas .elementor-tab-title,
	body.cpmg-xmas .e-n-accordion-item-title,
	body.cpmg-xmas .elementskit-accordion .ekit-accordion--toggler { cursor: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22 viewBox=%220 0 32 32%22%3E%3Cpath d=%22M4 3v19.5l5.2-4.6 3.5 8 3.4-1.5-3.4-7.7h7.3z%22 fill=%22%23ffe08a%22 stroke=%22%236a031d%22 stroke-width=%221.6%22 stroke-linejoin=%22round%22/%3E%3Ccircle cx=%229.5%22 cy=%2212%22 r=%221.5%22 fill=%22%23d7263d%22/%3E%3Cpath d=%22M25 18l1.5 3.8 3.8 1.5-3.8 1.5L25 28.6l-1.5-3.8-3.8-1.5 3.8-1.5z%22 fill=%22%23fff%22 stroke=%22%23d7263d%22 stroke-width=%22.7%22/%3E%3C/svg%3E") 4 3, pointer; }
}

/* ---------- Vector accents ---------- */
.cpmg-xmas-sparks { position: absolute; width: 64px; height: 64px; z-index: 8; pointer-events: none; }
.cpmg-xmas-sparks svg { position: absolute; }
.cpmg-xmas-sparks .s1 { left: 8px; top: 26px; width: 28px; height: 28px; }
.cpmg-xmas-sparks .s2 { left: 36px; top: 4px; width: 16px; height: 16px; animation-delay: -.8s; }
.cpmg-xmas-sparks .s3 { left: 44px; top: 38px; width: 11px; height: 11px; animation-delay: -1.6s; }
.cpmg-xmas-tw { filter: drop-shadow(0 0 4px rgba(244, 201, 93, .7)); animation: cpmg-twinkle 2.6s ease-in-out infinite; transform-origin: center; transform-box: fill-box; }

.cpmg-xmas-footerlot {
	position: absolute;
	right: max(16px, 5vw);
	bottom: calc(100% - 12px);
	z-index: 7;
	width: clamp(130px, 15vw, 230px);
	pointer-events: none;
}
.cpmg-xmas-footerlot svg { display: block; width: 100%; height: auto; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, .3)); }
.cpmg-xmas-bulb { animation: cpmg-glow 2.2s ease-in-out infinite alternate; filter: drop-shadow(0 0 3px rgba(255, 217, 120, .9)); }

/* ---------- Inner-page title accent ---------- */
.cpmg-xmas-rule {
	display: flex;
	align-items: center;
	gap: 10px;
	width: min(260px, 70%);
	margin: 6px auto 4px;
	pointer-events: none;
}
.cpmg-xmas-rule.is-start { margin-left: 0; margin-right: auto; }
.cpmg-xmas-rule::before,
.cpmg-xmas-rule::after {
	content: "";
	flex: 1;
	height: 1px;
	background: linear-gradient(90deg, transparent, rgba(244, 201, 93, .85));
}
.cpmg-xmas-rule::after { transform: scaleX(-1); }
.cpmg-xmas-rule svg { order: 0; }
.cpmg-xmas-rule svg { width: 18px; height: 18px; flex: none; }

/* ---------- Sleigh: moving legs, waving Santa ---------- */
.cpmg-xmas-sleigh .legA, .cpmg-xmas-sleigh .legB { transform-box: fill-box; transform-origin: 50% 0; animation: cpmg-leg .5s ease-in-out infinite alternate; }
.cpmg-xmas-sleigh .legB { animation-direction: alternate-reverse; }
.cpmg-xmas-sleigh .wave { transform-origin: 312px 56px; animation: cpmg-wave .7s ease-in-out infinite alternate; }
.cpmg-xmas-sleigh .trail path { animation: cpmg-twinkle 1.1s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.cpmg-xmas-sleigh .trail path:nth-child(2n) { animation-delay: -.5s; }
@keyframes cpmg-leg { from { rotate: -20deg; } to { rotate: 22deg; } }
@keyframes cpmg-wave { from { rotate: -14deg; } to { rotate: 20deg; } }

/* Lighter, shorter sparkle trail */
.cpmg-xmas-spark { width: 8px; height: 8px; margin: -4px 0 0 -4px; animation-duration: .9s; }

@media (prefers-reduced-motion: reduce) {
	.cpmg-xmas-tw, .cpmg-xmas-bulb { animation: none !important; }
}
