/* INFINEX APEX – animated pop-up system (popups.js). Self-contained: nothing here restyles the page background. */
.ap-pop{--ap-bg:#fff;--ap-fg:#242424;--ap-mut:#626262;--ap-ac:#f47721;--ap-btn:#f47721;--ap-btn-fg:#fff;--ap-x:#fff4eb;--ap-x-fg:#333;--ap-bd:#f1e4d8;
  position:fixed;right:22px;bottom:24px;z-index:130;width:min(390px,calc(100vw - 28px));padding:22px 22px 20px;border-radius:20px;border:1px solid var(--ap-bd);
  background:var(--ap-bg);color:var(--ap-fg);box-shadow:0 18px 60px rgba(32,24,18,.28);overflow:hidden;isolation:isolate;will-change:transform,opacity}
.ap-pop.ap-pos-tl{right:auto;left:22px;bottom:auto;top:90px}
.ap-pop.ap-pos-tr{top:90px;bottom:auto}
.ap-pop.ap-pos-bl{right:auto;left:22px}
.ap-pop.ap-pos-tc{top:90px;bottom:auto;left:0;right:0;margin-inline:auto}
.ap-pop.ap-pos-bc{left:0;right:0;margin-inline:auto}
.ap-pop.ap-pos-ml{right:auto;left:22px;top:0;bottom:0;margin-block:auto;height:fit-content}
.ap-pop.ap-pos-mr{top:0;bottom:0;margin-block:auto;height:fit-content}
.ap-pop.ap-pos-c{top:0;bottom:0;left:0;right:0;margin:auto;height:fit-content}
.ap-pop[hidden]{display:none}
.ap-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.ap-main{position:relative;z-index:1;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;align-items:start}
.ap-visual{grid-row:1/3;width:64px;height:64px;display:grid;place-items:center;font-size:34px;border-radius:18px;background:rgba(244,119,33,.12)}
.ap-body{min-width:0;padding-right:26px}
.ap-kicker{font-size:10px;letter-spacing:.16em;font-weight:900;color:var(--ap-ac);text-transform:uppercase;margin-bottom:5px}
.ap-title{font-size:20px;line-height:1.2;margin:0 0 6px;font-weight:900;letter-spacing:-.01em;position:relative}
.ap-text{font-size:14px;line-height:1.5;color:var(--ap-mut);margin:0}
.ap-bottom{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}
.ap-act{border:0;border-radius:999px;background:var(--ap-btn);color:var(--ap-btn-fg);font-weight:800;padding:10px 18px;cursor:pointer;font-size:13px;transition:transform .15s,filter .15s}
.ap-act:hover{transform:translateY(-1px);filter:brightness(1.05)}
.ap-mute{border:0;background:none;color:var(--ap-mut);font-size:11px;cursor:pointer;text-decoration:underline;padding:6px 2px}
.ap-x{position:absolute;right:11px;top:10px;z-index:3;width:34px;height:34px;border:0;border-radius:50%;background:var(--ap-x);color:var(--ap-x-fg);font-size:22px;line-height:1;cursor:pointer;display:grid;place-items:center}
.ap-x:hover{filter:brightness(.95)}
.ap-bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--ap-ac);transform-origin:left;z-index:2;animation:ap-bar linear forwards;animation-duration:var(--ap-dur,10s)}
.ap-pop:hover .ap-bar,.ap-pop:focus-within .ap-bar,.ap-pop.ap-paused .ap-bar{animation-play-state:paused}
@keyframes ap-bar{from{transform:scaleX(1)}to{transform:scaleX(0)}}

