/* OK ITHAKI V249439 — Private Relay profile preserved; old V249290 neighborhood restored; automatic native Mesh cancelled. */
(() => {
  'use strict';
  if (window.__ITHAKI_PRIVACY_RELAY_PROFILE_V249437__) return;
  window.__ITHAKI_PRIVACY_RELAY_PROFILE_V249437__ = true;
  const VER='V249439-restore-v249290-neighborhood-no-auto-mesh';
  const $=id=>document.getElementById(id);
  const esc=v=>String(v==null?'':v).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
  const bridge=()=>{try{return window.OKITHAKI_ANDROID||window.AndroidBridge||window.Android||null}catch(e){return null}};
  const parse=(v,f={})=>{try{return JSON.parse(String(v||''))}catch(e){return f}};
  const nativeCall=(name,...args)=>{const b=bridge();if(!b||typeof b[name]!=='function')return null;try{return b[name](...args)}catch(e){return null}};
  const toast=t=>{try{if(window.toast)return window.toast(t,6000);if(window.ITH&&ITH.toast)return ITH.toast(t,6000)}catch(e){}console.log(t)};
  const menu=()=>$('memberMenu');
  const close=()=>{const m=menu();if(m){m.classList.remove('show','localPanel');m.innerHTML=''}return false};
  const pref=(k,d='')=>{try{return localStorage.getItem(k)??d}catch(e){return d}};
  const put=(k,v)=>{try{localStorage.setItem(k,String(v))}catch(e){}};
  const bool=v=>v?'ΝΑΙ':'ΟΧΙ';
  const relayStatus=()=>parse(nativeCall('privateRelayStatusV249436')||'{}',{ok:true,enabled:false,strict:true,entry_base:'',android_apk_required:!bridge(),full_tor_equivalent:false});
  const meshStatus=()=>parse(nativeCall('meshStatusV249435')||nativeCall('getMeshNetworkSummary')||'{}',{ok:false,enabled:false,reason:'android_apk_required'});

  function header(title,sub){return `<div class="ith436Head"><button type="button" data-close436>‹</button><div><b>${title}</b><small>${sub}</small></div><button type="button" data-close436>×</button></div>`}
  function statusRow(label,value,good=false){return `<div class="ith436Status"><span>${esc(label)}</span><b class="${good?'good':''}">${esc(value)}</b></div>`}

  function savePrivacyPreferences(){
    const anon=!!$('ith436AnonDefault')?.checked;
    const enc=String($('ith436EncryptionDefault')?.value||'ask');
    put('ithaki_default_anonymous_v249436',anon?'1':'0');
    put('ithaki_default_encryption_v249436',enc);
    const out=$('ith436PrivacyResult');if(out)out.textContent='Οι προτιμήσεις αποθηκεύτηκαν στο κινητό/πρόγραμμα.';
    applyAnonymousDefault();
    return false;
  }

  function openPrivacyProfile(){
    const m=menu();if(!m)return false;const rs=relayStatus();
    const anon=pref('ithaki_default_anonymous_v249436','0')==='1';
    const enc=pref('ithaki_default_encryption_v249436','ask');
    m.classList.add('show','localPanel');
    m.innerHTML=`<div class="ith436Panel">${header('🛡️ Ανωνυμία και κρυπτογράφηση','ITHAKI Private Relay · προστασία συνομιλιών · παλιά Γειτονιά')}
      <section class="ith436Hero"><b>Δικό μας ITHAKI Private Relay</b><span>Η εφαρμογή μπορεί να φορτώνει αποκλειστικά από δικό μας relay node. Ένας relay κόμβος κρύβει την IP από τον κύριο server. Δύο ανεξάρτητοι κόμβοι μειώνουν περισσότερο τη συσχέτιση, αλλά δεν ισοδυναμούν με το παγκόσμιο δίκτυο Tor.</span></section>
      <div class="ith436Truth"><b>Ακριβής ένδειξη</b><span>Πλήρης ανωνυμία δεν μπορεί να υποσχεθεί κανένα μικρό ιδιωτικό δίκτυο. Για ουσιαστικό όφελος οι relay κόμβοι πρέπει να βρίσκονται σε διαφορετικούς ανεξάρτητους servers/παρόχους.</span></div>
      <div class="ith436Grid">${statusRow('Private Relay',bool(rs.enabled),rs.enabled)}${statusRow('Αυστηρή λειτουργία',bool(rs.strict),rs.strict)}${statusRow('Έτοιμο Android APK',bridge()?'ΝΑΙ':'ΟΧΙ',!!bridge())}${statusRow('Ισοδύναμο πλήρους Tor','ΟΧΙ',true)}</div>
      <label><span>Διεύθυνση εισόδου relay — HTTPS</span><input id="ith436RelayEntry" inputmode="url" value="${esc(rs.entry_base||pref('ithaki_private_relay_entry_v249436',''))}" placeholder="https://relay1.example.gr"></label>
      <label><span>Ιδιωτικός κωδικός πρόσβασης relay</span><input id="ith436RelayCode" type="password" autocomplete="new-password" placeholder="Δεν αποστέλλεται στον κύριο server"></label>
      <label class="ith436Check"><input id="ith436RelayStrict" type="checkbox" ${rs.strict!==false?'checked':''}><span><b>Αυστηρή ανωνυμία εφαρμογής</b><small>Κλείνει FCM και WebRTC κλήσεις όταν χρησιμοποιείται relay, επειδή μπορούν να δημιουργήσουν ξεχωριστή εξωτερική σύνδεση.</small></span></label>
      <div class="ith436Actions"><button id="ith436RelayEnable" class="primary">Ενεργοποίηση Private Relay</button><button id="ith436RelayTest">Έλεγχος relay</button><button id="ith436RelayDisable">Κανονική σύνδεση</button></div>
      <section class="ith436Hero second"><b>Προεπιλογές ανωνυμίας</b><span>Οι ρυθμίσεις εφαρμόζονται ως προεπιλογές. Η κλειδαριά κάθε συνομιλίας εξακολουθεί να δείχνει και να ενεργοποιεί τον πραγματικό τρόπο προστασίας.</span></section>
      <label class="ith436Check"><input id="ith436AnonDefault" type="checkbox" ${anon?'checked':''}><span><b>Ανώνυμη δημοσίευση ως προεπιλογή</b><small>Στην προεπισκόπηση της Ροής θα είναι προεπιλεγμένη η ανώνυμη δημοσίευση.</small></span></label>
      <label><span>Προτεινόμενη κρυπτογράφηση νέας συνομιλίας</span><select id="ith436EncryptionDefault"><option value="ask" ${enc==='ask'?'selected':''}>Να με ρωτά κάθε φορά</option><option value="full_e2ee" ${enc==='full_e2ee'?'selected':''}>Πλήρης E2EE με Android Keystore</option><option value="standard_aes" ${enc==='standard_aes'?'selected':''}>Standard AES-GCM με κοινό κλειδί</option><option value="simple" ${enc==='simple'?'selected':''}>Χωρίς κρυπτογράφηση — απαιτεί επιβεβαίωση</option></select></label>
      <div class="ith436Actions"><button id="ith436SavePrivacy" class="primary">Αποθήκευση ρυθμίσεων</button><button id="ith436OpenMesh">🆘 Παλιά Γειτονιά μηνυμάτων</button></div>
      <div id="ith436PrivacyResult" class="ith436Result"></div>
    </div>`;
    m.querySelectorAll('[data-close436]').forEach(x=>x.onclick=close);
    $('ith436SavePrivacy').onclick=savePrivacyPreferences;
    $('ith436OpenMesh').onclick=openMesh;
    $('ith436RelayEnable').onclick=()=>{
      const entry=String($('ith436RelayEntry')?.value||'').trim();
      const code=String($('ith436RelayCode')?.value||'');
      const strict=!!$('ith436RelayStrict')?.checked;
      put('ithaki_private_relay_entry_v249436',entry);
      const raw=nativeCall('enablePrivateRelayV249436',entry,code,strict);
      const d=parse(raw||'{}',{ok:false,reason:'android_apk_required'});
      const out=$('ith436PrivacyResult');
      if(out)out.textContent=d.ok?'Το Private Relay αποθηκεύτηκε. Η εφαρμογή θα επανεκκινήσει από τον relay κόμβο.':(d.reason==='android_apk_required'?'Χρειάζεται το Android APK V249439 για πραγματική δρομολόγηση.':'Δεν ενεργοποιήθηκε: '+String(d.reason||'έλεγξε HTTPS διεύθυνση και κωδικό.'));
    };
    $('ith436RelayDisable').onclick=()=>{const d=parse(nativeCall('disablePrivateRelayV249436')||'{}',{ok:false,reason:'android_apk_required'});const out=$('ith436PrivacyResult');if(out)out.textContent=d.ok?'Επανήλθε η κανονική σύνδεση.':'Χρειάζεται το Android APK V249439.'};
    $('ith436RelayTest').onclick=()=>{const entry=String($('ith436RelayEntry')?.value||'').trim(),code=String($('ith436RelayCode')?.value||'');const out=$('ith436PrivacyResult');if(out)out.textContent='Έλεγχος relay…';setTimeout(()=>{const d=parse(nativeCall('testPrivateRelayV249436',entry,code)||'{}',{ok:false,reason:'android_apk_required'});if(out)out.textContent=d.ok?'Ο relay κόμβος απάντησε σωστά.':'Ο relay δεν απάντησε: '+String(d.reason||'χρειάζεται APK V249439.');},30)};
    return false;
  }

  function openMesh(){
    close();
    const f=(window.ITH&&ITH.openLegacyNeighborhoodV249439)||(window.ITH&&ITH.openEmergencyNeighborhoodV249270)||window.openEmergencyNeighborhoodV249270;
    if(typeof f==='function'){try{return f.call(window.ITH||window)}catch(e){toast('Δεν άνοιξε η παλιά Γειτονιά V249290.');return false}}
    toast('Η παλιά Γειτονιά V249290 δεν είναι διαθέσιμη σε αυτό το build.');return false
  }

  function installProfileCard(){
    const page=$('profilePage');if(!page)return;
    page.querySelectorAll('[data-privacy-v249435],[data-tor-profile-v249435],[data-tor-profile-v249396]').forEach(x=>x.remove());
    if(page.querySelector('[data-privacy-v249436]'))return;
    const wrap=page.querySelector('.profileCleanWrap')||page.firstElementChild;if(!wrap)return;
    const sec=document.createElement('section');sec.className='card profilePanelClean ith436Profile';sec.dataset.privacyV249436='1';
    sec.innerHTML='<button type="button"><span>🛡️</span><span><b>Ανωνυμία και κρυπτογράφηση</b><small>ITHAKI Private Relay · E2EE / AES · παλιά Γειτονιά</small></span><strong>Ρυθμίσεις</strong></button>';
    sec.querySelector('button').onclick=openPrivacyProfile;wrap.prepend(sec);
  }

  function applyAnonymousDefault(){
    if(pref('ithaki_default_anonymous_v249436','0')!=='1')return;
    const box=$('previewAnonymous');if(box&&!box.dataset.v249436Touched){box.checked=true;box.dataset.v249436Default='1'}
  }

  function applyEncryptionSuggestion(){
    const sel=$('ithChatModeV249429');if(!sel||sel.dataset.v249436Suggested)return;
    const m=menu(),ch=String(m?.dataset.v249429Channel||'');
    if(ch&&localStorage.getItem('ith_security_settings_v249429_'+ch))return;
    const mode=pref('ithaki_default_encryption_v249436','ask');if(mode==='ask')return;
    sel.value=mode;sel.dataset.v249436Suggested='1';
    const key=$('ithChatKeyV249429');if(key&&key.closest('label'))key.closest('label').style.display=mode==='standard_aes'?'grid':'none';
    try{sel.dispatchEvent(new Event('change',{bubbles:true}))}catch(e){}
    const out=$('ithChatModeResultV249429');if(out)out.textContent='Προτεινόμενη επιλογή από το Προφίλ — πάτησε «Αποθήκευση και ενεργοποίηση».';
  }

  function forceNormalStartupHome(){
    try{
      const q=new URLSearchParams(location.search);const deep=q.get('from_push')==='1'||q.has('dm')||q.has('call')||q.has('session_id')||q.has('kind');
      if(deep)return;
      const go=()=>{try{const s=window.ITH&&ITH.state;if(s)s.page='home';document.body.setAttribute('data-page','home');if(window.ITH&&typeof ITH.stableRouteV249429==='function')ITH.stableRouteV249429('home','v249436-startup');else if(window.ITH&&typeof ITH.page==='function')ITH.page('home')}catch(e){}};
      setTimeout(go,160);setTimeout(go,700);
    }catch(e){}
  }

  function cleanFeedHeader(){
    document.querySelectorAll('#feedPage .ithFeedTitleV249429').forEach(x=>x.remove());
    const searchButton=$('ithFeedSearchButtonV249429');
    const searchPanel=$('ithFeedSearchPanelV249429');
    if(searchButton){searchButton.style.removeProperty('display');searchButton.style.removeProperty('visibility');searchButton.style.removeProperty('pointer-events');searchButton.setAttribute('aria-label','Αναζήτηση στη Ροή');}
    if(searchPanel){searchPanel.style.removeProperty('display');searchPanel.style.removeProperty('visibility');searchPanel.style.removeProperty('pointer-events');}
  }

  function installCallPrivacyGuard(){
    window.ITH=window.ITH||{};
    for(const name of ['startVoiceCall','startVideoCall']){
      const fn=window.ITH[name]||window[name];if(typeof fn!=='function'||fn.__ith436RelayGuard)continue;
      const w=function(...a){const s=relayStatus();if(s.enabled&&s.strict){toast('Η αυστηρή λειτουργία Private Relay κλείνει τις WebRTC κλήσεις για να μην ανοίξει ξεχωριστή σύνδεση.');return false}return fn.apply(this,a)};w.__ith436RelayGuard=true;w.__raw=fn;window.ITH[name]=w;window[name]=w;
    }
  }

  function css(){if($('ith436Css'))return;const st=document.createElement('style');st.id='ith436Css';st.textContent=`
  #feedPage .ithFeedTitleV249429{display:none!important;visibility:hidden!important;pointer-events:none!important}
  #feedPage #ithFeedSearchButtonV249429{display:grid!important;visibility:visible!important;pointer-events:auto!important}
  #feedPage .ithFeedSearchPanelV249429{visibility:visible!important;pointer-events:auto!important}
  #feedPage .ithFeedSearchPanelV249429[hidden]{display:none!important}
  #feedPage .ithFeedFloatTopV249429{justify-content:space-between!important}
  #feedPage .ithFeedFloatTopV249429>div:first-child{justify-self:start!important}#feedPage .ithFeedFloatTopV249429>div:last-child{justify-self:end!important}
  .ith436Panel{display:grid;gap:12px;max-height:88vh;overflow:auto;padding:2px 2px 24px;color:#fff}.ith436Head{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px;border-radius:18px;background:rgba(4,13,23,.98);border:1px solid rgba(255,215,120,.24)}.ith436Head button{width:42px;height:42px;border-radius:14px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.07);color:#fff;font-size:22px}.ith436Head div{display:grid;gap:3px}.ith436Head b{color:#ffe19b}.ith436Head small{color:#a9bed0}.ith436Hero,.ith436Truth{display:grid;gap:6px;padding:14px;border-radius:18px;border:1px solid rgba(145,108,255,.4);background:linear-gradient(135deg,rgba(87,43,130,.34),rgba(4,18,30,.9))}.ith436Hero.second{border-color:rgba(74,213,180,.36)}.ith436Hero.mesh{border-color:rgba(60,224,174,.4)}.ith436Hero span,.ith436Truth span{font-size:12px;line-height:1.5;color:#bfd0df}.ith436Truth{border-color:rgba(255,183,75,.36);background:rgba(255,177,70,.08)}.ith436Grid{display:grid;gap:6px}.ith436Status{display:grid;grid-template-columns:1fr auto;gap:10px;padding:9px 11px;border-radius:13px;background:rgba(255,255,255,.045)}.ith436Status b{color:#ffbd9b}.ith436Status b.good{color:#86efc4}.ith436Panel label{display:grid;gap:6px;color:#bfd0df;font-size:12px}.ith436Panel input,.ith436Panel select{width:100%;box-sizing:border-box;border-radius:14px;border:1px solid rgba(255,255,255,.19);background:#071522;color:#fff;padding:12px}.ith436Check{grid-template-columns:auto 1fr!important;align-items:start!important;padding:12px;border-radius:16px;background:rgba(255,255,255,.045)}.ith436Check input{width:22px!important;height:22px!important;accent-color:#5ce6ba}.ith436Check span{display:grid;gap:4px}.ith436Check small{color:#9fb4c7;line-height:1.4}.ith436Actions{display:flex;flex-wrap:wrap;gap:8px}.ith436Actions button{flex:1 1 150px;min-height:45px;border-radius:14px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.075);color:#fff;font-weight:850}.ith436Actions button.primary{background:linear-gradient(135deg,#7d4bd4,#315fcc)}.ith436Result{min-height:25px;color:#ffe09a;font-size:12px}.ith436Profile button{width:100%;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;border:1px solid rgba(155,110,255,.42);background:linear-gradient(135deg,rgba(75,31,112,.44),rgba(5,18,30,.9));color:#fff;border-radius:18px;padding:13px;text-align:left}.ith436Profile button>span:first-child{font-size:30px}.ith436Profile button>span:nth-child(2){display:grid;gap:3px}.ith436Profile small{color:#aebfd0}.ith436Profile strong{color:#e8c7ff;font-size:11px}`;document.head.appendChild(st)}

  function install(){css();installProfileCard();applyAnonymousDefault();applyEncryptionSuggestion();cleanFeedHeader();installCallPrivacyGuard();window.ITH=window.ITH||{};Object.assign(window.ITH,{openPrivacyProfileV249437:openPrivacyProfile,openPrivacyProfileV249436:openPrivacyProfile,openPrivacyTransportV249437:openPrivacyProfile,openPrivacyTransportV249436:openPrivacyProfile,openPrivacyTransportV249435:openPrivacyProfile});document.documentElement.setAttribute('data-ithaki-v249439',VER)}
  install();forceNormalStartupHome();new MutationObserver(install).observe(document.documentElement,{subtree:true,childList:true});setInterval(install,1200);
})();
