:root{
  --iw-popup-overlay: rgba(0,0,0,.55);
  --iw-popup-bg: #fff;
  --iw-popup-ink: #111;
  --iw-popup-primary: var(--iw-pink, var(--iw-accent, #2563eb)); /* follow theme if available */
}

.iw-popup{position:fixed;inset:0;display:grid;place-items:center;background:var(--iw-popup-overlay);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:100000;padding:18px}
.iw-popup[aria-hidden="false"]{opacity:1;pointer-events:auto}
.iw-popup__inner{position:relative;background:var(--iw-popup-bg);color:var(--iw-popup-ink);padding:22px 22px 18px;max-width:min(520px, 96vw);width:100%;border-radius:16px;box-shadow:0 22px 60px rgba(0,0,0,.35);animation:iw-pop-scale .6s cubic-bezier(.16,.8,.3,1) both;border:1px solid rgba(0,0,0,.05);transform-origin:50% 50%}
.iw-popup__inner::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg, rgba(255,255,255,.02), rgba(0,0,0,.03));pointer-events:none;animation:iw-glow 6s linear infinite}
.iw-popup__close{position:absolute;top:10px;right:10px;border:0;background:none;font-size:28px;line-height:1;color:#6b7280;cursor:pointer}
.iw-popup__close:hover{color:#111}
.iw-popup__title{margin:0 0 8px;font-weight:800;font-size:22px}
.iw-popup__desc{margin:0 0 12px;color:#374151;line-height:1.6}
.iw-popup__icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--iw-popup-primary), #ff4fa0);color:#fff;box-shadow:0 8px 22px rgba(0,0,0,.18);margin-bottom:10px;will-change:transform}
.iw-popup__actions{display:flex;gap:10px;margin-top:12px}
.iw-popup__actions .iw-btn{display:inline-block;padding:11px 14px;border-radius:10px;border:1px solid var(--iw-popup-primary);background:var(--iw-popup-primary);color:#fff;font-weight:700;text-decoration:none}
.iw-popup__actions .iw-btn:hover{filter:brightness(.98);text-decoration:none}

@keyframes iw-pop-scale{0%{opacity:0;transform:translateY(16px) scale(.92);filter:blur(4px)}55%{opacity:1;transform:translateY(-2px) scale(1.02);filter:blur(0)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes iw-icon-pop{0%{opacity:0;transform:scale(.4) rotate(-8deg)}55%{opacity:1;transform:scale(1.15) rotate(4deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes iw-glow{0%{background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.03));filter:brightness(1)}50%{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(0,0,0,.05));filter:brightness(1.05)}100%{background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.03));filter:brightness(1)}}

/* Prevent background scroll when popup open */
.body.iw-popup-open, body.iw-popup-open{overflow:hidden}

/* Focus visibility */
.iw-popup__close:focus-visible, .iw-popup__actions .iw-btn:focus-visible{outline:3px solid rgba(56,189,248,.7);outline-offset:2px}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  .iw-popup, .iw-popup__inner{transition:none;animation:none}
  .iw-popup__inner::before{animation:none}
}

/* Slide-in variant (bottom-right) */
.iw-popup.iw-popup--slide{place-items:end;justify-items:end;align-items:end;background:rgba(0,0,0,.25)}
.iw-popup.iw-popup--slide .iw-popup__inner{max-width:380px;animation:iw-slide-spring .7s cubic-bezier(.18,.9,.25,1) both}
@keyframes iw-slide-spring{0%{opacity:0;transform:translateY(32px) scale(.95)}60%{opacity:1;transform:translateY(-6px) scale(1.02)}85%{transform:translateY(3px) scale(.995)}100%{transform:translateY(0) scale(1)}}
@media (max-width:560px){
  .iw-popup.iw-popup--slide{place-items:center}
  .iw-popup.iw-popup--slide .iw-popup__inner{max-width:min(520px,96vw)}
}

/* Opening icon pop state toggled by JS */
.iw-popup.is-opening .iw-popup__icon{animation:iw-icon-pop .6s cubic-bezier(.16,.8,.3,1) both}

/* Mobile-friendly tweaks */
@media (max-width: 560px){
  .iw-popup__inner{padding:18px 16px;border-radius:14px}
  .iw-popup__title{font-size:20px}
  .iw-popup__actions{flex-direction:column}
  .iw-popup__actions .iw-btn{width:100%;text-align:center}
  .iw-popup__close{top:6px;right:6px;padding:6px}
}

/* Larger tappable hit-area for close button on touch */
.iw-popup__close{position:absolute}
.iw-popup__close::after{content:"";position:absolute;inset:-8px;}

/* Safe-area support for slide variant */
.iw-popup.iw-popup--slide{padding-bottom:calc(18px + env(safe-area-inset-bottom, 0))}