/* ---------- colour skins ---------- */
.ap-skin-warm{--ap-bg:linear-gradient(135deg,#fff8f1,#ffe2cc);--ap-bd:#ffd2b3}
.ap-skin-neon{--ap-bg:#0a0e1a;--ap-fg:#eafcff;--ap-mut:#9fb4c8;--ap-ac:#22d3ee;--ap-btn:#22d3ee;--ap-btn-fg:#04202a;--ap-x:#18223a;--ap-x-fg:#9be9f7;--ap-bd:#22d3ee;
  box-shadow:0 0 0 1px #22d3ee,0 0 28px rgba(34,211,238,.55),0 0 60px rgba(217,70,239,.35)}
.ap-skin-neon .ap-title{text-shadow:0 0 10px rgba(34,211,238,.9),0 0 22px rgba(217,70,239,.6)}
.ap-skin-neon .ap-visual{background:rgba(34,211,238,.12);box-shadow:inset 0 0 14px rgba(34,211,238,.5)}
.ap-skin-gold{--ap-bg:linear-gradient(135deg,#2e2104,#6e5210 48%,#2e2104);--ap-fg:#fff3c4;--ap-mut:#f0dc9a;--ap-ac:#ffd54a;--ap-btn:linear-gradient(135deg,#ffe27a,#e0a526);--ap-btn-fg:#3b2a05;--ap-x:rgba(255,236,170,.18);--ap-x-fg:#ffe9a0;--ap-bd:#b98a1e}
.ap-skin-gold .ap-visual{background:rgba(255,213,74,.16)}
.ap-skin-glass{--ap-bg:linear-gradient(135deg,rgba(255,255,255,.78),rgba(255,214,186,.62));--ap-bd:rgba(255,255,255,.85);--ap-fg:#1d2024;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}
.ap-skin-grad1{--ap-bg:linear-gradient(135deg,#f36b21,#c2185b);--ap-fg:#fff;--ap-mut:rgba(255,255,255,.88);--ap-ac:#ffe3d1;--ap-btn:#fff;--ap-btn-fg:#c2185b;--ap-x:rgba(255,255,255,.22);--ap-x-fg:#fff;--ap-bd:transparent}
.ap-skin-grad1 .ap-visual,.ap-skin-grad2 .ap-visual,.ap-skin-grad3 .ap-visual,.ap-skin-rose .ap-visual,.ap-skin-gradshift .ap-visual,.ap-skin-night .ap-visual,.ap-skin-dark .ap-visual{background:rgba(255,255,255,.16)}
.ap-skin-grad2{--ap-bg:linear-gradient(135deg,#2563eb,#7c3aed);--ap-fg:#fff;--ap-mut:rgba(255,255,255,.88);--ap-ac:#c7d2fe;--ap-btn:#fff;--ap-btn-fg:#4338ca;--ap-x:rgba(255,255,255,.22);--ap-x-fg:#fff;--ap-bd:transparent}
.ap-skin-grad3{--ap-bg:linear-gradient(135deg,#0f766e,#16a34a);--ap-fg:#fff;--ap-mut:rgba(255,255,255,.9);--ap-ac:#bbf7d0;--ap-btn:#fff;--ap-btn-fg:#166534;--ap-x:rgba(255,255,255,.22);--ap-x-fg:#fff;--ap-bd:transparent}
.ap-skin-dark{--ap-bg:#1d2024;--ap-fg:#fff;--ap-mut:#c4c9d0;--ap-ac:#ff9a4d;--ap-btn:#f36b21;--ap-btn-fg:#fff;--ap-x:#2f353d;--ap-x-fg:#fff;--ap-bd:#2f353d}
.ap-skin-night{--ap-bg:linear-gradient(160deg,#0a0f2c,#241160);--ap-fg:#fff;--ap-mut:#c9cdf5;--ap-ac:#ffd54a;--ap-btn:#ffd54a;--ap-btn-fg:#241160;--ap-x:rgba(255,255,255,.16);--ap-x-fg:#fff;--ap-bd:#3b2a86}
.ap-skin-rose{--ap-bg:linear-gradient(135deg,#be185d,#f472b6);--ap-fg:#fff;--ap-mut:rgba(255,255,255,.92);--ap-ac:#ffe4ef;--ap-btn:#fff;--ap-btn-fg:#be185d;--ap-x:rgba(255,255,255,.24);--ap-x-fg:#fff;--ap-bd:transparent}
.ap-skin-gradshift{--ap-bg:linear-gradient(120deg,#f36b21,#ec4899,#8b5cf6,#06b6d4,#f36b21);--ap-fg:#fff;--ap-mut:rgba(255,255,255,.92);--ap-ac:#fff;--ap-btn:#fff;--ap-btn-fg:#7c3aed;--ap-x:rgba(255,255,255,.24);--ap-x-fg:#fff;--ap-bd:transparent;background-size:300% 100%;animation:ap-grad 6s linear infinite}
@keyframes ap-grad{to{background-position:300% 0}}

/* ---------- entry animations ---------- */
.ap-in-zoom{animation:ap-zoom .55s cubic-bezier(.2,.9,.3,1.25) both}
.ap-in-zoom-out{animation:ap-zoomout .5s cubic-bezier(.2,.8,.2,1) both}
.ap-in-slide-l{animation:ap-sl .6s cubic-bezier(.2,.9,.2,1) both}
.ap-in-slide-r{animation:ap-sr .6s cubic-bezier(.2,.9,.2,1) both}
.ap-in-bounce{animation:ap-bounce .9s both}
.ap-in-spring{animation:ap-spring .8s cubic-bezier(.34,1.56,.64,1) both}
.ap-in-float{animation:ap-floatin .7s ease-out both,ap-bob 4s 0.7s ease-in-out infinite}
.ap-in-rot3d{animation:ap-rot3d .8s cubic-bezier(.2,.9,.3,1) both;transform-origin:50% 50%}
.ap-in-flip{animation:ap-flip .75s cubic-bezier(.2,.9,.3,1) both}
.ap-in-glitch{animation:ap-glitchin .6s steps(2,end) both}
.ap-out{animation:ap-out .32s ease-in both!important}
.ap-in-fadescale{animation:ap-fs .6s cubic-bezier(.2,.8,.2,1) both}
.ap-in-softrise{animation:ap-rise .65s cubic-bezier(.2,.8,.2,1) both}
@keyframes ap-fs{from{opacity:0;transform:scale(.9);filter:blur(6px)}to{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes ap-rise{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
@keyframes ap-zoom{from{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}
@keyframes ap-zoomout{from{opacity:0;transform:scale(1.5)}to{opacity:1;transform:scale(1)}}
@keyframes ap-sl{from{opacity:0;transform:translateX(-130%)}to{opacity:1;transform:translateX(0)}}
@keyframes ap-sr{from{opacity:0;transform:translateX(130%)}to{opacity:1;transform:translateX(0)}}
@keyframes ap-bounce{0%{opacity:0;transform:translateY(120px)}45%{opacity:1;transform:translateY(-18px)}65%{transform:translateY(8px)}82%{transform:translateY(-4px)}100%{transform:translateY(0)}}
@keyframes ap-spring{0%{opacity:0;transform:scale(.3) rotate(-6deg)}60%{opacity:1;transform:scale(1.08) rotate(2deg)}100%{transform:scale(1) rotate(0)}}
@keyframes ap-floatin{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}
@keyframes ap-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes ap-rot3d{from{opacity:0;transform:perspective(900px) rotateY(-95deg) translateX(40px)}to{opacity:1;transform:perspective(900px) rotateY(0)}}
@keyframes ap-flip{from{opacity:0;transform:perspective(900px) rotateX(-90deg)}to{opacity:1;transform:perspective(900px) rotateX(0)}}
@keyframes ap-glitchin{0%{opacity:0;transform:translateX(-12px) skewX(8deg)}20%{opacity:1;transform:translateX(10px) skewX(-8deg)}40%{transform:translateX(-6px)}60%{transform:translateX(4px) skewX(3deg)}100%{transform:none}}
@keyframes ap-out{to{opacity:0;transform:translateY(22px) scale(.94)}}

/* ---------- effects ---------- */
/* 3D gift box */
.ap-gift{position:relative;width:64px;height:70px;perspective:420px;grid-row:1/3}
.ap-gbox{position:absolute;left:7px;right:7px;bottom:0;height:40px;border-radius:7px;background:linear-gradient(#ff7a2f,#d9480f);box-shadow:inset 0 -7px 0 rgba(0,0,0,.14),0 8px 14px rgba(217,72,15,.35)}
.ap-gbox::before,.ap-glid::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:10px;transform:translateX(-50%);background:linear-gradient(#ffe066,#fab005)}
.ap-glid{position:absolute;left:2px;right:2px;bottom:36px;height:17px;border-radius:6px;background:linear-gradient(#ff9248,#f36b21);transform-origin:12% 100%;animation:ap-lid 1.1s .55s cubic-bezier(.3,1.4,.5,1) forwards;box-shadow:0 3px 6px rgba(0,0,0,.18)}
@keyframes ap-lid{to{transform:translate(12px,-16px) rotateZ(24deg) rotateX(30deg)}}
.ap-ggem{position:absolute;left:50%;bottom:28px;font-size:30px;opacity:0;transform:translate(-50%,12px) scale(.2);animation:ap-gem .9s 1s cubic-bezier(.3,1.5,.5,1) forwards,ap-bob 2.6s 2s ease-in-out infinite}
@keyframes ap-gem{to{opacity:1;transform:translate(-50%,-22px) scale(1)}}
/* shimmer */
.ap-fx-shimmer::after{content:"";position:absolute;inset:-20% -60%;z-index:2;pointer-events:none;background:linear-gradient(100deg,transparent 40%,rgba(255,255,255,.42) 50%,transparent 60%);animation:ap-shim 2.4s ease-in-out infinite}
@keyframes ap-shim{from{transform:translateX(-60%)}to{transform:translateX(60%)}}
/* typewriter caret */
.ap-typing::after{content:"▍";margin-left:2px;animation:ap-blink .7s steps(1) infinite;color:var(--ap-ac)}
@keyframes ap-blink{50%{opacity:0}}
/* marquee */
.ap-marq{position:relative;z-index:1;overflow:hidden;margin:14px -22px 0;padding:7px 0;background:var(--ap-ac);color:#fff;font-size:12px;font-weight:800;white-space:nowrap}
.ap-marq span{display:inline-block;padding-left:100%;animation:ap-marq 14s linear infinite}
@keyframes ap-marq{to{transform:translateX(-100%)}}
.ap-skin-light .ap-marq,.ap-skin-warm .ap-marq{color:#fff}
/* glitch */
.ap-fx-glitch .ap-title{animation:ap-gl 2.2s infinite steps(1)}
.ap-fx-glitch .ap-title::before,.ap-fx-glitch .ap-title::after{content:attr(data-text);position:absolute;left:0;top:0;width:100%;overflow:hidden;opacity:.8}
.ap-fx-glitch .ap-title::before{color:#22d3ee;transform:translate(-2px,0);clip-path:inset(0 0 55% 0);animation:ap-gl1 1.6s infinite steps(1)}
.ap-fx-glitch .ap-title::after{color:#f43f5e;transform:translate(2px,0);clip-path:inset(55% 0 0 0);animation:ap-gl2 1.9s infinite steps(1)}
@keyframes ap-gl{0%,92%,100%{transform:none}94%{transform:translateX(-2px)}96%{transform:translateX(2px) skewX(-6deg)}98%{transform:translateX(-1px)}}
@keyframes ap-gl1{0%,100%{clip-path:inset(0 0 55% 0)}30%{clip-path:inset(10% 0 40% 0)}60%{clip-path:inset(40% 0 20% 0)}80%{clip-path:inset(0 0 80% 0)}}
@keyframes ap-gl2{0%,100%{clip-path:inset(55% 0 0 0)}25%{clip-path:inset(30% 0 30% 0)}55%{clip-path:inset(70% 0 5% 0)}85%{clip-path:inset(45% 0 25% 0)}}
/* heartbeat */
.ap-pulse .ap-visual{animation:ap-beat 1.2s infinite}
@keyframes ap-beat{0%,100%{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.14)}60%{transform:scale(1)}}
/* ribbon */
.ap-ribbon{position:absolute;top:12px;left:-6px;z-index:3;background:#e5560d;color:#fff;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;padding:5px 14px 5px 18px;border-radius:0 7px 7px 0;transform-origin:left center;animation:ap-rib .6s .25s cubic-bezier(.2,.9,.3,1.3) both;box-shadow:0 4px 10px rgba(0,0,0,.2)}
.ap-ribbon::before{content:"";position:absolute;left:0;top:100%;border-style:solid;border-width:0 6px 6px 0;border-color:transparent #9a3412 transparent transparent}
@keyframes ap-rib{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.ap-has-ribbon{padding-top:38px}
.ap-has-ribbon .ap-kicker{display:none}
/* countdown */
.ap-cd{position:relative;z-index:1;display:flex;align-items:center;gap:6px;margin-top:14px;font-weight:800;font-size:12px}
.ap-cd small{font-weight:700;opacity:.85;margin-right:2px}
.ap-cd b{min-width:34px;text-align:center;padding:6px 6px;border-radius:9px;background:rgba(255,255,255,.2);font-size:15px;font-variant-numeric:tabular-nums}

@media(max-width:700px){
  .ap-pop[class*="ap-pos-"]{left:12px;right:12px;margin:0;width:auto;padding:18px 16px 16px;top:auto;bottom:88px;height:auto}
  .ap-pop.ap-pos-tl,.ap-pop.ap-pos-tr,.ap-pop.ap-pos-tc{top:78px;bottom:auto}
  .ap-pop.ap-pos-c,.ap-pop.ap-pos-ml,.ap-pop.ap-pos-mr{top:0;bottom:0;margin-block:auto;height:fit-content}
  .ap-title{font-size:18px}
  .ap-marq{margin:12px -16px 0}
}
@media(prefers-reduced-motion:reduce){
  .ap-pop,.ap-pop *{animation:none!important}
  .ap-pop .ap-bar{animation:ap-bar linear forwards!important;animation-duration:var(--ap-dur,10s)!important}
  .ap-pop.ap-paused .ap-bar,.ap-pop:hover .ap-bar{animation-play-state:paused!important}
  .ap-fx{display:none}
  .ap-ggem{opacity:1;transform:translate(-50%,-22px)}
}

.ap-gift{transition:transform .2s}.ap-gift:hover{transform:scale(1.06)}
