(function(){'use strict';if(!window.idcSmartlog||!window.idcSmartlog.ajax)return;try{var __u=new URL(window.location.href);if(__u.searchParams.has('_idc_nc')){__u.searchParams.delete('_idc_nc');var __q=__u.searchParams.toString();window.history.replaceState(null,'',__u.pathname+(__q?'?'+__q:'')+__u.hash);}}catch(__e){}
function canonicalPageUrl(){try{var u=new URL(window.location.href);u.searchParams.delete('_idc_nc');return u.toString();}catch(e){return window.location.href;}}
var base=window.idcSmartlog.ajax;var nonce=window.idcSmartlog.nonce||'';var sessionId=getSessionId();function installFocusFix(){if(!window.idcSmartlog||!window.idcSmartlog.focusFixEnabled)return;var keyboardMode=false;function setKeyboardMode(enabled){keyboardMode=!!enabled;if(!document.body)return;if(keyboardMode){document.body.classList.add('idc-smartlog-keyboard-nav');}else{document.body.classList.remove('idc-smartlog-keyboard-nav');}}
document.addEventListener('keydown',function(event){if(event.key==='Tab')setKeyboardMode(true);},true);document.addEventListener('mousedown',function(){setKeyboardMode(false);},true);document.addEventListener('touchstart',function(){setKeyboardMode(false);},true);document.addEventListener('focusin',function(event){var target=event.target;if(keyboardMode)return;var tag=target&&target.tagName?target.tagName.toUpperCase():'';var inputTags={INPUT:1,TEXTAREA:1,SELECT:1};if(inputTags[tag])return;if(target&&typeof target.blur==='function'){window.requestAnimationFrame(function(){if(document.activeElement===target)target.blur();});}},true);}
var MAX_DWELL=14400;var activeDwell=0;var segStart=Date.now();function getDwell(){var current=Math.floor((Date.now()-segStart)/1000);return Math.min(activeDwell+current,MAX_DWELL);}
var BLOCK_KEY='idc_blocked';var heartbeatTimer=null;function isBlocked(){return sessionStorage.getItem(BLOCK_KEY)==='1';}
function markBlocked(){sessionStorage.setItem(BLOCK_KEY,'1');if(heartbeatTimer){clearInterval(heartbeatTimer);heartbeatTimer=null;}}
function getSessionId(){var k='idc_sid';var kt='idc_sid_ts';var mins=(window.idcSmartlog&&window.idcSmartlog.sessionExpiry)?parseInt(window.idcSmartlog.sessionExpiry,10):30;var expiry=mins*60*1000;var s=sessionStorage.getItem(k);var ts=parseInt(sessionStorage.getItem(kt)||'0',10);var now=Date.now();if(!s||(ts>0&&(now-ts)>expiry)){s=Math.random().toString(36).slice(2)+now.toString(36);sessionStorage.setItem(k,s);}
sessionStorage.setItem(kt,String(now));return s;}
function getUtm(){var u=new URL(canonicalPageUrl());return{source:u.searchParams.get('utm_source')||'',medium:u.searchParams.get('utm_medium')||'',campaign:u.searchParams.get('utm_campaign')||'',term:u.searchParams.get('utm_term')||'',content:u.searchParams.get('utm_content')||'',n_media:u.searchParams.get('n_media')||'',n_campaign:u.searchParams.get('n_campaign')||'',n_adgroup:u.searchParams.get('n_adgroup')||u.searchParams.get('n_ad_group')||'',n_creative:u.searchParams.get('n_creative')||'',n_keyword:u.searchParams.get('n_keyword')||'',n_query:u.searchParams.get('n_query')||'',n_adkeyword:u.searchParams.get('n_adkeyword')||'',n_rank:u.searchParams.get('n_rank')||'',napm:u.searchParams.get('NaPm')||u.searchParams.get('napm')||u.searchParams.get('NAPM')||'',kwd:u.searchParams.get('kwd')||'',gclid:u.searchParams.get('gclid')||'',};}
function getKeyword(utm,ref){if(utm.term)return safeDecodeURI(utm.term);if(utm.n_query)return safeDecodeURI(utm.n_query);if(utm.n_adkeyword)return safeDecodeURI(utm.n_adkeyword);if(utm.kwd)return safeDecodeURI(utm.kwd);if(ref){try{var rUrl=new URL(ref);var q=rUrl.searchParams.get('query')||rUrl.searchParams.get('q')||rUrl.searchParams.get('n_query')||rUrl.searchParams.get('keyword')||rUrl.searchParams.get('kwd')||'';if(q)return safeDecodeURI(q);}catch(e){}}
if(utm.n_keyword)return'kw:'+utm.n_keyword;return'';}
function safeDecodeURI(s){try{return decodeURIComponent(s);}catch(e){return s;}}
function getAdMedium(utm,ref){var refLow=(ref||'').toLowerCase();if(refLow.indexOf('ac.naver.com')>=0||refLow.indexOf('alsearch.naver.com')>=0)return'NAVER';if(utm.medium==='cpc'||utm.medium==='ppc')return utm.source?utm.source.toUpperCase():'NAVER';if(utm.napm||utm.n_media||utm.n_campaign||utm.n_adgroup||utm.n_creative||utm.n_keyword||utm.n_rank)return'NAVER';if(utm.gclid)return'GOOGLE';return'';}
function getAdType(utm,adMedium){if(!adMedium)return'';if(adMedium==='GOOGLE')return'Google 검색광고';if(adMedium==='NAVER'){var nm=utm.n_media;if(nm==='27758')return'네이버 파워링크(PC)';if(nm==='122887')return'네이버 파워링크(모바일)';if(nm==='27758'||utm.n_query||utm.n_keyword)return'네이버 검색광고';if(nm)return'네이버 디스플레이광고';return'네이버 광고';}
if(utm.medium==='cpc'||utm.medium==='ppc')return(utm.source||'naver')+' 검색광고';return'광고';}
function sendHit(type,payload,keepalive){return fetch(base+type,{method:'POST',credentials:'omit',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload),keepalive:!!keepalive}).then(function(r){if(r.status===403){markBlocked();return null;}
return r.json().then(function(j){if(!j)return j;if(j.stop){if(heartbeatTimer){clearInterval(heartbeatTimer);heartbeatTimer=null;}}
if(j.auto_blocked)markBlocked();return j;});}).catch(function(){return null;});}
function initSession(){try{if(sessionStorage.getItem(BLOCK_KEY)==='1'){sessionStorage.removeItem(BLOCK_KEY);}}catch(e){}
var utm=getUtm();var ref=document.referrer||'';var keyword=getKeyword(utm,ref);var adMedium=getAdMedium(utm,ref);var adType=getAdType(utm,adMedium);var isNaverAd=adMedium==='NAVER';sendHit('hit',{session_id:sessionId,url:canonicalPageUrl(),title:document.title,referrer:ref,utm_source:utm.source||(isNaverAd?'naver':''),utm_medium:utm.medium||(isNaverAd?'cpc':''),utm_campaign:utm.campaign,utm_term:utm.term,utm_content:utm.content,keyword:keyword,ad_medium:adMedium,ad_type:adType,screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,user_agent:navigator.userAgent}).then(function(j){if(j&&j.warn){showAdWarnPopup(j.warn_level||1,j.warn_clicks||0,{keyword:j.warn_keyword||'',ip:j.warn_ip||'',datetime:j.warn_datetime||''});}});}
function escHtml(s){if(s===null||s===undefined)return'';var d=document.createElement('div');d.textContent=String(s);return d.innerHTML;}
function showAdWarnPopup(level,clicks,meta){meta=meta||{};var lastShown=parseInt(sessionStorage.getItem('idc_ad_warn_last_clicks')||'0',10);if(clicks<=lastShown)return;sessionStorage.setItem('idc_ad_warn_last_clicks',String(clicks));var kwLabel=meta.keyword?escHtml(meta.keyword):'<span style="color:#888;">(식별된 광고 키워드 없음)</span>';var ipLabel=meta.ip?escHtml(meta.ip):'—';var dtLabel=meta.datetime?escHtml(meta.datetime):'—';var recordBox=''
+'<div style="margin-bottom:16px;padding:12px 14px;background:#f0f4f8;border:1px solid #c5d1dc;border-radius:8px;text-align:left;">'
+'  <p style="margin:0 0 8px;font-size:12px;font-weight:800;color:#1d2327;">이번 접속 기준 처리 정보</p>'
+'  <table style="width:100%;font-size:13px;color:#333;border-collapse:collapse;">'
+'    <tr><td style="padding:4px 8px 4px 0;color:#64748b;width:88px;vertical-align:top;">광고 키워드</td><td style="padding:4px 0;word-break:break-all;">'+kwLabel+'</td></tr>'
+'    <tr><td style="padding:4px 8px 4px 0;color:#64748b;vertical-align:top;">IP 주소</td><td style="padding:4px 0;">'+ipLabel+'</td></tr>'
+'    <tr><td style="padding:4px 8px 4px 0;color:#64748b;vertical-align:top;">접속 시각</td><td style="padding:4px 0;">'+dtLabel+'</td></tr>'
+'    <tr><td style="padding:4px 8px 4px 0;color:#64748b;vertical-align:top;">24h 내 광고 유입</td><td style="padding:4px 0;"><strong>'+clicks+'</strong>회 (세션 기준)</td></tr>'
+'  </table>'
+'  <p style="margin:8px 0 0;font-size:11px;color:#64748b;line-height:1.5;">※ 동일 공유기·회사망 등에서는 다른 분의 접속이 합산될 수 있습니다.</p>'
+'</div>';var contactBox=''
+'<div style="margin-top:14px;padding:12px 14px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;text-align:center;">'
+'  <p style="margin:0 0 6px;font-size:13px;color:#166534;font-weight:700;">문의</p>'
+'  <a href="tel:03180150978" style="font-size:18px;font-weight:800;color:#047857;text-decoration:none;letter-spacing:0.02em;">031-8015-0978</a>'
+'  <p style="margin:8px 0 0;font-size:12px;color:#15803d;line-height:1.5;">안내·문의는 위 번호로 연락 주시기 바랍니다.</p>'
+'</div>';var configs={1:{icon:'⚠️',topColor:'#f59e0b',btnColor:'#d97706',title:'광고 유입 경고',messages:['<strong>광고비 절약</strong>을 위해, 자주 찾으시는 경우 <strong>북마크(즐겨찾기)</strong>에 이 페이지를 추가해 주세요. 광고를 거치지 않고 방문하시면 불필요한 <strong>광고비 지출을 줄이는 데</strong> 도움이 됩니다.','반복적인 광고 클릭 유입은 통계상 <strong>짧은 간격의 다회 접속</strong>으로 분류될 수 있습니다.','최근 24시간 기준 광고 유입 <strong>'+clicks+'회</strong>가 확인되었습니다. (동일 공유기·회사망·기기에서는 합산될 수 있습니다.)'],showBookmark:true},2:{icon:'⚠️',topColor:'#e67e22',btnColor:'#c06414',title:'광고 유입 경고 (단계 강화)',messages:['동일 출처의 <strong>반복 광고 유입</strong>이 계속 확인되고 있습니다. ('+clicks+'회 / 최근 24시간)','광고비 낭비를 줄이시려면 <strong>북마크 추가</strong> 또는 <strong>주소 직접 입력</strong>으로 방문해 주시기 바랍니다.','정책에 따라 <strong>접속 제한·트래픽 필터링</strong> 등 조치가 적용될 수 있습니다.'],showBookmark:true},3:{icon:'🔒',topColor:'#64748b',btnColor:'#475569',title:'광고 유입 경고 (최종 안내)',messages:['광고 경로 <strong>반복 유입</strong>이 누적되어 <strong>추가 점검 대상</strong>으로 분류되었습니다. ('+clicks+'회 / 최근 24시간)','서비스 안정성 유지를 위해 기록이 유지되며, 반복 시 <strong>접속 제한</strong>될 수 있습니다.','<strong>북마크·직접 방문</strong>을 이용해 주시고, 아래 <strong>문의 전화</strong>로 연락 가능합니다.'],showBookmark:true}};var cfg=configs[level]||configs[1];var msgHtml=cfg.messages.map(function(m){return'<div style="display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;">'
+'<span style="color:'+cfg.topColor+';font-size:15px;flex-shrink:0;margin-top:1px;">▶</span>'
+'<p style="margin:0;color:#333;line-height:1.75;font-size:14px;">'+m+'</p>'
+'</div>';}).join('');var bookmarkHtml='';if(cfg.showBookmark){bookmarkHtml='<button id="idc-ad-warn-bk" style="'
+'background:#2271b1;color:#fff;border:none;'
+'padding:9px 18px;border-radius:7px;font-size:13px;font-weight:700;'
+'cursor:pointer;font-family:inherit;margin-right:8px;">'
+'🔖 북마크 추가</button>';}
var ovr=document.createElement('div');ovr.id='idc-ad-warn-overlay';ovr.style.cssText='position:fixed;top:0;left:0;width:100%;height:100%;'
+'background:rgba(0,0,0,.78);z-index:2147483647;'
+'display:flex;align-items:center;justify-content:center;'
+'font-family:"Malgun Gothic","Apple SD Gothic Neo",sans-serif;padding:16px;box-sizing:border-box;';ovr.innerHTML=''
+'<div style="background:#fff;padding:36px 38px;border-radius:16px;'
+'max-width:540px;width:100%;text-align:center;'
+'border-top:7px solid '+cfg.topColor+';'
+'box-shadow:0 12px 48px rgba(0,0,0,.36);">'
+'  <div style="font-size:46px;margin-bottom:8px;">'+cfg.icon+'</div>'
+'  <h2 style="margin:0 0 6px;font-size:20px;color:#1d2327;font-weight:800;">'+cfg.title+'</h2>'
+'  <p style="margin:0 0 16px;font-size:12px;color:#bbb;">안내 단계 '+level+' · 최근 24시간 광고 유입 '+clicks+'회 · 보안·통계 시스템</p>'
+recordBox
+'  <div style="text-align:left;background:#f9fafb;border:1px solid #e5e7eb;'
+'border-radius:10px;padding:16px 18px;margin-bottom:20px;">'
+msgHtml
+'  </div>'
+contactBox
+'  <div style="display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:18px;">'
+bookmarkHtml
+'  <button id="idc-ad-warn-ok" style="background:'+cfg.btnColor+';color:#fff;border:none;'
+'padding:10px 32px;border-radius:7px;font-size:14px;font-weight:700;'
+'cursor:pointer;font-family:inherit;">확인</button>'
+'  </div>'
+'</div>';function insertPopup(){document.body.appendChild(ovr);document.getElementById('idc-ad-warn-ok').addEventListener('click',function(){ovr.style.display='none';});var bkBtn=document.getElementById('idc-ad-warn-bk');if(bkBtn){bkBtn.addEventListener('click',function(){try{alert('Ctrl+D (Mac: Cmd+D) 또는 브라우저 주소창의 ★을 클릭하여 북마크에 추가하세요.\n주소: '+canonicalPageUrl());}catch(e){}
bkBtn.disabled=true;bkBtn.textContent='✅ 안내 완료';});}}
if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',insertPopup);}else{insertPopup();}}
function heartbeat(){if(isBlocked()||!heartbeatTimer)return;sendHit('heartbeat',{session_id:sessionId,url:canonicalPageUrl(),title:document.title,dwell:getDwell()});}
function pageView(url,title,isExit){sendHit('pageview',{session_id:sessionId,url:url,title:title,is_exit:isExit?1:0,dwell:isExit?getDwell():0});}
var exitSent=false;function sendExitPageview(){if(isBlocked()||exitSent)return;exitSent=true;activeDwell=Math.min(activeDwell+Math.floor((Date.now()-segStart)/1000),MAX_DWELL);sendHit('pageview',{session_id:sessionId,url:canonicalPageUrl(),title:document.title,is_exit:1,dwell:Math.min(activeDwell,MAX_DWELL)},true);}
function onVisibilityChange(){if(document.visibilityState==='hidden'){activeDwell=Math.min(activeDwell+Math.floor((Date.now()-segStart)/1000),MAX_DWELL);if(!exitSent&&!isBlocked()){sendHit('pageview',{session_id:sessionId,url:canonicalPageUrl(),title:document.title,is_exit:1,dwell:activeDwell},true);}}else if(document.visibilityState==='visible'){segStart=Date.now();exitSent=false;}}
function onPageHide(){sendExitPageview();}
function onBeforeUnload(){sendExitPageview();}
document.addEventListener('visibilitychange',onVisibilityChange);window.addEventListener('pagehide',onPageHide);window.addEventListener('beforeunload',onBeforeUnload);installFocusFix();initSession();heartbeatTimer=setInterval(heartbeat,30000);if(typeof window.idcSmartlogTrack==='function')return;window.idcSmartlogTrack=function(){initSession();};})();