/* OK ITHAKI V249526R10F37F1F3 — SINGLE STABLE PROFESSIONAL PROFILE OWNER */
(function(){
'use strict';
if(window.__ITHAKI_R10F37F1F3_PROFILE_OWNER__)return;
window.__ITHAKI_R10F37F1F3_PROFILE_OWNER__=true;
window.__ITHAKI_PROFILE_EXCLUSIVE_R10F37F1F3__=true;
const VERSION='249526r10f37f1f3';
const I=()=>window.ITH=window.ITH||{};
const S=()=>window.state||I().state||{};
const $=id=>document.getElementById(id);
const esc=s=>String(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')||'el').startsWith('en')?'en':'el';
const tr=(el,en)=>lang()==='en'?en:el;
const device=()=>String(S().deviceId||S().device||localStorage.getItem('ith_device_id')||localStorage.getItem('ith_device')||localStorage.getItem('device_id')||'');
const room=()=>String(S().roomId||S().room||localStorage.getItem('ith_room')||'ithaki-phone-test');
const storedName=()=>String(localStorage.getItem('ith_name')||S().name||'');
const storedBio=()=>String(localStorage.getItem('ith_profile_bio_r10f37')||'');
const currentAvatar=()=>String(localStorage.getItem('ith_avatar')||'');
const host=()=>document.getElementById('profilePage');
function toast(m){try{if(typeof I().toast==='function'){I().toast(m,5200);return}}catch(_e){}alert(m)}
function api(path,opt){const f=I().api||window.api;if(typeof f==='function')return f(path,opt);return fetch(path,opt).then(async r=>{const t=await r.text();let d;try{d=JSON.parse(t)}catch(_e){d={ok:r.ok,text:t}}if(!r.ok)throw new Error(d.detail||d.error||t||r.status);return d})}
function draftGet(k,fallback){try{const v=sessionStorage.getItem(k);return v===null?fallback:v}catch(_e){return fallback}}
function draftSet(k,v){try{sessionStorage.setItem(k,String(v??''))}catch(_e){}}
function draftClear(){try{sessionStorage.removeItem('ith_profile_name_draft_f3');sessionStorage.removeItem('ith_profile_bio_draft_f3')}catch(_e){}}
function isProfileVisible(){return String(document.body?.dataset?.page||S().page||'')==='profile' || !!host()?.classList.contains('active')}
function cleanupLegacy(){
  const ids=['ithProQuick384','ithAccountPanel383','ithAdminContactCardV249476','ithProfileBilCardV249476','r31f7AdminModal','r33Modal','r35Sheet'];
  ids.forEach(id=>$(id)?.remove());
  document.querySelectorAll('#profilePage .ithProfileProTop383,#profilePage .ithAccountPanel383,#profilePage [id^="ithR10F24"],#profilePage [id^="ithR10F25"],#profilePage [data-r10f34-profile],#profilePage .r31f7Shell,#profilePage .r33Profile').forEach(x=>x.remove());
  document.querySelectorAll('button,a').forEach(el=>{
    if(el.closest('.r37f3Profile'))return;
    const t=String(el.textContent||'').trim().toLowerCase();
    const id=String(el.id||'').toLowerCase();
    if(id==='ithproquick384'||t==='💼'||t.includes('επαγγελματικό κέντρο')||t.includes('professional center')){
      if(isProfileVisible())el.remove();
    }
  });
}
function css(){
  if($('r37f3Css'))return;
  const s=document.createElement('style');s.id='r37f3Css';s.textContent=`
  #ithProQuick384,#ithAccountPanel383,#ithAdminContactCardV249476,#ithProfileBilCardV249476{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}
  body[data-page="profile"] .proFooter{display:none!important}
  .r37f3Profile{width:min(900px,100%);margin:0 auto;padding:10px 10px 104px;display:grid;gap:12px;color:#f7fbff;isolation:isolate}
  .r37f3Profile *{box-sizing:border-box}
  .r37f3Profile section{border:1px solid rgba(231,196,91,.38);border-radius:22px;background:linear-gradient(145deg,rgba(12,41,59,.98),rgba(5,18,29,.99));box-shadow:0 16px 42px rgba(0,0,0,.35)}
  .r37f3Head{display:flex;align-items:center;gap:12px;padding:15px}.r37f3Head h1{margin:2px 0;color:#f4d575;font-size:25px}.r37f3Head small{color:#a9bcc8;font-weight:800;letter-spacing:.05em}.r37f3Back{width:44px;height:44px;border-radius:50%!important;font-size:28px}
  .r37f3Identity{display:grid;grid-template-columns:176px 1fr;gap:18px;padding:16px}.r37f3AvatarCol{display:grid;justify-items:center;align-content:start;gap:10px}.r37f3Avatar{width:132px;height:132px;border-radius:32px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(145deg,#ffe79a,#bd8420);color:#17212a;font-size:52px;font-weight:950;border:2px solid rgba(255,239,178,.72)}.r37f3Avatar img{width:100%;height:100%;object-fit:cover}
  .r37f3AvatarActions{display:grid;grid-template-columns:1fr;gap:7px;width:100%}.r37f3AvatarActions button{min-height:44px;display:flex;align-items:center;justify-content:center;gap:7px}
  .r37f3Fields{display:grid;gap:12px}.r37f3Fields label{display:grid;gap:7px;font-weight:850;color:#eef7fb}.r37f3Fields input,.r37f3Fields textarea,.r37f3Modal input,.r37f3Modal textarea,.r37f3Modal select{width:100%;padding:13px;border-radius:14px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.075);color:#fff;font:inherit;opacity:1!important;pointer-events:auto!important;user-select:text!important;-webkit-user-select:text!important;touch-action:manipulation!important}.r37f3Fields input:focus,.r37f3Fields textarea:focus{outline:2px solid #f3d477;outline-offset:1px;background:rgba(255,255,255,.11)}.r37f3Fields textarea{min-height:86px;resize:vertical}.r37f3Lang{display:flex;align-items:center;justify-content:space-between;min-height:50px;padding:12px}
  .r37f3Consent{display:grid;gap:9px;padding:14px}.r37f3Consent label{display:flex;gap:10px;align-items:center;padding:11px;border-radius:14px;background:rgba(255,255,255,.06)}.r37f3Consent input{width:22px;height:22px;accent-color:#d8aa39}.r37f3Save{min-height:52px;font-weight:950}
  .r37f3Title{padding:14px}.r37f3Title h2{margin:0;color:#f4d575}.r37f3Title p{margin:5px 0 0;color:#bfd0da}.r37f3Grid{padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.r37f3Grid button{min-height:94px;text-align:left;padding:13px;display:grid;gap:5px}.r37f3Grid small{color:#bfd0da}.r37f3Work{padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.r37f3Work button{min-height:52px}
  .r37f3Profile button,.r37f3Modal button{border:1px solid rgba(255,255,255,.25);border-radius:14px;background:rgba(255,255,255,.07);color:#fff;font:inherit;cursor:pointer;touch-action:manipulation}.r37f3Gold{border-color:#e2bd50!important;background:linear-gradient(135deg,#f7df91,#bd8420)!important;color:#211704!important}.r37f3Danger{border-color:rgba(255,111,111,.5)!important;background:rgba(127,35,40,.34)!important}
  .r37f3Modal{position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,.78);display:grid;place-items:center;padding:12px}.r37f3Modal>section{width:min(740px,100%);max-height:94dvh;overflow:auto;border:1px solid rgba(231,196,91,.45);border-radius:23px;background:linear-gradient(145deg,#071521,#113249);color:#fff}.r37f3Modal header{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:13px;background:rgba(7,21,33,.97)}.r37f3Modal header h2{margin:0;color:#f4d575}.r37f3Modal header button{width:42px;height:42px}.r37f3Modal main{padding:15px}.r37f3Modal article,.r37f3Form{display:grid;gap:11px}.r37f3Modal h3{margin:7px 0 0;color:#f4d575}.r37f3Modal p{line-height:1.55;color:#c7d6de}.r37f3Actions{display:flex;gap:8px;flex-wrap:wrap}.r37f3Actions button{padding:12px;flex:1}.r37f3Snapshot pre{white-space:pre-wrap;overflow-wrap:anywhere;background:rgba(0,0,0,.25);padding:10px;border-radius:12px}.r37f3Delete,.r37f3Creator{display:grid;grid-template-columns:1fr 1fr;gap:9px}.r37f3Delete button,.r37f3Creator button{min-height:92px;padding:12px;display:grid;gap:5px;text-align:left}
  @media(max-width:650px){.r37f3Identity,.r37f3Grid,.r37f3Work,.r37f3Delete,.r37f3Creator{grid-template-columns:1fr}.r37f3Profile{padding:7px 7px 94px}.r37f3Profile section{border-radius:18px}.r37f3Identity{padding:12px}.r37f3AvatarActions{grid-template-columns:repeat(3,1fr)}.r37f3AvatarActions button{display:grid;gap:2px;font-size:12px}.r37f3Grid button{min-height:80px}}
  `;document.head.appendChild(s);
}
function modal(title,body){
  document.querySelector('.r37f3Modal')?.remove();
  const x=document.createElement('div');x.className='r37f3Modal';x.innerHTML=`<section><header><h2>${title}</h2><button type="button" data-close>×</button></header><main>${body}</main></section>`;document.body.appendChild(x);x.querySelector('[data-close]').onclick=()=>x.remove();x.addEventListener('click',e=>{if(e.target===x)x.remove()});return x;
}
function avatarMarkup(){const a=currentAvatar();if(a&&/^data:image\//i.test(a))return `<img src="${a}" alt="${tr('Εικόνα προφίλ','Profile image')}">`;return esc((draftGet('ith_profile_name_draft_f3',storedName())||'Μ').trim().slice(0,1).toUpperCase()||'Μ')}
function updateAvatar(){const b=$('r37f3Avatar');if(b)b.innerHTML=avatarMarkup()}
function fitAvatar(file){return new Promise((resolve,reject)=>{const rd=new FileReader();rd.onerror=()=>reject(new Error('read'));rd.onload=()=>{const img=new Image();img.onerror=()=>reject(new Error('image'));img.onload=()=>{try{const max=720;let w=img.naturalWidth||img.width,h=img.naturalHeight||img.height;const scale=Math.min(1,max/Math.max(w,h));w=Math.max(1,Math.round(w*scale));h=Math.max(1,Math.round(h*scale));const c=document.createElement('canvas');c.width=w;c.height=h;const ctx=c.getContext('2d',{alpha:false});ctx.fillStyle='#0b1e2c';ctx.fillRect(0,0,w,h);ctx.drawImage(img,0,0,w,h);resolve(c.toDataURL('image/jpeg',.84))}catch(e){reject(e)}};img.src=String(rd.result||'')};rd.readAsDataURL(file)})}
function pickAvatar(camera){let f=$(camera?'r37f3CameraInput':'r37f3PhotoInput');if(!f){f=document.createElement('input');f.id=camera?'r37f3CameraInput':'r37f3PhotoInput';f.type='file';f.accept='image/*';f.hidden=true;if(camera)f.setAttribute('capture','user');document.body.appendChild(f);f.addEventListener('change',async()=>{const file=f.files?.[0];if(!file)return;try{if(file.size>12*1024*1024)throw new Error('size');const data=await fitAvatar(file);localStorage.setItem('ith_avatar',data);updateAvatar();toast(tr('Η εικόνα επιλέχθηκε. Πάτησε Αποθήκευση προφίλ.','Image selected. Press Save profile.'))}catch(e){toast(e.message==='size'?tr('Η εικόνα είναι πολύ μεγάλη. Μέγιστο 12 MB.','The image is too large. Maximum 12 MB.'):tr('Η εικόνα δεν διαβάστηκε.','The image could not be read.'))}finally{f.value=''}})}f.click()}
function useInitial(){localStorage.removeItem('ith_avatar');updateAvatar();toast(tr('Θα χρησιμοποιηθεί το αρχικό γράμμα.','The initial letter will be used.'))}
function languagePanel(){const mode=localStorage.getItem('ith_translation_mode_r10f37')||'manual',target=localStorage.getItem('ith_translation_target_r10f37')||(lang()==='el'?'en':'el');const x=modal('🌐 '+tr('Γλώσσα και μετάφραση','Language and translation'),`<div class="r37f3Form"><label>${tr('Γλώσσα εφαρμογής','App language')}</label><div class="r37f3Actions"><button type="button" data-ui="el">🇬🇷 Ελληνικά</button><button type="button" data-ui="en">🇬🇧 English</button></div><label>${tr('Τρόπος μετάφρασης','Translation mode')}</label><div class="r37f3Actions"><button type="button" data-mode="auto" class="${mode==='auto'?'r37f3Gold':''}">${tr('Αυτόματη','Automatic')}</button><button type="button" data-mode="manual" class="${mode==='manual'?'r37f3Gold':''}">${tr('Χειροκίνητη','Manual')}</button></div><label>${tr('Γλώσσα μετάφρασης','Translation language')}</label><select id="r37f3Target"><option value="el" ${target==='el'?'selected':''}>Ελληνικά</option><option value="en" ${target==='en'?'selected':''}>English</option></select></div>`);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);x.remove();forceRender()});x.querySelectorAll('[data-mode]').forEach(b=>b.onclick=()=>{localStorage.setItem('ith_translation_mode_r10f37',b.dataset.mode);x.remove();languagePanel()});$('r37f3Target').onchange=e=>localStorage.setItem('ith_translation_target_r10f37',e.target.value)}
function policyPanel(){return modal('⚖️ '+tr('Πλήρης πολιτική, όροι και δικαιώματα','Full policy, terms and rights'),`<article><h3>${tr('ΠΟΛΙΤΙΚΗ ΑΠΟΡΡΗΤΟΥ','PRIVACY POLICY')}</h3><p>${tr('Η OK ΙΘΑΚΗ λειτουργεί με ψευδώνυμο, ελαχιστοποίηση δεδομένων και τοπική αποθήκευση. Δεν απαιτεί υποχρεωτικά email ή αριθμό τηλεφώνου για τη βασική χρήση.','OK ITHAKI uses nicknames, data minimisation and local storage. Email and phone number are not mandatory for basic use.')}</p><h3>${tr('Στοιχεία που μένουν στη συσκευή','Data kept on the device')}</h3><p>${tr('Το όνομα ή ψευδώνυμο, το avatar ή αρχικό γράμμα, η σύντομη περιγραφή, η γλώσσα, οι ρυθμίσεις και οι αποδοχές πολιτικής αποθηκεύονται πρώτα τοπικά στη συσκευή. Το ιδιωτικό αρχείο λογαριασμού δημιουργείται μόνο όταν το ζητήσει το μέλος.','The name or nickname, avatar or initial, short description, language, settings and policy choices are stored locally on the device first. A private account file is created only when requested by the member.')}</p><h3>${tr('Λειτουργικά δεδομένα server','Operational server data')}</h3><p>${tr('Ο server μπορεί να κρατά τεχνικό αναγνωριστικό συσκευής, ψευδώνυμο, δημοσιεύσεις και αρχεία που ανεβάζει το μέλος, μηνύματα, σχέσεις επαφών, αιτήματα, τεχνικά στοιχεία ειδοποιήσεων και τις απολύτως αναγκαίες καταγραφές ασφάλειας και αντιμετώπισης κατάχρησης. Η ξεχωριστή επιλογή «Τι κρατά ο server» εμφανίζει την πραγματική διαθέσιμη εικόνα για τη συγκεκριμένη συσκευή.','The server may keep a technical device identifier, nickname, posts and files uploaded by the member, messages, contact relations, requests, notification data and strictly necessary security and abuse-prevention records. The separate “What the server keeps” control shows the actual available snapshot for this device.')}</p><h3>${tr('Τι δεν ζητείται υποχρεωτικά','What is not mandatory')}</h3><p>${tr('Δεν ζητούνται υποχρεωτικά email, τηλέφωνο, λίστα επαφών κινητού, ακριβής τοποθεσία GPS ή το πλήρες ιδιωτικό αρχείο λογαριασμού.','Email, phone, the phone contact list, precise GPS location and the complete private account file are not mandatory.')}</p><h3>${tr('Μηνύματα, κλήσεις και αρχεία','Messages, calls and files')}</h3><p>${tr('Τα μηνύματα και τα αρχεία διατηρούνται όσο απαιτείται για τη λειτουργία της υπηρεσίας ή μέχρι να διαγραφούν σύμφωνα με τις διαθέσιμες επιλογές. Οι κλήσεις χρησιμοποιούν WebRTC και ο server χειρίζεται μόνο τα αναγκαία στοιχεία σηματοδοσίας και κατάστασης κλήσης, όχι μόνιμη ηχογράφηση από προεπιλογή.','Messages and files are retained as needed for the service or until deleted through available controls. Calls use WebRTC and the server handles only necessary signalling and call-state data, not permanent recording by default.')}</p><h3>${tr('Ευρωπαϊκή πολιτική / GDPR','European policy / GDPR')}</h3><p>${tr('Εφαρμόζονται οι αρχές ελαχιστοποίησης, διαφάνειας, περιορισμού σκοπού και ασφάλειας. Το μέλος μπορεί να ζητήσει ενημέρωση, πρόσβαση, διόρθωση, διαγραφή, περιορισμό, φορητότητα, εναντίωση και ανάκληση συγκατάθεσης όπου εφαρμόζεται.','The principles of data minimisation, transparency, purpose limitation and security apply. Members may request information, access, correction, deletion, restriction, portability, objection and withdrawal of consent where applicable.')}</p><h3>${tr('Διατήρηση και διαγραφή','Retention and deletion')}</h3><p>${tr('Τα λειτουργικά δεδομένα διατηρούνται μόνο όσο χρειάζονται για τον σκοπό τους, την ασφάλεια, νόμιμες υποχρεώσεις ή την αντιμετώπιση κατάχρησης. Από το Προφίλ υπάρχουν ξεχωριστές επιλογές για διαγραφή δεδομένων server και διαγραφή λογαριασμού, με επιβεβαίωση πριν από την εκτέλεση.','Operational data is retained only as long as needed for its purpose, safety, legal obligations or abuse prevention. The Profile provides separate confirmed controls for server-data deletion and account deletion.')}</p><h3>${tr('ΟΡΟΙ ΧΡΗΣΗΣ','TERMS OF USE')}</h3><p>${tr('Η χρήση επιτρέπεται από 16 ετών. Το μέλος είναι υπεύθυνο για το περιεχόμενο που δημοσιεύει και για νόμιμη χρήση. Απαγορεύονται απειλές, παρενόχληση, παράνομο, καταχρηστικό ή επιβλαβές περιεχόμενο, παραβίαση δικαιωμάτων και κατάχρηση της υπηρεσίας.','Use is allowed from age 16. Members are responsible for uploaded content and lawful use. Threats, harassment, illegal, abusive or harmful content, rights violations and service abuse are prohibited.')}</p><h3>${tr('Ασφάλεια και διαχείριση','Security and administration')}</h3><p>${tr('Μπορούν να εφαρμοστούν τεχνικά όρια, αποκλεισμός, σίγαση, έλεγχος αναφορών ή διαγραφή περιεχομένου για προστασία μελών, υπηρεσίας και νόμιμων δικαιωμάτων.','Technical limits, blocking, muting, report review or content removal may be applied to protect members, the service and lawful rights.')}</p><h3>${tr('Επικοινωνία','Contact')}</h3><p>${tr('Για ερωτήσεις, πρόσβαση ή αίτημα δικαιωμάτων χρησιμοποιείται η «Άμεση επαφή διαχειριστή» στο τέλος του Προφίλ.','For questions, access or rights requests, use “Direct administrator contact” at the end of the Profile.')}</p><p>${tr('Το κείμενο είναι λειτουργική πολιτική της εφαρμογής και χρειάζεται τελικό νομικό έλεγχο πριν από δημόσια εμπορική κυκλοφορία.','This is the application operational policy and requires final legal review before public commercial release.')}</p></article>`)}
async function serverDataPanel(){const x=modal('🗄️ '+tr('Τι κρατά ο server','What the server keeps'),`<article><p>${tr('Ο server κρατά μόνο τα ελάχιστα λειτουργικά δεδομένα που χρειάζονται για ροή, μηνύματα, επαφές, ειδοποιήσεις, ασφάλεια και αντιμετώπιση κατάχρησης.','The server keeps only minimum operational data needed for feed, messages, contacts, notifications, security and abuse prevention.')}</p><div id="r37f3Snapshot" class="r37f3Snapshot">${tr('Φόρτωση…','Loading…')}</div></article>`);try{const q=`?room_id=${encodeURIComponent(room())}&device_id=${encodeURIComponent(device())}`;const d=await api('/api/privacy/profile_server_snapshot'+q);$('r37f3Snapshot').innerHTML='<pre>'+esc(JSON.stringify(d,null,2))+'</pre>'}catch(e){$('r37f3Snapshot').textContent=tr('Δεν φορτώθηκε η εικόνα δεδομένων: ','Could not load data snapshot: ')+e.message}return x}
function backupObject(){return {format:'OK_ITHAKI_ACCOUNT_BACKUP_R10F37F1F3',created_at:new Date().toISOString(),profile:{name:storedName(),bio:storedBio(),age16:localStorage.getItem('ith_age16')==='1',policy:localStorage.getItem('ith_policy_ok')==='1',avatar:currentAvatar(),ui_language:lang(),translation_mode:localStorage.getItem('ith_translation_mode_r10f37')||'manual',translation_target:localStorage.getItem('ith_translation_target_r10f37')||'en'},identity:{device_id:device(),room_id:room()}}}
function exportBackup(){const blob=new Blob([JSON.stringify(backupObject(),null,2)],{type:'application/json'}),a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='OK_ITHAKI_ACCOUNT_BACKUP_'+new Date().toISOString().slice(0,10)+'.json';document.body.appendChild(a);a.click();setTimeout(()=>{URL.revokeObjectURL(a.href);a.remove()},1000)}
function importBackup(){let f=$('r37f3Import');if(!f){f=document.createElement('input');f.id='r37f3Import';f.type='file';f.accept='.json,application/json';f.hidden=true;document.body.appendChild(f);f.onchange=async()=>{try{const d=JSON.parse(await f.files[0].text()),p=d.profile||{};if(!p||(!d.format&&!p.name))throw new Error('invalid');if(p.name)localStorage.setItem('ith_name',p.name);localStorage.setItem('ith_profile_bio_r10f37',p.bio||'');localStorage.setItem('ith_age16',p.age16?'1':'0');localStorage.setItem('ith_policy_ok',p.policy?'1':'0');if(p.avatar)localStorage.setItem('ith_avatar',p.avatar);else localStorage.removeItem('ith_avatar');if(p.ui_language)localStorage.setItem('ith_global_language_r10f7',p.ui_language);draftClear();toast(tr('Το ιδιωτικό αρχείο εισήχθη.','Private file imported.'));forceRender()}catch(_e){toast(tr('Το αρχείο δεν είναι έγκυρο.','The file is invalid.'))}finally{f.value=''}}}f.click()}
function backupPanel(){const x=modal('💾 '+tr('Αποθήκευση λογαριασμού','Account backup'),`<article><h3>${tr('Ιδιωτικό αρχείο λογαριασμού','Private account file')}</h3><p>${tr('Αποθήκευσε το αρχείο σε δικό σου υπολογιστή ή USB. Δεν αποθηκεύεται αυτόματα στον server.','Save the file on your own computer or USB drive. It is not automatically stored on the server.')}</p><div class="r37f3Actions"><button id="r37f3Export" type="button">📦 ${tr('Αποθήκευση αρχείου','Save file')}</button><button id="r37f3ImportBtn" type="button">📥 ${tr('Εισαγωγή δικού μου αρχείου','Import my file')}</button></div></article>`);$('r37f3Export').onclick=exportBackup;$('r37f3ImportBtn').onclick=importBackup;return x}
async function deleteServerData(){if(!confirm(tr('Να διαγραφούν τα λειτουργικά δεδομένα αυτής της συσκευής από τον server;','Delete this device operational data from the server?')))return;try{const d=await api('/api/privacy/delete_device_data',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({room_id:room(),device_id:device()})});toast(d.ok?tr('Το αίτημα διαγραφής ολοκληρώθηκε.','Deletion request completed.'):tr('Η διαγραφή δεν ολοκληρώθηκε.','Deletion did not complete.'))}catch(e){toast(tr('Σφάλμα διαγραφής: ','Deletion error: ')+e.message)}}
function deletionPanel(){const x=modal('🗑️ '+tr('Διαγραφή και έλεγχος','Deletion and control'),`<div class="r37f3Delete"><button id="r37f3DeleteServer" type="button"><b>${tr('Σβήσιμο όσων κρατά ο server','Delete what the server keeps')}</b><small>${tr('Αίτημα διαγραφής των λειτουργικών δεδομένων της συσκευής.','Request deletion of this device operational data.')}</small></button><button id="r37f3DeleteAccount" type="button" class="r37f3Danger"><b>${tr('Διαγραφή λογαριασμού','Delete account')}</b><small>${tr('Διαγράφει την τοπική ταυτότητα και ζητά διαγραφή server.','Deletes local identity and requests server deletion.')}</small></button></div>`);$('r37f3DeleteServer').onclick=deleteServerData;$('r37f3DeleteAccount').onclick=async()=>{if(!confirm(tr('Η διαγραφή λογαριασμού δεν αναιρείται. Συνέχεια;','Account deletion cannot be undone. Continue?')))return;await deleteServerData();['ith_name','ith_profile_bio_r10f37','ith_age16','ith_policy_ok','ith_avatar'].forEach(k=>localStorage.removeItem(k));try{S().name=''}catch(_e){}draftClear();x.remove();forceRender();toast(tr('Η τοπική ταυτότητα διαγράφηκε.','Local identity deleted.'))};return x}
async function adminPanel(){const x=modal('💬 '+tr('Άμεση επαφή διαχειριστή','Direct administrator contact'),`<div class="r37f3Form"><label>${tr('Θέμα','Subject')}<input id="r37f3AdminSubject" maxlength="100"></label><label>${tr('Μήνυμα','Message')}<textarea id="r37f3AdminText" maxlength="2000"></textarea></label><div class="r37f3Actions"><button id="r37f3AdminSend" type="button">📨 ${tr('Αποστολή','Send')}</button><button id="r37f3AdminRefresh" type="button">↻ ${tr('Ανανέωση','Refresh')}</button></div><div id="r37f3AdminHistory" class="r37f3Snapshot"></div></div>`);async function refresh(){try{const q=`?room_id=${encodeURIComponent(room())}&device_id=${encodeURIComponent(device())}`;const d=await api('/api/feedback/status'+q);$('r37f3AdminHistory').innerHTML='<pre>'+esc(JSON.stringify(d,null,2))+'</pre>'}catch(e){$('r37f3AdminHistory').textContent=e.message}}$('r37f3AdminSend').onclick=async()=>{const subject=$('r37f3AdminSubject').value.trim(),message=$('r37f3AdminText').value.trim();if(!message)return toast(tr('Γράψε μήνυμα.','Write a message.'));try{const d=await api('/api/feedback/send',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({room_id:room(),device_id:device(),nickname:storedName(),subject,message})});if(d.ok){$('r37f3AdminText').value='';toast(tr('Το μήνυμα στάλθηκε.','Message sent.'));refresh()}else toast(tr('Δεν στάλθηκε.','Not sent.'))}catch(e){toast(e.message)}};$('r37f3AdminRefresh').onclick=refresh;refresh();return x}
function creatorPanel(){const x=modal('🛠️ '+tr('Εργαλεία δημιουργού','Creator tools'),`<div class="r37f3Creator"><button data-tool="405" type="button">👁️ <b>${tr('Πραγματικές προβολές','Actual views')}</b></button><button data-tool="406" type="button">📊 <b>${tr('Στατιστικά','Statistics')}</b></button><button data-tool="407" type="button">🌿 <b>${tr('Ποιότητα θέασης','View quality')}</b></button><button data-tool="408" type="button">🔗 <b>${tr('Κοινοποιήσεις','Shares')}</b></button><button data-tool="409" type="button">🕰️ <b>${tr('Καλύτερη ώρα','Best time')}</b></button><button data-tool="410" type="button">🗓️ <b>${tr('Προγραμματισμένες δημοσιεύσεις','Scheduled posts')}</b></button></div>`);x.querySelectorAll('[data-tool]').forEach(b=>b.onclick=()=>{const map={405:'openCreatorViewsV249405',406:'openCreatorStatsV249406',407:'openCreatorQualityV249407',408:'openCreatorSharesV249408',409:'openCreatorBestTimeV249409',410:'openCreatorSchedulesV249410'},f=I()[map[b.dataset.tool]];if(typeof f==='function'){x.remove();f()}else toast(tr('Το εργαλείο δεν φορτώθηκε.','The tool did not load.'))});return x}
function savedPanel(){const x=modal('✅ '+tr('Το προφίλ αποθηκεύτηκε','Profile saved'),`<article><h3>${tr('Αποθήκευση στη συσκευή','Saved on this device')}</h3><p>${tr('Αποθηκεύτηκαν το όνομα, το avatar ή το αρχικό γράμμα, η σύντομη περιγραφή, η γλώσσα και η αποδοχή πολιτικής.','The name, avatar or initial, short description, language and policy acceptance were saved.')}</p><h3>${tr('Λειτουργικός συγχρονισμός','Operational synchronisation')}</h3><p>${tr('Στον server στέλνονται μόνο όσα χρειάζονται για να εμφανίζεται και να λειτουργεί το μέλος. Δεν δημιουργείται αυτόματα ιδιωτικό αντίγραφο λογαριασμού.','Only what is needed for the member to appear and function is sent to the server. A private account copy is not created automatically.')}</p><div class="r37f3Actions"><button type="button" data-done class="r37f3Gold">${tr('Έτοιμο','Done')}</button></div></article>`);x.querySelector('[data-done]').onclick=()=>x.remove();return x}
async function save(){const n=String($('r37f3Name')?.value||'').trim(),bio=String($('r37f3Bio')?.value||'').trim();if(!n)return toast(tr('Γράψε όνομα ή ψευδώνυμο.','Enter a name or nickname.'));if(!$('r37f3Age')?.checked||!$('r37f3Policy')?.checked)return toast(tr('Χρειάζεται επιβεβαίωση 16+ και αποδοχή πολιτικής.','16+ confirmation and policy acceptance are required.'));localStorage.setItem('ith_name',n);localStorage.setItem('ith_profile_bio_r10f37',bio);localStorage.setItem('ith_age16','1');localStorage.setItem('ith_policy_ok','1');try{S().name=n;S().age16=true;S().policyOk=true}catch(_e){}draftClear();try{if(typeof I().syncProfileNow==='function')Promise.resolve(I().syncProfileNow()).catch(()=>{})}catch(_e){}updateAvatar();savedPanel()}
function bind(){
  const on=(id,fn)=>{const e=$(id);if(e)e.addEventListener('click',fn)};
  on('r37f3Back',()=>typeof I().page==='function'?I().page('home'):history.back());on('r37f3Photo',()=>pickAvatar(false));on('r37f3Camera',()=>pickAvatar(true));on('r37f3Initial',useInitial);on('r37f3Language',languagePanel);on('r37f3Save',save);on('r37f3PolicyBtn',policyPanel);on('r37f3DataBtn',serverDataPanel);on('r37f3BackupBtn',backupPanel);on('r37f3DeleteBtn',deletionPanel);on('r37f3Admin',adminPanel);on('r37f3Creator',creatorPanel);
  const n=$('r37f3Name'),b=$('r37f3Bio');
  if(n){n.readOnly=false;n.disabled=false;n.removeAttribute('readonly');n.removeAttribute('disabled');n.addEventListener('input',()=>{draftSet('ith_profile_name_draft_f3',n.value);if(!currentAvatar())updateAvatar()})}
  if(b){b.readOnly=false;b.disabled=false;b.removeAttribute('readonly');b.removeAttribute('disabled');b.addEventListener('input',()=>draftSet('ith_profile_bio_draft_f3',b.value))}
}
function template(){const n=draftGet('ith_profile_name_draft_f3',storedName()),bio=draftGet('ith_profile_bio_draft_f3',storedBio());return `<main class="r37f3Profile" data-r10f37f1f3-profile-owner="1">
<section class="r37f3Head"><button id="r37f3Back" type="button" class="r37f3Back">‹</button><div><small>OK ITHAKI · ${tr('ΠΡΟΦΙΛ ΜΕΛΟΥΣ','MEMBER PROFILE')}</small><h1>${tr('Το προφίλ μου','My profile')}</h1></div></section>
<section class="r37f3Identity"><div class="r37f3AvatarCol"><div id="r37f3Avatar" class="r37f3Avatar">${avatarMarkup()}</div><div class="r37f3AvatarActions"><button id="r37f3Photo" type="button">🖼️ <span>${tr('Αρχείο','File')}</span></button><button id="r37f3Camera" type="button">📷 <span>${tr('Κάμερα','Camera')}</span></button><button id="r37f3Initial" type="button">Α <span>${tr('Αρχικό','Initial')}</span></button></div></div><div class="r37f3Fields"><label>${tr('Όνομα μέλους / ψευδώνυμο','Member name / nickname')}<input id="r37f3Name" type="text" maxlength="40" autocomplete="nickname" value="${esc(n)}" placeholder="${tr('Γράψε όνομα','Enter name')}"></label><label>${tr('Μερικά λόγια — προαιρετικά','A few words — optional')}<textarea id="r37f3Bio" maxlength="180" placeholder="${tr('Μία σύντομη περιγραφή','A short description')}">${esc(bio)}</textarea></label><button id="r37f3Language" type="button" class="r37f3Lang"><span>🌐 ${tr('Γλώσσα και μετάφραση','Language and translation')}</span><b>${lang()==='el'?'Ελληνικά':'English'}</b></button></div></section>
<section class="r37f3Consent"><label><input id="r37f3Age" type="checkbox" ${localStorage.getItem('ith_age16')==='1'?'checked':''}> ${tr('Επιβεβαιώνω ότι είμαι 16+.','I confirm I am 16+.')}</label><label><input id="r37f3Policy" type="checkbox" ${localStorage.getItem('ith_policy_ok')==='1'?'checked':''}> ${tr('Αποδέχομαι την πολιτική, τους όρους και την τοπική αποθήκευση.','I accept the policy, terms and local storage.')}</label><button id="r37f3Save" type="button" class="r37f3Save r37f3Gold">✅ ${tr('Αποθήκευση προφίλ','Save profile')}</button></section>
<section class="r37f3Title"><h2>${tr('Πολιτική και έλεγχος λογαριασμού','Policy and account control')}</h2><p>${tr('Κάθε ενότητα ανοίγει ξεχωριστά, χωρίς να κλειδώνει τα στοιχεία του προφίλ.','Each section opens separately without locking profile fields.')}</p></section>
<section class="r37f3Grid"><button id="r37f3PolicyBtn" type="button">⚖️ <b>${tr('Πλήρης πολιτική και όροι','Full policy and terms')}</b><small>${tr('Απόρρητο, δικαιώματα, ασφάλεια και χρήση','Privacy, rights, security and use')}</small></button><button id="r37f3DataBtn" type="button">🗄️ <b>${tr('Τι κρατά ο server','What the server keeps')}</b><small>${tr('Πραγματική εικόνα λειτουργικών δεδομένων','Actual operational data snapshot')}</small></button><button id="r37f3BackupBtn" type="button">💾 <b>${tr('Αποθήκευση λογαριασμού','Account backup')}</b><small>${tr('Ιδιωτικό αρχείο σε υπολογιστή ή USB','Private file on computer or USB')}</small></button><button id="r37f3DeleteBtn" type="button" class="r37f3Danger">🗑️ <b>${tr('Διαγραφή και έλεγχος','Deletion and control')}</b><small>${tr('Δεδομένα server ή λογαριασμός','Server data or account')}</small></button></section>
<section class="r37f3Title"><h2>${tr('Επικοινωνία και εργαλεία','Contact and tools')}</h2><p>${tr('Μία σταθερή θέση, χωρίς διπλά κουμπιά πάνω από το προφίλ.','One stable place, without duplicate buttons above the profile.')}</p></section><section class="r37f3Work"><button id="r37f3Admin" type="button">💬 ${tr('Άμεση επαφή διαχειριστή','Direct administrator contact')}</button><button id="r37f3Creator" type="button" class="r37f3Gold">🛠️ ${tr('Εργαλεία δημιουργού','Creator tools')}</button></section>
</main>`}
function enableFields(){['r37f3Name','r37f3Bio'].forEach(id=>{const e=$(id);if(e){e.disabled=false;e.readOnly=false;e.removeAttribute('disabled');e.removeAttribute('readonly');e.style.pointerEvents='auto'}})}
function render(force){css();cleanupLegacy();const p=host();if(!p)return false;const existing=p.querySelector('[data-r10f37f1f3-profile-owner="1"]');if(existing&&!force){enableFields();return true}p.innerHTML=template();bind();cleanupLegacy();enableFields();return true}
function forceRender(){const p=host();if(p)p.innerHTML='';return render(true)}
let timer=0;function maintain(){clearTimeout(timer);timer=setTimeout(()=>{cleanupLegacy();if(isProfileVisible()){const p=host();if(p&&!p.querySelector('[data-r10f37f1f3-profile-owner="1"]'))render(true);else enableFields()}},35)}
function install(){css();cleanupLegacy();window.renderProfessionalProfileR10F37F1F3=()=>render(false);window.forceProfessionalProfileR10F37F1F3=forceRender;const ith=I();ith.renderProfessionalProfileR10F37F1F3=window.renderProfessionalProfileR10F37F1F3;document.addEventListener('click',e=>{if(e.target.closest('#nav button[data-page="profile"],#tab-profile,[onclick*="profile"]'))setTimeout(()=>render(false),0)},true);new MutationObserver(maintain).observe(document.body||document.documentElement,{subtree:true,childList:true,attributes:true,attributeFilter:['data-page','class']});setInterval(()=>{cleanupLegacy();if(isProfileVisible())enableFields()},1800);if(isProfileVisible())render(false);document.documentElement.setAttribute('data-ithaki-profile-owner',VERSION);console.log('ITHAKI_R10F37F1F3_PROFILE_READY')}
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',install,{once:true});else install();
})();
