document.querySelectorAll('form[data-chat-coach]').forEach(form=>{
const input=form.querySelector('textarea[name="body"]');
if(!input)return;
const rapidWindowMs=2*60*1000;
const autoDismissMs=3000;
let dismissed=false;
let dismissTimer=null;
const readLastTwoMessageTimes=()=>Array.from(document.querySelectorAll('[data-chat-coach-own][data-chat-coach-at]'))
.map(node=>Number(node.dataset.chatCoachAt)*1000)
.filter(Number.isFinite)
.sort((a,b)=>a-b)
.slice(-2);
const hint=document.createElement('aside');
hint.className='chat-coach chat-coach-floating';hint.hidden=true;hint.setAttribute('role','status');hint.setAttribute('aria-live','polite');
hint.innerHTML='✦
برای دریافت پاسخ دقیقترلطفاً همه توضیحات و سؤالهای خود را در یک پیام کامل بنویسید و سپس ارسال کنید.
';
document.body.append(hint);
const dismiss=({focusInput=false}={})=>{
dismissed=true;
hint.hidden=true;
if(dismissTimer)clearTimeout(dismissTimer);
dismissTimer=null;
if(focusInput)input.focus();
};
const showTemporarily=()=>{
if(!hint.hidden)return;
hint.hidden=false;
dismissTimer=setTimeout(()=>dismiss(),autoDismissMs);
};
const detect=()=>{
const [previous,last]=readLastTwoMessageTimes();
const rapidPair=Number.isFinite(previous)&&Number.isFinite(last)&&last>=previous&&last-previous<=rapidWindowMs;
if(!dismissed&&rapidPair)showTemporarily();
else if(!rapidPair)hint.hidden=true;
};
hint.querySelector('[data-chat-coach-dismiss]').addEventListener('click',()=>dismiss({focusInput:true}));
const conversation=document.querySelector('[data-conversation]');
if(conversation)new MutationObserver(detect).observe(conversation,{childList:true,subtree:true});
detect();
});