(()=>{"use strict";function n(n,e,t,i){return new(t||(t=Promise))(function(a,r){function o(n){try{l(i.next(n))}catch(n){r(n)}}function s(n){try{l(i.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?a(n.value):(e=n.value,e instanceof t?e:new t(function(n){n(e)})).then(o,s)}l((i=i.apply(n,e||[])).next())})}Object.create,Object.create;const e={Api:["https://api.mediacategory.com","https://api.clickon.kr","https://api.doem-0tpdlqj.com"]};class t{constructor(){this.tryCnt=0}post(t,i,a){return n(this,arguments,void 0,function*(n,t,i,a=1500){try{let r=e.Api[this.tryCnt];if(!r)return;return new Promise(()=>{window.fetch(r+n,{method:"post",mode:"cors",credentials:"include",cache:"no-cache",headers:{"ENP-Referrer":encodeURIComponent(document.referrer),"Content-Type":"application/json;charset=UTF-8"},signal:this.getTimeoutSignal(a),body:JSON.stringify(t)}).then(n=>200===n.status||201===n.status?n.json():null).then(n=>(n?i(n,!0):i(null,!1),n)).catch(r=>{if(this.tryCnt>=e.Api.length-1)return i(null,!1),null;this.tryCnt+=1,this.post(n,t,i,a)})})}catch(n){i(null,!1)}})}getTimeoutSignal(n){n||(n=1500);const e=new AbortController;return setTimeout(()=>{e.abort()},n),e.signal}}class i{constructor(){this.isThinking=!1,this.rafId=0,this.canvasResizeHandler=null,this.canvasResizeObserver=null,this.onScroll=()=>{this.closeAd()},this.onDocClick=n=>{this.parentDiv.contains(n.target)||this.closeAd()}}loadAiContent(n,e){try{const i=sessionStorage.getItem("enpAiBanner");if(i){if(Date.now(){if(e){const e=n;if(!e)return;this.createdAIBanner(e)}})}catch(n){}}createdAIBanner(n){if("Y"!==n.useYn){const n=Date.now();return void sessionStorage.setItem("enpAiBanner",(n+18e5).toString())}if(!n.title||!n.content||!n.linkUrl)return;if(this.isInIframe())return;if(document.querySelector(".mb_ai_div"))return;const e=document.createElement("div");e.className="mb_ai_div",e.style.zIndex="9999999999",e.style.position="relative",document.body.appendChild(e),this.parentDiv=e;const t=e.attachShadow({mode:"closed"});t.appendChild(this.defaultStyle());const i=document.createElement("div");i.id="mb_root",i.appendChild(this.defaultHtml(n.title)),setTimeout(()=>{t.appendChild(i),this.startCanvasAnimation(),setTimeout(()=>this.runAdAnimation(n.content,n.linkUrl),300)},100)}isInIframe(){try{return window.self!==window.top}catch(n){return!0}}el(n,e={},t=[]){const i=document.createElement(n);return e.className&&(i.className=e.className),e.id&&(i.id=e.id),t.forEach(n=>i.appendChild(n)),i}svgEl(n,e={},t=[]){const a=document.createElementNS(i.SVG_NS,n);return Object.keys(e).forEach(n=>a.setAttribute(n,e[n])),t.forEach(n=>a.appendChild(n)),a}defaultHtml(n){const e=document.createDocumentFragment();return e.appendChild(this.createGradientDefs()),e.appendChild(this.createPanel(n)),e}createGradientDefs(){const n=(n,e,t)=>this.svgEl("linearGradient",{id:n,x1:"0",y1:"0",x2:"24",y2:"24"},[this.svgEl("stop",{"stop-color":e}),this.svgEl("stop",{offset:"1","stop-color":t})]),e=this.svgEl("defs",{},[n("cloud-grad","#00d2ff","#0088ff"),n("shield-grad","#7b8aff","#6c22f5"),n("ticket-grad","#a880ff","#d1a8ff")]);return this.svgEl("svg",{width:"0",height:"0",style:"position:absolute"},[e])}createPanel(n){const e=this.el("canvas",{id:"mb-canvas"}),t=this.el("div",{id:"mbFab"},[e]);this.canvas=e,this.fab=t;const i=this.el("div",{className:"mb-title"});n.split(/(.*?<\/b>)/).forEach(n=>{if(n.startsWith("")&&n.endsWith("")){const e=document.createElement("b");e.textContent=n.slice(3,-4),i.appendChild(e)}else i.appendChild(document.createTextNode(n))});const a=this.el("div",{className:"mb-title-group"},[i]),r=this.el("div",{className:"mb-top-left"},[t,a]),o=this.svgEl("path",{d:"M18 6L6 18M6 6l12 12"}),s=this.svgEl("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[o]),l=this.el("button",{className:"mb-close",id:"mbClose"},[s]);l.addEventListener("click",()=>this.closeAd());const d=this.el("div",{className:"mb-top"},[r,l]),c=this.el("div",{className:"mb-text",id:"mbText"}),p=this.el("div",{className:"mb-bubble",id:"mbBubble"},[c]);this.speechText=c,this.speechBubble=p;const h=this.el("div",{className:"mb-area"},[p]),b=this.el("div",{className:"mb-panel",id:"mbPanel"},[d,h]);return b.style.cssText="transform: translateX(-50%) translateY(120%); transition: transform 0.5s cubic-bezier(0.25, 1.2, 0.3, 1)",this.panel=b,b}defaultStyle(){const n=document.createElement("style");return n.textContent="\n@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap');\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n#mb_root {\n font-family: 'Noto Sans KR', 'Apple SD Gothic Neo', sans-serif;\n -webkit-font-smoothing: antialiased;\n overflow-x: hidden;\n background: #fff;\n color: #000;\n}\n\n.mb-panel {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%) translateY(120%);\n width: min(480px, 100vw);\n max-height: 66vh;\n display: flex;\n flex-direction: column;\n background: #0d0c15;\n border-radius: 30px 30px 0 0;\n padding: 12px 12px 12px 12px;\n z-index: 99001;\n box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.6), inset 0 2px 10px rgba(255, 255, 255, 0.05);\n transition: transform 0.5s cubic-bezier(0.25, 1.2, 0.3, 1);\n color: #ffffff;\n font-family: 'Noto Sans KR', sans-serif;\n}\n\n.mb-panel.show {\n transform: translateX(-50%) translateY(0);\n}\n\n.mb-panel::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 30px 30px 0 0;\n padding: 3px 3px 0 3px;\n background: linear-gradient(90deg, #6c22f5, #00d2ff);\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n opacity: 0;\n pointer-events: none;\n z-index: -1;\n}\n\n.mb-panel.show::before {\n animation: border-pop 1.5s cubic-bezier(0.25, 1.2, 0.3, 1) 0.5s forwards;\n}\n\n@keyframes border-pop {\n 0% {\n opacity: 0;\n filter: drop-shadow(0 0 5px rgba(0, 229, 255, 0)) brightness(1);\n }\n\n 40% {\n opacity: 1;\n filter: drop-shadow(0 0 25px rgba(0, 229, 255, 1)) drop-shadow(0 0 15px rgba(108, 34, 245, 0.8)) brightness(1.8);\n }\n\n 100% {\n opacity: 1;\n filter: drop-shadow(0 0 12px rgba(0, 229, 255, 0.8)) drop-shadow(0 0 6px rgba(108, 34, 245, 0.6)) brightness(1);\n }\n}\n\n.mb-top {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.mb-top-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.mb-emblem {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n border: 1.5px solid #6c22f5;\n font-size: 20px;\n font-weight: 800;\n background: linear-gradient(135deg, rgba(108, 34, 245, 0.2), rgba(0, 210, 255, 0.1));\n color: #00d2ff;\n box-shadow: 0 0 10px rgba(108, 34, 245, 0.3), inset 0 0 10px rgba(0, 210, 255, 0.2);\n font-family: 'Arial Black', sans-serif;\n flex-shrink: 0;\n}\n\n.mb-title-group {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.mb-eyebrow {\n font-size: 14px;\n color: #7b8aff;\n font-weight: 500;\n}\n\n.mb-title {\n font-size: 16px;\n font-weight: 500;\n line-height: 1.3;\n color: #fff;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n word-break: keep-all;\n text-overflow: ellipsis;\n}\n\n.mb-title-star {\n width: 18px;\n height: 18px;\n color: #d1a8ff;\n}\n\n.mb-close {\n background: none;\n border: none;\n cursor: pointer;\n font-family: inherit;\n width: 36px;\n height: 36px;\n flex-shrink: 0; /* [iOS 수정] flex 압축 방지 — 안 하면 아이폰에서 가로로 눌려 타원이 됨 */\n aspect-ratio: 1 / 1; /* [iOS 수정] 폭=높이 강제(정원 보장) */\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.08);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.mb-close:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.mb-close svg {\n width: 26px;\n height: 26px;\n stroke: #fff;\n}\n\n.mb-area {\n display: flex;\n align-items: stretch;\n flex: 1;\n min-height: 0;\n}\n\n#mbFab {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 0.25px solid transparent;\n position: relative;\n z-index: 1;\n flex-shrink: 0;\n outline: none;\n padding: 0;\n box-sizing: border-box;\n background: linear-gradient(90deg, rgba(0, 229, 255, 0.6), rgba(255, 51, 204, 0.6)) border-box;\n transition: transform 0.18s ease, box-shadow 0.3s ease;\n overflow: visible;\n display: block;\n}\n\n#mb-canvas {\n width: 100%;\n height: 100%;\n position: relative;\n display: block;\n border-radius: 50%;\n z-index: 2;\n animation: canvas-spin 5s linear infinite;\n}\n\n@keyframes canvas-spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.mb-bubble {\n position: relative;\n background: rgba(30, 30, 50, 0.6);\n border: 1px solid rgba(108, 34, 245, 0.5);\n border-radius: 10px;\n padding: 8px 13px;\n flex: 1;\n overflow-y: hidden;\n height: auto;\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n opacity: 0;\n transform: translateY(10px);\n transition: all 0.5s ease;\n}\n\n.mb-bubble::-webkit-scrollbar {\n width: 6px;\n}\n\n.mb-bubble::-webkit-scrollbar-track {\n background: rgba(30, 30, 50, 0.4);\n border-radius: 8px;\n margin: 10px 0;\n}\n\n.mb-bubble::-webkit-scrollbar-thumb {\n background: linear-gradient(180deg, #00d2ff, #6c22f5);\n border-radius: 8px;\n}\n\n.mb-bubble.show {\n opacity: 1;\n transform: translateY(0);\n}\n\n.mb-text {\n font-size: 14px;\n color: #eaeaea;\n font-weight: 500;\n line-height: 1.3;\n word-break: break-word;\n}\n\n.mb-dots {\n display: inline-flex;\n gap: 4px;\n margin-left: 6px;\n vertical-align: middle;\n opacity: 0;\n transition: opacity 0.2s;\n}\n\n.mb-dots.show {\n opacity: 1;\n}\n\n.mb-dots span {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #8e62ff;\n animation: dot-blink 1.4s infinite ease-in-out both;\n}\n\n.mb-dots span:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.mb-dots span:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n@keyframes dot-blink {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n opacity: 0.5;\n }\n\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@media (max-width: 768px) {\n .mb-panel {\n width: 100%;\n }\n\n .mb-eyebrow {\n font-size: 12px;\n }\n\n .mb-title {\n font-size: 16px;\n }\n\n .mb-emblem {\n width: 44px;\n height: 44px;\n font-size: 16px;\n border-radius: 50%;\n }\n\n #mbFab {\n width: 44px;\n height: 44px;\n }\n\n .mb-area {\n gap: 12px;\n }\n\n .mb-bubble {\n padding: 8px;\n height: 75px;\n border-radius: 10px;\n }\n}\n",n}sleep(n){return new Promise(e=>setTimeout(e,n))}runAdAnimation(e,t){return n(this,void 0,void 0,function*(){this.isThinking=!0,this.panel.offsetWidth,this.panel.classList.add("show"),this.panel.style.transform="translateX(-50%) translateY(0)",yield this.sleep(800);const n=this.speechBubble,i=this.speechText;n.classList.add("show"),i.innerHTML='';const a=e,r=Math.floor(7*Math.random())+3,o=`\n ...\n \n Gemini+${r}\n `,s=o.replace(/]*>\.\.\.<\/span>/,"");i.innerHTML="";const l=document.createElement("div");l.id="mbTextWrap",i.appendChild(l),l.innerHTML="A";const d=3.5*l.scrollHeight;l.innerHTML="";let c="",p=0;const h=[".",",","?","!","\n"];for(;pd){l.innerHTML=c+o;break}c+=a[p],l.innerHTML=c,n.scrollTop=n.scrollHeight;let e=6+8*Math.random();const t=a[p];h.indexOf(t)>=0?e+=80+100*Math.random():" "===t&&Math.random()<.1&&(e+=40+80*Math.random()),yield this.sleep(e),p++}function b(){if(!l.isConnected)return;l.innerHTML="A";const n=3.5*l.scrollHeight;if(l.innerHTML=a+s,l.scrollHeight<=n)return;let e=0,t=a.length,i=0;for(;e<=t;){const r=e+t>>1;l.innerHTML=a.slice(0,r)+o,l.scrollHeight<=n?(i=r,e=r+1):t=r-1}l.innerHTML=a.slice(0,i)+o}p===a.length&&(l.innerHTML=c+s),b(),window.addEventListener("resize",b),yield this.sleep(1e3),this.isThinking=!1,window.addEventListener("scroll",this.onScroll,{passive:!0}),document.addEventListener("click",this.onDocClick)})}closeAd(){this.panel.classList.remove("show"),this.panel.style.transform="translateX(-50%) translateY(120%)",window.removeEventListener("scroll",this.onScroll),document.removeEventListener("click",this.onDocClick),this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=0),this.canvasResizeHandler&&(window.removeEventListener("resize",this.canvasResizeHandler),this.canvasResizeHandler=null),this.canvasResizeObserver&&(this.canvasResizeObserver.disconnect(),this.canvasResizeObserver=null)}startCanvasAnimation(){const n=this.canvas,e=n.getContext("2d");if(!e)return;let t=0,i=0,a=0,r=0,o=0,s=!1;n.style.opacity="0",n.style.transition="opacity 0.25s ease";const l=()=>{const l=window.devicePixelRatio||1,d=this.fab.getBoundingClientRect();t=d.width,i=d.height,0===t&&(t=48,i=48),n.width=t*l,n.height=i*l,e.setTransform(1,0,0,1,0,0),e.scale(l,l),a=t/2,r=i/2,o=.48*Math.min(t,i),!s&&t>0&&i>0&&Math.abs(t-i)<=2&&(s=!0,n.style.opacity="1")};this.canvasResizeHandler=l,window.addEventListener("resize",l),l(),requestAnimationFrame(l),window.addEventListener("load",l,{once:!0}),window.ResizeObserver&&(this.canvasResizeObserver=new ResizeObserver(()=>l()),this.canvasResizeObserver.observe(this.fab)),setTimeout(()=>{s||(s=!0,n.style.opacity="1")},1e3);const d=[{r:255,g:30,b:100,rx:.75,ry:.28,ox:-.05,oy:.2,rot:.15,spd:.7,dir:1,alpha:.6},{r:40,g:255,b:150,rx:.75,ry:.28,ox:.05,oy:-.2,rot:-.15,spd:.6,dir:-1,alpha:.5},{r:0,g:220,b:255,rx:.8,ry:.3,ox:.1,oy:0,rot:-.3,spd:.9,dir:1,alpha:.4},{r:120,g:30,b:255,rx:.85,ry:.4,ox:-.1,oy:.15,rot:.25,spd:.8,dir:-1,alpha:.5},{r:255,g:255,b:255,rx:.7,ry:.2,ox:0,oy:0,rot:0,spd:1,dir:1,alpha:.32},{r:0,g:120,b:255,rx:.9,ry:.6,ox:0,oy:-.1,rot:.35,spd:.7,dir:-1,alpha:.4},{r:255,g:80,b:180,rx:.75,ry:.25,ox:.15,oy:-.1,rot:.5,spd:1.2,dir:1,alpha:.55},{r:0,g:255,b:220,rx:.65,ry:.18,ox:-.12,oy:.08,rot:-.6,spd:1.4,dir:-1,alpha:.5},{r:120,g:30,b:255,rx:.85,ry:.4,ox:-.1,oy:.15,rot:.25,spd:.8,dir:-1,alpha:.5},{r:40,g:255,b:150,rx:.75,ry:.28,ox:.05,oy:-.2,rot:-.15,spd:.6,dir:-1,alpha:.5},{r:0,g:220,b:255,rx:.8,ry:.3,ox:.1,oy:0,rot:-.3,spd:.9,dir:1,alpha:.4}];let c=0,p=0,h=0;const b=n=>{this.rafId=requestAnimationFrame(b);let s=n-c;0===c&&(s=16),c=n,this.isThinking?h+=.08*(1-h):h+=.08*(0-h);const l=1+(3.5+2.5*Math.sin(.006*n)-1)*h;if(h>.01){const e=.5*Math.sin(.006*n)+.5,t=.1*n%360,i=25+60*e,a=1*h,r=1*h,o=.9*h,s=.7*h,l=Math.max(0,1-h);this.fab.style.background=`\n conic-gradient(from ${t}deg, rgba(255, 255, 255, ${1*h}) 0%, rgba(220, 250, 255, ${.8*h}) 50%, rgba(255, 255, 255, ${1*h}) 100%) border-box,\n linear-gradient(90deg, rgba(0, 229, 255, ${.6*l}), rgba(255, 51, 204, ${.6*l})) border-box\n `,this.fab.style.boxShadow=`\n 0 0 ${(5+5*e)*h}px rgba(255, 255, 255, ${a}),\n 0 0 ${(15+20*e)*h}px rgba(255, 255, 255, ${a}),\n 0 0 ${.8*i*h}px rgba(255, 255, 255, ${.9*a}),\n 0 0 ${i*h}px rgba(240, 255, 255, ${r}),\n 0 0 ${1.5*i*h}px rgba(150, 245, 255, ${o}),\n 0 0 ${2.5*i*h}px rgba(0, 229, 255, ${s}),\n 0 0 15px rgba(0, 229, 255, ${.5*l}),\n 0 0 15px rgba(255, 51, 204, ${.3*l}),\n 0 0 30px rgba(0, 229, 255, ${.3*l}),\n inset 0 0 15px rgba(0, 229, 255, ${.1*l})\n `}else this.fab.style.background&&(this.fab.style.background="",this.fab.style.boxShadow="");p+=s*Math.max(.1,l),e.clearRect(0,0,t,i);const g=1*o,m=8e-4*p;e.save(),e.beginPath(),e.arc(a,r,g,0,2*Math.PI),e.clip(),e.fillStyle="#010a26",e.fillRect(a-g,r-g,2*g,2*g),e.globalCompositeOperation="lighter",d.forEach((n,t)=>{const i=n.rot+m*n.dir*n.spd+.2*Math.sin(1.8*m+t),o=g*n.rx*(1+.2*Math.sin(2.2*m+2*t)),s=g*n.ry*(1+.25*Math.cos(1.9*m+t)),l=a+g*n.ox+Math.sin(1.8*m+t)*g*.18+Math.cos(2.7*m+t)*g*.08,d=r+g*n.oy+Math.cos(1.6*m+t)*g*.18+Math.sin(2.4*m+t)*g*.08;e.beginPath(),e.ellipse(l,d,o,s,i,0,2*Math.PI);const c=e.createRadialGradient(l,d,0,l,d,o);c.addColorStop(0,`rgba(${n.r}, ${n.g}, ${n.b}, ${n.alpha})`),c.addColorStop(1,`rgba(${n.r}, ${n.g}, ${n.b}, 0.01)`),e.fillStyle=c,e.fill()});const f=a+Math.sin(1.2*m)*g*.15+Math.cos(2.6*m)*g*.05,x=r+Math.cos(1.4*m)*g*.15+Math.sin(2.2*m)*g*.05,u=e.createRadialGradient(f,x,0,f,x,.5*g);u.addColorStop(0,"rgba(255, 255, 255, 0.55)"),u.addColorStop(.2,"rgba(255, 255, 255, 0.25)"),u.addColorStop(.5,"rgba(255, 255, 255, 0.05)"),u.addColorStop(.5,"rgba(255, 255, 255, 0.1)"),u.addColorStop(1,"rgba(255, 255, 255, 0)"),e.fillStyle=u,e.beginPath(),e.arc(f,x,.5*g,0,2*Math.PI),e.fill();const w=-.6*m,y=.85*g*(1+.1*Math.sin(3*m));e.beginPath(),e.ellipse(f,x,y,.015*g,w,0,2*Math.PI);const v=e.createRadialGradient(f,x,0,f,x,y);v.addColorStop(0,"rgba(255, 255, 255, 0.35)"),v.addColorStop(1,"rgba(255, 255, 255, 0)"),e.fillStyle=v,e.fill(),e.restore(),e.globalCompositeOperation="source-over",e.beginPath(),e.arc(a,r,g,0,2*Math.PI);const k=e.createRadialGradient(a,r,.75*g,a,r,g);k.addColorStop(0,"rgba(255, 255, 255, 0)"),k.addColorStop(.85,"rgba(255, 255, 255, 0.08)"),k.addColorStop(.95,"rgba(255, 255, 255, 0.25)"),k.addColorStop(1,"rgba(255, 255, 255, 0.4)"),e.fillStyle=k,e.fill();const S=.45+.12*Math.sin(1.5*m);e.shadowBlur=15,e.shadowColor="rgba(255,255,255,0.7)",e.lineWidth=.8,e.strokeStyle=`rgba(255,255,255,${S})`,e.stroke(),e.shadowBlur=0};this.rafId=requestAnimationFrame(b)}}i.SVG_NS="http://www.w3.org/2000/svg";class a{constructor(n,e){this.rafId=0,this.resizeHandler=null,this.resizeObserver=null,this.thinking=!1,this.canvas=n,this.fab=e}setThinking(n){this.thinking=n}start(){const n=this.canvas,e=n.getContext("2d");if(!e)return;let t=0,i=0,a=0,r=0,o=0,s=!1;n.style.opacity="0",n.style.transition="opacity 0.25s ease";const l=()=>{const l=window.devicePixelRatio||1,d=this.fab.getBoundingClientRect();t=d.width,i=d.height,0===t&&(t=48,i=48),n.width=t*l,n.height=i*l,e.setTransform(1,0,0,1,0,0),e.scale(l,l),a=t/2,r=i/2,o=.48*Math.min(t,i),!s&&t>0&&i>0&&Math.abs(t-i)<=2&&(s=!0,n.style.opacity="1")};this.resizeHandler=l,window.addEventListener("resize",l),l(),requestAnimationFrame(l),window.addEventListener("load",l,{once:!0}),window.ResizeObserver&&(this.resizeObserver=new ResizeObserver(()=>l()),this.resizeObserver.observe(this.fab)),setTimeout(()=>{s||(s=!0,n.style.opacity="1")},1e3);const d=[{r:255,g:30,b:100,rx:.75,ry:.28,ox:-.05,oy:.2,rot:.15,spd:.7,dir:1,alpha:.6},{r:40,g:255,b:150,rx:.75,ry:.28,ox:.05,oy:-.2,rot:-.15,spd:.6,dir:-1,alpha:.5},{r:0,g:220,b:255,rx:.8,ry:.3,ox:.1,oy:0,rot:-.3,spd:.9,dir:1,alpha:.4},{r:120,g:30,b:255,rx:.85,ry:.4,ox:-.1,oy:.15,rot:.25,spd:.8,dir:-1,alpha:.5},{r:255,g:255,b:255,rx:.7,ry:.2,ox:0,oy:0,rot:0,spd:1,dir:1,alpha:.32},{r:0,g:120,b:255,rx:.9,ry:.6,ox:0,oy:-.1,rot:.35,spd:.7,dir:-1,alpha:.4},{r:255,g:80,b:180,rx:.75,ry:.25,ox:.15,oy:-.1,rot:.5,spd:1.2,dir:1,alpha:.55},{r:0,g:255,b:220,rx:.65,ry:.18,ox:-.12,oy:.08,rot:-.6,spd:1.4,dir:-1,alpha:.5},{r:120,g:30,b:255,rx:.85,ry:.4,ox:-.1,oy:.15,rot:.25,spd:.8,dir:-1,alpha:.5},{r:40,g:255,b:150,rx:.75,ry:.28,ox:.05,oy:-.2,rot:-.15,spd:.6,dir:-1,alpha:.5},{r:0,g:220,b:255,rx:.8,ry:.3,ox:.1,oy:0,rot:-.3,spd:.9,dir:1,alpha:.4}];let c=0,p=0,h=0;const b=n=>{this.rafId=requestAnimationFrame(b);let s=n-c;0===c&&(s=16),c=n,this.thinking?h+=.08*(1-h):h+=.08*(0-h);const l=1+(3.5+2.5*Math.sin(.006*n)-1)*h;if(h>.01){const e=.5*Math.sin(.006*n)+.5,t=.1*n%360,i=25+60*e,a=1*h,r=1*h,o=.9*h,s=.7*h,l=Math.max(0,1-h);this.fab.style.background=`\n conic-gradient(from ${t}deg, rgba(255, 255, 255, ${1*h}) 0%, rgba(220, 250, 255, ${.8*h}) 50%, rgba(255, 255, 255, ${1*h}) 100%) border-box,\n linear-gradient(90deg, rgba(0, 229, 255, ${.6*l}), rgba(255, 51, 204, ${.6*l})) border-box\n `,this.fab.style.boxShadow=`\n 0 0 ${(5+5*e)*h}px rgba(255, 255, 255, ${a}),\n 0 0 ${(15+20*e)*h}px rgba(255, 255, 255, ${a}),\n 0 0 ${.8*i*h}px rgba(255, 255, 255, ${.9*a}),\n 0 0 ${i*h}px rgba(240, 255, 255, ${r}),\n 0 0 ${1.5*i*h}px rgba(150, 245, 255, ${o}),\n 0 0 ${2.5*i*h}px rgba(0, 229, 255, ${s}),\n 0 0 15px rgba(0, 229, 255, ${.5*l}),\n 0 0 15px rgba(255, 51, 204, ${.3*l}),\n 0 0 30px rgba(0, 229, 255, ${.3*l}),\n inset 0 0 15px rgba(0, 229, 255, ${.1*l})\n `}else this.fab.style.background&&(this.fab.style.background="",this.fab.style.boxShadow="");p+=s*Math.max(.1,l),e.clearRect(0,0,t,i);const g=o,m=8e-4*p;e.save(),e.beginPath(),e.arc(a,r,g,0,2*Math.PI),e.clip(),e.fillStyle="#010a26",e.fillRect(a-g,r-g,2*g,2*g),e.globalCompositeOperation="lighter",d.forEach((n,t)=>{const i=n.rot+m*n.dir*n.spd+.2*Math.sin(1.8*m+t),o=g*n.rx*(1+.2*Math.sin(2.2*m+2*t)),s=g*n.ry*(1+.25*Math.cos(1.9*m+t)),l=a+g*n.ox+Math.sin(1.8*m+t)*g*.18+Math.cos(2.7*m+t)*g*.08,d=r+g*n.oy+Math.cos(1.6*m+t)*g*.18+Math.sin(2.4*m+t)*g*.08;e.beginPath(),e.ellipse(l,d,o,s,i,0,2*Math.PI);const c=e.createRadialGradient(l,d,0,l,d,o);c.addColorStop(0,`rgba(${n.r}, ${n.g}, ${n.b}, ${n.alpha})`),c.addColorStop(1,`rgba(${n.r}, ${n.g}, ${n.b}, 0.01)`),e.fillStyle=c,e.fill()});const f=a+Math.sin(1.2*m)*g*.15+Math.cos(2.6*m)*g*.05,x=r+Math.cos(1.4*m)*g*.15+Math.sin(2.2*m)*g*.05,u=e.createRadialGradient(f,x,0,f,x,.5*g);u.addColorStop(0,"rgba(255, 255, 255, 0.55)"),u.addColorStop(.2,"rgba(255, 255, 255, 0.25)"),u.addColorStop(.5,"rgba(255, 255, 255, 0.05)"),u.addColorStop(.5,"rgba(255, 255, 255, 0.1)"),u.addColorStop(1,"rgba(255, 255, 255, 0)"),e.fillStyle=u,e.beginPath(),e.arc(f,x,.5*g,0,2*Math.PI),e.fill();const w=-.6*m,y=.85*g*(1+.1*Math.sin(3*m));e.beginPath(),e.ellipse(f,x,y,.015*g,w,0,2*Math.PI);const v=e.createRadialGradient(f,x,0,f,x,y);v.addColorStop(0,"rgba(255, 255, 255, 0.35)"),v.addColorStop(1,"rgba(255, 255, 255, 0)"),e.fillStyle=v,e.fill(),e.restore(),e.globalCompositeOperation="source-over",e.beginPath(),e.arc(a,r,g,0,2*Math.PI);const k=e.createRadialGradient(a,r,.75*g,a,r,g);k.addColorStop(0,"rgba(255, 255, 255, 0)"),k.addColorStop(.85,"rgba(255, 255, 255, 0.08)"),k.addColorStop(.95,"rgba(255, 255, 255, 0.25)"),k.addColorStop(1,"rgba(255, 255, 255, 0.4)"),e.fillStyle=k,e.fill();const S=.45+.12*Math.sin(1.5*m);e.shadowBlur=15,e.shadowColor="rgba(255,255,255,0.7)",e.lineWidth=.8,e.strokeStyle=`rgba(255,255,255,${S})`,e.stroke(),e.shadowBlur=0};this.rafId=requestAnimationFrame(b)}stop(){this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=0),this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}}class r{constructor(n="/aiBanner/getProduct",e=r.SESSION_KEY){this.ENP_BANNER_CLICK_TIME="enp_BannerClickTime",this.botCanvas=null,this.timers=[],this.path=n,this.sessionKey=e}static forInteraction(){return new r("/aiBanner/getInteraction",r.INTERACTION_SESSION_KEY)}loadAiContent(n,e,i){try{if(this.isSuppressed())return;const a={adverId:n,chatSeq:i};e&&(a.pCode=e),(new t).post(this.path,a,(n,e)=>{if(!e)return;const t=n;t&&("Y"===t.useYn?t.products&&0!==t.products.length&&this.hasVisibleText(t.title)&&this.createBanner(t):this.suppress())})}catch(n){}}isSuppressed(){const n=sessionStorage.getItem(this.sessionKey);return!!n&&(Date.now(){t.appendChild(i),this.botCanvas=new a(this.canvasEl,this.fab),this.botCanvas.start(),this.setTimer(()=>this.runAdAnimation(),3e3)},100)}createPanel(n){const e=this.el("canvas",{id:"bot-canvas"}),t=this.el("div",{id:"fab"},[e]);this.canvasEl=e,this.fab=t;const i=this.el("div",{className:"mb-title"});this.setRichText(i,n.title);const a=this.el("div",{className:"mb-header-top"},[t,i]),r=this.svgEl("path",{d:"M18 6L6 18M6 6l12 12"}),o=this.svgEl("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[r]),s=this.el("button",{className:"mb-close-btn",id:"mb-close-btn"},[o]);s.addEventListener("click",()=>this.closeAd());const l=this.el("div",{className:"mb-panel-head"},[a,s]),d=this.el("div",{className:"mb-panel",id:"mb-panel"},[l,...this.createCardRows(n.products)]);return this.panel=d,d.style.cssText="position: fixed; left: 0; right: 0; margin: 0 auto; bottom: -110vh; transition: bottom 0.5s cubic-bezier(0.25, 1.2, 0.3, 1)",d}createCardRows(n){const e=n.map((n,e)=>this.createCard(n,e));return[this.el("div",{className:"mb-card-row"},e)]}createCard(n,e){const t=n.discountRate>0,i=this.el("div",{className:"mb-product-image"}),a=this.safeUrl(n.imageUrl);if(a&&(i.style.backgroundImage=`url("${a}")`),t){const e=this.el("div",{className:"mb-discount-badge"});e.textContent=`${n.discountRate}%`,i.appendChild(e)}const r=this.el("div",{className:"mb-product-name"});r.textContent=n.productName||"";const o=this.el("div",{className:"mb-original-price"});o.textContent=this.formatPrice(n.price);const s=this.el("div",{className:t?"mb-price-row sale":"mb-price-row"},[o]);if(t){const e=this.el("div",{className:"mb-product-price"});e.textContent=this.formatPrice(n.salePrice),s.appendChild(e)}const l=this.el("div",{className:"mb-product-info"},[r,s]),d=this.el("div",{className:"mb-product-card"},[i,l]);d.dataset.index=String(e);const c=this.safeUrl(n.productUrl);return c&&(d.style.cursor="pointer",d.addEventListener("click",()=>window.open(c,"_blank"))),d}runAdAnimation(){this.botCanvas&&this.botCanvas.setThinking(!0),this.panel.classList.add("show"),this.panel.style.bottom="0";const n=Array.from(this.panel.querySelectorAll(".mb-product-image, .mb-product-name, .mb-price-row, .mb-discount-badge"));n.forEach(n=>n.classList.add("mb-ai-loading"));for(let e=n.length-1;e>0;e--){const t=Math.floor(Math.random()*(e+1)),i=n[e];n[e]=n[t],n[t]=i}n.forEach(n=>{const e=300+2500*Math.random();this.setTimer(()=>n.classList.remove("mb-ai-loading"),e)}),this.setTimer(()=>{this.botCanvas&&this.botCanvas.setThinking(!1)},3e3)}closeAd(){this.panel.classList.remove("show"),this.panel.style.bottom="-110vh",this.timers.forEach(n=>clearTimeout(n)),this.timers=[],this.botCanvas&&(this.botCanvas.stop(),this.botCanvas=null)}setTimer(n,e){this.timers.push(window.setTimeout(n,e))}formatPrice(n){return"number"!=typeof n||!isFinite(n)||n<0?"":`${String(Math.floor(n)).replace(/\B(?=(\d{3})+(?!\d))/g,",")}원`}hasVisibleText(n){return!!n&&n.replace(/<[^>]*>/g,"").replace(/ /gi," ").trim().length>0}setRichText(n,e){const t=(e||"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'");n.innerHTML=t.replace(/<(\/?)(b|strong|br)\s*\/?>/gi,"<$1$2>").replace(/<\/?[a-z][\s\S]*?>/gi,"")}safeUrl(n){if(!n)return"";const e=n.trim();return/^https?:\/\//i.test(e)?/["'\\]/.test(e)?"":e:""}isInIframe(){try{return window.self!==window.top}catch(n){return!0}}defaultStyle(){const n=document.createElement("style");return n.textContent="\n/* ================================================================\n MB POPUP - LAYOUT\n START: Popup CSS\n================================================================ */\n@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap');\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n#mb_root {\n font-family: 'Noto Sans KR', 'Apple SD Gothic Neo', sans-serif;\n -webkit-font-smoothing: antialiased;\n overflow-x: hidden;\n background: #fff;\n color: #000;\n}\n\n.mb-panel {\n /* [iOS 크롬 하단잘림] transform 대신 bottom 으로 슬라이드 — iOS 는 fixed+transform 을 레이아웃 뷰포트(툴바 뒤) 기준으로 배치해 잘림 */\n position: fixed;\n bottom: -110vh;\n left: 0;\n right: 0;\n margin: 0 auto;\n width: min(480px, 100vw);\n display: flex;\n flex-direction: column;\n background: #14141D;\n border-radius: 30px 30px 0 0;\n padding: 8px 8px 8px 8px;\n max-height: 66vh; /* 퍼블에 없어 추가 — 상품/상품명이 길 때 화면을 넘지 않도록 */\n z-index: 99001;\n box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.6), inset 0 2px 10px rgba(255, 255, 255, 0.05);\n transition: bottom 0.5s cubic-bezier(0.25, 1.2, 0.3, 1);\n color: #FFFFFF;\n}\n\n.mb-panel.show {\n bottom: 0;\n}\n\n.mb-panel::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 30px 30px 0 0;\n padding: 2px 2px 0 2px;\n background: linear-gradient(90deg, #6c22f5, #00d2ff);\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n opacity: 0;\n pointer-events: none;\n z-index: -1;\n}\n\n.mb-panel.show::before {\n animation: border-pop 1.5s cubic-bezier(0.25, 1.2, 0.3, 1) 0.5s forwards, border-fadeout 1s ease 3s forwards;\n}\n\n@keyframes border-fadeout {\n to {\n opacity: 0;\n filter: none;\n }\n}\n\n@keyframes border-pop {\n 0% {\n opacity: 0;\n filter: drop-shadow(0 0 5px rgba(0, 229, 255, 0)) brightness(1);\n }\n\n 40% {\n opacity: 1;\n filter: drop-shadow(0 0 25px rgba(0, 229, 255, 1)) drop-shadow(0 0 15px rgba(108, 34, 245, 0.8)) brightness(1.8);\n }\n\n 100% {\n opacity: 1;\n filter: drop-shadow(0 0 12px rgba(0, 229, 255, 0.8)) drop-shadow(0 0 6px rgba(108, 34, 245, 0.6)) brightness(1);\n }\n}\n\n.mb-panel-head {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.mb-header-top {\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.mb-title {\n font-size: 14px;\n font-weight: 700;\n width: fit-content;\n line-height: 1.2;\n letter-spacing: -0.3px;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n word-break: keep-all;\n text-overflow: ellipsis;\n}\n\n.mb-title b {\n font-size: 15px;\n font-weight: 900;\n background: linear-gradient(90deg, #00E5FF, #b077ff);\n filter: drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.7));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.mb-close-btn {\n border: 1px solid rgba(255, 255, 255, 0.05);\n cursor: pointer;\n font-family: inherit;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.2s;\n}\n\n.mb-close-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n.mb-close-btn svg {\n width: 16px;\n height: 16px;\n stroke: #888;\n stroke-width: 1.5;\n}\n\n#fab {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 0.25px solid transparent;\n position: relative;\n z-index: 1;\n flex-shrink: 0;\n outline: none;\n padding: 0;\n box-sizing: border-box;\n background: linear-gradient(90deg, rgba(0, 229, 255, 0.6), rgba(255, 51, 204, 0.6)) border-box;\n transition: transform 0.18s ease, box-shadow 0.3s ease;\n overflow: visible;\n display: block;\n}\n\n/* 좌우 스와이프 스크롤 유지 · 하단 스크롤바는 숨김 */\n.mb-card-row {\n display: flex;\n gap: 6px;\n overflow-x: auto;\n scroll-snap-type: x proximity;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.mb-card-row::-webkit-scrollbar {\n display: none;\n}\n\n.mb-product-card {\n flex: 0 0 33%;\n min-width: 0;\n background: #1A1A24;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid rgba(255, 255, 255, 0.05);\n scroll-snap-align: start;\n}\n\n.mb-product-image,\n.mb-product-name,\n.mb-price-row,\n.mb-discount-badge {\n transition: opacity 0.5s ease-out, transform 0.5s ease-out;\n}\n\n.mb-ai-loading {\n opacity: 0;\n transform: translateY(5px);\n}\n\n.mb-product-image {\n /* 퍼블 데모 이미지 제거 — 실제 이미지는 스크립트가 inline 으로 넣는다.\n 남겨두면 imageUrl 이 없거나 차단됐을 때 광고주 페이지에 남의 상품 사진이 뜬다. */\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n aspect-ratio: 1 / 1;\n width: 100%;\n border-radius: 8px 8px 0 0;\n border-bottom: 1px solid rgba(255, 255, 255, 0.05);\n position: relative;\n}\n\n.mb-discount-badge {\n position: absolute;\n top: 0;\n right: 0;\n background: #ff5252;\n color: #fff;\n font-size: 10px;\n font-weight: 800;\n padding: 2px 4px;\n border-bottom-left-radius: 6px;\n box-shadow: -1px 1px 3px rgba(0, 0, 0, 0.3);\n z-index: 2;\n}\n\n/* 기본: 세일가 없음 → 정가(mb-original-price)를 흰색 정상가로 표시 */\n.mb-original-price {\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n}\n\n/* 세일가 있을 때(.sale): 정가를 취소선 회색으로 표시 */\n.mb-price-row.sale .mb-original-price {\n color: #777;\n font-size: 9px;\n text-decoration: line-through;\n font-weight: 400;\n}\n\n.mb-price-row {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 3px;\n}\n\n.mb-product-info {\n padding: 2px 3px 2px 3px;\n display: flex;\n flex-direction: column;\n}\n\n.mb-product-name {\n color: #b3b3b3;\n font-size: 11px;\n font-weight: 400;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mb-product-price {\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n}\n\n#bot-canvas {\n width: 100%;\n height: 100%;\n position: relative;\n display: block;\n border-radius: 50%;\n z-index: 2;\n animation: canvas-spin 5s linear infinite;\n}\n\n@keyframes canvas-spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@media (max-width: 768px) {\n .mb-panel {\n width: 100%;\n }\n\n #fab {\n width: 34px;\n height: 34px;\n }\n}\n\n/* END: Popup CSS */\n\n",n}el(n,e={},t=[]){const i=document.createElement(n);return e.className&&(i.className=e.className),e.id&&(i.id=e.id),t.forEach(n=>i.appendChild(n)),i}svgEl(n,e={},t=[]){const i=document.createElementNS("http://www.w3.org/2000/svg",n);return Object.keys(e).forEach(n=>i.setAttribute(n,e[n])),t.forEach(n=>i.appendChild(n)),i}}r.SESSION_KEY="enpAiProductBanner",r.INTERACTION_SESSION_KEY="enpAiInteraction",r.SUPPRESS_MINUTES=30;class o{static isMobile(){try{const n=navigator.userAgent||"",e=navigator.userAgentData;if(e&&!0===e.mobile)return!0;if(/Android|Mobi|iP(hone|od|ad)|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(n))return!0;if(/Macintosh/.test(n)&&navigator.maxTouchPoints>1)return!0;if(/^m\./.test(location.hostname))return!0;const t=[/\/m\//,/\/m2\//];for(let n=0;nn.searchParams.delete(e)),window.history.replaceState({},"",n.toString())}}s.LANDING_PARAMS=["pCode","chatSeq","aiInteraction"],(()=>{try{const n=document.currentScript;if(!n)return;const e=new window.URL(n.src).searchParams.get("adverId");if(!e)return;new s(e).executeCommand()}catch(n){}})()})();