/* STOPLED — Decoraciones estacionales. Solo capa visual; no modifica la web ni el SEO. */
:root { color-scheme:light; }
.season-strip{display:none; height:49px; overflow:hidden; position:relative; align-items:center; justify-content:center; gap:17px; text-align:center; padding:7px 18px; z-index:4; font-family:'DM Sans',system-ui,sans-serif; }
.season-strip .season-message {font-size:11px;font-weight:900;letter-spacing:.14em; text-transform:uppercase; position:relative;z-index:1;}
.season-strip .season-sub{font-size:11px;position:relative;z-index:1;font-weight:700;opacity:.82}
.season-strip .bulbs{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:space-around;pointer-events:none;opacity:.88}
.season-strip .bulbs i{height:13px;width:7px;border-radius:50% 50% 40% 40%;background:var(--bulb);box-shadow:0 0 10px 1px var(--bulb);margin-top:1px;animation:season-twinkle 2.8s ease-in-out infinite;animation-delay:var(--delay)}
.season-strip .bulbs i:before{content:'';display:block;width:4px;height:4px;border:1px solid #42464b;margin:-4px auto 0;border-radius:2px;}
@keyframes season-twinkle{0%,100%{opacity:.65;filter:brightness(.9)}40%{opacity:1;filter:brightness(1.35)}}
html[data-theme='navidad'] .season-strip{display:flex; background:linear-gradient(90deg,#12392f,#244c3d,#12392f);color:#fff9e8;border-bottom:1px solid #d9b877;}
html[data-theme='halloween'] .season-strip{display:flex;background:linear-gradient(90deg,#2b1b2d,#3a2630,#2b1b2d);color:#ffe2b4;border-bottom:1px solid #9a5d32;}
html[data-theme='halloween'] .season-strip .bulbs i{background:#ff9a39;box-shadow:0 0 11px #ff8a1c;}
html[data-theme='navidad'] .header{border-bottom-color:#d6e0d5;}
html[data-theme='halloween'] .header{border-bottom-color:#d2b8ad;background:rgba(255,250,245,.98);}
html[data-theme='navidad'] .hero,html[data-theme='navidad'] .page-head,html[data-theme='navidad'] .quote-hero { background:linear-gradient(125deg,#fbfdfb 0%,#f2f8f4 50%,#fffaf0 100%); }
html[data-theme='halloween'] .hero,html[data-theme='halloween'] .page-head,html[data-theme='halloween'] .quote-hero { background:linear-gradient(125deg,#171a23 0%,#282330 63%,#35272b 100%); }
html[data-theme='halloween'] .hero h1,html[data-theme='halloween'] .page-head h1,html[data-theme='halloween'] .quote-copy h1 {color:#fff8f3;}
html[data-theme='halloween'] .hero .lead,html[data-theme='halloween'] .page-head .lead,html[data-theme='halloween'] .quote-copy .lead {color:#e4dad5;}
html[data-theme='halloween'] .hero .eyebrow,html[data-theme='halloween'] .page-head .eyebrow,html[data-theme='halloween'] .quote-copy .eyebrow{color:#ffbd7e;}
html[data-theme='halloween'] .hero .eyebrow:before,html[data-theme='halloween'] .page-head .eyebrow:before,html[data-theme='halloween'] .quote-copy .eyebrow:before{background:#ffbd7e;}
html[data-theme='halloween'] .hero .mini-trust,html[data-theme='halloween'] .quote-perks li{color:#e3d2d0;}
html[data-theme='halloween'] .hero .mini-trust .trust-icon{color:#ffc899;border-color:#b99c96;}
html[data-theme='halloween'] .hero .button-outline,html[data-theme='halloween'] .page-head .button-outline{color:#fff;border-color:#a89a9c;}
html[data-theme='halloween'] .hero h1 strong{color:#ff6978;}
html[data-theme='halloween'] .hero-copy .lead .hero-patent{color:#ff7984;}
html[data-theme='halloween'] .hero:before{opacity:.06;}
html[data-theme='navidad'] .hero:before{opacity:.13;}
html[data-theme='halloween'] .float-chip{background:#29212c;color:#fff;border:1px solid #9b6e51;}
html[data-theme='navidad'] .hero-art:after{background:#d6a840;}
html[data-theme='halloween'] .hero-art:after{background:#f4a047;}
.season-scene{display:none;position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;}
html[data-theme='navidad'] .season-scene,html[data-theme='halloween'] .season-scene{display:block;}
.hero>.container,.page-head>.container,.quote-hero>.container{position:relative;z-index:2;}
.snowflake{position:absolute;top:-18px;left:var(--pos);color:#668ca0; opacity:.52;font-size:var(--size);animation:season-snow var(--time) linear infinite;animation-delay:var(--wait);white-space:nowrap;}
@keyframes season-snow {0%{transform:translate(0,-25px) rotate(0deg);opacity:0}10%{opacity:.45}90%{opacity:.5}100%{transform:translate(22px,740px) rotate(110deg);opacity:0}}
html[data-theme='halloween'] .snowflake{display:none;}
html[data-theme='navidad'] .season-bat,html[data-theme='navidad'] .season-web{display:none;}
.season-bat{position:absolute;top:var(--top);left:var(--left);width:var(--bat-size);height:auto;fill:#c39577;opacity:.25;animation:season-wing 7s ease-in-out infinite alternate;animation-delay:var(--wait)}
@keyframes season-wing{0%{transform:translate(0,0) rotate(-5deg)}100%{transform:translate(13px,-13px) rotate(11deg)}}
.season-web{position:absolute;right:-12px;top:-10px;width:190px;height:190px;stroke:#ad795c;fill:none;stroke-width:2;opacity:.32;}
.season-badge{display:none;position:absolute;top:105px;right:-18px;align-items:center;gap:9px;z-index:3;padding:10px 13px;border-radius:8px;color:white;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;box-shadow:0 12px 27px rgba(0,0,0,.2);}
.season-badge svg{width:18px;height:18px;flex:none;}
html[data-theme='navidad'] .season-badge{display:flex;background:#194539;border:1px solid #e8d5a4;}
html[data-theme='halloween'] .season-badge{display:flex;background:#362131;border:1px solid #ef9b50;}
.season-switcher{position:fixed;right:22px;bottom:23px;z-index:190;font-family:'DM Sans',system-ui,-apple-system,sans-serif;text-align:left;}
.season-toggle{display:flex;align-items:center;justify-content:center;gap:10px;min-height:47px;padding:9px 17px;color:#fff;background:#24262d;border:1px solid #4a4e56;border-radius:50px;box-shadow:0 8px 27px #10121a42;font-size:12px;font-weight:900;letter-spacing:.01em;cursor:pointer;}
.season-toggle svg{width:18px;height:18px;stroke:#ffdcad;fill:none;stroke-width:1.8;}
.season-panel{position:absolute;right:0;bottom:calc(100% + 12px);width:min(326px,calc(100vw - 28px));padding:21px;border-radius:16px;background:#fff;color:#22252a;border:1px solid #e2e3e5;box-shadow:0 19px 65px #141b2e40;}
.season-panel[hidden]{display:none;}
.season-panel h3{font-size:18px;letter-spacing:-.04em;margin:0 0 8px;font-weight:900;}
.season-panel p{font-size:12px;color:#696e77;line-height:1.6;margin:0 0 17px;}
.season-option{width:100%;display:flex;align-items:center;gap:11px;border:1px solid #e4e6e8;background:#fff;color:#24262b;border-radius:11px;padding:12px;text-align:left;min-height:58px;margin-top:9px;cursor:pointer;}
.season-option:hover,.season-option:focus-visible{border-color:#b92230;}
.season-option[aria-pressed='true']{background:#fff6f6;border-color:#bb1f2e;box-shadow:inset 0 0 0 1px #bb1f2e;}
.season-dot{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;flex:none;font-size:17px;}
.season-dot.plain{background:#f0f1f2;color:#383b42;}
.season-dot.xmas{background:#e1f0e7;color:#1d6a3b;}
.season-dot.hallo{background:#fae8d3;color:#a24e16;}
.season-dot.auto{background:#e9e6f5;color:#5444a1;}
.season-option strong,.season-option small{display:block;}
.season-option strong{font-size:12px;font-weight:850;}
.season-option small{font-size:10px;color:#7e838b;margin-top:2px;line-height:1.35;}
.season-check{margin-left:auto;color:#b9212d;font-size:20px;font-weight:900;opacity:0;}
.season-option[aria-pressed='true'] .season-check{opacity:1;}
.season-panel .season-footnote{font-size:10px;color:#868b91;border-top:1px solid #ededee;padding-top:13px;margin:15px 0 0;line-height:1.5;}
@media(max-width:860px){.season-badge{right:10px;top:80px}}
@media(max-width:570px){.season-switcher{right:12px;bottom:82px}.season-toggle{min-height:40px;padding:6px 11px;font-size:11px}.season-strip{height:43px;gap:7px;padding:7px 12px}.season-strip .season-message{font-size:9px;letter-spacing:.07em}.season-strip .season-sub{font-size:9px;}.season-badge{top:80px;right:12px;font-size:8px;gap:5px}.season-panel{padding:16px}.season-web{width:105px;height:105px}.snowflake{opacity:.3}}
@media(prefers-reduced-motion:reduce){.snowflake,.season-bat,.season-strip .bulbs i{animation:none!important}.snowflake{display:none;}.season-bat{opacity:.20}}

html[data-theme='halloween'] .hero .mini-trust .hero-patent{color:#ff7583;}
@media(max-width:570px){.season-strip .season-sub{display:none}.season-strip .season-message{font-size:10px;letter-spacing:.1em}}

/* V9 - Mayor presencia de nieve, caramelos y Papá Noel en liana de luces */
html[data-theme='navidad'] .snowflake {color:#6187a9;opacity:var(--alpha);text-shadow:0 1px 1px rgba(255,255,255,.95),0 0 4px rgba(255,255,255,.7);font-size:var(--size);animation:season-fall var(--time) linear infinite;animation-delay:var(--wait);}
html[data-theme='halloween'] .snowflake {display:none}
@keyframes season-fall {0%{transform:translate3d(0,-35px,0) rotate(0deg);opacity:0}9%{opacity:var(--alpha)}85%{opacity:var(--alpha)}100%{transform:translate3d(var(--drift),var(--fall-dist),0) rotate(145deg);opacity:0}}
.season-candy{display:none;position:absolute;top:0;left:var(--pos);font-size:var(--size);white-space:nowrap;opacity:0;filter:drop-shadow(0 2px 2px #1a0d2070);will-change:transform;}
html[data-theme='halloween'] .season-candy{display:block;animation:season-candy-fall var(--time) linear infinite;animation-delay:var(--wait)}
@keyframes season-candy-fall{0%{transform:translate3d(0,-32px,0) rotate(-18deg);opacity:0}8%{opacity:.96}90%{opacity:.96}100%{transform:translate3d(var(--drift),var(--fall-dist),0) rotate(370deg);opacity:0}}
.season-santa{display:none;position:absolute;top:0;left:-225px;width:210px;height:270px;pointer-events:none;will-change:transform;}
html[data-theme='navidad'] .season-santa{display:block;animation:santa-cross 27s linear infinite;animation-delay:-4s;}
.santa-rope{display:block;width:100%;height:auto;transform-origin:49% -5%;animation:santa-swing 2.8s ease-in-out infinite alternate;filter:drop-shadow(0 4px 3px #172d2848);}
.santa-lights ellipse{filter:drop-shadow(0 0 3px #fff8cf);}
@keyframes santa-cross{0%,9%{transform:translate3d(-40px,-20px,0);opacity:0}10%{opacity:1}13%{transform:translate3d(4vw,1px,0)}28%{transform:translate3d(55vw,-18px,0);opacity:1}37%{transform:translate3d(calc(100vw + 260px),-4px,0);opacity:1}38%,100%{transform:translate3d(calc(100vw + 260px),-4px,0);opacity:0}}
@keyframes santa-swing{0%{transform:rotate(-16deg)}100%{transform:rotate(16deg)}}
@media(max-width:570px){
  .snowflake{font-size:var(--size);}
  html[data-theme='navidad'] .snowflake:nth-of-type(3n){display:none}
  html[data-theme='halloween'] .season-candy:nth-of-type(3n){display:none}
  .season-santa{width:126px;top:0}
}
@media(prefers-reduced-motion:reduce){
  html[data-theme='navidad'] .snowflake,html[data-theme='halloween'] .season-candy,html[data-theme='navidad'] .season-santa{animation:none!important;display:none!important}
  .santa-rope{animation:none!important}
}

/* Animated cartoon Santa, without external assets. */
.santa-person{transform-origin:122px 155px;animation:santa-bob 1.3s ease-in-out infinite alternate}
.santa-legs{transform-origin:127px 230px;animation:santa-kick 1s ease-in-out infinite alternate}
.santa-lights ellipse{animation:santa-bulbs .85s ease-in-out infinite alternate}
.santa-lights ellipse:nth-child(2n){animation-delay:-.45s}
@keyframes santa-bob{from{transform:translate(0,1px) rotate(-2deg)}to{transform:translate(1px,-4px) rotate(2deg)}}
@keyframes santa-kick{from{transform:rotate(-4deg)}to{transform:rotate(7deg)}}
@keyframes santa-bulbs{from{opacity:.42}to{opacity:1;filter:drop-shadow(0 0 5px #ffedaf)}}
@media (prefers-reduced-motion:reduce){.santa-person,.santa-legs,.santa-lights ellipse{animation:none!important}}

/* STOPLED v12 — En móvil los controles temporales no deben tapar fotos ni contenido. */
@media (max-width: 570px) {
  .season-badge { display: none !important; }
  .season-switcher { display: none !important; }
  .season-strip { min-height: 35px; height: auto; padding: 9px 12px; }
  .season-strip .season-message { font-size: 10px; }
  .season-strip .season-sub { display: none; }
  .season-candy { font-size: min(var(--size), 16px); }
  .season-santa { width: 98px; }
}

/* STOPLED v12 — En móvil los controles temporales no deben tapar fotos ni contenido. */
@media (max-width: 570px) {
  .season-badge { display: none !important; }
  .season-switcher { display: none !important; }
  .season-strip { min-height: 35px; height: auto; padding: 9px 12px; }
  .season-strip .season-message { font-size: 10px; }
  .season-strip .season-sub { display: none; }
  .season-candy { font-size: min(var(--size), 16px); }
  .season-santa { width: 98px; }
}


/* STOPLED v18 — Halloween: dulces más grandes y aparición de zombi tras 10 segundos. */
html[data-theme='halloween'] .season-candy { font-size: var(--size); }
@media (max-width:570px) {
  html[data-theme='halloween'] .season-candy { font-size: min(var(--size), 32px); }
}
.halloween-zombie {
  position:fixed; inset:0; z-index:2147482000;
  pointer-events:none; overflow:hidden;
  visibility:hidden; opacity:0;
  transition:opacity .28s ease, visibility 0s linear .28s;
}
html[data-theme='halloween'] .halloween-zombie.is-awake {
  visibility:visible;opacity:1;transition:opacity .28s ease;
}
.halloween-zombie.is-fading { opacity:0 !important;visibility:hidden !important; }
.halloween-zombie .zombie-mist {
  position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 100%, rgba(37,68,47,.34) 0%,rgba(20,18,32,.10) 46%,transparent 82%);
  opacity:0;
}
.halloween-zombie.is-awake .zombie-mist {animation:zombie-fog 4.6s ease-out forwards;}
.halloween-zombie .zombie-first-hand {
  position:absolute;left:calc(50% - 70px);bottom:-8px;
  width:clamp(155px,24vw,280px);height:auto;
  transform:translateY(115%);opacity:0;
  filter:drop-shadow(0 10px 14px rgba(0,0,0,.45));
}
.halloween-zombie.is-awake .zombie-first-hand {
  animation:zombie-hand-emerge 1.45s cubic-bezier(.16,.7,.2,1) forwards,
    zombie-hand-retreat .48s ease 2s forwards;
}
.halloween-zombie .zombie-creature {
  position:absolute;left:50%;bottom:-3%;
  width:min(96vw,790px);height:min(105vh,1030px);
  object-fit:contain;object-position:center bottom;
  transform:translate(-50%,108%);
  filter:drop-shadow(0 5px 25px rgba(0,0,0,.68));
}
.halloween-zombie.is-awake .zombie-creature {
  animation:zombie-climb 5.1s cubic-bezier(.22,.62,.17,.98) .65s forwards;
}
@keyframes zombie-hand-emerge {
  0%{transform:translateY(115%) rotate(16deg);opacity:0}
  20%{opacity:1}
  70%{transform:translateY(22%) rotate(-5deg);opacity:1}
  100%{transform:translateY(5%) rotate(2deg);opacity:1}
}
@keyframes zombie-hand-retreat{to{opacity:0;transform:translateY(12%) rotate(-9deg)}}
@keyframes zombie-climb{
  0%{transform:translate(-50%,108%)}
  26%{transform:translate(-50%,75%) rotate(-2deg)}
  60%{transform:translate(-50%,28%) rotate(1.5deg)}
  100%{transform:translate(-50%,0) rotate(0deg)}
}
@keyframes zombie-fog {0%{opacity:0}50%{opacity:.65}100%{opacity:.82}}
/* STOPLED V20: Halloween zombie is now available on mobile too.
   Touch, swipe or scrolling dismisses it. Art has pointer-events:none. */
@media(max-width:767px), (hover:none), (pointer:coarse){
  .halloween-zombie { pointer-events:none; }
  .halloween-zombie .zombie-creature {
    width:auto; height:min(109dvh,1050px); max-width:none; max-height:none;
    bottom:-4dvh; object-fit:contain; object-position:center bottom;
  }
  .halloween-zombie .zombie-first-hand{
    width:clamp(180px,49vw,260px);
    left:calc(50% - 63px); bottom:0;
  }
  .halloween-zombie.is-awake .zombie-creature{
    animation:zombie-climb-mobile 5.5s cubic-bezier(.19,.59,.18,1) .55s forwards;
  }
  .halloween-zombie .zombie-mist{
    background:radial-gradient(ellipse at 50% 96%,rgba(37,68,47,.29) 0%,rgba(20,18,32,.08) 53%,transparent 85%);
  }
}
@keyframes zombie-climb-mobile {
  0%{transform:translate(-50%,108%) rotate(-1deg)}
  28%{transform:translate(-50%,75%) rotate(-3deg)}
  64%{transform:translate(-50%,28%) rotate(2deg)}
  100%{transform:translate(-50%,-1%) rotate(0)}
}
@media(prefers-reduced-motion:reduce){
  .halloween-zombie{display:none!important}
  html[data-theme='halloween'] .season-candy{display:none!important}
}


/* STOPLED V21 — Espectáculos de inactividad en Halloween y Navidad.
   Las animaciones no interceptan eventos; tras el primer gesto desaparecen.
   Zombi 0–9 s, rotura de cristal 9–12 s, Drácula 11–21 s.
   Se ocultan por completo fuera de la decoración correspondiente. */
.seasonal-show{pointer-events:none!important;user-select:none;overflow:hidden;contain:layout paint;}
.halloween-zombie,.christmas-magic{position:fixed;inset:0;z-index:2147482000;visibility:hidden;opacity:0;transition:opacity .22s ease,visibility 0s linear .22s;}
html[data-theme='halloween'] .halloween-zombie.is-awake,html[data-theme='navidad'] .christmas-magic.is-awake{visibility:visible;opacity:1;transition:opacity .22s ease;}
.halloween-zombie .zombie-first-hand,.halloween-zombie .zombie-creature,.halloween-zombie .haunted-dracula,.christmas-magic-art{pointer-events:none!important;}
/* Mantiene al zombi en pantalla el tiempo suficiente antes de la segunda escena. */
.halloween-zombie.is-awake .zombie-first-hand{
 animation:zombie-hand-emerge 1.65s cubic-bezier(.16,.7,.2,1) .25s both,
 zombie-hand-retreat .65s ease 2.6s forwards;
}
.halloween-zombie.is-awake .zombie-creature{
 animation:zombie-climb 5.8s cubic-bezier(.22,.62,.17,.98) 1s both,
 zombie-exit 1.35s ease-in 8.25s forwards;
}
@keyframes zombie-exit{from{transform:translate(-50%,0) rotate(0);opacity:1}to{transform:translate(-50%,110%) rotate(-5deg);opacity:0}}
.halloween-zombie .haunted-cracks{position:absolute;inset:0;width:100%;height:100%;opacity:0;filter:drop-shadow(0 0 7px #b983ed);}
.halloween-zombie.is-awake .haunted-cracks{animation:glass-crack 2.1s steps(2,end) 9.5s both,crack-leave 1.2s ease-in 19.4s forwards;}
@keyframes glass-crack{0%{opacity:0;transform:scale(.2)}21%{opacity:.95;transform:scale(.95)}32%{opacity:.15;transform:scale(1.01)}45%,100%{opacity:.82;transform:scale(1)}}
@keyframes crack-leave{to{opacity:0;transform:scale(1.4)}}
.halloween-zombie .haunted-portal{
 position:absolute;top:50%;left:50%;height:min(86dvh,870px);width:min(73vw,750px);
 transform:translate(-50%,-50%) scale(.01) rotate(-9deg);opacity:0;
 border:13px solid #271a39;border-radius:47% 53% 42% 58% / 51% 40% 60% 49%;
 background:radial-gradient(ellipse at 50% 54%,#5c315d 0%,#261c40 40%,#090d20 84%);
 box-shadow:0 0 0 6px #79507f,0 0 0 13px #bca2c4,0 0 65px 27px #884fa75c,inset 0 0 75px 16px #190d2a;
 clip-path:polygon(49% 1%,58% 3%,66% 0,74% 6%,82% 9%,89% 18%,87% 28%,96% 32%,98% 41%,94% 50%,99% 62%,95% 70%,90% 76%,88% 88%,75% 92%,70% 98%,56% 95%,47% 100%,39% 96%,28% 97%,20% 90%,10% 87%,8% 74%,1% 68%,4% 54%,1% 47%,7% 34%,3% 26%,12% 19%,14% 11%,29% 9%,34% 3%);
}
.halloween-zombie.is-awake .haunted-portal{animation:portal-open 2s cubic-bezier(.19,.94,.26,1.05) 10.2s both,portal-close 1.25s ease-in 19.6s forwards;}
@keyframes portal-open{0%{opacity:0;transform:translate(-50%,-50%) scale(.01) rotate(-9deg)}48%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(4deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
@keyframes portal-close{to{opacity:0;transform:translate(-50%,-50%) scale(.01) rotate(7deg)}}
.halloween-zombie .haunted-dracula{position:absolute;left:50%;bottom:-4%;width:min(92vw,730px);height:min(100dvh,940px);object-fit:contain;object-position:center bottom;transform:translate(-50%,108%) scale(.8);opacity:0;filter:drop-shadow(0 9px 33px #120c29aa)}
.halloween-zombie.is-awake .haunted-dracula{animation:dracula-enter 5s cubic-bezier(.24,.73,.14,1) 11.6s both,dracula-exit 1.45s ease-in 19.35s forwards;}
@keyframes dracula-enter{0%{opacity:0;transform:translate(-50%,110%) scale(.78)}26%{opacity:1}70%{transform:translate(-50%,16%) scale(1.03)}100%{opacity:1;transform:translate(-50%,-1%) scale(1.03)}}
@keyframes dracula-exit{from{opacity:1;transform:translate(-50%,-1%) scale(1.03)}to{opacity:0;transform:translate(-50%,75%) scale(.75)}}
.haunted-glass{position:absolute;width:clamp(30px,11vw,115px);height:clamp(54px,14vw,155px);opacity:0;
 background:linear-gradient(135deg,rgba(224,202,253,.47),rgba(149,91,193,.04) 65%);border:2px solid #d6bdde;
 clip-path:polygon(48% 0,100% 38%,71% 100%,0 58%);}
.glass-1{left:25%;top:20%;--gx:-80px;--gy:-140px;--gr:-85deg}.glass-2{left:72%;top:27%;--gx:120px;--gy:-85px;--gr:130deg}
.glass-3{left:19%;top:72%;--gx:-120px;--gy:125px;--gr:-110deg}.glass-4{left:75%;top:73%;--gx:125px;--gy:150px;--gr:160deg}
.halloween-zombie.is-awake .haunted-glass{animation:glass-shard 3.3s cubic-bezier(.2,.8,.35,1) 9.8s both;}
@keyframes glass-shard{0%{opacity:0;transform:scale(.4) rotate(0)}15%{opacity:1}90%{opacity:.66}100%{opacity:0;transform:translate(var(--gx),var(--gy)) rotate(var(--gr)) scale(.55)}}
.haunted-whisper{position:absolute;bottom:8%;left:50%;width:min(88%,410px);transform:translateX(-50%) translateY(15px);font:800 clamp(12px,2vw,19px)/1.4 'DM Sans',system-ui,sans-serif;letter-spacing:.03em;text-align:center;color:#f5e9fc;background:#23152dbf;padding:12px 20px;border-radius:30px;opacity:0;}
.halloween-zombie.is-awake .haunted-whisper{animation:whisper-reveal 3.8s ease 15.5s both;}
@keyframes whisper-reveal{0%,8%{opacity:0;transform:translateX(-50%) translateY(15px)}45%,87%{opacity:1;transform:translateX(-50%) translateY(0)}100%{opacity:0}}
@media(max-width:767px), (hover:none), (pointer:coarse){
 .halloween-zombie.is-awake .zombie-creature{animation:zombie-climb-mobile 5.8s cubic-bezier(.19,.59,.18,1) 1s both,zombie-exit 1.35s ease-in 8.25s forwards;}
 .halloween-zombie .haunted-portal{width:min(102vw,550px);height:min(75dvh,720px);border-width:9px}
 .halloween-zombie .haunted-dracula{width:min(132vw,660px);height:min(95dvh,860px);bottom:-3%;max-width:none}
 .haunted-whisper{bottom:12%;font-size:12px}
}
/* Navidad: un cometa abre un regalo; surge un árbol que se ilumina. */
.christmas-magic{background:radial-gradient(ellipse at 50% 55%,#fff8dd26,transparent 65%)}
.christmas-aura{position:absolute;top:50%;left:50%;width:min(90vw,780px);aspect-ratio:1;border-radius:50%;opacity:0;transform:translate(-50%,-50%) scale(.3);
 background:radial-gradient(circle,#ffe3a85c 0%,#b7f1d23b 30%,transparent 73%);filter:blur(10px)}
.christmas-magic.is-awake .christmas-aura{animation:magic-aura 10s ease-out .6s both}
@keyframes magic-aura{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}37%,85%{opacity:1;transform:translate(-50%,-50%) scale(1.35)}100%{opacity:0}}
.christmas-magic-art{position:absolute;bottom:0;left:50%;width:min(84vw,620px);height:min(93dvh,860px);object-fit:contain;object-position:bottom center;transform:translate(-50%,90%) scale(.75);opacity:0;filter:drop-shadow(0 12px 24px #20362b61)}
.christmas-magic.is-awake .christmas-magic-art{animation:christmas-gift-arrive 12s ease .2s both}
@keyframes christmas-gift-arrive{0%{opacity:0;transform:translate(-50%,90%) scale(.75)}18%{opacity:1;transform:translate(-50%,8%) scale(1)}30%,77%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,80%) scale(.7)}}
.christmas-magic .magic-comet{position:absolute;top:7%;left:-10%;width:clamp(32px,7vw,93px);height:6px;opacity:0;transform:rotate(-12deg);
 background:linear-gradient(90deg,transparent,#fff0b6 72%,white);border-radius:40px;filter:drop-shadow(0 0 9px #fff0b6)}
.christmas-magic.is-awake .magic-comet{animation:magic-comet 2.9s ease-out .2s both}
@keyframes magic-comet{0%{opacity:0;transform:translate(0,0) rotate(-12deg)}20%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translate(130vw,24dvh) rotate(-12deg)}}
.christmas-particle{position:absolute;left:var(--px);top:var(--py);width:var(--ps);height:var(--ps);opacity:0;transform:scale(.2) rotate(0);background:#ffe8a9;
 clip-path:polygon(50% 0,62% 40%,100% 50%,62% 60%,50% 100%,38% 60%,0 50%,38% 40%);
 filter:drop-shadow(0 0 9px #fff0af);}
.christmas-magic.is-awake .christmas-particle{animation:magic-sparkle 2s ease-in-out 2.3s 5 both;animation-delay:calc(2.3s + var(--pd));}
@keyframes magic-sparkle{0%,100%{opacity:0;transform:scale(.15) rotate(0)}42%{opacity:1;transform:scale(1.35) rotate(75deg)}65%{opacity:.6;transform:scale(.65) rotate(110deg)}}
.magic-caption{position:absolute;left:50%;bottom:6%;transform:translate(-50%,15px);width:min(92%,500px);padding:14px 20px;border-radius:18px;color:#fffdf3;text-align:center;font:700 clamp(14px,2.3vw,21px)/1.45 'DM Sans',system-ui,sans-serif;text-shadow:0 3px 8px #192f2688;background:#194e3dcc;border:1px solid #ffe0a47a;opacity:0}
.magic-caption strong{color:#ffe6a4;font-weight:900}
.christmas-magic.is-awake .magic-caption{animation:magic-caption 5.5s ease 7.2s both}
@keyframes magic-caption{0%{opacity:0;transform:translate(-50%,15px)}20%,80%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-8px)}}
@media(max-width:570px){.christmas-magic-art{width:min(108vw,420px);height:min(86dvh,720px)}.magic-caption{bottom:12%;font-size:14px}}
@media(prefers-reduced-motion:reduce){.halloween-zombie,.christmas-magic{display:none!important}}

/* Árbol que nace realmente de la caja: elementos SVG controlables por CSS. */
.christmas-magic .magic-tree{opacity:0;transform:translateY(260px) scale(.1);transform-box:view-box;transform-origin:365px 775px;}
.christmas-magic.is-awake .magic-tree{animation:tree-grow 5.5s cubic-bezier(.14,.82,.22,1.04) 3.5s both;}
@keyframes tree-grow{0%{opacity:0;transform:translateY(260px) scale(.08)}16%{opacity:.85}75%,100%{opacity:1;transform:translateY(0) scale(1)}}
.christmas-magic .magic-gift-lid{transform-box:view-box;transform-origin:350px 680px;}
.christmas-magic.is-awake .magic-gift-lid{animation:gift-pop 4s cubic-bezier(.16,.8,.26,1) 3s both;}
@keyframes gift-pop{0%,10%{transform:translateY(0) rotate(0)}35%{transform:translate(-70px,-135px) rotate(-17deg)}100%{transform:translate(-115px,-145px) rotate(-28deg)}}
.christmas-magic .magic-star{transform-box:fill-box;transform-origin:center;}
.christmas-magic.is-awake .magic-star{animation:tree-star-shine 1.9s ease-in-out 6.2s infinite alternate;}
@keyframes tree-star-shine{0%{filter:drop-shadow(0 0 1px #ffdc72);transform:scale(.93)}100%{filter:drop-shadow(0 0 18px #ffdf75);transform:scale(1.1)}}
.christmas-magic .magic-tree-lights{transform-box:fill-box;transform-origin:center;}
.christmas-magic.is-awake .magic-tree-lights{animation:tree-bulbs 1.1s ease-in-out 7s infinite alternate}
@keyframes tree-bulbs{from{opacity:.35;filter:drop-shadow(0 0 1px #fff3a9)}to{opacity:1;filter:drop-shadow(0 0 10px #ffeba5)}}
