document.addEventListener('click',function(e){if(e.target.classList.contains('modal-overlay'))e.target.classList.remove('show');});
document.addEventListener('keydown',function(e){if(e.key==='Escape')document.querySelectorAll('.modal-overlay.show').forEach(m=>m.classList.remove('show'));});
function confirmAction(msg){return confirm(msg||'계속하시겠습니까?');}
function formatNumber(n){return new Intl.NumberFormat('ko-KR').format(n);}

// ── textarea 자동 높이 조절 (전역) ──
function autoResizeTextarea(el){
    el.style.height='auto';
    el.style.height=el.scrollHeight+'px';
}
document.addEventListener('DOMContentLoaded',function(){
    document.querySelectorAll('textarea').forEach(function(ta){
        if(!ta.hasAttribute('data-no-autoresize')){
            ta.setAttribute('rows','1');
            ta.style.overflow='hidden';
            ta.style.resize='none';
            autoResizeTextarea(ta);
            ta.addEventListener('input',function(){autoResizeTextarea(this);});
        }
    });
    // MutationObserver로 동적 추가된 textarea도 처리
    new MutationObserver(function(muts){
        muts.forEach(function(m){
            m.addedNodes.forEach(function(n){
                if(n.nodeType===1){
                    var tas=n.tagName==='TEXTAREA'?[n]:n.querySelectorAll?n.querySelectorAll('textarea'):[];
                    [].forEach.call(tas,function(ta){
                        if(!ta.hasAttribute('data-no-autoresize')){
                            ta.setAttribute('rows','1');
                            ta.style.overflow='hidden';
                            ta.style.resize='none';
                            autoResizeTextarea(ta);
                            ta.addEventListener('input',function(){autoResizeTextarea(this);});
                        }
                    });
                }
            });
        });
    }).observe(document.body,{childList:true,subtree:true});
});
