/* SAN AVELIO \u2014 ARCHIVIO DEGLI ONORI v2. Independent profile achievements module. */ (function(){'use strict'; if(window.__SA_HONORS_V2__)return;window.__SA_HONORS_V2__=true; if(!/\/profile\.php$/i.test(location.pathname)||new URLSearchParams(location.search).has('section'))return; var APP=1887506,API=location.origin+'/api.php',PREFIX='SAHONORS1:',host=null,panel=null,items=[],ready=false,busy=false; function el(tag,cls,txt){var x=document.createElement(tag);if(cls)x.className=cls;if(txt!==undefined)x.textContent=txt;return x} function uid(){return (new URLSearchParams(location.search).get('id')||'').replace(/\D/g,'')} function owner(){return !!document.querySelector('#sa-dossier-clean .panel[data-p="bio"] .sa40-edit')} function api(method,params){var $=window.jQuery||window.$;if(!$||!$.ajax)return Promise.reject(Error('API \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d'));return new Promise(function(ok,fail){$.ajax({url:API,type:method==='storage.get'?'GET':'POST',dataType:'json',cache:false,data:Object.assign({method:method,app_id:APP},params),success:function(j){if(j&&(j.error||j.errors))fail(Error('\u0421\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u043b \u0437\u0430\u043f\u0440\u043e\u0441'));else ok(j)},error:function(x){fail(Error('\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0442\u0438: '+x.status))}})})} function read(){var k='san_avelio_profile_v1_'+uid();return api('storage.get',{key:[k],_:Date.now()}).then(function(j){var v=j&&j.response&&j.response.storage&&j.response.storage.data&&j.response.storage.data[k];if(!v)throw Error('\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435');return typeof v==='string'?JSON.parse(v):v})} function parse(v){if(typeof v!=='string'||v.indexOf(PREFIX)!==0)return [];try{var a=JSON.parse(v.slice(PREFIX.length));return Array.isArray(a)?a.filter(function(x){return x&&typeof x.id==='string'}).slice(0,100):[]}catch(e){return []}} async function save(a){if(!owner()||busy)return;busy=true;try{var token=String(window.ForumAPITicket||'');if(!token)throw Error('\u041d\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438');var data=await read(),before=String(data.achievements||''),k='san_avelio_profile_v1_'+uid();if(before.indexOf(PREFIX)===0&&JSON.stringify(parse(before))!==JSON.stringify(items))throw Error('\u041d\u0430\u0433\u0440\u0430\u0434\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443');data.achievements=PREFIX+JSON.stringify(a);await api('storage.set',{key:k,value:JSON.stringify(data),token:token});var check=await read();if(check.achievements!==data.achievements)throw Error('\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435');items=a;draw()}catch(e){alert('\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0430\u0434\u0443: '+e.message)}finally{busy=false}} function medal(item){var card=el('button','sa-hon-card'),frame=el('span','sa-hon-medal'),center=el('span','sa-hon-medal-center','\u2726'),tag=el('span','sa-hon-rarity',item.rarity||'\u0420\u0415\u0414\u041a\u041e\u0415 \u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u0415'),name=el('strong','sa-hon-name',item.title||'\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0435\u0434');card.type='button';frame.appendChild(center);card.append(frame,tag,name);card.addEventListener('click',function(){details(item)});return card} function details(item){var backdrop=el('div','sa-hon-overlay'),modal=el('div','sa-hon-dialog'),close=el('button','sa-hon-close','\u00d7');close.type='button';close.onclick=function(){backdrop.remove()};backdrop.onclick=function(e){if(e.target===backdrop)backdrop.remove()};modal.append(el('div','sa-hon-dialog-kicker','SAN AVELIO / \u0417\u041d\u0410\u041a \u041e\u0422\u041b\u0418\u0427\u0418\u042f'),el('div','sa-hon-dialog-icon','\u2726'),el('h3','',item.title||'\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435'),el('p','',item.desc||''),el('div','sa-hon-dialog-rule','\u0423\u0441\u043b\u043e\u0432\u0438\u0435: '+(item.condition||'\u2014')),el('div','sa-hon-dialog-date','\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e: '+(item.date||'\u0414\u0430\u0442\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430')),close);backdrop.appendChild(modal);document.body.appendChild(backdrop)} function draw(){if(!host)return;host.replaceChildren();var header=el('header','sa-hon-header'),eyebrow=el('div','sa-hon-eyebrow','SAN AVELIO / ARCHIVIO DEGLI ONORI'),title=el('h2','','\u0417\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439'),sub=el('p','','\u041a\u0430\u0436\u0434\u0430\u044f \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430.'),counter=el('div','sa-hon-count');counter.append(el('b','',String(items.length)),el('span','',items.length===1?'\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u0430':'\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0430\u0434'));header.append(eyebrow,title,sub,counter);host.appendChild(header); if(items.length){var gallery=el('div','sa-hon-gallery');items.forEach(function(item){gallery.appendChild(medal(item))});host.appendChild(gallery)}else{var empty=el('div','sa-hon-empty');empty.append(el('div','sa-hon-empty-icon','\u2727'),el('p','','\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u044f.'));host.appendChild(empty)} if(owner()){var tools=el('div','sa-hon-tools');if(!items.some(function(x){return x.id==='first-trace'})){var grant=el('button','sa-hon-action','\u0412\u044b\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0430\u0434\u0443');grant.type='button';grant.onclick=function(){var d=new Date(),date=[String(d.getDate()).padStart(2,'0'),String(d.getMonth()+1).padStart(2,'0'),d.getFullYear()].join('.');save(items.concat([{id:'first-trace',title:'\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0435\u0434',rarity:'\u0420\u0415\u0414\u041a\u041e\u0415 \u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u0415',desc:'\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e.',condition:'\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443 (\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0432\u044b\u0434\u0430\u0447\u0430)',date:date}]))};tools.appendChild(grant)}else{var revoke=el('button','sa-hon-action sa-hon-action-subtle','\u0423\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0430\u0434\u0443');revoke.type='button';revoke.onclick=function(){if(confirm('\u0423\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0430\u0434\u0443 \u0438\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f?'))save(items.filter(function(x){return x.id!=='first-trace'}))};tools.appendChild(revoke)}host.appendChild(tools)}} function renameTab(){ var root=document.getElementById('sa-dossier-clean');if(!root)return; var selectors=['[data-tab="map"]','[data-pick="map"]','[data-go="map"]','[data-target="map"]','[data-panel="map"]','[data-p="map"]']; var nav=Array.from(root.querySelectorAll('button,a,[role="tab"],.tab,.tab-btn,.nav-item,.dossier-tab')); nav.forEach(function(n){if(n.closest('.panel'))return;var text=(n.textContent||'').trim();var hasMap=selectors.some(function(sel){try{return n.matches(sel)}catch(e){return false}});if(!hasMap&&!/^\u041c\u0435\u0441\u0442\u0430(?:\s+\u041b\u043e\u043a\u0430\u0446\u0438\u0438)?$/i.test(text)&&!/^\u041c\u0415\u0421\u0422\u0410\s*\u041b\u041e\u041a\u0410\u0426\u0418\u0418$/i.test(text))return; var nodes=Array.from(n.querySelectorAll('*')).filter(function(e){return e.children.length===0}); var main=nodes.find(function(e){return /^\u041c\u0435\u0441\u0442\u0430$/i.test((e.textContent||'').trim())}); var sub=nodes.find(function(e){return /^\u041b\u043e\u043a\u0430\u0446\u0438\u0438$/i.test((e.textContent||'').trim())}); if(main){main.textContent='\u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f';if(sub)sub.textContent='\u041d\u0410\u0413\u0420\u0410\u0414\u042b'}else if(n.children.length===0)n.textContent='\u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f';else if(text.toLowerCase().includes('\u043c\u0435\u0441\u0442\u0430')){n.childNodes.forEach(function(x){if(x.nodeType===3&&/\u043c\u0435\u0441\u0442\u0430/i.test(x.textContent))x.textContent=x.textContent.replace(/\u043c\u0435\u0441\u0442\u0430/i,'\u0414\u041e\u0421\u0422\u0418\u0416\u0415\u041d\u0418\u042f')})} }); } function css(){if(document.getElementById('sa-hon-style'))return;var s=el('style');s.id='sa-hon-style';s.textContent=` #sa-dossier-clean .panel[data-p="map"]>.sa-hon-old{display:none!important} #sa-dossier-clean .sa-hon-root{position:relative;display:block!important;min-height:390px;padding:0 0 35px;color:#473324;font-family:Georgia,'Times New Roman',serif;isolation:isolate} #sa-dossier-clean .sa-hon-header{position:relative;min-height:176px;margin:4px 0 28px;padding:29px 36px 25px;background:linear-gradient(115deg,#fcf3de,#efe0c3 65%,#e4d0aa);border:1px solid #b99a64;box-shadow:inset 0 0 0 5px #f8efdc,inset 0 0 0 6px rgba(155,113,55,.24),0 10px 24px rgba(66,41,17,.1);overflow:hidden} #sa-dossier-clean .sa-hon-header:after{content:'\u2726';position:absolute;right:55px;top:20px;font-size:115px;line-height:1;color:rgba(154,113,48,.12);pointer-events:none} #sa-dossier-clean .sa-hon-eyebrow{font:700 10px/1.5 Arial,sans-serif;letter-spacing:3px;color:#95692f} #sa-dossier-clean .sa-hon-header h2{margin:7px 0 8px!important;font:normal 35px/1.12 Georgia,serif!important;color:#3b3a2d!important;border:0!important} #sa-dossier-clean .sa-hon-header p{font-size:15px;font-style:italic;color:#846545;margin:0!important} #sa-dossier-clean .sa-hon-count{display:flex;align-items:baseline;gap:9px;margin-top:20px;color:#92662f} #sa-dossier-clean .sa-hon-count b{font:normal 29px Georgia,serif} #sa-dossier-clean .sa-hon-count span{font:12px Arial,sans-serif;letter-spacing:.4px} #sa-dossier-clean .sa-hon-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:20px} #sa-dossier-clean .sa-hon-card{cursor:pointer;display:flex;align-items:center;flex-direction:column;gap:12px;min-height:250px;padding:26px 12px 22px;background:linear-gradient(145deg,#f7ead1,#e9d7b5);border:1px solid #c7a779;box-shadow:inset 0 0 0 5px rgba(255,252,240,.65),0 6px 20px rgba(69,45,17,.12);color:#473324;transition:transform .3s,box-shadow .3s} #sa-dossier-clean .sa-hon-card:hover{transform:translateY(-5px);box-shadow:inset 0 0 0 5px rgba(255,252,240,.7),0 16px 30px rgba(69,45,17,.19)} #sa-dossier-clean .sa-hon-medal{display:grid;place-items:center;width:128px;height:128px;border-radius:50%;border:5px double #d8b879;background:radial-gradient(circle at 35% 27%,#1e5354,#0a2d31 62%,#061b20);box-shadow:0 0 0 3px #96703a,0 0 0 6px #ecd3a2,0 9px 15px rgba(28,26,18,.25),inset 0 0 18px #08181a;transition:filter .3s,transform .4s} #sa-dossier-clean .sa-hon-card:hover .sa-hon-medal{filter:brightness(1.2);transform:rotate(-5deg)} #sa-dossier-clean .sa-hon-medal-center{font:normal 75px/1 Georgia,serif;color:#e6c178;text-shadow:0 2px 2px #2d1809,0 0 14px rgba(255,215,134,.35)} #sa-dossier-clean .sa-hon-rarity{font:700 9px Arial,sans-serif;letter-spacing:1.5px;color:#a17b45} #sa-dossier-clean .sa-hon-name{font:normal 21px Georgia,serif;color:#48331f;text-align:center} #sa-dossier-clean .sa-hon-empty{padding:70px 15px;text-align:center;border:1px dashed #cbb38b;color:#9b805f;font-style:italic} #sa-dossier-clean .sa-hon-empty-icon{font-size:38px;color:#c8a76a} #sa-dossier-clean .sa-hon-tools{text-align:right;margin-top:24px} #sa-dossier-clean .sa-hon-action{cursor:pointer;background:#0b2b2d;color:#f2d59e;border:1px solid #ab874b;padding:11px 19px;font:12px Georgia,serif;transition:filter .2s} #sa-dossier-clean .sa-hon-action:hover{filter:brightness(1.2)} #sa-dossier-clean .sa-hon-action-subtle{background:transparent;color:#84643e} .sa-hon-overlay{position:fixed;inset:0;z-index:999999;background:rgba(7,19,20,.77);display:flex;align-items:center;justify-content:center;padding:18px} .sa-hon-dialog{box-sizing:border-box;position:relative;width:min(500px,100%);padding:38px 34px;text-align:center;background:linear-gradient(140deg,#fff4dd,#e8d2a8);border:2px solid #bd9356;box-shadow:inset 0 0 0 6px #f8e7c7,0 22px 65px #0008;color:#49341f;font-family:Georgia,serif} .sa-hon-dialog-kicker{font:700 10px Arial,sans-serif;letter-spacing:2px;color:#98703e} .sa-hon-dialog-icon{font-size:90px;color:#ac823f;text-shadow:0 2px 4px #d2ad75} .sa-hon-dialog h3{font:normal 33px Georgia,serif;margin:0 0 15px} .sa-hon-dialog p{font-style:italic;font-size:17px} .sa-hon-dialog-rule,.sa-hon-dialog-date{margin-top:16px;padding-top:13px;border-top:1px solid #d1b88f;font-size:13px} .sa-hon-close{position:absolute;right:14px;top:10px;cursor:pointer;background:transparent;border:0;font-size:29px;color:#805f37} /* V2 \u2014 midnight archival gallery */ #sa-dossier-clean .sa-hon-root{padding-bottom:36px;color:#f1dbac} #sa-dossier-clean .sa-hon-header{min-height:245px;margin:4px 0 24px;padding:44px 42px 35px;background:radial-gradient(ellipse at 88% 28%,rgba(187,134,59,.28),transparent 35%),radial-gradient(ellipse at 14% 85%,rgba(33,89,86,.52),transparent 53%),linear-gradient(125deg,#071c20,#102f30 53%,#0b2022);border:1px solid #a77b3e;box-shadow:inset 0 0 0 5px #0b2425,inset 0 0 0 6px rgba(214,166,84,.44),0 12px 35px rgba(17,24,22,.24)} #sa-dossier-clean .sa-hon-header:before{content:'';position:absolute;inset:14px;border:1px solid rgba(214,169,92,.26);pointer-events:none;background:repeating-linear-gradient(120deg,transparent 0,transparent 25px,rgba(255,223,162,.015) 26px,transparent 27px)} #sa-dossier-clean .sa-hon-header:after{content:'\\2726';right:43px;top:25px;font-size:140px;color:rgba(218,172,92,.11);animation:saHonSigil 8s ease-in-out infinite} #sa-dossier-clean .sa-hon-eyebrow{color:#e1b974;letter-spacing:3.5px} #sa-dossier-clean .sa-hon-header h2{color:#f2d69a!important;font-size:43px!important;letter-spacing:.5px;text-shadow:0 2px 16px #0006} #sa-dossier-clean .sa-hon-header p{color:#d9c6a1;font-size:17px} #sa-dossier-clean .sa-hon-count{color:#e8c58a;margin-top:24px} #sa-dossier-clean .sa-hon-count b{font-size:37px} #sa-dossier-clean .sa-hon-count span{color:#dfcda9;text-transform:uppercase;letter-spacing:1.5px;font-size:10px} #sa-dossier-clean .sa-hon-gallery{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:19px} #sa-dossier-clean .sa-hon-card{position:relative;overflow:hidden;min-height:286px;padding:32px 18px 26px;background:radial-gradient(ellipse at 50% 0%,#264744 0%,#102d2e 48%,#071e23 100%);border:1px solid #9b763f;box-shadow:inset 0 0 0 4px #092327,inset 0 0 0 5px #725934,0 9px 22px #16202145;color:#f2d9a3;animation:saHonEnter .7s ease both} #sa-dossier-clean .sa-hon-card:before,#sa-dossier-clean .sa-hon-card:after{content:'\\2726';position:absolute;top:8px;font:17px Georgia,serif;color:#cda45e} #sa-dossier-clean .sa-hon-card:before{left:10px}#sa-dossier-clean .sa-hon-card:after{right:10px} #sa-dossier-clean .sa-hon-card:hover{transform:translateY(-7px);border-color:#e1b970;box-shadow:inset 0 0 0 4px #092327,inset 0 0 0 5px #ae8247,0 15px 38px #0d29286b,0 0 25px #c7a05935} #sa-dossier-clean .sa-hon-medal{width:142px;height:142px;background:radial-gradient(circle at 36% 23%,#306464,#103c40 42%,#051b22 85%);border:5px double #cba05a;box-shadow:0 0 0 3px #6c5028,0 0 0 7px #d6ae6a,0 12px 21px #0008,inset 0 0 25px #020e12;animation:saHonBreathe 4.5s ease-in-out infinite} #sa-dossier-clean .sa-hon-card:hover .sa-hon-medal{transform:rotate(12deg) scale(1.04);filter:brightness(1.18)} #sa-dossier-clean .sa-hon-medal-center{color:#f5d28b;font-size:83px} #sa-dossier-clean .sa-hon-rarity{color:#d4af72;letter-spacing:2px} #sa-dossier-clean .sa-hon-name{color:#f7e0ad;font-size:24px} #sa-dossier-clean .sa-hon-empty{position:relative;padding:68px 15px;background:linear-gradient(125deg,#f7edd8,#eaddbf);border:1px solid #c8ad7e;color:#826746;box-shadow:inset 0 0 0 6px #f6edd9,inset 0 0 0 7px #cbb58e} #sa-dossier-clean .sa-hon-action{background:linear-gradient(#173b3b,#082426);border:1px solid #bb9456;color:#f2d59e;box-shadow:inset 0 0 0 2px #102d2e;letter-spacing:.5px;transition:transform .25s,box-shadow .25s} #sa-dossier-clean .sa-hon-action:hover{transform:translateY(-2px);box-shadow:0 5px 18px #123b3b66} .sa-hon-dialog{border:1px solid #bd9356;box-shadow:inset 0 0 0 5px #f8e7c7,inset 0 0 0 6px #bd9356,0 22px 65px #0009;animation:saHonEnter .4s ease both} @keyframes saHonEnter{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}} @keyframes saHonBreathe{0%,100%{box-shadow:0 0 0 3px #6c5028,0 0 0 7px #d6ae6a,0 12px 21px #0008,inset 0 0 25px #020e12}50%{box-shadow:0 0 0 3px #6c5028,0 0 0 7px #d6ae6a,0 0 23px #e8bd6955,0 12px 21px #0008,inset 0 0 25px #020e12}} @keyframes saHonSigil{0%,100%{opacity:.55}50%{opacity:1}} @media(prefers-reduced-motion:reduce){#sa-dossier-clean .sa-hon-root *,#sa-dossier-clean .sa-hon-root *:before,#sa-dossier-clean .sa-hon-root *:after{animation:none!important;transition:none!important}} @media(max-width:700px){#sa-dossier-clean .sa-hon-header{padding:23px}#sa-dossier-clean .sa-hon-header h2{font-size:29px!important}#sa-dossier-clean .sa-hon-gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}} `;document.head.appendChild(s)} function install(){renameTab();var root=document.getElementById('sa-dossier-clean');panel=root&&root.querySelector('.panel[data-p="map"]');if(!panel)return;css();if(!host){host=el('section','sa-hon-root');host.setAttribute('aria-label','\u0417\u0430\u043b \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0439');panel.appendChild(host)}Array.from(panel.children).forEach(function(x){if(x!==host)x.classList.add('sa-hon-old')});if(!ready){ready=true;draw();read().then(function(data){items=parse(data.achievements);draw()}).catch(function(){draw()})}} if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',install);else install();var attempts=0,t=setInterval(function(){install();if(++attempts>=30)clearInterval(t)},500); })();