!function(){"use strict";const USAGE_GPD={light:.7,medium:1.8,heavy:4},PROVIDER_LABELS={a:"Альфа",p:"Плюс",u:"Юни",e:"Альфа",z:"Плюс",k:"Юни"};window.REDESIM_PROVIDER_LABELS=PROVIDER_LABELS,window.REDESIM_PROVIDER_DESCRIPTIONS={a:"Альфа — идеален для поездки в одну-две страны. Выбираете направление, покупаете пакет и пользуетесь интернетом без лишних настроек.",e:"Альфа — идеален для поездки в одну-две страны. Выбираете направление, покупаете пакет и пользуетесь интернетом без лишних настроек.",u:"Юни — создан для тех, кто посещает несколько стран за одну поездку. Одна eSIM, несколько пакетов для разных стран: карточка сама определит, в какой стране вы находитесь, и автоматически активирует нужный пакет.",k:"Юни — создан для тех, кто посещает несколько стран за одну поездку. Одна eSIM, несколько пакетов для разных стран: карточка сама определит, в какой стране вы находитесь, и автоматически активирует нужный пакет.",p:"Плюс — аналог Простого тарифа, но с важным преимуществом для пользователей Android: в ряде стран не потребуются дополнительные настройки устройства. Подключение — в несколько касаний.",z:"Плюс — аналог Простого тарифа, но с важным преимуществом для пользователей Android: в ряде стран не потребуются дополнительные настройки устройства. Подключение — в несколько касаний."};let selDays=7,selUsage="light";const selMap={},userPicked=new Set;let filterUnlimitedOnly=!1;const fmt=n=>n.toLocaleString("ru-RU")+" ₽",_plural=new Intl.PluralRules("ru");function dW(n){return{one:"день",few:"дня",many:"дней",other:"дней"}[_plural.select(n)]??"дней"}function adjustDays(delta){const inp=document.getElementById("dayInp");if(!inp)return;let v=Math.min(180,Math.max(1,(parseInt(inp.value,10)||selDays)+delta));inp.value=v,inp.dispatchEvent(new Event("input"))}const DAILY_VOLUME_MARKER=999999999999;function isDaily(row){return"daily"===row.dataset.type||parseInt(row.dataset.volume,10)>=DAILY_VOLUME_MARKER}function isSuitable(row){return!(filterUnlimitedOnly&&!isDaily(row))&&(!!isDaily(row)||parseInt(row.dataset.period,10)>=selDays)}let _filterTimer=null;function renderBestPick(bestRow,needGb){const wrap=document.getElementById("bestPick"),hdr=document.getElementById("allTariffsHdr");if(!wrap||!bestRow)return;const isBestDaily=isDaily(bestRow),price=isBestDaily&&"z"!==bestRow.dataset.prov?parseInt(bestRow.dataset.price,10)*selDays:parseInt(bestRow.dataset.price,10),provCol=bestRow.closest(".prov-col"),provKey=provCol?String(provCol.id||"").replace("col-","").trim().toLowerCase():(bestRow.dataset.prov||"").toLowerCase(),provName=function(rawName,providerKey){const key=String(providerKey||"").toLowerCase();return PROVIDER_LABELS[key]||rawName||""}(provCol?.dataset.providerName||provCol?.querySelector(".prov-op")?.textContent.trim()||"",provKey),speed=provCol?.dataset.providerSpeed||provCol?.querySelector(".prov-spd")?.textContent.trim()||"",operators=(bestRow.dataset.networkList||"").trim()||(provCol?.dataset.providerOperators||"").trim(),name=bestRow.querySelector(".t-name-main")?.textContent.trim()||"",gbCount=isBestDaily?Math.max(1,USAGE_GPD[selUsage]*selDays):parseInt(bestRow.dataset.volume,10),ppg=fmt(Math.ceil(price/gbCount))+"/ГБ",desc=`Оптимально для: ${("light"===selUsage?"Мессенджеры и карты":"medium"===selUsage?"Соцсети и браузер":"Видео и работа").toLowerCase()}`,provColsEl=document.querySelector(".prov-cols[data-country-code]"),countryCode=provColsEl?provColsEl.dataset.countryCode:"",md={name:(provColsEl?provColsEl.dataset.countryName:"")||name,spec:[name,provName,operators,speed].filter(Boolean).join(" · "),price:fmt(price),packageCode:bestRow.dataset.id||"",countryCode:countryCode,days:isBestDaily?selDays:0},set=(id,val)=>{const el=document.getElementById(id);el&&(el.textContent=val)};set("bpName",name),set("bpDesc",desc),set("bpPpg",ppg),set("bpProvTag",provName),set("bpSpeed",speed);let bpOperator=document.getElementById("bpOperator");if(!bpOperator){const bpSpeedEl=document.getElementById("bpSpeed"),bpTagsEl=bpSpeedEl?bpSpeedEl.parentElement:document.querySelector(".bp-tags");bpTagsEl&&(bpOperator=document.createElement("span"),bpOperator.className="bp-tag",bpOperator.id="bpOperator",bpSpeedEl&&bpSpeedEl.nextSibling?bpTagsEl.insertBefore(bpOperator,bpSpeedEl.nextSibling):bpTagsEl.appendChild(bpOperator))}bpOperator&&(bpOperator.textContent=operators||"",bpOperator.style.display=operators?"":"none"),set("bpPrice",fmt(price));const btn=document.getElementById("bpBuyBtn");btn&&(btn.onclick=()=>openModal(md)),wrap.style.display="block",hdr&&(hdr.style.display="block")}function filterTariffs(){const days=selDays,needGb=USAGE_GPD[selUsage]*days,rTitle=document.getElementById("rTitle"),rCount=document.getElementById("rCount");rTitle&&(rTitle.textContent="Подобрали для вас");let visible=0;document.querySelectorAll(".prov-col:not(#bestPickCard) .t-row").forEach((row=>{const card=row.closest(".tariff-card")||row.parentElement,show=isSuitable(row);if(card&&(card.style.display=show?"":"none",card.classList.toggle("is-hidden",!show)),show&&visible++,isDaily(row)){const pricePerDay=parseInt(row.dataset.price,10),total="z"===row.dataset.prov?pricePerDay:pricePerDay*days,priceEl=row.querySelector(".t-price"),ppgEl=row.querySelector(".t-ppg");if(priceEl&&(priceEl.textContent=fmt(total)),ppgEl)if("z"===row.dataset.prov){const rowDays=parseInt(row.dataset.period,10)||1;ppgEl.textContent=fmt(Math.ceil(pricePerDay/(2*rowDays)))+"/ГБ"}else ppgEl.textContent=row.dataset.gpd||fmt(pricePerDay)+"/день";const nameEl=row.querySelector(".t-name-main");if(nameEl)if("z"===row.dataset.prov){const gpd=parseFloat(row.dataset.gpd)||2,rowDays=parseInt(row.dataset.period,10);let multEl=nameEl.querySelector(".t-daily-mult");multEl||(multEl=document.createElement("span"),multEl.className="t-daily-mult"),multEl.textContent=` на ${rowDays} ${dW(rowDays)}`,nameEl.textContent=`${gpd} ГБ в день`,nameEl.appendChild(multEl)}else{let multEl=nameEl.querySelector(".t-daily-mult");multEl||(multEl=document.createElement("span"),multEl.className="t-daily-mult",nameEl.appendChild(multEl)),multEl.textContent=` на ${days} ${dW(days)}`}}else{const ppgEl=row.querySelector(".t-ppg");if(ppgEl){const price=parseInt(row.dataset.price,10),vol=parseInt(row.dataset.volume,10);price>0&&vol>0&&(ppgEl.textContent=fmt(Math.ceil(price/vol))+"/ГБ")}}})),rCount&&(rCount.textContent=visible+" вариантов");const emptyEl=document.getElementById("emptyState");document.querySelector(".empty--visible")||emptyEl&&emptyEl.classList.toggle("show",0===visible);const globalBest=function(needGb){const allRows=[...document.querySelectorAll(".prov-col:not(#bestPickCard) .t-row")].filter((r=>!r.classList.contains("lf-hidden"))).filter((r=>isSuitable(r)));if(!allRows.length)return null;const effectivePrice=r=>isDaily(r)&&"z"!==r.dataset.prov?parseInt(r.dataset.price,10)*selDays:parseInt(r.dataset.price,10),covering=allRows.filter((r=>{if(isDaily(r)){if("z"===r.dataset.prov){const gbPerDay=parseFloat(r.dataset.gpd)||2;return parseInt(r.dataset.period,10)>=selDays&&gbPerDay>=USAGE_GPD[selUsage]}const pricePerDay=parseInt(r.dataset.price,10),pricePerGb=parseFloat(r.dataset.gpd);return(pricePerGb>0?pricePerDay/pricePerGb:0)>=USAGE_GPD[selUsage]}return parseInt(r.dataset.volume,10)>=needGb}));if(covering.length)return covering.reduce(((a,b)=>effectivePrice(a)<=effectivePrice(b)?a:b));const fixed=allRows.filter((r=>!isDaily(r)));return fixed.length?fixed.reduce(((a,b)=>parseInt(a.dataset.volume,10)>=parseInt(b.dataset.volume,10)?a:b)):allRows.reduce(((a,b)=>effectivePrice(a)<=effectivePrice(b)?a:b))}(needGb);renderBestPick(globalBest),document.querySelectorAll(".prov-col:not(#bestPickCard)").forEach((col=>{const provKey=col.id.replace("col-",""),rowsDiv=col.querySelector(".tariff-rows"),visRows=[...col.querySelectorAll(".t-row")].filter((r=>{const card=r.closest(".tariff-card")||r.parentElement;return card&&"none"!==card.style.display&&!card.classList.contains("is-hidden")}));if(!visRows.length)return;const effectivePrice=r=>isDaily(r)&&"z"!==r.dataset.prov?parseInt(r.dataset.price,10)*days:parseInt(r.dataset.price,10),covering=visRows.filter((r=>isDaily(r)?"z"!==r.dataset.prov||parseInt(r.dataset.period,10)>=days:parseInt(r.dataset.volume,10)>=needGb));let best;if(covering.length)best=covering.reduce(((a,b)=>effectivePrice(a)<=effectivePrice(b)?a:b));else{const fixedVis=visRows.filter((r=>!isDaily(r)));best=fixedVis.length?fixedVis.reduce(((a,b)=>parseInt(a.dataset.volume,10)>=parseInt(b.dataset.volume,10)?a:b)):visRows.reduce(((a,b)=>effectivePrice(a)<=effectivePrice(b)?a:b))}visRows.find((r=>r.dataset.id===selMap[provKey]))&&userPicked.has(provKey)||(selMap[provKey]=best.dataset.id),col.querySelectorAll(".t-badges .tb-rec, .t-badges .tb-val").forEach((b=>b.remove()));const fixedVisible=visRows.filter((r=>!isDaily(r)));if(fixedVisible.length){const el=fixedVisible.reduce(((a,b)=>parseInt(a.dataset.price,10)/parseInt(a.dataset.volume,10)<=parseInt(b.dataset.price,10)/parseInt(b.dataset.volume,10)?a:b)).querySelector(".t-badges");if(el){const badge=document.createElement("span");badge.className="t-badge tb-val",badge.textContent="Выгодно",el.prepend(badge)}}if(rowsDiv){const allWraps=[...rowsDiv.children];allWraps.sort(((a,b)=>{const ra=a.querySelector(".t-row"),rb=b.querySelector(".t-row");if(!ra||!rb)return 0;const volA=parseInt(ra.dataset.volume,10)||0,volB=parseInt(rb.dataset.volume,10)||0;if(volA!==volB)return volA-volB;return(parseInt(ra.dataset.period,10)||0)-(parseInt(rb.dataset.period,10)||0)})),allWraps.forEach((w=>rowsDiv.appendChild(w)))}col.querySelectorAll(".t-row").forEach((r=>{const sel=userPicked.has(provKey)&&r.dataset.id===selMap[provKey];r.classList.toggle("sel",sel)})),updateFooter(col,provKey)})),"function"==typeof window.syncTariffCardsVisibility&&window.syncTariffCardsVisibility()}function updateFooter(col,provKey){const selId=selMap[provKey],foot=col.querySelector(".prov-foot"),selRow=selId?col.querySelector(`.t-row[data-id="${selId}"]`):null;foot&&selRow&&(foot.style.display="none",col.querySelectorAll(".t-det-buy").forEach((b=>b.remove())))}function updateFilterBadge(){const badge=document.getElementById("filterFabBadge");if(!badge)return;const nonDefault=7!==selDays||"light"!==selUsage||filterUnlimitedOnly;badge.classList.toggle("active",nonDefault)}document.addEventListener("DOMContentLoaded",(function(){if(document.querySelectorAll(".prov-col:not(#bestPickCard) .t-row").forEach((row=>{row.addEventListener("click",(function(e){e.preventDefault(),"function"!=typeof window.openTariffDetails?function(row){const provKey=row.dataset.prov,tid=row.dataset.id,col=document.getElementById("col-"+provKey);col&&(selMap[provKey]=tid,userPicked.add(provKey),col.querySelectorAll(".t-row").forEach((r=>{r.classList.toggle("sel",r.dataset.id===tid)})),updateFooter(col,provKey))}(row):window.openTariffDetails(row)}))})),!document.getElementById("dayChips"))return;const dayChips=document.getElementById("dayChips"),dayInp=document.getElementById("dayInp"),dayWord=document.getElementById("dayWord"),usageGrid=document.getElementById("usageGrid");if(!dayChips||!dayInp||!usageGrid)return;dayChips.addEventListener("click",(e=>{const b=e.target.closest("[data-d]");b&&(document.querySelectorAll("[data-d]").forEach((x=>x.classList.remove("act"))),b.classList.add("act"),selDays=parseInt(b.dataset.d,10),dayInp.value=selDays,dayWord&&(dayWord.textContent=dW(selDays)),userPicked.clear(),filterTariffs(),updateFilterBadge(),syncDrawerState())})),dayInp.addEventListener("input",(e=>{const raw=e.target.value.trim();if(""===raw)return void(dayWord&&(dayWord.textContent="дней"));let v=parseInt(raw,10);isNaN(v)||(v<1&&(v=1),v>180&&(v=180),e.target.value=v,selDays=v,dayWord&&(dayWord.textContent=dW(v)),document.querySelectorAll("[data-d]").forEach((x=>x.classList.remove("act"))),userPicked.clear(),clearTimeout(_filterTimer),_filterTimer=setTimeout((()=>{filterTariffs(),updateFilterBadge()}),60),syncDrawerState())})),dayInp.addEventListener("blur",(e=>{if(""!==e.target.value.trim())return;const fallback=selDays||7;e.target.value=fallback,dayWord&&(dayWord.textContent=dW(fallback))})),usageGrid.addEventListener("click",(e=>{const c=e.target.closest("[data-u]");c&&(document.querySelectorAll("[data-u]").forEach((x=>x.classList.remove("act"))),c.classList.add("act"),selUsage=c.dataset.u,userPicked.clear(),filterTariffs(),updateFilterBadge(),syncDrawerState())}));const filterUnlimitedChk=document.getElementById("filterUnlimited");filterUnlimitedChk&&filterUnlimitedChk.addEventListener("change",(function(){filterUnlimitedOnly=this.checked,userPicked.clear(),filterTariffs(),updateFilterBadge(),syncDrawerState()}));const stickyFilterBtn=document.getElementById("stickyFilterBtn"),filterFabBtn=document.getElementById("filterFabBtn"),filterDrawer=document.getElementById("filterDrawer"),filterDrawerOverlay=document.getElementById("filterDrawerOverlay"),filterDrawerClose=document.getElementById("filterDrawerClose"),filterDrawerApply=document.getElementById("filterDrawerApply"),filterDrawerBody=document.getElementById("filterDrawerBody"),pickerEl=document.querySelector(".picker--sidebar");if(pickerEl&&filterDrawerBody){const pickerCard=pickerEl.querySelector(".picker-card");if(pickerCard){const clone=pickerCard.cloneNode(!0),cloneTitle=clone.querySelector(".picker-side-title");cloneTitle&&cloneTitle.remove(),clone.querySelectorAll("[id]").forEach((el=>{el.dataset.drawerOrigin=el.id,el.id="drawer-"+el.id})),clone.querySelectorAll("[for]").forEach((el=>{el.setAttribute("for","drawer-"+el.getAttribute("for"))}));const cloneUsageGrid=clone.querySelector("#drawer-usageGrid");if(cloneUsageGrid){clone.querySelectorAll(".step-lbl").forEach((lbl=>{"Тип использования"===lbl.textContent.trim()&&lbl.remove()}));const prevSep=cloneUsageGrid.previousElementSibling;prevSep&&prevSep.classList.contains("picker-sep")&&prevSep.remove(),cloneUsageGrid.remove()}filterDrawerBody.appendChild(clone)}}function syncDrawerState(){if(!filterDrawerBody)return;filterDrawerBody.querySelectorAll("[data-d]").forEach((b=>{b.classList.toggle("act",parseInt(b.dataset.d,10)===selDays)}));const dInp=filterDrawerBody.querySelector("#drawer-dayInp");dInp&&(dInp.value=selDays);const dWord=filterDrawerBody.querySelector("#drawer-dayWord");dWord&&(dWord.textContent=dW(selDays)),filterDrawerBody.querySelectorAll("[data-u]").forEach((b=>{b.classList.toggle("act",b.dataset.u===selUsage)}));const chkD=filterDrawerBody.querySelector("#drawer-filterUnlimited");chkD&&(chkD.checked=filterUnlimitedOnly);const checkedRadio=document.querySelector('input[name="locFilter"]:checked');checkedRadio&&filterDrawerBody.querySelectorAll('input[name="locFilter"]').forEach((r=>{r.checked=r.value===checkedRadio.value})),filterDrawerBody.querySelectorAll(".lf-check").forEach((lbl=>{const inp=lbl.querySelector('input[name="locFilter"]');inp&&lbl.classList.toggle("act",inp.checked)}))}function closeFilterDrawer(){filterDrawer?.classList.remove("open"),filterDrawerOverlay?.classList.remove("open"),document.body.style.overflow=""}if(filterDrawerBody&&(filterDrawerBody.addEventListener("click",(e=>{const dc=e.target.closest("[data-d]");if(dc){const orig=document.querySelector(`#dayChips [data-d="${dc.dataset.d}"]`);return void(orig&&orig.click())}const uc=e.target.closest("[data-u]");if(uc){const orig=document.querySelector(`#usageGrid [data-u="${uc.dataset.u}"]`);return void(orig&&orig.click())}const adj=e.target.closest(".day-adj[data-delta]");adj&&adjustDays(parseInt(adj.dataset.delta,10))})),filterDrawerBody.addEventListener("change",(e=>{const chk=e.target.closest("#drawer-filterUnlimited");if(chk){const orig=document.getElementById("filterUnlimited");orig&&(orig.checked=chk.checked,orig.dispatchEvent(new Event("change")))}else;})),filterDrawerBody.addEventListener("input",(e=>{const inp=e.target.closest("#drawer-dayInp");if(!inp)return;const orig=document.getElementById("dayInp");orig&&(orig.value=inp.value,orig.dispatchEvent(new Event("input")))})),filterDrawerBody.addEventListener("blur",(e=>{if(!e.target.closest("#drawer-dayInp"))return;const orig=document.getElementById("dayInp");orig&&orig.dispatchEvent(new Event("blur"))}),!0)),pickerEl&&stickyFilterBtn&&new IntersectionObserver((([entry])=>{stickyFilterBtn.classList.toggle("visible",!entry.isIntersecting)}),{threshold:.1}).observe(pickerEl),filterFabBtn&&filterFabBtn.addEventListener("click",(function(){syncDrawerState(),filterDrawer?.classList.add("open"),filterDrawerOverlay?.classList.add("open"),document.body.style.overflow="hidden"})),filterDrawerClose&&filterDrawerClose.addEventListener("click",closeFilterDrawer),filterDrawerOverlay&&filterDrawerOverlay.addEventListener("click",closeFilterDrawer),filterDrawerApply&&filterDrawerApply.addEventListener("click",(()=>{closeFilterDrawer(),document.getElementById("results")?.scrollIntoView({behavior:"smooth"})})),filterDrawer){let touchStartY=0;filterDrawer.addEventListener("touchstart",(e=>{touchStartY=e.touches[0].clientY}),{passive:!0}),filterDrawer.addEventListener("touchend",(e=>{e.changedTouches[0].clientY-touchStartY>80&&closeFilterDrawer()}),{passive:!0})}filterTariffs(),updateFilterBadge()})),window.adjustDays=adjustDays,window.toggleDet=function(tid,btn){const row=document.querySelector(`.t-row[data-id="${CSS.escape(tid)}"]`);row&&"function"==typeof window.openTariffDetails&&window.openTariffDetails(row)},window.filterTariffs=filterTariffs}(),function(){const banner=document.getElementById("promoBanner");banner&&fetch("/api/v2/promo/favorite",{method:"POST",headers:{"Content-Type":"application/json"}}).then((r=>r.ok?r.json():null)).then((res=>{if(!res||!res.success||!res.data)return;const{code:code,comment:comment,date:date}=res.data,promoTitle=document.getElementById("promoTitle"),promoCode=document.getElementById("promoCode");if(promoTitle&&(promoTitle.textContent=comment||""),promoCode&&(promoCode.textContent=(code||"").toUpperCase()),banner.style.display="",!date)return;const endTs=new Date(date.replace(" ","T")+"+03:00").getTime();if(isNaN(endTs))return;if(Date.now()>=endTs)return void(banner.style.display="none");const timerEl=document.getElementById("promoTimer"),dEl=document.getElementById("timerD"),hEl=document.getElementById("timerH"),mEl=document.getElementById("timerM"),sEl=document.getElementById("timerS");if(!(timerEl&&dEl&&hEl&&mEl&&sEl))return;const dBlock=dEl.parentElement,dSep=dBlock?dBlock.nextElementSibling:null,showDays=Math.floor((endTs-Date.now())/1e3)>=86400;showDays||(dBlock&&(dBlock.style.display="none"),dSep&&(dSep.style.display="none"));const pad=n=>String(n).padStart(2,"0");function tick(){const diff=endTs-Date.now();if(diff<=0)return banner.style.display="none",void clearInterval(iv);const s=Math.floor(diff/1e3);showDays&&(dEl.textContent=Math.floor(s/86400)),hEl.textContent=pad(Math.floor(s%86400/3600)),mEl.textContent=pad(Math.floor(s%3600/60)),sEl.textContent=pad(s%60)}tick(),timerEl.style.display="";const iv=setInterval(tick,1e3)})).catch((()=>{}))}(),function(){const input=document.getElementById("countrySearch");if(!input)return;const grid=document.getElementById("countriesGrid"),extra=document.getElementById("countriesExtra"),clearBtn=document.getElementById("countrySearchClear"),emptyEl=document.getElementById("countrySearchEmpty");if(!grid)return;const allCards=[...grid.querySelectorAll(".country-card"),...extra?extra.querySelectorAll(".country-card"):[]],norm=s=>(s||"").toLowerCase().replace(/ё/g,"е").trim(),index=allCards.map((card=>({el:card,name:norm(card.querySelector(".country-card-name")?.textContent)})));function filter(q){const query=norm(q);if(clearBtn.classList.toggle("show",query.length>0),!query)return allCards.forEach((c=>c.classList.remove("country-hidden"))),extra&&extra.classList.remove("open"),void emptyEl.classList.remove("show");extra&&extra.classList.add("open");let visible=0;index.forEach((({el:el,name:name})=>{const match=name.includes(query);el.classList.toggle("country-hidden",!match),match&&visible++})),emptyEl.classList.toggle("show",0===visible)}let t=null;input.addEventListener("input",(e=>{clearTimeout(t),t=setTimeout((()=>filter(e.target.value)),80)})),clearBtn.addEventListener("click",(()=>{input.value="",filter(""),input.focus()})),input.addEventListener("keydown",(e=>{"Escape"===e.key&&input.value&&(input.value="",filter(""))}))}(),function(){const provCols=document.getElementById("provCols----"),tabsWrap=document.getElementById("providerTabs");if(!provCols||!tabsWrap)return;const providerCols=Array.from(provCols.querySelectorAll(".prov-col"));if(!providerCols.length)return;const PROVIDER_LABELS=window.REDESIM_PROVIDER_LABELS||{a:"Альфа",p:"Плюс",u:"Юни",e:"Альфа",z:"Плюс",k:"Юни"},PROVIDER_DESCRIPTIONS=window.REDESIM_PROVIDER_DESCRIPTIONS||{},PROVIDER_BADGES={a:"A",p:"P",u:"U",e:"A",z:"P",k:"U"};function getProviderData(col,index){const key=function(col){return String(col.id||"").replace("col-","").trim().toLowerCase()}(col),code=PROVIDER_BADGES[key]||col.dataset.providerCode||key||String(index+1),speed=col.dataset.providerSpeed||"",operators=col.dataset.providerOperators||"",rawName=col.dataset.providerName||"";return{id:col.id||`provider-${index}`,key:key,code:code,name:PROVIDER_LABELS[key]||rawName||`Провайдер ${String(key||index+1).toUpperCase()}`,speed:speed,operators:operators,description:PROVIDER_DESCRIPTIONS[key]||""}}function escapeHtml(str){return String(str||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function ensureOperatorsInfo(){let operatorsInfo=document.getElementById("providerOperatorsInfo");return operatorsInfo||(operatorsInfo=document.createElement("div"),operatorsInfo.id="providerOperatorsInfo",operatorsInfo.className="provider-operators-info",tabsWrap.insertAdjacentElement("afterend",operatorsInfo)),operatorsInfo}let providerInfoModal=null;function openInfoModal(title,description,eyebrow){if(!description)return;const modal=providerInfoModal||(providerInfoModal=document.createElement("div"),providerInfoModal.className="provider-info-modal",providerInfoModal.setAttribute("aria-hidden","true"),providerInfoModal.innerHTML='\n      <div class="provider-info-backdrop" data-provider-info-close></div>\n      <div class="provider-info-dialog" role="dialog" aria-modal="true" aria-labelledby="providerInfoTitle">\n        <button type="button" class="provider-info-close" data-provider-info-close aria-label="Закрыть">×</button>\n        <div class="provider-info-eyebrow">Провайдер</div>\n        <h3 class="provider-info-title" id="providerInfoTitle"></h3>\n        <p class="provider-info-desc"></p>\n      </div>\n    ',document.body.appendChild(providerInfoModal),providerInfoModal.addEventListener("click",(function(e){e.target.closest("[data-provider-info-close]")&&closeProviderInfo()})),document.addEventListener("keydown",(function(e){"Escape"===e.key&&providerInfoModal.classList.contains("open")&&closeProviderInfo()})),providerInfoModal);modal.querySelector(".provider-info-eyebrow").textContent=eyebrow||"Тарифы",modal.querySelector(".provider-info-title").textContent=title||"",modal.querySelector(".provider-info-desc").textContent=description,modal.classList.add("open"),modal.setAttribute("aria-hidden","false"),document.body.classList.add("provider-info-lock")}function closeProviderInfo(){providerInfoModal&&(providerInfoModal.classList.remove("open"),providerInfoModal.setAttribute("aria-hidden","true"),document.body.classList.remove("provider-info-lock"))}function injectDailyInfoIcon(rootEl){if(!rootEl)return;rootEl.querySelectorAll("#filterUnlimitedWrap, #drawer-filterUnlimitedWrap").forEach((wrap=>{const label=wrap.querySelector(".picker-check-label");if(!label||label.querySelector(".picker-check-info"))return;const btn=document.createElement("button");btn.type="button",btn.className="picker-check-info",btn.setAttribute("aria-label","Подробнее о посуточных пакетах"),btn.innerHTML='<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="11" x2="12" y2="16"></line><circle cx="12" cy="8" r="1.1" fill="currentColor" stroke="none"></circle></svg>',label.appendChild(btn)}))}function getRowCard(row){return row.closest(".tariff-card")||row}function hasVisibleRows(col){return Array.from(col.querySelectorAll(".t-row")).some((row=>{const card=getRowCard(row),rowStyle=window.getComputedStyle(row),cardStyle=window.getComputedStyle(card);return!(row.classList.contains("lf-hidden")||row.classList.contains("js-hidden")||card.classList.contains("is-hidden")||row.hidden||"none"===rowStyle.display||"none"===cardStyle.display)}))}function updateOperatorsInfo(activeCol){const operatorsInfo=ensureOperatorsInfo();if(!operatorsInfo||!activeCol)return;const data=getProviderData(activeCol,0),operators=function(activeCol){if(!activeCol)return"";const rows=Array.from(activeCol.querySelectorAll(".t-row")),seen=new Set,ordered=[];return rows.forEach((row=>{const card=getRowCard(row);if(row.classList.contains("lf-hidden")||row.classList.contains("js-hidden")||card.classList.contains("is-hidden")||row.hidden)return;const rowStyle=window.getComputedStyle(row),cardStyle=window.getComputedStyle(card);if("none"===rowStyle.display||"none"===cardStyle.display)return;const raw=(row.dataset.networkList||"").trim();raw&&raw.split(",").forEach((part=>{const op=part.trim();if(!op)return;const key=op.toLowerCase();seen.has(key)||(seen.add(key),ordered.push(op))}))})),ordered.join(", ")}(activeCol)||data.operators;if(!operators&&!data.speed)return operatorsInfo.style.display="none",void(operatorsInfo.innerHTML="");operatorsInfo.style.display="",operatorsInfo.innerHTML=`\n      <span class="provider-operators-label">Сети в стране:</span>\n      <span class="provider-operators-name">${escapeHtml(operators||"уточняются")}</span>\n      ${data.speed?`<span class="provider-operators-speed">${escapeHtml(data.speed)}</span>`:""}\n    `}function activateProvider(providerId){let activeCol=null;providerCols.forEach((col=>{const isActive=col.dataset.providerPanel===providerId;col.classList.toggle("provider-active",isActive),isActive&&(activeCol=col)})),tabsWrap.querySelectorAll(".provider-tab").forEach((tab=>{tab.classList.toggle("is-active",tab.dataset.providerTarget===providerId)})),updateOperatorsInfo(activeCol)}function refreshActiveProvider(){const activeCol=providerCols.find((col=>col.classList.contains("provider-active")));if(activeCol&&hasVisibleRows(activeCol))return void updateOperatorsInfo(activeCol);const firstWithRows=providerCols.find((col=>hasVisibleRows(col)));firstWithRows&&activateProvider(firstWithRows.dataset.providerPanel)}function updateSidebarRecommendation(){const dayInp=document.getElementById("dayInp"),recDays=document.getElementById("pickerRecDays"),recGb=document.getElementById("pickerRecGb"),activeUsage=document.querySelector("#usageGrid .uc.act");if(!dayInp||!recDays||!recGb)return;const days=Math.max(1,parseInt(dayInp.value||"7",10)),usage=activeUsage?activeUsage.dataset.u:"light",recommendedGb=Math.ceil(days*({light:1,medium:1.6,heavy:3.2}[usage]||1));recDays.textContent=days,recGb.textContent=`${recommendedGb} ГБ`}function syncTariffCardsVisibility(){document.querySelectorAll(".tariff-card").forEach((function(card){const row=card.querySelector(".t-row");if(!row)return void card.classList.add("is-hidden");const rowStyle=window.getComputedStyle(row),isHidden=row.classList.contains("lf-hidden")||row.classList.contains("js-hidden")||row.hidden||"none"===rowStyle.display||"none"===card.style.display;card.classList.toggle("is-hidden",isHidden)}))}function normalizeNetworkName(value){if(!value)return"";let str=String(value).trim();if(str.startsWith('"')&&str.endsWith('"')||str.startsWith("'")&&str.endsWith("'"))try{str=JSON.parse(str)}catch(e){str=str.slice(1,-1)}return String(str||"").trim()}function getPackageDetails(row){const card=getRowCard(row);return Array.from(card.querySelectorAll(".det-table tr")).map((tr=>{const cells=tr.querySelectorAll("td");return{label:cells[0]?cells[0].textContent.trim():"",value:cells[1]?cells[1].textContent.trim():""}})).filter((item=>item.label||item.value))}function getTariffModalData(row){const col=row.closest(".prov-col"),countryWrap=document.querySelector(".prov-cols[data-country-code]"),countryCode=countryWrap?countryWrap.dataset.countryCode:"",countryName=countryWrap?countryWrap.dataset.countryName:"",name=row.querySelector(".t-name-main")?.textContent.trim()||"Тариф",price=row.querySelector(".t-price")?.textContent.trim()||"",ppg=row.querySelector(".t-ppg")?.textContent.trim()||"",speed=col&&col.dataset.providerSpeed||"",operators=function(row){const ownNetwork=normalizeNetworkName(row.dataset.networkList||"");if(ownNetwork)return ownNetwork;const col=row.closest(".prov-col");return col?normalizeNetworkName(col.dataset.providerOperators||""):""}(row);return{name:name,price:price,ppg:ppg,speed:speed,operators:operators,location:function(row){const raw=row.dataset.locationCities||"";if(!raw)return"";try{const items=JSON.parse(raw);if(Array.isArray(items))return items.map((item=>item&&item.name?item.name:"")).filter(Boolean).join(", ")}catch(e){}return""}(row)||countryName||row.dataset.location||"",details:getPackageDetails(row),packageCode:row.dataset.id||"",countryCode:countryCode,days:row.dataset.volume&&parseInt(row.dataset.volume,10)>=999999999999?parseInt(document.getElementById("dayInp")?.value||"0",10):0}}function openTariffDetails(row){const modal=document.getElementById("tariffDetailsModal");if(!modal||!row)return;const data=getTariffModalData(row),titleEl=document.getElementById("tdTitle"),priceEl=document.getElementById("tdPrice"),ppgEl=document.getElementById("tdPpg"),locationEl=document.getElementById("tdLocation"),networkEl=document.getElementById("tdNetwork"),locationWrap=document.getElementById("tdLocationWrap"),networkWrap=document.getElementById("tdNetworkWrap"),detailsEl=document.getElementById("tdDetails"),buyBtn=document.getElementById("tdBuyBtn");titleEl&&(titleEl.textContent=data.name),priceEl&&(priceEl.textContent=data.price||"—"),ppgEl&&(ppgEl.textContent=data.ppg||""),locationEl&&(locationEl.textContent=data.location||"уточняется"),networkEl&&(networkEl.textContent=data.operators||"уточняются"),locationWrap&&(locationWrap.style.display=data.location?"":"none"),networkWrap&&(networkWrap.style.display=data.operators?"":"none"),detailsEl&&(detailsEl.innerHTML=data.details.length?data.details.map((item=>`\n            <div class="tariff-details-list-row">\n              <span>${escapeHtml(item.label)}</span>\n              <strong>${escapeHtml(item.value)}</strong>\n            </div>\n          `)).join(""):'<div class="tariff-details-list-row"><span>Информация</span><strong>уточняется</strong></div>'),buyBtn&&(buyBtn.onclick=function(){if("function"!=typeof openModal)return;const modalData={name:data.location||data.name,spec:[data.name,data.operators,data.speed].filter(Boolean).join(" · "),price:data.price,packageCode:data.packageCode,countryCode:data.countryCode,days:data.days};closeTariffDetails(),openModal(modalData)}),modal.classList.add("open"),modal.setAttribute("aria-hidden","false"),document.body.classList.add("tariff-details-lock"),window.RedesimTariffHash&&data.packageCode&&window.RedesimTariffHash.set(data.packageCode)}function closeTariffDetails(){const modal=document.getElementById("tariffDetailsModal");modal&&(modal.classList.remove("open"),modal.setAttribute("aria-hidden","true"),document.body.classList.remove("tariff-details-lock"),window.RedesimTariffHash&&window.RedesimTariffHash.clear())}function openTariffDetailsFromHash(){if(!window.RedesimTariffHash)return!1;const packageCode=window.RedesimTariffHash.getCode();if(!packageCode)return!1;const row=window.RedesimTariffHash.findRow(packageCode);return!!row&&(openTariffDetails(row),!0)}document.addEventListener("click",(function(e){e.target.closest&&e.target.closest(".picker-check-info")&&(e.preventDefault(),e.stopPropagation(),openInfoModal("Посуточные пакеты","В таких тарифах вам ежедневно даётся определённый объём интернета на максимальной скорости. После того, как дневной лимит израсходован, скорость снижается до конца суток, а на следующий день лимит снова обнуляется.","Тарифы"))}),!0),document.addEventListener("pointerdown",(function(e){e.target.closest&&e.target.closest(".picker-check-info")&&e.stopPropagation()}),!0),setTimeout(openTariffDetailsFromHash,120),window.addEventListener("hashchange",(function(){openTariffDetailsFromHash()})),function(){tabsWrap.innerHTML="",ensureOperatorsInfo(),providerCols.forEach(((col,index)=>{const data=getProviderData(col,index);col.dataset.providerPanel=data.id;const btn=document.createElement("button");btn.type="button",btn.className="provider-tab",btn.dataset.providerTarget=data.id,btn.dataset.providerKey=data.key,btn.title=data.operators?`${data.name} · ${data.operators}`:data.name;const infoBtnHtml=data.description?`<button type="button"\n                   class="provider-tab-info"\n                   data-provider-info-key="${escapeHtml(data.key)}"\n                   aria-label="О провайдере ${escapeHtml(data.name)}">\n             <svg width="14" height="14" viewBox="0 0 24 24" fill="none"\n                  stroke="currentColor" stroke-width="2" aria-hidden="true">\n               <circle cx="12" cy="12" r="10"></circle>\n               <line x1="12" y1="11" x2="12" y2="16"></line>\n               <circle cx="12" cy="8" r="1.1" fill="currentColor" stroke="none"></circle>\n             </svg>\n           </button>`:"";btn.innerHTML=`\n        <span class="provider-tab-badge pb-${escapeHtml(data.key)}">${escapeHtml(data.code)}</span>\n        <span class="provider-tab-name">${escapeHtml(data.name)}</span>\n        ${infoBtnHtml}\n      `,btn.addEventListener("click",(e=>{e.target.closest(".provider-tab-info")||activateProvider(data.id)}));const infoBtn=btn.querySelector(".provider-tab-info");infoBtn&&infoBtn.addEventListener("click",(e=>{e.preventDefault(),e.stopPropagation(),function(providerKey){const key=String(providerKey||"").toLowerCase();openInfoModal(PROVIDER_LABELS[key]||"",PROVIDER_DESCRIPTIONS[key],"Провайдер")}(data.key)})),tabsWrap.appendChild(btn)})),provCols.classList.add("provider-tabbed");const firstWithRows=providerCols.find((col=>hasVisibleRows(col)))||providerCols[0];firstWithRows&&activateProvider(firstWithRows.dataset.providerPanel)}(),updateSidebarRecommendation(),syncTariffCardsVisibility(),document.addEventListener("click",(function(e){e.target.closest("[data-tariff-details-close]")&&(e.preventDefault(),closeTariffDetails())})),document.addEventListener("keydown",(function(e){"Escape"===e.key&&closeTariffDetails()})),injectDailyInfoIcon(document);const drawerBody=document.getElementById("filterDrawerBody");if(drawerBody){new MutationObserver((()=>injectDailyInfoIcon(drawerBody))).observe(drawerBody,{childList:!0,subtree:!0})}document.addEventListener("click",(function(e){(e.target.closest("#dayChips .dc")||e.target.closest(".day-adj")||e.target.closest("#usageGrid .uc")||e.target.closest("#sdcChips .sdc")||e.target.closest(".lf-check"))&&setTimeout((function(){syncTariffCardsVisibility(),refreshActiveProvider(),updateSidebarRecommendation()}),90)})),document.addEventListener("change",(function(e){e.target&&e.target.matches&&e.target.matches('input[name="locFilter"]')&&setTimeout((function(){syncTariffCardsVisibility(),refreshActiveProvider()}),90)})),document.addEventListener("input",(function(e){!e.target||"dayInp"!==e.target.id&&"drawer-dayInp"!==e.target.id||setTimeout((function(){syncTariffCardsVisibility(),refreshActiveProvider(),updateSidebarRecommendation()}),90)}));new MutationObserver((function(){syncTariffCardsVisibility(),refreshActiveProvider()})).observe(provCols,{subtree:!0,attributes:!0,attributeFilter:["style","class","hidden"]}),window.syncTariffCardsVisibility=syncTariffCardsVisibility,window.openTariffDetails=openTariffDetails,window.closeTariffDetails=closeTariffDetails}();