/* Vounia winter layer. Everything here only applies while <html> has class "holiday",
   which the small gate script at the top of <head> adds during the holiday season.
   To switch the season off early, delete the gate script (or the files) — nothing else depends on it. */

/* ---------- Snow canvases ---------- */
html.holiday .snow-back,
html.holiday .snow-front,
html.holiday .snow-over{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;display:block;}
/* Home page: falling snow sits under the page content (z-index 1, before the content in the DOM),
   footprints and flakes show between the sections' backgrounds and the text. */
html.holiday .snow-back{z-index:1;}
html.holiday .snow-front{z-index:55;}
/* Other pages: a light snowfall over everything, under the nav */
html.holiday .snow-over{z-index:5;}
html.snow-off .snow-back,
html.snow-off .snow-front,
html.snow-off .snow-over{display:none;}

/* ---------- String lights under the nav ---------- */
.hl-lights{position:absolute;left:0;right:0;top:100%;height:30px;margin-top:-4px;pointer-events:none;overflow:visible;transition:transform .35s ease;}
/* once the page scrolls, the garland tucks up into the nav bar so it doesn't sit over the text */
nav.scrolled .hl-lights{transform:translateY(-15px);}
.hl-lights svg{display:block;overflow:visible;}
.hl-b{pointer-events:all;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.hl-bi{transform-box:fill-box;transform-origin:50% 0;transition:transform .18s ease;}
.hl-b:hover .hl-bi{transform:scale(1.28);}
.hl-glow{animation:hl-glow 2.6s ease-in-out infinite;animation-delay:var(--d,0s);}
.hl-glass{animation:hl-dim 2.6s ease-in-out infinite;animation-delay:var(--d,0s);}
.hl-b.pop .hl-bi{animation:hl-pop .45s cubic-bezier(.2,1.8,.4,1);}
.hl-lights.party .hl-glow{animation:hl-chase .9s steps(2,end) infinite;animation-delay:var(--c,0s);}
.hl-lights.party .hl-glass{animation:none;opacity:1;}
@keyframes hl-glow{0%,100%{opacity:.18}50%{opacity:.85}}
@keyframes hl-dim{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes hl-pop{0%{transform:scale(1)}40%{transform:scale(1.6)}100%{transform:scale(1)}}
@keyframes hl-chase{0%{opacity:1}100%{opacity:.05}}
html.snow-off .hl-glow,html.snow-off .hl-glass{animation:none;}
html.snow-off .hl-glow{opacity:.35;}

/* ---------- Snow on/off button in the nav ---------- */
.hl-navwrap{display:flex;align-items:center;gap:10px;}
.hl-toggle{width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(241,235,251,.35);background:transparent;color:#D6FF4F;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;flex-shrink:0;transition:border-color .2s ease, transform .2s ease;
  -webkit-tap-highlight-color:transparent;}
.hl-toggle:hover{border-color:#F1EBFB;transform:rotate(30deg);}
.hl-toggle svg{width:20px;height:20px;display:block;}
.hl-toggle .slash{display:none;}
.hl-toggle[aria-pressed="false"]{color:#B9A8D9;}
.hl-toggle[aria-pressed="false"] .slash{display:block;}

/* ---------- The winter detour band (home page) ---------- */
.hb{padding:120px 48px 0;overflow:hidden;background:linear-gradient(180deg,#130a24 0%,#1B0F2E 46%,#2A1B45 100%);}
.hb .wrap{z-index:1;}
.hb-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:stretch;}
.hb-copy{padding-bottom:196px;}
.hb-copy .lede{margin-bottom:34px;}
.hb-spot{min-height:220px;}
.hb-sky{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;}
.hb-stars{position:absolute;left:0;right:0;top:0;height:72%;opacity:.85;
  background-image:
    radial-gradient(1.6px 1.6px at 7% 18%,#fff 60%,transparent 62%),
    radial-gradient(1.2px 1.2px at 15% 46%,#F1EBFB 60%,transparent 62%),
    radial-gradient(1.8px 1.8px at 23% 9%,#D6FF4F 60%,transparent 62%),
    radial-gradient(1.2px 1.2px at 34% 30%,#fff 60%,transparent 62%),
    radial-gradient(1.5px 1.5px at 44% 12%,#F1EBFB 60%,transparent 62%),
    radial-gradient(1.2px 1.2px at 52% 38%,#fff 60%,transparent 62%),
    radial-gradient(1.7px 1.7px at 61% 20%,#FF4FA0 60%,transparent 62%),
    radial-gradient(1.2px 1.2px at 69% 7%,#fff 60%,transparent 62%),
    radial-gradient(1.4px 1.4px at 76% 33%,#F1EBFB 60%,transparent 62%),
    radial-gradient(1.2px 1.2px at 88% 24%,#fff 60%,transparent 62%),
    radial-gradient(1.6px 1.6px at 94% 50%,#D6FF4F 60%,transparent 62%),
    radial-gradient(1.1px 1.1px at 4% 62%,#fff 60%,transparent 62%),
    radial-gradient(1.1px 1.1px at 39% 58%,#F1EBFB 60%,transparent 62%),
    radial-gradient(1.3px 1.3px at 57% 64%,#fff 60%,transparent 62%);}
.hb-stars.twinkle{opacity:0;animation:hb-twinkle 4.8s ease-in-out infinite;
  background-position:3% 4%;}
@keyframes hb-twinkle{0%,100%{opacity:0}50%{opacity:.9}}
.hb-moon{position:absolute;top:84px;right:41%;width:56px;height:56px;border-radius:50%;
  box-shadow:13px -9px 0 0 #D6FF4F;transform:rotate(-16deg);filter:drop-shadow(0 0 22px rgba(214,255,79,.35));}
.hb-city{position:absolute;left:0;bottom:118px;width:100%;height:200px;display:block;}
.hb-ground{position:absolute;left:0;bottom:0;width:100%;height:150px;display:block;}
.hb-deco{position:absolute;bottom:0;display:block;overflow:visible;}
.hb-tree.t1{left:2.5%;bottom:96px;width:58px;}
.hb-tree.t2{left:8%;bottom:88px;width:84px;}
.hb-tree.t3{left:44%;bottom:100px;width:50px;}
.hb-snowman{left:24%;bottom:70px;width:70px;}
.hb-win{animation:hb-win 5s ease-in-out infinite;}
@keyframes hb-win{0%,100%{opacity:.9}50%{opacity:.35}}
.hb-tree .tl{animation:hb-win 1.8s ease-in-out infinite;}

/* ---------- The igloo (drawn in the crew layer by the page script) ---------- */
.igloo{position:absolute;top:0;left:0;pointer-events:none;overflow:visible;will-change:transform;}
.igloo .knock{pointer-events:all;cursor:pointer;}
.ig-back .ig-eyes{opacity:0;transition:opacity .25s ease;transform-box:fill-box;transform-origin:center;}
.ig-back.home .ig-eyes{opacity:1;animation:ig-blink 4.6s infinite;}
.ig-back .ig-door{animation:ig-flicker 3.2s ease-in-out infinite;}
.ig-bulb{animation:ig-tw 1.9s ease-in-out infinite;}
@keyframes ig-blink{0%,90%,100%{transform:scaleY(1)}94%{transform:scaleY(.1)}}
@keyframes ig-tw{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes ig-flicker{0%,100%{opacity:1}45%{opacity:.86}60%{opacity:.97}}

@media (max-width:900px){
  .hb{padding:96px 40px 0;}
  .hb-grid{grid-template-columns:1fr;gap:0;}
  .hb-copy{padding-bottom:0;}
  .hb-spot{min-height:350px;}
  .hb-city{bottom:92px;height:150px;}
  .hb-ground{height:120px;}
  .hb-moon{top:56px;right:16%;width:40px;height:40px;box-shadow:10px -7px 0 0 #D6FF4F;}
  nav.scrolled .hl-lights{transform:translateY(-13px);}
  .hb-tree.t1{left:auto;right:4%;bottom:74px;width:44px;}
  .hb-tree.t2{left:-14px;bottom:70px;width:62px;}
  .hb-tree.t3{display:none;}
  .hb-snowman{display:none;}
}

@media (prefers-reduced-motion:reduce){
  .hl-glow,.hl-glass,.hb-stars.twinkle,.hb-win,.hb-tree .tl,.ig-bulb,.ig-back .ig-door,.ig-back.home .ig-eyes{animation:none !important;}
  .hl-glow{opacity:.45;}
}

/* =====================================================================
   Round two: the big tree, the snowball fight, the sleigh and friends
   ===================================================================== */

/* The band's empty grid space lets taps through to the tree and sleigh underneath */
.hb .hb-grid{pointer-events:none;}
.hb .hb-copy{pointer-events:auto;}

/* ---------- Snowball fight sign (hero) ---------- */
#start .hero-grid > div:first-child{position:relative;}
html.holiday .hero{padding-bottom:180px;}
html.holiday .hl-sign{position:absolute;left:2px;top:100%;margin-top:24px;width:292px;height:122px;
  transform-origin:50% 100%;animation:hl-sway 5.5s ease-in-out infinite;user-select:none;-webkit-user-select:none;}
.hl-sign-post{position:absolute;left:50%;top:8px;bottom:-16px;width:10px;margin-left:-5px;border-radius:3px;
  background:linear-gradient(90deg,#6B4428,#9A6A48 45%,#6B4428);border:1.5px solid #1B0F2E;}
.hl-sign-top{position:absolute;left:0;right:0;top:0;height:44px;background:#D6FF4F;color:#1B0F2E;border:2px solid #1B0F2E;border-radius:10px;
  transform:rotate(-2.5deg);font-family:'Fraunces',serif;font-weight:700;font-size:21px;letter-spacing:-.01em;
  display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 5px 0 rgba(0,0,0,.28);}
.hl-sign-top::before{content:"";position:absolute;left:-5px;right:-5px;top:-11px;height:17px;pointer-events:none;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 20' preserveAspectRatio='none'><path d='M0 17 C3 9 9 7 15 9 C21 3 30 2 37 6 C45 1 55 1 62 5 C70 1 80 2 86 7 C92 5 98 9 100 17 L100 20 L0 20 Z' fill='%23ffffff'/><path d='M2 18 C5 12 9 10 15 11' fill='none' stroke='%23D9CDEA' stroke-width='1.5'/></svg>") center/100% 100% no-repeat;}
.hl-flake{color:#FF4FA0;font-size:19px;line-height:1;}
.hl-sign-tip{position:absolute;left:12px;right:12px;top:52px;height:36px;background:#F5F0FA;color:#1B0F2E;border:2px solid #1B0F2E;border-radius:8px;
  transform:rotate(1.6deg);font:600 13px/1.15 'Inter',sans-serif;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 8px;
  box-shadow:0 4px 0 rgba(0,0,0,.24);perspective:400px;}
#snowTip{display:inline-block;transition:transform .26s ease, opacity .26s ease;}
#snowTip.flip{transform:rotateX(90deg);opacity:0;}
.hl-sign-score{position:absolute;left:70px;right:70px;top:96px;height:26px;background:#2A1B45;border:2px solid #1B0F2E;border-radius:7px;
  color:#D6FF4F;font:600 11.5px/1 'IBM Plex Mono',monospace;letter-spacing:.08em;display:flex;align-items:center;justify-content:center;gap:5px;}
.hl-sign-score b{color:#fff;font-size:14px;min-width:10px;text-align:center;}
.hl-sign-score i{color:#FF4FA0;font-style:normal;}
.hl-sign.hit{animation:hl-wobble .7s ease;}
.hl-sign-score.bump b{animation:hl-bump .45s cubic-bezier(.2,1.8,.4,1);}
@keyframes hl-sway{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(1.2deg)}}
@keyframes hl-wobble{0%{transform:rotate(0)}20%{transform:rotate(-7deg)}45%{transform:rotate(5deg)}70%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
@keyframes hl-bump{0%{transform:scale(1)}40%{transform:scale(1.7)}100%{transform:scale(1)}}
@media (max-width:900px){
  html.holiday .hero{padding-bottom:110px;}
  html.holiday .hl-sign{position:relative;left:auto;top:auto;margin:30px 0 14px 2px;width:min(292px,100%);}
}
@media (max-width:340px){ html.holiday #snowSign{display:none;} }

/* ---------- Score chip (shows for a few seconds whenever the score changes) ---------- */
.hl-score{position:fixed;left:16px;bottom:16px;z-index:58;background:#2A1B45;color:#D6FF4F;border:2px solid #1B0F2E;border-radius:999px;padding:9px 15px;
  font:600 12.5px/1 'IBM Plex Mono',monospace;letter-spacing:.08em;box-shadow:0 8px 22px rgba(0,0,0,.35);opacity:0;transform:translateY(24px);
  transition:opacity .25s ease, transform .35s cubic-bezier(.2,1.6,.4,1);pointer-events:none;}
.hl-score.show{opacity:1;transform:none;}
.hl-score b{color:#fff;font-size:15px;margin:0 3px;}
.hl-score i{color:#FF4FA0;font-style:normal;}
@media (max-width:900px){ .hl-score{bottom:90px;} }

/* ---------- Snowball cursor (mouse only, while snow is on) ---------- */
html.hl-throwing body{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'><circle cx='13' cy='13' r='9.5' fill='%23ffffff' stroke='%231B0F2E' stroke-width='2'/><path d='M7.6 15.6 a6.2 6.2 0 0 0 9 2.6' fill='none' stroke='%23C9BCE3' stroke-width='2.4' stroke-linecap='round'/><circle cx='10' cy='9.6' r='1.6' fill='%23F1EBFB'/></svg>") 13 13, crosshair;}
html.hl-throwing a,html.hl-throwing button,html.hl-throwing summary,html.hl-throwing .chip,html.hl-throwing .ticket,
html.hl-throwing [role="button"],html.hl-throwing .hl-b,html.hl-throwing .knock,html.hl-throwing .xm-hit,html.hl-throwing .xm-star,
html.hl-throwing .xm-gift,html.hl-throwing .xm-sleigh,html.hl-throwing .xm-drop{cursor:pointer;}

/* ---------- Bows on the lime booking buttons ---------- */
html.holiday .btn-lime,html.holiday .nav-cta{position:relative;}
html.holiday .btn-lime::after,html.holiday .nav-cta::after,html.holiday .sticky-cta::after{content:"";position:absolute;top:-12px;right:16px;width:32px;height:21px;pointer-events:none;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 26'><path d='M20 13 C13 2 3 2 3 9 C3 16 12 16 20 13 Z M20 13 C27 2 37 2 37 9 C37 16 28 16 20 13 Z' fill='%23FF4FA0' stroke='%231B0F2E' stroke-width='2' stroke-linejoin='round'/><path d='M18 14 L12 24 L16 23 L18 25.5 Z M22 14 L28 24 L24 23 L22 25.5 Z' fill='%23FF4FA0' stroke='%231B0F2E' stroke-width='1.8' stroke-linejoin='round'/><circle cx='20' cy='13' r='4' fill='%23D6FF4F' stroke='%231B0F2E' stroke-width='2'/></svg>") center/contain no-repeat;}
html.holiday .nav-cta::after{top:-10px;right:10px;width:25px;height:17px;}

/* ---------- Candy-cane X at the final stop ---------- */
html.holiday .final-x line,html.holiday .reached .final-x line{stroke:#FF4FA0;}
html.holiday .final-x line.cane,html.holiday .reached .final-x line.cane{stroke:#fff;stroke-dasharray:6 7;stroke-linecap:butt;}

/* ---------- Snow piling up on the cards ---------- */
.hl-cap{position:absolute;left:3%;right:3%;top:-13px;height:21px;z-index:3;pointer-events:none;transform-origin:50% 62%;
  animation:hl-cap 6s ease-out both;}
.hl-cap svg{display:block;width:100%;height:100%;overflow:visible;}
.hl-cap.dot{left:9px;right:9px;top:-10px;height:15px;}
@keyframes hl-cap{from{transform:scaleY(.05);opacity:.3}to{transform:scaleY(1);opacity:1}}
html.snow-off .hl-cap{display:none;}

/* ---------- The big tree ---------- */
.xm-tree{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;}
.xm-tree .xm-hit,.xm-tree .xm-star,.xm-tree .xm-gift{pointer-events:visiblePainted;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.xm-tree .lamp{transition:fill .3s ease;}
.xm-bulb:not(.on) .lamp{fill:#2B1F47;}
.xm-tree .glow{opacity:0;transition:opacity .4s ease;}
.xm-bulb.on .glow{opacity:.9;}
.xm-tree.lit.m-twinkle .xm-bulb{animation:xm-tw 1.8s ease-in-out infinite;animation-delay:var(--tw,0s);}
.xm-tree.lit.m-chase .xm-bulb{animation:xm-chase 1.1s steps(2,end) infinite;animation-delay:calc(var(--i) * -.05s);}
.xm-tree.lit.m-candy .xm-bulb.odd .lamp{fill:#FF4FA0;}
.xm-tree.lit.m-candy .xm-bulb.even .lamp{fill:#FFFFFF;}
.xm-tree.lit.m-candy .xm-bulb{animation:xm-chase .9s steps(2,end) infinite;}
.xm-tree.lit.m-candy .xm-bulb.odd{animation-delay:-.45s;}
.xm-tree.lit.m-rainbow .xm-lights{animation:xm-hue 2.4s linear infinite;}
.xm-tree .star{fill:#4C4A33;transition:fill .5s ease;}
.xm-tree.star-on .star{fill:#FFE45E;}
.xm-rays{opacity:0;transition:opacity .6s ease;transform-box:fill-box;transform-origin:center;}
.xm-tree.star-on .xm-rays{opacity:1;animation:xm-spin 10s linear infinite;}
.xm-halo{opacity:0;transition:opacity 1.4s ease .5s;}
.xm-tree.lit .xm-halo{opacity:.55;}
.xm-foliage.shake{animation:xm-shake .55s ease;transform-box:fill-box;transform-origin:50% 100%;}
.xm-orn .sw{transform-box:fill-box;transform-origin:50% 0;animation:xm-swing 3.4s ease-in-out infinite;animation-delay:var(--sd,0s);}
.xm-orn.new .sw{animation:xm-drop .65s cubic-bezier(.2,1.7,.4,1), xm-swing 3.4s ease-in-out .65s infinite;}
.xm-gift .lid{transform-box:fill-box;transform-origin:0% 100%;transition:transform .4s cubic-bezier(.2,1.7,.4,1);}
.xm-gift.open .lid{transform:rotate(-32deg) translate(-1px,-3px);}
.xm-gift:hover .box{filter:brightness(1.08);}
.xm-tag{transform-box:fill-box;transform-origin:50% 0;animation:xm-swing 2.8s ease-in-out infinite;transition:opacity .4s ease;}
.xm-tag.gone{opacity:0;}
@keyframes xm-tw{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes xm-chase{0%{opacity:1}100%{opacity:.18}}
@keyframes xm-hue{from{filter:hue-rotate(0deg)}to{filter:hue-rotate(360deg)}}
@keyframes xm-spin{to{transform:rotate(360deg)}}
@keyframes xm-shake{0%,100%{transform:rotate(0)}25%{transform:rotate(-1.6deg)}55%{transform:rotate(1.3deg)}80%{transform:rotate(-.6deg)}}
@keyframes xm-swing{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes xm-drop{0%{transform:translateY(-16px) scale(.3);opacity:0}100%{transform:none;opacity:1}}

/* gift cards that pop out of the presents */
.xm-card{position:absolute;z-index:6;width:214px;background:#F5F0FA;color:#1B0F2E;border:2px solid #1B0F2E;border-radius:14px;padding:12px 30px 13px 14px;
  box-shadow:0 8px 0 rgba(0,0,0,.28);pointer-events:auto;font:14px/1.42 'Inter',sans-serif;transform-origin:50% 100%;animation:xm-pop .38s cubic-bezier(.2,1.6,.4,1);}
.xm-card b{display:block;font-family:'Fraunces',serif;font-size:18px;line-height:1.15;margin-bottom:4px;}
.xm-card a{display:inline-block;margin-top:9px;background:#D6FF4F;color:#1B0F2E;font-weight:700;padding:7px 13px;border-radius:999px;font-size:13.5px;border:1.5px solid #1B0F2E;}
.xm-card .xm-x{position:absolute;top:3px;right:6px;border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:#1B0F2E;padding:4px;}
@keyframes xm-pop{0%{transform:scale(.4);opacity:0}100%{transform:none;opacity:1}}

/* ---------- Santa's sleigh ---------- */
.xm-sleigh{position:absolute;left:0;top:0;overflow:visible;pointer-events:visiblePainted;cursor:pointer;will-change:transform;}
.xm-sleigh .xm-leg{transform-box:fill-box;transform-origin:50% 0;animation:xm-gallop .42s ease-in-out infinite alternate;}
.xm-sleigh .xm-leg.b{animation-delay:-.21s;}
.xm-sleigh .xm-wave{transform-box:fill-box;transform-origin:15% 90%;animation:xm-wave .5s ease-in-out infinite alternate;}
.xm-spark{position:absolute;left:0;top:0;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;pointer-events:none;}
.xm-drop{position:absolute;left:0;top:0;overflow:visible;pointer-events:visiblePainted;cursor:pointer;will-change:transform;}
@keyframes xm-gallop{from{transform:rotate(-28deg)}to{transform:rotate(26deg)}}
@keyframes xm-wave{from{transform:rotate(-12deg)}to{transform:rotate(22deg)}}

@media (prefers-reduced-motion:reduce){
  html.holiday .hl-sign,.hl-cap,.xm-orn .sw,.xm-orn.new .sw,.xm-tag,.xm-tree.lit .xm-bulb,.xm-tree.star-on .xm-rays,
  .xm-tree.lit.m-rainbow .xm-lights,.xm-sleigh .xm-leg,.xm-sleigh .xm-wave,.xm-card{animation:none !important;}
  .xm-tree .lamp,.xm-tree .glow{transition:none;}
}
