/* Temporada "Octubre en Flys" (helpers/season.php). Solo se carga en fechas de temporada.
   Regla: solo se anima transform y opacity; en el encabezado una sola vez, en bucle solo en
   banner, landing, carrito vacío y confirmación. Nada se mueve junto a un botón de compra. */

.season-bar{display:block;background:#2a0632;color:#ffd9a3;font:600 13px/1.35 'Inter',system-ui,sans-serif;text-align:center;padding:9px 14px;text-decoration:none}
.season-bar b{color:#f19908;font-weight:800}
.season-bar:hover{color:#fff}
.season-strip{height:3px;background:linear-gradient(90deg,#6a017f,#f19908,#6a017f)}

/* Logo con disfraz (encabezado) */
.season-logo{position:relative;display:inline-block;line-height:0}
.season-cat{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.season-cat .fx,.season-cat .bx{transform-box:fill-box}
.season-cat .lids ellipse{transform-box:fill-box;transform-origin:50% 0;transform:scaleY(0)}

.season-once .fx-bruja{transform-origin:50% 100%;animation:sz-wob 1.3s ease-in-out .4s 1}
.season-once .fx-vampiro{transform-origin:50% 50%;animation:sz-pop .8s ease-out .4s 1}
.season-once .bx-vampiro{transform-origin:50% 100%;animation:sz-cape 1.2s ease-in-out .4s 1}
.season-once .fx-fantasma{animation:sz-drop .9s cubic-bezier(.2,.8,.3,1.15) .3s 1 both}
.season-once .fx-calabaza{transform-origin:50% 100%;animation:sz-bounce 1s ease .4s 1}
.season-once .bx-barrilete{transform-origin:50% 100%;animation:sz-sway 1.6s ease-in-out .4s 1}
.season-once .lids ellipse{animation:sz-blink .35s ease 2s 1}
.season-logo:hover .fx-bruja{animation:sz-wob 1s ease-in-out 1}
.season-logo:hover .fx-calabaza{animation:sz-bounce .9s ease 1}
.season-logo:hover .bx-barrilete{animation:sz-sway 1.2s ease-in-out 1}

.season-loop .fx-bruja{transform-origin:50% 100%;animation:sz-wobL 4.5s ease-in-out infinite}
.season-loop .bx-vampiro{transform-origin:50% 100%;animation:sz-capeL 4s ease-in-out infinite}
.season-loop.season-catbox.is-fantasma{animation:sz-float 3.4s ease-in-out infinite}
.season-loop .fx-calabaza{transform-origin:50% 100%;animation:sz-bounceL 3.6s ease infinite}
.season-loop .bx-barrilete{transform-origin:50% 100%;animation:sz-sway 4.5s ease-in-out infinite}
.season-loop .lids ellipse{animation:sz-blinkL 5.5s ease infinite}

@keyframes sz-wob{0%,100%{transform:rotate(0)}25%{transform:rotate(-9deg)}55%{transform:rotate(6deg)}80%{transform:rotate(-2deg)}}
@keyframes sz-wobL{0%,35%,100%{transform:rotate(0)}10%{transform:rotate(-7deg)}22%{transform:rotate(4deg)}}
@keyframes sz-cape{0%,100%{transform:scaleY(1)}40%{transform:scaleY(1.08)}70%{transform:scaleY(.97)}}
@keyframes sz-capeL{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.04) skewX(-2deg)}}
@keyframes sz-pop{0%,100%{transform:scale(1)}40%{transform:scale(1.18)}}
@keyframes sz-drop{0%{transform:translateY(-55%);opacity:0}100%{transform:none;opacity:1}}
@keyframes sz-bounce{0%,100%{transform:translateY(0)}30%{transform:translateY(-14%)}55%{transform:translateY(0)}72%{transform:translateY(-5%)}}
@keyframes sz-bounceL{0%,40%,100%{transform:translateY(0)}12%{transform:translateY(-10%)}24%{transform:translateY(0)}32%{transform:translateY(-3%)}}
@keyframes sz-sway{0%,100%{transform:rotate(0)}30%{transform:rotate(7deg)}65%{transform:rotate(-5deg)}}
@keyframes sz-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5%) rotate(1.5deg)}}
@keyframes sz-blink{0%,100%{transform:scaleY(0)}50%{transform:scaleY(1)}}
@keyframes sz-blinkL{0%,93%,100%{transform:scaleY(0)}96%{transform:scaleY(1)}}

/* Gato solo (WebP + disfraz) */
.season-catbox{position:relative;display:inline-block;line-height:0}
.season-catbox>img{width:100%;height:auto;display:block}

/* Banner del inicio */
.season-hero{position:relative;overflow:hidden;border-radius:14px;padding:24px 20px;color:#f6ecf9;text-decoration:none;display:flex;flex-direction:column;gap:8px;min-height:200px;
  background:radial-gradient(1.4px 1.4px at 12% 22%,#fff8 50%,transparent 51%),radial-gradient(1.2px 1.2px at 32% 72%,#fff6 50%,transparent 51%),radial-gradient(1.6px 1.6px at 55% 16%,#fff9 50%,transparent 51%),radial-gradient(1.2px 1.2px at 68% 62%,#fff5 50%,transparent 51%),radial-gradient(80% 120% at 85% 0%,#5a0d6c 0,#2a0632 55%,#15041a 100%);
  font-family:'Inter',system-ui,sans-serif;margin-bottom:6px}
.season-hero:hover{color:#f6ecf9}
.season-hero .sz-moon{position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff1d6,#f6b54a 55%,#c86f00);box-shadow:0 0 70px rgba(241,153,8,.45)}
.season-hero>*{position:relative}
.season-hero .sz-k{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#f19908}
.season-hero .sz-h{margin:0;font-family:'Grenze Gotisch','Times New Roman',serif;font-weight:700;font-size:36px;line-height:.95;color:#ffc067;max-width:11ch}
.season-hero p{margin:0;color:#dccbe3;max-width:36ch;font-size:14px;line-height:1.45}
.season-hero .sz-cta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:4px}
.season-hero .sz-btn{background:#f19908;color:#2a0632;font-weight:800;border-radius:999px;padding:9px 18px;font-size:13px}
.season-hero .sz-chip{border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:7px 12px;font-size:12px;color:#f6ecf9}
.season-hero .sz-chip b{color:#ffc067}
.season-hero .season-catbox{position:absolute;right:8px;bottom:-6px;width:92px}
@media (min-width:700px){
  .season-hero{padding:34px 36px;min-height:240px}
  .season-hero .sz-h{font-size:52px}
  .season-hero .sz-moon{width:210px;height:210px;right:70px;top:-70px}
  .season-hero .season-catbox{width:150px;right:48px;bottom:-8px}
}
@media (max-width:480px){.season-hero p{max-width:24ch}}

/* Línea del boleto (ficha y carrito) */
.season-tline{display:flex;gap:8px;align-items:center;font:500 12px/1.35 'Inter',system-ui,sans-serif;color:#6a017f;background:#faf3fc;border-radius:8px;padding:8px 10px;margin-top:10px;text-decoration:none}
.season-tline svg{width:16px;height:16px;flex:none}
.season-tline b{font-weight:800}
.ship-bar-track.season-track{position:relative;overflow:visible}
.season-mark{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid #2a0632;transform:translate(-50%,-50%)}
.season-mark.hit{background:#2a0632}

/* Carrito vacío */
.season-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.season-empty .season-catbox{width:120px;margin-top:12px}
.season-empty b{font-family:'Outfit',sans-serif;font-size:17px;color:#2a0632;max-width:26ch}
.season-empty span{font-size:13px;color:#64748b}

/* Boleto en la confirmación */
.season-ticket{display:grid;grid-template-columns:64px 1fr;gap:14px;align-items:center;text-align:left;background:#fff8ec;color:#2a0632;border-radius:14px;padding:16px 18px;margin:0 auto 18px;max-width:420px;
  -webkit-mask:radial-gradient(circle 11px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 11px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle 11px at 0 50%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle 11px at 100% 50%,#0000 98%,#000) right/51% 100% no-repeat}
.season-ticket svg{width:64px;height:64px}
.season-ticket .k{font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:#a65f00}
.season-ticket .v{font-family:'Outfit',sans-serif;font-size:24px;font-weight:800;line-height:1.1}
.season-ticket .d{font-size:12px;color:#6b5c74;line-height:1.4}

@media (prefers-reduced-motion:reduce){.season-cat,.season-cat *,.season-catbox{animation:none!important}}
