/* OK ITHAKI V249388
   Public creator link and professional publication workspace.
   Adds: public URL/copy/share/QR/analytics and file import/save/preview/
   destination/Studio without removing existing V405-V411 tools. */
(function(){
  'use strict';
  const BUILD='V249413_PUBLIC_LINK_ONLY_NO_PROFESSIONAL_PUBLISHING';
  if(window.__ITHAKI_V249388_CREATOR_PUBLICATION__)return;
  window.__ITHAKI_V249388_CREATOR_PUBLICATION__=1;
  const $=id=>document.getElementById(id);
  const esc=v=>String(v==null?'':v).replace(/[&<>"']/g,ch=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[ch]));
  const sleep=ms=>new Promise(r=>setTimeout(r,ms));
  let workspaceFile=null;
  let workspaceDestination='feed';
  let workspaceFriendId='';
  let workspaceSchedule='';
  let workspaceSource='original';
  let sendBase=null;
  let sendWrapped=null;

  function appState(){try{return typeof state!=='undefined'&&state?state:(window.state||{})}catch(e){return window.state||{}}}
  function room(){const s=appState();return String(s.room||localStorage.getItem('ith_room')||'ithaki-phone-test')}
  function device(){const s=appState();try{const d=window.ITH&&ITH.getProfessionalAccountDeviceV249387?ITH.getProfessionalAccountDeviceV249387():'';if(d)return String(d).trim()}catch(e){}return String(localStorage.getItem('ith_device')||s.device||'').trim()}
  function name(){const s=appState();return String(s.name||localStorage.getItem('ith_name')||'Μέλος').trim()}
  function avatar(){const s=appState();return String(s.avatar||localStorage.getItem('ith_avatar')||'')}
  function token(){try{return String(window.ITH&&ITH.getProfessionalSessionTokenV249387?ITH.getProfessionalSessionTokenV249387():'')}catch(e){return''}}
  function rid(){try{return crypto.randomUUID()}catch(e){return'req_'+Date.now().toString(36)+'_'+Math.random().toString(36).slice(2)}}
  function payload(extra){return Object.assign({room_id:room(),device_id:device(),session_token:token(),client_ts:Date.now(),request_id:rid(),website:''},extra||{})}
  function note(msg,ms=6500){try{if(typeof toast==='function')toast(String(msg),ms);else if(window.ITH&&ITH.notifyAppEvent)ITH.notifyAppEvent(String(msg));else alert(String(msg))}catch(e){console.log(msg)}}
  async function post(path,body){const r=await fetch(path,{method:'POST',cache:'no-store',credentials:'same-origin',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload(body))});let d={};try{d=await r.json()}catch(e){}if(!r.ok||!d||d.ok===false)throw new Error(String(d.note||d.detail||('HTTP '+r.status)));return d}
  async function validateSession(){if(!token())throw new Error('Η επαγγελματική συνεδρία έκλεισε. Άνοιξε ξανά το Επαγγελματικό Κέντρο.');try{if(window.ITH&&typeof ITH.validateProfessionalSessionV249392==='function')return await ITH.validateProfessionalSessionV249392(false)}catch(e){throw e}return post('/api/account/v249383/professional/session/validate',{})}
  function ensureCss(){if($('ithCreatorCss387'))return;const st=document.createElement('style');st.id='ithCreatorCss387';st.textContent=`
    .ithCreator387{position:fixed;z-index:2147483646;inset:0;background:rgba(0,0,0,.82);display:grid;place-items:center;padding:12px;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.ithCreator387[hidden]{display:none!important}
    .ithCreatorBox387{width:min(900px,97vw);max-height:92vh;overflow:auto;border-radius:26px;border:1px solid rgba(255,218,119,.38);background:radial-gradient(circle at 10% 0,rgba(246,194,77,.14),transparent 35%),linear-gradient(155deg,#081a2a,#02070d);color:#fff;padding:16px;box-shadow:0 32px 100px rgba(0,0,0,.78);font-family:system-ui}
    .ithCreatorTop387{position:sticky;top:-16px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;background:linear-gradient(180deg,#071624 75%,transparent)}.ithCreatorTop387 h2{margin:0;color:#ffe19a;font-size:21px}.ithCreatorClose387{width:42px;height:42px;border-radius:14px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.08);color:#fff;font-size:22px}
    .ithCreatorCard387{margin-top:12px;padding:13px;border-radius:19px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.055)}.ithCreatorCard387 h3{margin:0 0 8px;color:#b8ecff}.ithCreatorGrid387{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ithCreatorGrid387 label{display:grid;gap:6px;color:#c7d7e3;font-size:12px}.ithCreatorGrid387 input,.ithCreatorGrid387 textarea,.ithCreatorGrid387 select{width:100%;min-height:44px;border-radius:13px;border:1px solid rgba(255,255,255,.16);background:#07131f;color:#fff;padding:10px;font:inherit}.ithCreatorGrid387 textarea{min-height:96px;resize:vertical}.ithCreatorWide387{grid-column:1/-1}
    .ithCreatorActions387{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}.ithCreatorActions387 button,.ithCreatorActions387 a{min-height:43px;border-radius:999px;padding:9px 15px;border:1px solid rgba(255,255,255,.17);background:rgba(255,255,255,.08);color:#fff;font-weight:900;text-decoration:none}.ithCreatorActions387 .gold{background:linear-gradient(135deg,#9e671b,#f2cf77);color:#1a1003;border-color:#f2cf77}.ithCreatorActions387 .green{background:linear-gradient(135deg,#0b6f50,#38e4a7);color:#03150f}.ithCreatorActions387 button:disabled{opacity:.52}
    .ithLinkDisplay387{word-break:break-all;padding:11px;border-radius:14px;background:#02080d;border:1px solid rgba(255,218,119,.25);color:#ffe19a;font-weight:800}.ithStats387{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-top:10px}.ithStats387 div{padding:9px 5px;border-radius:14px;text-align:center;background:rgba(75,190,255,.08);border:1px solid rgba(75,190,255,.17)}.ithStats387 b{display:block;font-size:19px;color:#bfeeff}.ithStats387 small{font-size:9px;color:#91a8b7}
    .ithFile387{display:grid;grid-template-columns:58px minmax(0,1fr);gap:10px;align-items:center}.ithFileIcon387{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:rgba(255,211,110,.1);border:1px solid rgba(255,211,110,.25);font-size:27px}.ithFile387 b,.ithFile387 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ithFile387 small{color:#9ab0bf}.ithDestPreview387{padding:11px;border-radius:15px;background:rgba(54,240,160,.07);border:1px solid rgba(54,240,160,.22);color:#d8fff0}.ithQr387{text-align:center}.ithQr387 img{width:min(320px,80vw);height:auto;background:#fff;padding:10px;border-radius:18px}
    #ithPreviewDestination387{margin:10px 0;padding:11px;border:1px solid rgba(255,218,119,.27);border-radius:17px;background:rgba(255,211,110,.07)}#ithPreviewDestination387 .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#ithPreviewDestination387 label{display:grid;gap:5px;font-size:11px;color:#c8d7e2}#ithPreviewDestination387 select,#ithPreviewDestination387 input{min-height:40px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:#07131f;color:#fff;padding:8px}#ithPreviewDestination387 .summary{margin-top:8px;color:#ffe09a;font-size:12px}
    @media(max-width:700px){.ithCreatorGrid387{grid-template-columns:1fr}.ithCreatorWide387{grid-column:auto}.ithStats387{grid-template-columns:repeat(2,minmax(0,1fr))}#ithPreviewDestination387 .grid{grid-template-columns:1fr}}
  `;document.head.appendChild(st)}
  function modal(id,title){ensureCss();let m=$(id);if(!m){m=document.createElement('div');m.id=id;m.className='ithCreator387';m.innerHTML='<div class="ithCreatorBox387"><div class="ithCreatorTop387"><h2></h2><button class="ithCreatorClose387" type="button">×</button></div><div class="ithCreatorBody387"></div></div>';document.body.appendChild(m);m.querySelector('.ithCreatorClose387').onclick=()=>m.hidden=true;m.addEventListener('click',e=>{if(e.target===m)m.hidden=true})}m.querySelector('h2').textContent=title;m.hidden=false;return m.querySelector('.ithCreatorBody387')}
  function publicUrl(slug){return location.origin.replace(/\/$/,'')+'/@'+String(slug||'').replace(/^@/,'')}
  async function copyText(text){try{await navigator.clipboard.writeText(text);return true}catch(e){const ta=document.createElement('textarea');ta.value=text;document.body.appendChild(ta);ta.select();const ok=document.execCommand('copy');ta.remove();return ok}}
  function shareUrl(url){try{const b=window.OKITHAKI_ANDROID||window.AndroidBridge;if(b&&typeof b.shareUrl==='function'){b.shareUrl(url,'OK ITHAKI creator link');return}}catch(e){}if(navigator.share){navigator.share({title:'OK ITHAKI',url}).catch(()=>{})}else copyText(url).then(()=>note('Το link αντιγράφηκε.'))}
  async function openPublicLink(){const body=modal('ithCreatorPublic387','🔗 Δημόσιο link δημιουργού');body.innerHTML='<div class="ithCreatorCard387">Άνοιγμα εργαλείου και έλεγχος συνεδρίας…</div>';try{await validateSession();const d=await post('/api/creator/public/v249387/status',{});renderPublicLink(body,d)}catch(e){body.innerHTML='<div class="ithCreatorCard387">'+esc(e.message||e)+'</div>'}return false}
  function renderPublicLink(body,d){const p=d.profile||{},url=p.public_url||publicUrl(p.slug||'');body.innerHTML=`
    <div class="ithCreatorCard387"><h3>Δημόσια σελίδα δημιουργού</h3><div class="ithCreatorGrid387"><label>Δημόσιο όνομα link<input id="ithCreatorSlug387" maxlength="40" value="${esc(p.slug||'')}"><small>Παράδειγμα: vasileios → /@vasileios</small></label><label>Χρήση του link<select id="ithCreatorSource387"><option value="">Γενικό link</option><option value="tiktok">TikTok bio</option><option value="instagram">Instagram bio</option><option value="youtube">YouTube</option><option value="facebook">Facebook</option><option value="qr">QR</option></select></label><label class="ithCreatorWide387">Σύντομη δημόσια περιγραφή<textarea id="ithCreatorBio387" maxlength="420" placeholder="Τι δημιουργείς στην ΙΘΑΚΗ;">${esc(p.bio||'')}</textarea></label></div><label style="display:flex;gap:8px;align-items:center;margin-top:9px"><input id="ithCreatorEnabled387" type="checkbox" ${p.enabled!==false?'checked':''}> Δημόσιο link ενεργό</label><div id="ithCreatorUrl387" class="ithLinkDisplay387">${esc(url)}</div><div class="ithCreatorActions387"><button id="ithCreatorSave387" class="gold">Αποθήκευση link</button><button id="ithCreatorCopy387">📋 Αντιγραφή</button><button id="ithCreatorShare387">📤 Κοινοποίηση</button><button id="ithCreatorQr387">🔳 Δημιουργία QR</button></div></div>
    <div class="ithCreatorCard387"><h3>📊 Προβολές του link</h3><div id="ithCreatorStats387" class="ithStats387"><div><b>…</b><small>ΦΟΡΤΩΣΗ</small></div></div><div id="ithCreatorSources387" style="margin-top:8px;color:#a9bdca;font-size:12px"></div></div>
    <div class="ithCreatorCard387">Δημόσια εμφανίζονται μόνο όνομα, avatar, περιγραφή και δημόσιες μη ανώνυμες δημοσιεύσεις. Μηνύματα και κλήσεις απαιτούν εγγραφή και αποδεκμένη φιλία.</div>`;
    const refreshUrl=()=>{const base=publicUrl($('ithCreatorSlug387').value.trim().toLowerCase()),src=$('ithCreatorSource387')?.value||'';$('ithCreatorUrl387').textContent=src?base+'?src='+encodeURIComponent(src):base};$('ithCreatorSlug387').addEventListener('input',refreshUrl);$('ithCreatorSource387').addEventListener('change',refreshUrl);
    $('ithCreatorSave387').onclick=async()=>{const btn=$('ithCreatorSave387');btn.disabled=true;try{const out=await post('/api/creator/public/v249387/save',{slug:$('ithCreatorSlug387').value,bio:$('ithCreatorBio387').value,enabled:$('ithCreatorEnabled387').checked});$('ithCreatorSlug387').value=out.profile.slug;refreshUrl();note('Το δημόσιο link αποθηκεύτηκε.');loadPublicAnalytics()}catch(e){note(e.message||e)}finally{btn.disabled=false}};
    $('ithCreatorCopy387').onclick=()=>copyText($('ithCreatorUrl387').textContent).then(()=>note('Το δημόσιο link αντιγράφηκε.'));
    $('ithCreatorShare387').onclick=()=>shareUrl($('ithCreatorUrl387').textContent);
    $('ithCreatorQr387').onclick=()=>openQr($('ithCreatorUrl387').textContent);
    loadPublicAnalytics()
  }
  async function loadPublicAnalytics(){const host=$('ithCreatorStats387');if(!host)return;try{const d=await post('/api/creator/public/v249387/analytics',{}),t=d.totals||{};host.innerHTML=`<div><b>${Number(t.all||0)}</b><small>ΣΥΝΟΛΟ</small></div><div><b>${Number(t.days_30||0)}</b><small>30 ΗΜΕΡΕΣ</small></div><div><b>${Number(t.days_7||0)}</b><small>7 ΗΜΕΡΕΣ</small></div><div><b>${Number(t.today||0)}</b><small>ΣΗΜΕΡΑ</small></div><div><b>${Number(t.unique_30||0)}</b><small>ΜΟΝΑΔΙΚΟΙ 30ΗΜ</small></div>`;const src=$('ithCreatorSources387');if(src)src.textContent=(d.sources||[]).map(x=>`${x.source}: ${x.visits}`).join(' · ')||'Δεν υπάρχουν ακόμη επισκέψεις.'}catch(e){host.innerHTML='<div><b>—</b><small>'+esc(e.message||e)+'</small></div>'}}
  function openQr(url){const body=modal('ithCreatorQrModal387','🔳 QR δημόσιου link');body.innerHTML=`<div class="ithCreatorCard387 ithQr387"><img src="/api/pair/qr?text=${encodeURIComponent(url)}" alt="QR"><div class="ithLinkDisplay387">${esc(url)}</div><div class="ithCreatorActions387" style="justify-content:center"><button id="ithQrShare387">📤 Κοινοποίηση link</button><button id="ithQrSave387">⬇ Αποθήκευση QR</button></div></div>`;$('ithQrShare387').onclick=()=>shareUrl(url);$('ithQrSave387').onclick=()=>saveUrlToDevice('/api/pair/qr?text='+encodeURIComponent(url),'OK_ITHAKI_CREATOR_QR.png','images')}
  function fileKind(file){const t=String(file&&file.type||'').toLowerCase(),n=String(file&&file.name||'').toLowerCase();if(t.startsWith('video/')||/\.(mp4|mov|m4v|webm|3gp|avi|mkv)$/.test(n))return'video';if(t.startsWith('image/')||/\.(jpg|jpeg|png|webp|gif|heic)$/.test(n))return'photo';if(t.startsWith('audio/'))return'audio';return'file'}
  function fileSize(n){n=Number(n||0);if(n<1024)return n+' B';if(n<1048576)return(n/1024).toFixed(1)+' KB';return(n/1048576).toFixed(1)+' MB'}
  function defaultSchedule(){const d=new Date(Date.now()+60*60*1000);d.setMinutes(Math.ceil(d.getMinutes()/5)*5,0,0);return new Date(d.getTime()-d.getTimezoneOffset()*60000).toISOString().slice(0,16)}
  async function loadFriends(selectId){const sel=$(selectId);if(!sel)return;sel.innerHTML='<option value="">Φόρτωση φίλων…</option>';try{const r=await fetch('/api/social/member_lists?room_id='+encodeURIComponent(room())+'&device_id='+encodeURIComponent(device())+'&_v='+Date.now(),{cache:'no-store'}),d=await r.json();if(!r.ok||!d.ok)throw new Error('Δεν φόρτωσαν οι φίλοι.');const friends=Array.isArray(d.friends)?d.friends:[];sel.innerHTML='<option value="">Επίλεξε αποδεκμένο φίλο</option>'+friends.map(p=>`<option value="${esc(p.device_id||p.id||'')}">${esc(p.nickname||p.name||'Μέλος')}</option>`).join('')}catch(e){sel.innerHTML='<option value="">'+esc(e.message||e)+'</option>'}}
  function openPublicationWorkspace(){
    const body=modal('ithPublicationWorkspace387','✦ Επεξεργασία δημοσίευσης');
    workspaceFile=null;workspaceDestination='feed';workspaceFriendId='';workspaceSchedule=defaultSchedule();workspaceSource='original';
    body.innerHTML=`
    <div id="ithPublicationSession387" class="ithCreatorCard387" style="border-color:rgba(81,213,255,.28);color:#ccefff">Το Studio και η τοπική προεπισκόπηση είναι έτοιμα. Ο επαγγελματικός έλεγχος γίνεται στο παρασκήνιο.</div>
    <div class="ithCreatorCard387"><h3>1. Εισαγωγή αρχείου</h3><input id="ithPublicationFile387" type="file" data-ithaki-professional-input="1" hidden><div id="ithPublicationFileInfo387" class="ithFile387"><div class="ithFileIcon387">📎</div><div><b>Δεν επιλέχθηκε αρχείο</b><small>Φωτογραφία, βίντεο, ήχος ή άλλο αρχείο.</small></div></div><div class="ithCreatorActions387"><button id="ithPublicationImport387" class="gold">Εισαγωγή αρχείου</button><button id="ithPublicationSaveFile387" disabled>Αποθήκευση αρχείου</button><button id="ithPublicationSaveDraft387" disabled>Αποθήκευση πρόχειρου</button></div></div>
    <div class="ithCreatorCard387"><h3>2. Κείμενο και προορισμός</h3><div class="ithCreatorGrid387"><label class="ithCreatorWide387">Λεζάντα<textarea id="ithPublicationCaption387" maxlength="4000" placeholder="Γράψε τη λεζάντα της δημοσίευσης…"></textarea></label><label>Πού θα σταλεί<select id="ithPublicationDestination387"><option value="feed">Δημόσια Ροή</option><option value="scheduled">Προγραμματισμένη δημοσίευση V410</option><option value="dm">Ιδιωτικό μήνυμα σε φίλο</option></select></label><label id="ithPublicationScheduleWrap387" hidden>Ημερομηνία και ώρα<input id="ithPublicationSchedule387" type="datetime-local" value="${workspaceSchedule}"></label><label id="ithPublicationFriendWrap387" hidden>Αποδεκμένος φίλος<select id="ithPublicationFriend387"><option value="">Επίλεξε φίλο</option></select></label><label>Αρχείο αποστολής<select id="ithPublicationSource387"><option value="original">Πρωτότυπο αρχείο</option><option value="studio">Επεξεργασμένο από Studio</option></select></label></div><div id="ithPublicationSummary387" class="ithDestPreview387">Θα σταλεί στη Δημόσια Ροή ως πρωτότυπο αρχείο.</div></div>
    <div class="ithCreatorCard387"><h3>3. Προεπισκόπηση και Studio</h3><div class="ithCreatorActions387"><button id="ithPublicationPreview387" class="green" disabled>Προεπισκόπηση που θα σταλεί</button><button id="ithPublicationStudio387" disabled>✦ Άνοιγμα Studio επεξεργασίας</button></div><div style="margin-top:8px;color:#a9bdca;font-size:12px">Η τοπική προεπισκόπηση και το Studio ανοίγουν αμέσως. Η τελική αποστολή γίνεται μόνο από την προεπισκόπηση.</div></div>`;
    bindWorkspace();
    Promise.resolve().then(()=>validateSession()).then(()=>{const n=$('ithPublicationSession387');if(n){n.textContent='✓ Η επαγγελματική συνεδρία επιβεβαιώθηκε.';n.style.color='#bfffe4'}}).catch(e=>{const n=$('ithPublicationSession387');if(n){n.textContent='Το τοπικό Studio λειτουργεί. Για επαγγελματική αποστολή ή προγραμματισμό άνοιξε ξανά το Επαγγελματικό Κέντρο: '+String(e&&e.message||e);n.style.color='#ffe09a'}});
    return false
  }
  function bindWorkspace(){const input=$('ithPublicationFile387');$('ithPublicationImport387').onclick=()=>input.click();input.onchange=()=>{workspaceFile=input.files&&input.files[0]||null;renderWorkspaceFile();updateWorkspaceSummary();if(workspaceFile)setTimeout(()=>launchPreview(false),0)};$('ithPublicationSaveFile387').onclick=()=>workspaceFile&&saveFileToDevice(workspaceFile);$('ithPublicationSaveDraft387').onclick=saveDraft;$('ithPublicationDestination387').onchange=e=>{workspaceDestination=e.target.value;updateWorkspaceSummary();if(workspaceDestination==='dm')loadFriends('ithPublicationFriend387')};$('ithPublicationSchedule387').onchange=e=>{workspaceSchedule=e.target.value;updateWorkspaceSummary()};$('ithPublicationFriend387').onchange=e=>{workspaceFriendId=e.target.value;updateWorkspaceSummary()};$('ithPublicationSource387').onchange=e=>{workspaceSource=e.target.value;updateWorkspaceSummary()};$('ithPublicationPreview387').onclick=()=>launchPreview(false);$('ithPublicationStudio387').onclick=()=>launchPreview(true)}
  function renderWorkspaceFile(){const info=$('ithPublicationFileInfo387'),has=!!workspaceFile;if(info)info.innerHTML=has?`<div class="ithFileIcon387">${fileKind(workspaceFile)==='video'?'🎥':fileKind(workspaceFile)==='photo'?'🖼️':fileKind(workspaceFile)==='audio'?'🎙️':'📎'}</div><div><b>${esc(workspaceFile.name)}</b><small>${esc(workspaceFile.type||fileKind(workspaceFile))} · ${fileSize(workspaceFile.size)}</small></div>`:'<div class="ithFileIcon387">📎</div><div><b>Δεν επιλέχθηκε αρχείο</b><small>Φωτογραφία, βίντεο, ήχος ή άλλο αρχείο.</small></div>';['ithPublicationSaveFile387','ithPublicationSaveDraft387','ithPublicationPreview387','ithPublicationStudio387'].forEach(id=>{const b=$(id);if(b)b.disabled=!has})}
  function updateWorkspaceSummary(){workspaceSchedule=$('ithPublicationSchedule387')?.value||workspaceSchedule;workspaceFriendId=$('ithPublicationFriend387')?.value||workspaceFriendId;const sw=$('ithPublicationScheduleWrap387'),fw=$('ithPublicationFriendWrap387');if(sw)sw.hidden=workspaceDestination!=='scheduled';if(fw)fw.hidden=workspaceDestination!=='dm';const dest=workspaceDestination==='scheduled'?'την Προγραμματισμένη Δημοσίευση V410':workspaceDestination==='dm'?'ιδιωτικό μήνυμα σε αποδεκμένο φίλο':'τη Δημόσια Ροή';const src=workspaceSource==='studio'?'επεξεργασμένο αρχείο από το Studio':'πρωτότυπο αρχείο';const s=$('ithPublicationSummary387');if(s)s.textContent=`Θα σταλεί σε ${dest} ως ${src}.`}
  function channelFor(peer){return'dm:'+[device(),String(peer||'')].sort().join(':')}
  function launchPreview(forceStudio){
    if(!workspaceFile){note('Επίλεξε πρώτα αρχείο.');return false}
    workspaceDestination=$('ithPublicationDestination387').value;workspaceFriendId=$('ithPublicationFriend387').value;workspaceSchedule=$('ithPublicationSchedule387').value;workspaceSource=forceStudio?'studio':$('ithPublicationSource387').value;
    if(workspaceDestination==='dm'&&!workspaceFriendId){note('Επίλεξε αποδεκμένο φίλο.');return false}
    if(workspaceDestination==='scheduled'&&(!workspaceSchedule||new Date(workspaceSchedule).getTime()<Date.now()+61000)){note('Η προγραμματισμένη ώρα πρέπει να είναι τουλάχιστον 1 λεπτό στο μέλλον.');return false}
    const kind=fileKind(workspaceFile),ctx=workspaceDestination==='dm'?'dm':'feed',target=workspaceDestination==='dm'?channelFor(workspaceFriendId):'';const caption=$('ithPublicationCaption387').value||'';const overlay=$('ithPublicationWorkspace387');
    try{
      const openFn=(window.ITH&&typeof ITH.openUnifiedPreviewV249409==='function')?ITH.openUnifiedPreviewV249409:((window.ITH&&typeof ITH.openPreview==='function')?ITH.openPreview:(typeof window.openPreview==='function'?window.openPreview:null));
      if(!openFn)throw new Error('Η προεπισκόπηση δεν είναι διαθέσιμη.');
      openFn(ctx,workspaceFile,kind,target);
      const modalEl=$('previewModal'),s=appState();
      if(!modalEl||!modalEl.classList.contains('show')||!s.preview||!s.preview.file)throw new Error('Η προεπισκόπηση δεν άνοιξε σωστά.');
      Object.assign(s.preview,{__workspace387:true,__destination387:workspaceDestination,__friend387:workspaceFriendId,__schedule387:workspaceSchedule,__source387:workspaceSource,__caption387:caption,__studioAutoOpened393:false});
      wrapSend();
      if(overlay)overlay.hidden=true;
      requestAnimationFrame(()=>requestAnimationFrame(()=>{
        const c=$('previewCaption');if(c)c.value=caption;
        injectPreviewDestination();
        if((forceStudio||workspaceSource==='studio')&&!s.preview.__studioAutoOpened393){s.preview.__studioAutoOpened393=true;try{window.ITH&&ITH.openPreviewStudio&&ITH.openPreviewStudio()}catch(e){note('Το Studio δεν άνοιξε: '+String(e&&e.message||e))}}
      }));
    }catch(e){if(overlay)overlay.hidden=false;note(e.message||e)}
    return false
  }
  function injectPreviewDestination(){const s=appState(),p=s.preview||{},modalEl=$('previewModal');if(!modalEl||!modalEl.classList.contains('show')||!p.file||!p.__workspace387)return;let box=modalEl.querySelector('.previewBox');if(!box)return;let host=$('ithPreviewDestination387');if(host){updatePreviewSummary();return}if(!host){host=document.createElement('div');host.id='ithPreviewDestination387';const cap=$('previewCaption');if(cap)cap.before(host);else box.appendChild(host)}const dest=p.__destination387||'feed',schedule=p.__schedule387||defaultSchedule(),friend=p.__friend387||'';host.innerHTML=`<b>Επαγγελματική προεπισκόπηση V249387</b><div class="grid"><label>Πού θα σταλεί<select id="ithPreviewDestSelect387"><option value="feed" ${dest==='feed'?'selected':''}>Δημόσια Ροή</option><option value="scheduled" ${dest==='scheduled'?'selected':''}>Προγραμματισμένη V410</option><option value="dm" ${dest==='dm'?'selected':''}>Ιδιωτικό μήνυμα σε φίλο</option></select></label><label id="ithPreviewScheduleWrap387" ${dest==='scheduled'?'':'hidden'}>Ημερομηνία και ώρα<input id="ithPreviewSchedule387" type="datetime-local" value="${esc(schedule)}"></label><label id="ithPreviewFriendWrap387" ${dest==='dm'?'':'hidden'}>Αποδεκμένος φίλος<select id="ithPreviewFriend387"><option value="${esc(friend)}">${friend?'Επιλεγμένος φίλος':'Επίλεξε φίλο'}</option></select></label></div><div id="ithPreviewSummary387" class="summary"></div><div class="ithCreatorActions387"><button id="ithPreviewSaveFile387" type="button">Αποθήκευση αρχείου</button><button id="ithPreviewStudioOpen387" type="button">✦ Studio επεξεργασίας</button></div>`;const sel=$('ithPreviewDestSelect387');sel.onchange=()=>{p.__destination387=sel.value;if(sel.value==='dm')loadFriends('ithPreviewFriend387');updatePreviewSummary()};$('ithPreviewSchedule387').onchange=e=>{p.__schedule387=e.target.value;updatePreviewSummary()};$('ithPreviewFriend387').onchange=e=>{p.__friend387=e.target.value;updatePreviewSummary()};$('ithPreviewSaveFile387').onclick=()=>saveFileToDevice(p.file||p.originalFile);$('ithPreviewStudioOpen387').onclick=()=>{p.__source387='studio';window.ITH&&ITH.openPreviewStudio&&ITH.openPreviewStudio();updatePreviewSummary()};if(dest==='dm')loadFriends('ithPreviewFriend387').then(()=>{const f=$('ithPreviewFriend387');if(f&&friend)f.value=friend});updatePreviewSummary()}
  function updatePreviewSummary(){const p=appState().preview||{},dest=$('ithPreviewDestSelect387')?.value||p.__destination387||'feed';p.__destination387=dest;p.__schedule387=$('ithPreviewSchedule387')?.value||p.__schedule387;p.__friend387=$('ithPreviewFriend387')?.value||p.__friend387;const sw=$('ithPreviewScheduleWrap387'),fw=$('ithPreviewFriendWrap387');if(sw)sw.hidden=dest!=='scheduled';if(fw)fw.hidden=dest!=='dm';const out=$('ithPreviewSummary387');if(out)out.textContent=dest==='scheduled'?`Θα δημοσιευτεί αυτόματα: ${p.__schedule387||'δεν ορίστηκε ώρα'}`:dest==='dm'?'Θα σταλεί ως ιδιωτικό μήνυμα μόνο σε αποδεκμένο φίλο.':'Θα δημοσιευτεί στη Δημόσια Ροή.'}
  function fileToBase64(file){return new Promise((resolve,reject)=>{const r=new FileReader();r.onload=()=>resolve(String(r.result||'').split(',').pop()||'');r.onerror=()=>reject(new Error('Το αρχείο δεν διαβάστηκε.'));r.readAsDataURL(file)})}
  async function saveFileToDevice(file){if(!file){note('Δεν υπάρχει αρχείο.');return false}try{const b=window.OKITHAKI_ANDROID||window.AndroidBridge;if(b&&typeof b.saveBase64ToProfile==='function'){const base64=await fileToBase64(file);const path=String(b.saveBase64ToProfile(fileKind(file)==='photo'?'images':fileKind(file)==='video'?'videos':'files',file.name,file.type||'application/octet-stream',base64)||'');if(path&& !path.startsWith('error:')){note('Το αρχείο αποθηκεύτηκε στο κινητό: '+path,9000);return false}throw new Error(path||'Η αποθήκευση απέτυχε.')}const a=document.createElement('a');a.href=URL.createObjectURL(file);a.download=file.name||('ithaki_'+Date.now());document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(a.href),1500);note('Ξεκίνησε η αποθήκευση αρχείου.')}catch(e){note(e.message||e,8000)}return false}
  function saveUrlToDevice(url,filename,folder){try{const b=window.OKITHAKI_ANDROID||window.AndroidBridge;if(b&&typeof b.downloadUrlToProfile==='function'){const r=b.downloadUrlToProfile(url,filename,folder||'files');note('Αποθήκευση QR: '+r,7000);return}const a=document.createElement('a');a.href=url;a.download=filename;document.body.appendChild(a);a.click();a.remove()}catch(e){note(e.message||e)}}
  async function saveDraft(){if(!workspaceFile)return;const draft={version:'V249387',filename:workspaceFile.name,mime:workspaceFile.type,size:workspaceFile.size,caption:$('ithPublicationCaption387').value||'',destination:$('ithPublicationDestination387').value,friend_id:$('ithPublicationFriend387').value||'',scheduled_for:$('ithPublicationSchedule387').value||'',source:$('ithPublicationSource387').value,created_at:new Date().toISOString()};try{localStorage.setItem('ith_publication_draft_v249387',JSON.stringify(draft));const blob=new Blob([JSON.stringify(draft,null,2)],{type:'application/json'}),file=new File([blob],'OK_ITHAKI_PUBLICATION_DRAFT_'+Date.now()+'.json',{type:'application/json'});await saveFileToDevice(file);note('Το πρόχειρο και τα στοιχεία προορισμού αποθηκεύτηκαν. Αποθήκευσε χωριστά και το αρχικό media αρχείο.',8000)}catch(e){note(e.message||e)}}
  async function schedulePreview387(){const s=appState(),p=s.preview||{},file=p.file;if(!file)throw new Error('Δεν υπάρχει αρχείο προεπισκόπησης.');const when=new Date(p.__schedule387||'').getTime()/1000;if(!Number.isFinite(when)||when<Date.now()/1000+60)throw new Error('Η προγραμματισμένη ώρα πρέπει να είναι στο μέλλον.');if(p.__source387==='studio'&&p.originalFile&&p.file===p.originalFile)throw new Error('Επίλεξες Studio αλλά δεν δημιουργήθηκε ακόμη επεξεργασμένο αρχείο.');let uploadFile=p.preparedFile;if(!uploadFile){uploadFile=typeof window.preparePhotoForUpload==='function'?await window.preparePhotoForUpload(file,p.kind):file;p.preparedFile=uploadFile}if(typeof window.ensureFfmpegReadyForVideo==='function')await window.ensureFfmpegReadyForVideo(uploadFile,p.kind);let raw=p.uploadedRaw;if(!raw){if(typeof window.setSending==='function')window.setSending(0,uploadFile.size);if(typeof window.uploadWithProgress!=='function')throw new Error('Η ασφαλής μεταφόρτωση δεν είναι διαθέσιμη.');raw=await window.uploadWithProgress(uploadFile,p.kind);p.uploadedRaw=raw}let up=p.uploadedReady;if(!up){up=typeof window.waitMediaIfProcessing==='function'?await window.waitMediaIfProcessing(raw):raw;p.uploadedReady=up}const kind=(up.kind||up.media_kind)||(fileKind(uploadFile));const caption=String($('previewCaption')?.value||p.__caption387||'').trim();const text=JSON.stringify({body:caption,media:{url:up.url||up.file_url,filename:up.filename||uploadFile.name,mime_type:up.mime_type||uploadFile.type,kind,size:up.size_bytes||uploadFile.size,meta_id:up.meta_id||raw.meta_id||'',serverStored:true}});const r=await fetch('/api/creator/schedule_v249410',{method:'POST',cache:'no-store',credentials:'same-origin',headers:{'Content-Type':'application/json'},body:JSON.stringify({room_id:room(),device_id:device(),sender_id:device(),nickname:name(),language:'el',text,post_kind:kind,anonymous:!!$('previewAnonymous')?.checked,visibility:'public',scheduled_for:when})});let d={};try{d=await r.json()}catch(e){}if(!r.ok||!d.ok)throw new Error(String(d.detail||d.message||'Η προγραμματισμένη δημοσίευση απέτυχε.'));try{window.closePreview&&window.closePreview()}catch(e){}note('Η δημοσίευση προγραμματίστηκε επιτυχώς στο V410.',8000);setTimeout(()=>window.ITH&&ITH.openCreatorSchedulesV249410&&ITH.openCreatorSchedulesV249410(),500);return false}
  function wrapSend(){
    window.ITH=window.ITH||{};
    const coreSend=window.__ITHAKI_CORE_SEND_PREVIEW__||sendBase||window.ITH.sendPreview;
    if(typeof coreSend!=='function')return;
    if(!sendWrapped){
      sendBase=coreSend;
      sendWrapped=async function(){
        const p=appState().preview||{};
        if(p.__workspace387){
          p.__destination387=$('ithPreviewDestSelect387')?.value||p.__destination387||'feed';p.__schedule387=$('ithPreviewSchedule387')?.value||p.__schedule387;p.__friend387=$('ithPreviewFriend387')?.value||p.__friend387;
          if(p.__destination387==='scheduled'){try{const b=$('previewSend');if(b){b.disabled=true;b.textContent='Προγραμματισμός…'}return await schedulePreview387()}catch(e){const b=$('previewSend');if(b){b.disabled=false;b.textContent='Αποστολή / Προγραμματισμός'}note(e.message||e,8000);return false}}
          if(p.__destination387==='dm'){if(!p.__friend387){note('Επίλεξε αποδεκμένο φίλο.');return false}p.ctx='dm';p.target=channelFor(p.__friend387)}else{p.ctx='feed';p.target=''}
        }
        return sendBase.apply(this,arguments)
      };
      sendWrapped.__v249409UnifiedPublication=true;
    }
    if(window.ITH.sendPreview!==sendWrapped)window.ITH.sendPreview=sendWrapped;
    try{window.sendPreview=sendWrapped}catch(e){}
  }

  function professionalPublishingDisabled413(){
    try{if(typeof toast==='function')toast('Η δημοσίευση γίνεται μόνο από το + της ΙΘΑΚΗΣ.',6000)}catch(e){}
    try{window.ITH&&ITH.page&&ITH.page('create')}catch(e){}
    return false
  }
  function bindProfessionalButtons388(){
    const link=$('ithPublicLinkTool388')||$('ithPublicLinkTool387');
    if(link){link.type='button';link.onclick=openPublicLink;link.setAttribute('data-v249413-bound','public-link-only');link.setAttribute('data-ithaki-command-close','creator-public-link')}
    [$('ithPublicationTool388'),$('ithPublicationTool387')].forEach(x=>x&&x.remove());
  }
  function installProfessionalButtons(){
    const body=$('ithModalBody383'),title=$('ithModalTitle383');if(!body)return;
    const grid=body.querySelector('.ithToolGrid383');const isProfessional=!!grid&&!!(title&&String(title.textContent||'').includes('Επαγγελματικό Κέντρο'));if(!isProfessional)return;
    let link=$('ithPublicLinkTool388')||$('ithPublicLinkTool387');
    if(!link){link=document.createElement('button');link.id='ithPublicLinkTool388';link.type='button';link.className='ithTool383 creator-direct388';link.innerHTML='<b>🔗 Δημόσιο link δημιουργού</b><small>Link για bio, αντιγραφή, κοινοποίηση, QR και πραγματικές προβολές.</small><span>ΜΟΝΟ LINK</span>';grid.appendChild(link)}
    bindProfessionalButtons388();document.documentElement.setAttribute('data-ithaki-creator-tools-visible','V249413-public-link-only');
  }
  function exports(){window.ITH=window.ITH||{};Object.assign(window.ITH,{openCreatorPublicLinkV249387:openPublicLink,openCreatorPublicLinkV249388:openPublicLink,refreshCreatorPublicAnalyticsV249387:loadPublicAnalytics,refreshCreatorPublicAnalyticsV249388:loadPublicAnalytics,openPublicationWorkspaceV249387:professionalPublishingDisabled413,openPublicationWorkspaceV249388:professionalPublishingDisabled413})}
  function install(){ensureCss();exports();installProfessionalButtons();let timer=0;const ob=new MutationObserver(list=>{if(!list.some(m=>m.addedNodes&&m.addedNodes.length))return;clearTimeout(timer);timer=setTimeout(installProfessionalButtons,180)});ob.observe(document.body,{childList:true,subtree:true});setInterval(installProfessionalButtons,5000);document.documentElement.setAttribute('data-ithaki-creator-public-link','V249413');document.documentElement.setAttribute('data-ithaki-publication-workspace','disabled-professional-menu');document.documentElement.setAttribute('data-ithaki-professional-preview','removed-v249413')}

  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',install,{once:true});else install();
})();
