/* OK ITHAKI V249526R10F34F1 — COMPLETE POLICY / PROFESSIONAL PROFILE */
(function(){
'use strict';
window.ITHAKI_R10F34F1_COMPLETE_POLICY_PRO_PROFILE=true;
const I=()=>window.ITH=window.ITH||{};
const S=()=>window.state||I().state||{};
const $=id=>document.getElementById(id);
const esc=s=>String(s==null?'':s).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
const lang=()=>String(localStorage.getItem('ith_global_language_r10f7')||localStorage.getItem('ith_ui_lang_v249141')||document.documentElement.lang||'el').toLowerCase().startsWith('en')?'en':'el';
const tr=(el,en)=>lang()==='en'?en:el;
const nick=()=>String(S().name||localStorage.getItem('ith_name')||'Μέλος');
const avatar=()=>{try{return typeof I().avatarHtml==='function'?I().avatarHtml():`<div class="r33Avatar">${esc(nick().slice(0,1).toUpperCase())}</div>`}catch(_e){return `<div class="r33Avatar">${esc(nick().slice(0,1).toUpperCase())}</div>`}};
function toast(m,ms=6000){try{if(typeof I().toast==='function')return I().toast(m,ms)}catch(_e){}alert(m)}
function mode(){return localStorage.getItem('ith_translation_mode_r10f34')||localStorage.getItem('ith_translation_mode_r10f32')||'manual'}
function target(){return localStorage.getItem('ith_translation_target_r10f34')||localStorage.getItem('ith_translation_target_r10f32')||(lang()==='el'?'en':'el')}
function setMode(v){localStorage.setItem('ith_translation_mode_r10f34',v);localStorage.setItem('ith_translation_mode_r10f32',v)}
function setTarget(v){localStorage.setItem('ith_translation_target_r10f34',v);localStorage.setItem('ith_translation_target_r10f32',v)}
function closeModal(){document.getElementById('r33Modal')?.remove()}
function modal(title,body){closeModal();const m=document.createElement('section');m.id='r33Modal';m.className='r33Modal';m.innerHTML=`<div class="r33ModalCard"><header><div><h2>${title}</h2><small>OK ITHAKI · ${tr('Προφίλ και ιδιωτικότητα','Profile and privacy')}</small></div><button id="r33ModalClose">×</button></header><main>${body}</main></div>`;document.body.appendChild(m);$('r33ModalClose').onclick=closeModal;m.onclick=e=>{if(e.target===m)closeModal()};return m}
function openPolicy(){const f=I().openPolicyR10F26||I().openLegalPolicy;if(typeof f==='function')return f.call(I(),'privacy');modal('⚖️ '+tr('Πολιτική και όροι','Policy and terms'),`<section class="r33Info"><p>${tr('Η πλήρης πολιτική δεν είναι διαθέσιμη σε αυτή την έκδοση.','The full policy is not available in this build.')}</p></section>`)}
function openServerKeeps(){modal('🗄️ '+tr('Τι κρατά ο server','What the server keeps'),`<section class="r33Info"><h3>${tr('Ελάχιστα λειτουργικά δεδομένα','Minimum operational data')}</h3><ul><li>${tr('Ψευδώνυμο, τεχνικό αναγνωριστικό συσκευής και βασικές ρυθμίσεις που χρειάζονται για να λειτουργεί η υπηρεσία.','Nickname, technical device identifier and basic settings needed for the service.')}</li><li>${tr('Δημοσιεύσεις, μηνύματα, αιτήματα φιλίας, κλήσεις και αρχεία μόνο όταν τα δημιουργεί ή τα στέλνει το μέλος.','Posts, messages, friend requests, calls and files only when created or sent by the member.')}</li><li>${tr('Απαραίτητα τεχνικά αρχεία ασφάλειας και καταγραφές λειτουργίας για περιορισμένο χρόνο.','Necessary security and operational logs for a limited period.')}</li></ul><h3>${tr('Τι δεν κρατά για ανάκτηση','What is not kept for recovery')}</h3><ul><li>${tr('Δεν απαιτεί email ή τηλέφωνο για τον λογαριασμό.','No account email or phone is required.')}</li><li>${tr('Δεν κρατά πλήρες μυστικό ανάκτησης της ίδιας ταυτότητας.','No full recovery secret for the same identity is stored.')}</li><li>${tr('Δεν αποθηκεύει το ιδιωτικό αρχείο λογαριασμού αντί για εσένα.','It does not store your private account file for you.')}</li></ul></section>`)}
function openNoRecovery(){modal('🔐 '+tr('Αποθήκευση και ανάκτηση μέλους','Member backup and recovery'),`<section class="r33Info r33Warn"><h3>${tr('Ο server δεν μπορεί να επαναφέρει την ίδια ταυτότητα','The server cannot restore the same identity')}</h3><p>${tr('Για λόγους ιδιωτικότητας δεν υπάρχει email, τηλέφωνο ή κεντρικό μυστικό ανάκτησης. Αν χαθούν η συσκευή και το ιδιωτικό αρχείο, η ίδια ταυτότητα δεν επανέρχεται.','For privacy, there is no email, phone or central recovery secret. If both the device and private file are lost, the same identity cannot be restored.')}</p><ol><li>${tr('Αποθήκευσε το ιδιωτικό αρχείο στον υπολογιστή.','Save the private file on your computer.')}</li><li>${tr('Κράτησε δεύτερο αντίγραφο σε USB stick.','Keep a second copy on a USB drive.')}</li><li>${tr('Προαιρετικά κράτησε τρίτο αντίγραφο σε δικό σου κρυπτογραφημένο αποθηκευτικό χώρο.','Optionally keep a third copy in your own encrypted storage.')}</li></ol><div class="r33Actions"><button id="r33ExportNow" class="gold">💾 ${tr('Δημιουργία αρχείου λογαριασμού','Create account file')}</button></div></section>`);$('r33ExportNow').onclick=exportAccount}
async function exportAccount(){const f=I().exportAccountFileR10F26||I().exportAccountFileR10F25||I().exportAccountFileR10F24;if(typeof f==='function'){try{const r=await f.call(I());toast(tr('Το ιδιωτικό αρχείο δημιουργήθηκε. Φύλαξέ το σε δύο ασφαλή σημεία.','Private file created. Keep it in two safe places.'));return r}catch(e){toast(String(e.message||e),8000)}}toast(tr('Ο μηχανισμός εξαγωγής δεν είναι διαθέσιμος.','Export mechanism is unavailable.'),8000)}
function deleteServerData(){const f=I().deleteAccountData;if(typeof f==='function'){if(confirm(tr('Να σταλεί αίτημα διαγραφής των δεδομένων που κρατά ο server;','Send a request to delete data kept by the server?')))return f.call(I())}toast(tr('Ο μηχανισμός διαγραφής δεν είναι διαθέσιμος.','Deletion mechanism is unavailable.'),8000)}
function openDelete(){modal('🗑️ '+tr('Διαγραφή δεδομένων και λογαριασμού','Delete data and account'),`<section class="r33Info"><h3>${tr('Δύο ξεχωριστές ενέργειες','Two separate actions')}</h3><div class="r33DeleteGrid"><button id="r33DeleteServer">🧹 <b>${tr('Σβήσιμο όσων κρατά ο server','Delete what the server keeps')}</b><small>${tr('Στέλνει αίτημα διαγραφής των δεδομένων του μέλους από την υπηρεσία.','Sends a deletion request for member data from the service.')}</small></button><button id="r33DeleteAccount" class="danger">🗑️ <b>${tr('Διαγραφή λογαριασμού','Delete account')}</b><small>${tr('Διαγράφει τοπικά στοιχεία και ζητά διαγραφή από τον server.','Deletes local identity data and requests server deletion.')}</small></button></div><p class="r33Note">${tr('Η ενέργεια δεν αναιρείται. Αποθήκευσε πρώτα ό,τι θέλεις να κρατήσεις.','This cannot be undone. Save anything you want to keep first.')}</p></section>`);$('r33DeleteServer').onclick=deleteServerData;$('r33DeleteAccount').onclick=deleteServerData}
function openLanguage(){const m=mode(),t=target();const x=modal('🌐 '+tr('Γλώσσα και μετάφραση','Language and translation'),`<section class="r33Info"><label>${tr('Γλώσσα μενού','Menu language')}</label><div class="r33Actions"><button data-ui="el" class="${lang()==='el'?'gold':''}">Ελληνικά</button><button data-ui="en" class="${lang()==='en'?'gold':''}">English</button></div><label>${tr('Τρόπος μετάφρασης','Translation mode')}</label><div class="r33Actions"><button data-mode="auto" class="${m==='auto'?'gold':''}">${tr('Αυτόματη','Automatic')}</button><button data-mode="manual" class="${m==='manual'?'gold':''}">${tr('Χειροκίνητη','Manual')}</button></div><label>${tr('Γλώσσα μετάφρασης','Translation language')}</label><select id="r33Target"><option value="el" ${t==='el'?'selected':''}>Ελληνικά</option><option value="en" ${t==='en'?'selected':''}>English</option></select><p class="r33Note">${tr('Η εφαρμογή χρησιμοποιεί προς το παρόν Ελληνικά και Αγγλικά με εσωτερικό λεξικό.','The app currently uses Greek and English with an internal dictionary.')}</p></section>`);x.querySelectorAll('[data-ui]').forEach(b=>b.onclick=()=>{localStorage.setItem('ith_global_language_r10f7',b.dataset.ui);localStorage.setItem('ith_ui_lang_v249141',b.dataset.ui);document.documentElement.lang=b.dataset.ui;closeModal();renderProfile()});x.querySelectorAll('[data-mode]').forEach(b=>b.onclick=()=>{setMode(b.dataset.mode);openLanguage()});$('r33Target').onchange=e=>setTarget(e.target.value)}
function saveProfile(){const n=$('profName'),bio=$('r33Bio'),age=$('age16'),policy=$('policyOk');try{if(n?.value.trim()){localStorage.setItem('ith_name',n.value.trim());S().name=n.value.trim()}localStorage.setItem('ith_profile_bio_r10f34',bio?.value.trim()||'');localStorage.setItem('ith_profile_bio_r10f7',bio?.value.trim()||'');localStorage.setItem('ith_age16',age?.checked?'1':'0');localStorage.setItem('ith_policy_ok',policy?.checked?'1':'0');S().age16=!!age?.checked;S().policyOk=!!policy?.checked}catch(_e){}try{if(typeof I().saveProfile==='function')I().saveProfile()}catch(_e){}toast(tr('Το προφίλ αποθηκεύτηκε.','Profile saved.'))}
function openCreator(){const f=I().openProfessionalCreatorToolsV249496||I().openCreatorToolsV249383||I().openCreatorTools;if(typeof f==='function')return f.call(I());toast(tr('Τα Εργαλεία Δημιουργού δεν είναι διαθέσιμα.','Creator Tools are unavailable.'),8000)}
function openAdmin(){const f=I().openAdministratorContactR10F32||I().openDirectAdminContactV249499;if(typeof f==='function')return f.call(I());toast(tr('Η άμεση επαφή δεν είναι διαθέσιμη.','Direct contact is unavailable.'),8000)}
function renderProfile(){const p=$('profilePage');if(!p)return false;const bio=localStorage.getItem('ith_profile_bio_r10f34')||localStorage.getItem('ith_profile_bio_r10f7')||'';p.innerHTML=`<main class="r33Profile" data-r10f34-profile="1"><section class="r33Hero"><div class="r33Top"><button id="r33Back" class="r33Circle">‹</button><div><div class="r33Privacy">🛡️ ${tr('Ανωνυμία και κρυπτογράφηση','Anonymity and encryption')}</div><h1>${tr('Το προφίλ μου','My profile')}</h1><p>${tr('Καθαρό, επαγγελματικό και κατανοητό με μία ματιά.','Clean, professional and easy to understand at a glance.')}</p></div></div><div class="r33Identity"><div class="r33AvatarWrap">${avatar()}<div class="r33Mini"><button id="r33Camera">📷</button><button id="r33Photo">🖼️</button><button id="r33Animal">🐾</button></div></div><div class="r33MainFields"><label>${tr('Όνομα / ψευδώνυμο','Name / nickname')}<input id="profName" value="${esc(nick())}" autocomplete="nickname"></label><label>${tr('Λίγα λόγια για εσένα — προαιρετικά','A few words about you — optional')}<textarea id="r33Bio" maxlength="240" placeholder="${tr('Μία σύντομη σειρά που σε περιγράφει…','One short line about you…')}">${esc(bio)}</textarea></label><button id="r33Language" class="r33Wide">🌐 ${tr('Γλώσσα και μετάφραση','Language and translation')}</button><div id="animalBox" class="r33Animals" hidden></div></div></div><div class="r33Checks"><label><input id="age16" type="checkbox" ${S().age16||localStorage.getItem('ith_age16')==='1'?'checked':''}> ${tr('Είμαι άνω των 16 ετών.','I am over 16 years old.')}</label><label><input id="policyOk" type="checkbox" ${S().policyOk||localStorage.getItem('ith_policy_ok')==='1'?'checked':''}> ${tr('Συμφωνώ με την πολιτική και τους όρους χρήσης.','I agree to the policy and terms of use.')}</label></div><div class="r33Actions"><button id="r33Save" class="gold">💾 ${tr('Αποθήκευση προφίλ','Save profile')}</button><button id="r33SaveFile">📦 ${tr('Αποθήκευση αρχείου λογαριασμού','Save account file')}</button></div></section><section class="r33Panel"><h2>${tr('Πολιτική, αποθήκευση και έλεγχος δεδομένων','Policy, backup and data control')}</h2><div class="r33Grid"><button id="r33Policy">⚖️ <b>${tr('Πολιτική και όροι','Policy and terms')}</b><small>${tr('Privacy, όροι χρήσης, ασφάλεια και cookies.','Privacy, terms, security and cookies.')}</small></button><button id="r33Keeps">🗄️ <b>${tr('Τι κρατά ο server','What the server keeps')}</b><small>${tr('Καθαρή περιγραφή των ελάχιστων λειτουργικών δεδομένων.','Clear description of minimum operational data.')}</small></button><button id="r33Recovery">💾 <b>${tr('Αποθήκευση και ανάκτηση μέλους','Member backup and recovery')}</b><small>${tr('Υπολογιστής, USB και δεύτερο ασφαλές αντίγραφο.','Computer, USB and a second safe copy.')}</small></button><button id="r33Delete" class="danger">🗑️ <b>${tr('Διαγραφή δεδομένων / λογαριασμού','Delete data / account')}</b><small>${tr('Σβήσιμο όσων κρατά ο server ή πλήρης διαγραφή.','Delete server-held data or the whole account.')}</small></button></div></section><section class="r33Panel"><h2>${tr('Επικοινωνία και δημιουργία','Contact and creation')}</h2><div class="r33Actions"><button id="r33Admin">💬 ${tr('Άμεση επαφή διαχειριστή','Direct administrator contact')}</button><button id="r33Creator" class="gold">🛠️ ${tr('Εργαλεία δημιουργού','Creator tools')}</button></div></section></main>`;
$('r33Back').onclick=()=>I().page&&I().page('home');$('r33Language').onclick=openLanguage;$('r33Save').onclick=saveProfile;$('r33SaveFile').onclick=exportAccount;$('r33Policy').onclick=openPolicy;$('r33Keeps').onclick=openServerKeeps;$('r33Recovery').onclick=openNoRecovery;$('r33Delete').onclick=openDelete;$('r33Admin').onclick=openAdmin;$('r33Creator').onclick=openCreator;
$('r33Camera').onclick=()=>{const f=$('cameraInput');if(f)f.click()};$('r33Photo').onclick=()=>{const f=$('avatarInput');if(f)f.click()};$('r33Animal').onclick=()=>{const b=$('animalBox');if(!b)return;b.hidden=!b.hidden;if(!b.hidden&&typeof I().renderAnimalChoices==='function')I().renderAnimalChoices()};return true}
function css(){if($('r33Css'))return;const s=document.createElement('style');s.id='r33Css';s.textContent=`.r33Profile{width:min(920px,100%);margin:auto;padding:14px 14px calc(var(--bar,72px) + 24px);display:grid;gap:14px;color:#f7fbff}.r33Hero,.r33Panel{border:1px solid #e9c86d55;border-radius:26px;padding:18px;background:linear-gradient(145deg,#0a2434f2,#07131ff7);box-shadow:0 20px 55px #0008}.r33Top{display:flex;gap:12px;align-items:flex-start}.r33Top h1{margin:5px 0 3px;font-size:clamp(1.55rem,5vw,2.35rem);color:#f5d77b}.r33Top p{margin:0;color:#b9cad4}.r33Privacy{display:inline-flex;padding:6px 10px;border-radius:999px;background:#1dcf9b18;border:1px solid #37e6b15e;color:#8ff0ce;font-weight:800}.r33Circle{width:44px;height:44px;border-radius:50%}.r33Identity{display:grid;grid-template-columns:170px 1fr;gap:18px;margin-top:18px}.r33AvatarWrap{display:grid;justify-items:center;align-content:start;gap:10px}.r33Avatar{width:120px;height:120px;border-radius:30px;display:grid;place-items:center;font-size:48px;font-weight:900;color:#092032;background:linear-gradient(145deg,#ffe89b,#e0b44e);box-shadow:0 10px 35px #0007}.r33AvatarWrap img{width:120px!important;height:120px!important;object-fit:cover;border-radius:30px}.r33Mini,.r33Actions{display:flex;gap:8px;flex-wrap:wrap}.r33Mini button{width:42px;height:42px;border-radius:13px}.r33MainFields{display:grid;gap:12px}.r33Profile label,.r33Info label{display:grid;gap:6px;color:#dce8ee;font-weight:750}.r33Profile input,.r33Profile textarea,.r33Info select{width:100%;box-sizing:border-box;border:1px solid #ffffff24;border-radius:14px;background:#ffffff0b;color:#fff;padding:12px;font:inherit}.r33Profile textarea{min-height:78px;resize:vertical}.r33Wide{width:100%;text-align:left}.r33Checks{display:grid;gap:8px;margin-top:14px}.r33Checks label{display:flex;align-items:center;gap:9px;padding:11px;border-radius:15px;background:#ffffff08}.r33Checks input{width:21px;height:21px}.r33Actions{margin-top:14px}.r33Actions button{flex:1 1 220px;min-height:48px}.r33Profile button,.r33Modal button{border:1px solid #ffffff24;border-radius:14px;background:#ffffff0b;color:#fff;padding:10px 13px;font-weight:800;cursor:pointer}.r33Profile button.gold,.r33Modal button.gold{border-color:#f3cd6e;background:linear-gradient(135deg,#f7df91,#c98f22);color:#1d1605}.r33Panel h2{margin:0 0 12px;color:#f2d47b;font-size:1.15rem}.r33Grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.r33Grid button{display:grid;text-align:left;gap:5px;min-height:105px}.r33Grid small{color:#b7c8d2;line-height:1.4}.r33Grid .danger,.r33DeleteGrid .danger{border-color:#ff7b7b88;background:#7d222633}.r33Modal{position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:12px;background:#000c;backdrop-filter:blur(12px)}.r33ModalCard{width:min(760px,100%);max-height:94dvh;overflow:auto;border:1px solid #e8ca7160;border-radius:26px;background:linear-gradient(145deg,#071522,#102d42);color:#fff;box-shadow:0 30px 90px #000c}.r33ModalCard header{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:15px;background:#071522f5;border-bottom:1px solid #ffffff15}.r33ModalCard header h2{margin:0;color:#f5d77b}.r33ModalCard header small{color:#adc0ce}.r33ModalCard header button{width:44px;height:44px;border-radius:50%}.r33ModalCard main{padding:15px}.r33Info{display:grid;gap:12px}.r33Info h3{margin:0;color:#f5d77b}.r33Info p,.r33Info li{line-height:1.55}.r33Warn{padding:14px;border:1px solid #ffbc6760;border-radius:18px;background:#7d451d2e}.r33DeleteGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.r33DeleteGrid button{display:grid;gap:6px;text-align:left;min-height:120px}.r33DeleteGrid small,.r33Note{color:#b9cad4}.r33Animals{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:680px){.r33Profile{padding:9px 9px calc(var(--bar,72px) + 18px)}.r33Hero,.r33Panel{padding:13px;border-radius:20px}.r33Identity{grid-template-columns:1fr}.r33AvatarWrap{justify-content:center}.r33Grid,.r33DeleteGrid{grid-template-columns:1fr}.r33Actions button{flex-basis:100%}.r33Top h1{font-size:1.55rem}}`;document.head.appendChild(s)}
function hook(){const ith=I();if(!ith.__r33PageWrapped&&typeof ith.page==='function'){const old=ith.page.bind(ith);ith.page=function(name,...a){const r=old(name,...a);if(String(name)==='profile')setTimeout(renderProfile,0);return r};ith.__r33PageWrapped=true}ith.renderProfessionalProfileR10F34F1=renderProfile;ith.openServerDataPolicyR10F34F1=openServerKeeps;ith.openMemberRecoveryR10F34F1=openNoRecovery;ith.openDeleteDataR10F34F1=openDelete}
function install(){css();hook();if(String(document.body?.dataset.page||'')==='profile')setTimeout(renderProfile,50);new MutationObserver(()=>{if(String(document.body?.dataset.page||'')==='profile'&&!document.querySelector('[data-r10f34-profile="1"]'))setTimeout(renderProfile,40)}).observe(document.documentElement,{subtree:true,childList:true,attributes:true,attributeFilter:['class','data-page']});setInterval(()=>{hook();if(String(document.body?.dataset.page||'')==='profile'&&!document.querySelector('[data-r10f34-profile="1"]'))renderProfile()},1500);try{localStorage.setItem('ith_frontend_build','V249526R10F34F1-clean-professional-profile')}catch(_e){}}
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',install,{once:true});else install();
})();
