<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>도구 on 계획대로 느긋하게</title><link>https://planfully.ai.kr/categories/%EB%8F%84%EA%B5%AC/</link><description>Recent content in 도구 on 계획대로 느긋하게</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://planfully.ai.kr/categories/%EB%8F%84%EA%B5%AC/index.xml" rel="self" type="application/rss+xml"/><item><title>단위 변환기 — 길이·무게·넓이·부피·온도·속도</title><link>https://planfully.ai.kr/tools/unit-converter/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/unit-converter/</guid><description>&lt;p&gt;&lt;strong&gt;길이·무게·넓이·부피·온도·속도&lt;/strong&gt;를 입력하는 즉시 실시간으로 변환해요. 평·근·돈·되·척 같은 한국 단위도 지원해요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;div id="uc-cats" style="display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;"&gt;&lt;/div&gt;
 &lt;div style="display:flex;gap:8px;align-items:flex-end;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;font-size:13px;color:#555;"&gt;값&lt;/span&gt;&lt;input type="tel" id="uc-val" inputmode="decimal" value="1" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;font-size:13px;color:#555;"&gt;단위&lt;/span&gt;&lt;select id="uc-from" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;&lt;/select&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;div id="uc-out" style="margin-top:16px;"&gt;
 &lt;table style="width:100%;font-size:15px;border-collapse:collapse;"&gt;&lt;tbody id="uc-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;.uc-cat{padding:9px 12px;border:2px solid #d1d5db;border-radius:10px;background:#fff;font-weight:700;font-size:13.5px;cursor:pointer;}.uc-cat.on{border-color:#d97757;background:#fdf5f2;color:#c65f3f;}#uc-rows td{padding:9px 6px;border-bottom:1px solid #eee;}#uc-rows td:first-child{color:#555;}#uc-rows td:last-child{text-align:right;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
// 각 카테고리: 기준단위(1) 대비 배율. 값 v(단위 a) → 기준 = v*factor[a]; 목표 b = 기준/factor[b].
var CATS={
 '길이':{base:'m',units:{'m':1,'km':1000,'cm':0.01,'mm':0.001,'inch':0.0254,'feet':0.3048,'mile':1609.344,'척(자)':0.303}},
 '무게':{base:'kg',units:{'kg':1,'g':0.001,'mg':0.000001,'ton':1000,'근(600g)':0.6,'돈':0.00375,'파운드':0.45359237,'온스':0.0283495}},
 '넓이':{base:'㎡',units:{'㎡':1,'평':3.305785,'㏊':10000,'에이커':4046.8564,'㎢':1000000}},
 '부피':{base:'L',units:{'L':1,'mL':0.001,'㎥':1000,'갤런(US)':3.785412,'되':1.8039}},
 '속도':{base:'m/s',units:{'m/s':1,'km/h':0.2777778,'mph':0.44704}}
};
// 온도는 별도 처리
function fmtNum(x){
 if(x===0) return '0';
 var a=Math.abs(x);
 var s;
 if(a&gt;=1e9||a&lt;1e-4) s=x.toPrecision(6);
 else s=(Math.round(x*1e6)/1e6).toString();
 return parseFloat(s).toLocaleString(undefined,{maximumFractionDigits:6});
}
var cur='길이';
function toC(u,v){return u==='℃'?v:u==='℉'?(v-32)*5/9:v-273.15;} // 임의단위→℃
function fromC(u,c){return u==='℃'?c:u==='℉'?c*9/5+32:c+273.15;}
function buildCats(){
 var html='';
 Object.keys(CATS).forEach(function(k){html+='&lt;button class="uc-cat" data-c="'+k+'"&gt;'+k+'&lt;/button&gt;';});
 html+='&lt;button class="uc-cat" data-c="온도"&gt;온도&lt;/button&gt;';
 $('uc-cats').innerHTML=html;
 [].forEach.call(document.querySelectorAll('.uc-cat'),function(b){b.onclick=function(){cur=b.dataset.c;selectCat();};});
}
function selectCat(){
 document.querySelectorAll('.uc-cat').forEach(function(x){x.classList.toggle('on',x.dataset.c===cur);});
 var sel=$('uc-from'),opts='';
 var units = cur==='온도'?['℃','℉','K']:Object.keys(CATS[cur].units);
 units.forEach(function(u){opts+='&lt;option value="'+u+'"&gt;'+u+'&lt;/option&gt;';});
 sel.innerHTML=opts;
 calc();
}
function calc(){
 var v=parseFloat(($('uc-val').value||'').replace(/,/g,''));
 var from=$('uc-from').value;
 var rows='';
 if(isNaN(v)){$('uc-rows').innerHTML='&lt;tr&gt;&lt;td colspan="2" style="color:#888;"&gt;숫자를 입력하세요&lt;/td&gt;&lt;/tr&gt;';return;}
 if(cur==='온도'){
 var c=toC(from,v);
 ['℃','℉','K'].forEach(function(u){if(u!==from)rows+='&lt;tr&gt;&lt;td&gt;'+u+'&lt;/td&gt;&lt;td&gt;'+fmtNum(fromC(u,c))+'&lt;/td&gt;&lt;/tr&gt;';});
 }else{
 var f=CATS[cur].units, baseVal=v*f[from];
 Object.keys(f).forEach(function(u){if(u!==from)rows+='&lt;tr&gt;&lt;td&gt;'+u+'&lt;/td&gt;&lt;td&gt;'+fmtNum(baseVal/f[u])+'&lt;/td&gt;&lt;/tr&gt;';});
 }
 $('uc-rows').innerHTML=rows;
}
$('uc-val').addEventListener('input',calc);
$('uc-from').addEventListener('change',calc);
buildCats();selectCat();
})();
&lt;/script&gt;
&lt;h2 id="단위-변환기-사용법"&gt;단위 변환기 사용법
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;위에서 &lt;strong&gt;카테고리&lt;/strong&gt;(길이·무게·넓이·부피·온도·속도)를 고르고, &lt;strong&gt;값과 단위&lt;/strong&gt;를 입력하면 나머지 단위로 &lt;strong&gt;즉시 변환&lt;/strong&gt;돼요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;한국 전통 단위&lt;/strong&gt;도 지원해요: 척(자)=0.303m, 근=600g, 돈=3.75g, 평=3.306㎡, 되=1.8039L.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;넓이&lt;/strong&gt;: 1평 ≈ 3.306㎡, 1㏊=10,000㎡, 1에이커 ≈ 4,046.86㎡.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;온도&lt;/strong&gt;: 섭씨(℃)·화씨(℉)·켈빈(K) 사이를 정확한 공식으로 환산해요(℉ = ℃×9/5+32).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;속도&lt;/strong&gt;: m/s, km/h, mph를 서로 바꿔요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;계산 결과는 브라우저에서 처리되며 입력값은 저장되지 않습니다.&lt;/p&gt;</description></item><item><title>대출 이자 계산기 — 원리금균등·원금균등 월상환액 비교</title><link>https://planfully.ai.kr/tools/loan/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/loan/</guid><description>&lt;p&gt;대출금·이자율·기간을 넣으면 &lt;strong&gt;원리금균등&lt;/strong&gt;과 &lt;strong&gt;원금균등&lt;/strong&gt; 두 방식의 월 상환액과 총 이자를 나란히 비교합니다.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;대출 금액 (만원)&lt;/span&gt;&lt;input type="tel" id="ln-amt" inputmode="numeric" placeholder="예: 10000 (1억)" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;연 이자율 (%)&lt;/span&gt;&lt;input type="tel" id="ln-rate" inputmode="decimal" placeholder="예: 4.5" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;기간 (개월)&lt;/span&gt;&lt;input type="tel" id="ln-mon" inputmode="numeric" placeholder="예: 360 (30년)" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="ln-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;상환액 계산하기&lt;/button&gt;
 &lt;div id="ln-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="display:flex;gap:10px;flex-wrap:wrap;"&gt;
 &lt;div style="flex:1 1 45%;text-align:center;padding:16px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:13px;color:#555;"&gt;원리금균등 · 매월&lt;/div&gt;
 &lt;div id="ln-eq" style="font-size:22px;font-weight:800;color:#047857;"&gt;&lt;/div&gt;
 &lt;div id="ln-eq-int" style="font-size:12px;color:#6b7280;margin-top:4px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div style="flex:1 1 45%;text-align:center;padding:16px;border-radius:12px;background:#eff6ff;"&gt;
 &lt;div style="font-size:13px;color:#555;"&gt;원금균등 · 첫달→막달&lt;/div&gt;
 &lt;div id="ln-pr" style="font-size:19px;font-weight:800;color:#1d4ed8;"&gt;&lt;/div&gt;
 &lt;div id="ln-pr-int" style="font-size:12px;color:#6b7280;margin-top:4px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="ln-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 원리금균등=매월 같은 금액(원금+이자) / 원금균등=매월 원금은 같고 이자가 줄어 상환액이 점점 감소. 총이자는 보통 원금균등이 적어요. 중도상환수수료·거치기간은 미반영. 실제는 은행 조건에 따라 달라요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#ln-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#ln-rows td:last-child{text-align:right;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){if(w&gt;=100000000)return (w/100000000).toFixed(2).replace(/\.?0+$/,'')+'억원';if(w&gt;=10000)return Math.round(w/10000).toLocaleString()+'만원';return Math.round(w).toLocaleString()+'원';}
$('ln-go').onclick=function(){
 var P=(parseFloat($('ln-amt').value)||0)*10000;
 var ann=parseFloat($('ln-rate').value)||0;
 var n=parseInt($('ln-mon').value)||0;
 if(!P||!n){alert('대출금과 기간을 입력해 주세요');return;}
 var r=ann/100/12;
 // 원리금균등
 var eqM = r&gt;0 ? P*r*Math.pow(1+r,n)/(Math.pow(1+r,n)-1) : P/n;
 var eqTotalInt = eqM*n - P;
 // 원금균등
 var prin=P/n;
 var prFirst=prin + P*r;
 var prLast=prin + prin*r;
 var prTotalInt = r&gt;0 ? P*r*(n+1)/2 : 0;
 $('ln-eq').textContent=won(eqM);
 $('ln-eq-int').textContent='총이자 '+won(eqTotalInt);
 $('ln-pr').textContent=won(prFirst)+' → '+won(prLast);
 $('ln-pr-int').textContent='총이자 '+won(prTotalInt);
 function row(l,v){return '&lt;tr&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 var diff=eqTotalInt-prTotalInt;
 $('ln-rows').innerHTML=
 row('대출 원금', won(P))
 +row('연 이자율 / 기간', ann+'% / '+n+'개월 ('+(n/12).toFixed(n%12?1:0)+'년)')
 +row('원리금균등 총 상환액', won(P+eqTotalInt))
 +row('원금균등 총 상환액', won(P+prTotalInt))
 +row('원금균등이 아끼는 총이자', won(diff)+' 절약');
 $('ln-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="원리금균등-vs-원금균등-뭐가-유리해"&gt;원리금균등 vs 원금균등, 뭐가 유리해?
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;원리금균등상환&lt;/strong&gt;: 매월 갚는 금액(원금+이자)이 &lt;strong&gt;똑같아요&lt;/strong&gt;. 매달 나가는 돈이 일정해서 계획 세우기 편해요. 초반엔 이자 비중이 크고 원금이 천천히 줄어요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;원금균등상환&lt;/strong&gt;: 매월 &lt;strong&gt;원금은 같고&lt;/strong&gt;, 남은 원금에 대한 이자만 붙어서 &lt;strong&gt;상환액이 점점 줄어요&lt;/strong&gt;. 초반 부담이 크지만 &lt;strong&gt;총 이자는 더 적어요&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;총이자 비교&lt;/strong&gt;: 같은 조건이면 보통 &lt;strong&gt;원금균등이 총이자가 적어요&lt;/strong&gt;. 대신 초반 월 상환 부담이 큽니다. 여유가 되면 원금균등, 초반 부담을 낮추려면 원리금균등.&lt;/li&gt;
&lt;li&gt;실제 대출은 중도상환수수료·거치기간·변동금리 등이 있으니 은행 상담과 함께 참고하세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>랜덤 뽑기·사다리타기 — 제비뽑기·순서·팀 나누기</title><link>https://planfully.ai.kr/tools/random-picker/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/random-picker/</guid><description>&lt;p&gt;이름을 넣고 &lt;strong&gt;두근두근 뽑기 · 순서 섞기 · 팀 나누기 · 사다리타기&lt;/strong&gt;로 정해요. 사다리는 직접 선을 그어 만들 수 있어요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;참가자 (줄바꿈 또는 쉼표로 구분)&lt;/span&gt;
 &lt;textarea id="rp-names" rows="4" placeholder="철수&amp;#10;영희&amp;#10;민수&amp;#10;지영" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:15px;box-sizing:border-box;resize:vertical;"&gt;철수
영희
민수
지영&lt;/textarea&gt;&lt;/label&gt;
 &lt;div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;"&gt;
 &lt;button class="rp-btn" data-m="pick" style="flex:1 1 45%;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;🎯 두근두근 뽑기&lt;/button&gt;
 &lt;button class="rp-btn" data-m="order" style="flex:1 1 45%;padding:12px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-weight:700;cursor:pointer;"&gt;🔀 순서 섞기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:center;"&gt;
 &lt;button class="rp-btn" data-m="team" style="flex:1 1 45%;padding:12px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-weight:700;cursor:pointer;"&gt;👥 팀 나누기&lt;/button&gt;
 &lt;input type="tel" id="rp-teams" inputmode="numeric" value="2" style="width:56px;padding:10px;border:2px solid #ccc;border-radius:8px;text-align:center;"&gt;
 &lt;span style="font-size:13px;color:#555;"&gt;개 팀&lt;/span&gt;
 &lt;/div&gt;
 &lt;div id="rp-slot" style="display:none;margin-top:14px;text-align:center;padding:26px 10px;border-radius:14px;background:#0f172a;color:#fff;font-size:32px;font-weight:800;letter-spacing:1px;min-height:44px;"&gt;&lt;/div&gt;
 &lt;div style="margin-top:14px;padding-top:12px;border-top:1px dashed #ddd;"&gt;
 &lt;div style="font-size:13px;color:#555;font-weight:700;margin-bottom:4px;"&gt;🪜 사다리타기 (결과를 참가자에 랜덤 배정)&lt;/div&gt;
 &lt;textarea id="rp-results" rows="3" placeholder="결과 목록 (참가자 수와 같게)&amp;#10;청소&amp;#10;설거지&amp;#10;커피&amp;#10;당첨" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;font-size:14px;box-sizing:border-box;resize:vertical;"&gt;청소
설거지
커피
꽝&lt;/textarea&gt;
 &lt;div style="display:flex;gap:8px;margin-top:6px;"&gt;
 &lt;button id="rp-ladder-make" style="flex:1;padding:12px;border:0;border-radius:10px;background:#d97706;color:#fff;font-weight:700;cursor:pointer;"&gt;🪜 사다리 만들기&lt;/button&gt;
 &lt;button id="rp-ladder-run" style="flex:1;padding:12px;border:0;border-radius:10px;background:#dc2626;color:#fff;font-weight:700;cursor:pointer;"&gt;▶️ 돌리기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="rp-ladder-hint" style="display:none;font-size:12.5px;color:#d97706;margin-top:6px;"&gt;👆 가로줄 자리를 &lt;b&gt;탭/클릭&lt;/b&gt;해서 직접 사다리를 추가하세요. 다 그렸으면 ▶️ 돌리기!&lt;/div&gt;
 &lt;canvas id="rp-canvas" style="display:none;width:100%;margin-top:10px;background:#fffdf7;border-radius:10px;border:1px solid #f0e6d2;touch-action:manipulation;"&gt;&lt;/canvas&gt;
 &lt;div id="rp-ladder-out" style="display:none;margin-top:8px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div id="rp-out" style="display:none;margin-top:14px;padding:16px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function parse(t){return (t.value||'').split(/[\n,]/).map(function(s){return s.trim();}).filter(Boolean);}
function shuffle(a){a=a.slice();for(var i=a.length-1;i&gt;0;i--){var j=Math.floor(Math.random()*(i+1));var t=a[i];a[i]=a[j];a[j]=t;}return a;}
function esc(s){return s.replace(/[&amp;&lt;&gt;]/g,function(c){return{'&amp;':'&amp;amp;','&lt;':'&amp;lt;','&gt;':'&amp;gt;'}[c];});}
var COLORS=['#ef4444','#f59e0b','#10b981','#3b82f6','#8b5cf6','#ec4899','#14b8a6','#f97316','#6366f1','#84cc16'];
var out=$('rp-out'), slot=$('rp-slot');
function show(html){out.innerHTML=html;out.style.display='block';}
function spinPick(names){
 slot.style.display='block'; out.style.display='none';
 slot.style.color='#fff';
 var start=Date.now(), DUR=4200;
 function tick(){
 var el=Date.now()-start, prog=el/DUR;
 slot.textContent=names[Math.floor(Math.random()*names.length)];
 if(prog&lt;1){
 var delay=40+Math.pow(prog,3.2)*520;
 setTimeout(tick, delay);
 } else {
 var w=names[Math.floor(Math.random()*names.length)];
 setTimeout(function(){
 slot.innerHTML='🎉 &lt;span style="color:#fbbf24;"&gt;'+esc(w)+'&lt;/span&gt; 🎉';
 slot.animate([{transform:'scale(1.35)'},{transform:'scale(0.95)'},{transform:'scale(1)'}],{duration:520});
 }, 260);
 }
 }
 tick();
}
[].forEach.call(document.querySelectorAll('.rp-btn'),function(b){
 b.onclick=function(){
 var names=parse($('rp-names'));
 if(names.length&lt;1){alert('참가자를 입력해 주세요');return;}
 var m=b.getAttribute('data-m');
 if(m==='pick'){ spinPick(names); return; }
 slot.style.display='none';
 if(m==='order'){
 var s=shuffle(names);
 show('&lt;div style="font-weight:700;margin-bottom:6px;"&gt;🔀 순서&lt;/div&gt;'+s.map(function(n,i){return '&lt;div style="padding:5px 0;border-bottom:1px solid #eee;"&gt;&lt;b&gt;'+(i+1)+'.&lt;/b&gt; '+esc(n)+'&lt;/div&gt;';}).join(''));
 } else if(m==='team'){
 var k=Math.max(parseInt($('rp-teams').value)||2,2);
 var s=shuffle(names), teams=[];for(var i=0;i&lt;k;i++)teams.push([]);
 s.forEach(function(n,i){teams[i%k].push(n);});
 show('&lt;div style="font-weight:700;margin-bottom:6px;"&gt;👥 '+k+'개 팀&lt;/div&gt;'+teams.map(function(t,i){return '&lt;div style="margin-bottom:8px;"&gt;&lt;b style="color:#7c3aed;"&gt;'+(i+1)+'팀&lt;/b&gt; : '+t.map(esc).join(', ')+'&lt;/div&gt;';}).join(''));
 }
 };
});
var cv=$('rp-canvas'), ctx=cv.getContext('2d');
var L=null;
function X(c){return L.MX+c*L.gapX;}
function Yr(r){return L.topY+(r+1)*L.rowH;}
function drawBase(){
 ctx.clearRect(0,0,L.cssW,L.cssH);
 ctx.strokeStyle='#d6cbb0'; ctx.lineWidth=3; ctx.lineCap='round';
 for(var c=0;c&lt;L.n;c++){ctx.beginPath();ctx.moveTo(X(c),L.topY);ctx.lineTo(X(c),L.botY);ctx.stroke();}
 for(var r=0;r&lt;L.rows;r++){for(var c=0;c&lt;L.n-1;c++){if(L.rung[r][c]){ctx.strokeStyle='#c2410c';ctx.beginPath();ctx.moveTo(X(c),Yr(r));ctx.lineTo(X(c+1),Yr(r));ctx.stroke();ctx.strokeStyle='#d6cbb0';}}}
 ctx.font='bold 13px sans-serif'; ctx.textAlign='center';
 for(var c2=0;c2&lt;L.n;c2++){ctx.fillStyle='#111';ctx.fillText(L.names[c2].slice(0,5),X(c2),L.topY-12);ctx.fillStyle='#999';ctx.fillText(L.revealed?L.results[L.endOf[c2]].slice(0,6):'?',X(c2),L.botY+22);}
}
function buildLadder(random){
 var names=parse($('rp-names')), results=parse($('rp-results'));
 if(names.length&lt;2){alert('참가자를 2명 이상 입력해 주세요');return null;}
 if(results.length!==names.length){alert('결과 개수('+results.length+')를 참가자 수('+names.length+')와 같게 맞춰 주세요');return null;}
 var n=names.length, DPR=window.devicePixelRatio||1;
 var cssW=Math.min(cv.parentElement.clientWidth,480);
 var rows=Math.max(n*4,18); // 더 긴 사다리
 var cssH=54+rows*26+54;
 cv.style.height=cssH+'px'; cv.width=cssW*DPR; cv.height=cssH*DPR; ctx.setTransform(DPR,0,0,DPR,0,0);
 cv.style.display='block';
 var MX=cssW*0.5/n+10, topY=54, botY=cssH-54, gapX=(cssW-2*MX)/(n-1), rowH=(botY-topY)/(rows+1);
 var rung=[];for(var r=0;r&lt;rows;r++){var row=[];for(var c=0;c&lt;n-1;c++){row.push(random &amp;&amp; Math.random()&lt;0.28 &amp;&amp; !(c&gt;0&amp;&amp;row[c-1]));}rung.push(row);}
 L={names:names,results:results,n:n,rows:rows,cssW:cssW,cssH:cssH,MX:MX,topY:topY,botY:botY,gapX:gapX,rowH:rowH,rung:rung,revealed:false,endOf:names.map(function(_,i){return i;})};
 drawBase();
 return L;
}
$('rp-ladder-make').onclick=function(){
 $('rp-ladder-out').style.display='none';
 if(buildLadder(true)){ $('rp-ladder-hint').style.display='block'; }
};
cv.addEventListener('click',function(e){
 if(!L||L.revealed)return;
 var rect=cv.getBoundingClientRect();
 var x=(e.clientX-rect.left), y=(e.clientY-rect.top);
 // 가장 가까운 row
 var r=Math.round((y-L.topY)/L.rowH)-1; if(r&lt;0||r&gt;=L.rows)return;
 // 가장 가까운 칸(col과 col+1 사이)
 var c=Math.floor((x-L.MX)/L.gapX); if(c&lt;0||c&gt;=L.n-1)return;
 // 인접 겹침 방지
 if(!L.rung[r][c]){ if((c&gt;0&amp;&amp;L.rung[r][c-1])||(c&lt;L.n-2&amp;&amp;L.rung[r][c+1]))return; }
 L.rung[r][c]=!L.rung[r][c];
 drawBase();
});
$('rp-ladder-run').onclick=function(){
 if(!L){ if(!buildLadder(true))return; }
 $('rp-ladder-hint').style.display='none';
 function path(start){
 var c=start, pts=[{x:X(c),y:L.topY}];
 for(var r=0;r&lt;L.rows;r++){var y=Yr(r);pts.push({x:X(c),y:y});
 if(c&lt;L.n-1&amp;&amp;L.rung[r][c]){c++;pts.push({x:X(c),y:y});}
 else if(c&gt;0&amp;&amp;L.rung[r][c-1]){c--;pts.push({x:X(c),y:y});}}
 pts.push({x:X(c),y:L.botY});return {pts:pts,end:c};
 }
 var paths=[];for(var i=0;i&lt;L.n;i++)paths.push(path(i));
 L.endOf=paths.map(function(p){return p.end;});
 var t0=null, DUR=Math.max(2600,L.rows*160);
 function seg(pts,prog){
 var total=0,seglen=[];for(var i=1;i&lt;pts.length;i++){var dx=pts[i].x-pts[i-1].x,dy=pts[i].y-pts[i-1].y;var l=Math.sqrt(dx*dx+dy*dy);seglen.push(l);total+=l;}
 var target=total*prog,acc=0,cur=pts[0],drawn=[pts[0]];
 for(var i=1;i&lt;pts.length;i++){if(acc+seglen[i-1]&gt;=target){var f=(target-acc)/seglen[i-1];cur={x:pts[i-1].x+(pts[i].x-pts[i-1].x)*f,y:pts[i-1].y+(pts[i].y-pts[i-1].y)*f};drawn.push(cur);break;}acc+=seglen[i-1];drawn.push(pts[i]);}
 return {cur:cur,drawn:drawn};
 }
 function frame(ts){
 if(!t0)t0=ts;var prog=Math.min((ts-t0)/DUR,1);
 L.revealed=false; drawBase();
 ctx.lineWidth=4;ctx.lineCap='round';
 for(var i=0;i&lt;L.n;i++){var col=COLORS[i%COLORS.length];var s=seg(paths[i].pts,prog);ctx.strokeStyle=col;ctx.beginPath();for(var k=0;k&lt;s.drawn.length;k++){var p=s.drawn[k];if(k===0)ctx.moveTo(p.x,p.y);else ctx.lineTo(p.x,p.y);}ctx.stroke();ctx.fillStyle=col;ctx.beginPath();ctx.arc(s.cur.x,s.cur.y,6,0,7);ctx.fill();}
 if(prog&lt;1){requestAnimationFrame(frame);}
 else{
 L.revealed=true; drawBase();
 ctx.font='bold 13px sans-serif';ctx.textAlign='center';
 for(var i=0;i&lt;L.n;i++){ctx.fillStyle=COLORS[i%COLORS.length];ctx.fillText(L.results[paths[i].end].slice(0,6),X(paths[i].end),L.botY+22);}
 var html='&lt;div style="font-weight:700;margin-bottom:4px;"&gt;🪜 결과&lt;/div&gt;'+L.names.map(function(nm,i){return '&lt;div style="display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid #eee;"&gt;&lt;span style="color:'+COLORS[i%COLORS.length]+';font-weight:700;"&gt;'+esc(nm)+'&lt;/span&gt;&lt;b&gt;'+esc(L.results[paths[i].end])+'&lt;/b&gt;&lt;/div&gt;';}).join('');
 $('rp-ladder-out').innerHTML=html;$('rp-ladder-out').style.display='block';
 }
 }
 requestAnimationFrame(frame);
};
})();
&lt;/script&gt;
&lt;h2 id="이럴-때-써요"&gt;이럴 때 써요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;두근두근 뽑기&lt;/strong&gt;: 이름이 슬롯머신처럼 빠르게 돌다가 &lt;strong&gt;점점 느려지며&lt;/strong&gt; 멈춰요. 당첨자 발표에 긴장감이 확 살아요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;순서 섞기 · 팀 나누기&lt;/strong&gt;: 발표 순서, 조 편성을 공정하게 랜덤으로.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;사다리타기&lt;/strong&gt;: 「사다리 만들기」로 기본 사다리를 만든 뒤, &lt;strong&gt;가로줄 자리를 직접 탭/클릭해 사다리를 추가&lt;/strong&gt;할 수 있어요. 다 그렸으면 「▶️ 돌리기」로 색깔 선이 내려가며 결과를 찾아가요. 사다리가 길어서 더 두근두근해요.&lt;/li&gt;
&lt;li&gt;결과는 매번 새로 섞여요. 공정한 랜덤이라 내기·회식·조 편성에 딱이에요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>배란일·가임기 계산기 — 배란 예상일·가임 기간</title><link>https://planfully.ai.kr/tools/due-date/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/due-date/</guid><description>&lt;p&gt;마지막 생리 시작일과 &lt;strong&gt;생리주기&lt;/strong&gt;를 넣으면 &lt;strong&gt;배란 예상일·가임기·다음 생리 예정일&lt;/strong&gt;을 계산합니다. (주기 기준 추정)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:480px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;마지막 생리 시작일 (LMP)&lt;/span&gt;&lt;input type="date" id="dd-lmp" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="display:block;margin-top:12px;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;평균 생리주기 (일)&lt;/span&gt;&lt;input type="tel" id="dd-cyc" inputmode="numeric" value="28" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;button id="dd-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="dd-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#fdf2f8;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;배란 예상일&lt;/div&gt;
 &lt;div id="dd-big" style="font-size:30px;font-weight:800;color:#be185d;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;div id="dd-week" style="font-size:14px;color:#6b7280;margin-top:6px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="dd-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 배란일 ≈ 다음 생리 예정일 14일 전. 가임기·배란일은 주기 기준 추정이라 개인차가 커요. 정확한 건 배란테스트기·산부인과 진료로 확인하세요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#dd-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#dd-rows td:last-child{text-align:right;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var W=['일','월','화','수','목','금','토'];
function fmt(d){return d.getFullYear()+'.'+(d.getMonth()+1)+'.'+d.getDate()+' ('+W[d.getDay()]+')';}
$('dd-go').onclick=function(){
 var lmpv=$('dd-lmp').value; if(!lmpv){alert('마지막 생리 시작일을 입력해 주세요');return;}
 var cyc=parseInt($('dd-cyc').value)||28;
 var lmp=new Date(lmpv);
 var ov=new Date(lmp); ov.setDate(ov.getDate()+(cyc-14));
 var fs=new Date(ov); fs.setDate(fs.getDate()-5);
 var fe=new Date(ov); fe.setDate(fe.getDate()+1);
 var next=new Date(lmp); next.setDate(next.getDate()+cyc);
 var today=new Date(); today.setHours(0,0,0,0);
 var ovDay=Math.round((ov-today)/86400000);
 $('dd-big').textContent=fmt(ov);
 $('dd-week').textContent=ovDay&gt;=0?('배란일까지 D-'+ovDay):('배란 예상일 '+(-ovDay)+'일 지남');
 function row(l,v){return '&lt;tr&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('dd-rows').innerHTML=
 row('배란 예상일', fmt(ov))
 +row('가임기 (임신 잘 되는 기간)', fmt(fs)+' ~ '+fmt(fe))
 +row('다음 생리 예정일', fmt(next))
 +row('생리주기', cyc+'일');
 $('dd-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="배란일가임기-이렇게-계산해요"&gt;배란일·가임기, 이렇게 계산해요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;배란일&lt;/strong&gt; ≈ 다음 생리 예정일 &lt;strong&gt;14일 전&lt;/strong&gt;. 주기가 28일이면 마지막 생리 시작일(LMP) + 14일, 30일이면 LMP + 16일이에요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;가임기&lt;/strong&gt;: 배란일 앞 5일 ~ 뒤 1일. 정자는 최대 5일, 난자는 하루 정도 살아 이 기간에 임신 확률이 가장 높아요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;다음 생리 예정일&lt;/strong&gt; = 마지막 생리 시작일 + 평균 생리주기.&lt;/li&gt;
&lt;li&gt;주기가 불규칙하면 추정 오차가 커요. 배란테스트기(LH 검사)나 기초체온 측정을 함께 쓰면 더 정확해요.&lt;/li&gt;
&lt;li&gt;계산 결과는 브라우저에서 처리되며 입력값은 저장되지 않습니다.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>실업급여 계산기 — 1일 수령액·소정급여일수·총액 (2026)</title><link>https://planfully.ai.kr/tools/unemployment/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/unemployment/</guid><description>&lt;p&gt;이직 전 급여와 &lt;strong&gt;나이·고용보험 가입기간&lt;/strong&gt;을 넣으면 실업급여(구직급여) 1일 수령액과 받는 기간, 총 예상액을 계산합니다. (2026년 상한 66,000원·하한 63,104원 기준)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;이직 전 월평균 급여 (세전, 만원)&lt;/span&gt;&lt;input type="tel" id="ue-pay" inputmode="numeric" placeholder="예: 300" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;이직 당시 나이&lt;/span&gt;
 &lt;select id="ue-age" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;
 &lt;option value="0"&gt;만 50세 미만&lt;/option&gt;
 &lt;option value="1"&gt;만 50세 이상 · 장애인&lt;/option&gt;
 &lt;/select&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;고용보험 가입기간&lt;/span&gt;
 &lt;select id="ue-yr" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;
 &lt;option value="0"&gt;1년 미만&lt;/option&gt;
 &lt;option value="1"&gt;1년~3년&lt;/option&gt;
 &lt;option value="2"&gt;3년~5년&lt;/option&gt;
 &lt;option value="3"&gt;5년~10년&lt;/option&gt;
 &lt;option value="4"&gt;10년 이상&lt;/option&gt;
 &lt;/select&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="ue-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;실업급여 계산하기&lt;/button&gt;
 &lt;div id="ue-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;총 예상 실업급여&lt;/div&gt;
 &lt;div id="ue-big" style="font-size:34px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="ue-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 1일 구직급여 = 이직 전 1일 평균임금의 60% (2026년 상한 66,000원·하한 63,104원). 소정급여일수는 나이·가입기간별. 실제 수급은 &lt;b&gt;이직 사유(비자발적)&lt;/b&gt;·적극적 구직활동 등 요건 충족 시에만 지급돼요. 정확한 금액은 고용24(고용보험) 사이트에서 확인하세요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#ue-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#ue-rows td:last-child{text-align:right;font-weight:700;}#ue-rows tr.hl td{color:#047857;border-top:2px solid #059669;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){if(w&gt;=100000000)return (w/100000000).toFixed(2).replace(/\.?0+$/,'')+'억원';return Math.round(w).toLocaleString()+'원';}
// 소정급여일수 [나이&lt;50, 나이&gt;=50][가입기간 index]
var DAYS=[[120,150,180,210,240],[120,180,210,240,270]];
var CAP=66000, FLOOR=63104; // 2026 1일 상·하한
$('ue-go').onclick=function(){
 var pay=(parseFloat($('ue-pay').value)||0)*10000;
 if(!pay){alert('이직 전 월평균 급여를 입력해 주세요');return;}
 var age=parseInt($('ue-age').value), yr=parseInt($('ue-yr').value);
 var avgDaily=pay/30; // 1일 평균임금
 var raw=avgDaily*0.6; // 60%
 var daily=Math.min(Math.max(raw,FLOOR),CAP); // 상·하한 적용
 var sday=DAYS[age][yr];
 var total=daily*sday;
 $('ue-big').textContent=won(total);
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 var capNote = raw&gt;CAP?' (상한 적용)':(raw&lt;FLOOR?' (하한 적용)':'');
 $('ue-rows').innerHTML=
 row('1일 평균임금', won(avgDaily))
 +row('1일 구직급여 (평균임금×60%)'+capNote, won(daily))
 +row('소정급여일수', sday+'일 (약 '+Math.round(sday/30*10)/10+'개월)')
 +row('총 예상 수령액', won(total), true)
 +row('월 환산(30일 기준)', won(daily*30));
 $('ue-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="실업급여-이렇게-정해져요"&gt;실업급여, 이렇게 정해져요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1일 구직급여&lt;/strong&gt; = 이직 전 1일 평균임금 × &lt;strong&gt;60%&lt;/strong&gt;. 단 2026년 기준 &lt;strong&gt;상한 66,000원 / 하한 63,104원&lt;/strong&gt; 안에서.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;소정급여일수&lt;/strong&gt;(받는 기간)는 나이와 고용보험 가입기간에 따라 &lt;strong&gt;120일~270일&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;만 50세 미만: 120 / 150 / 180 / 210 / 240일&lt;/li&gt;
&lt;li&gt;만 50세 이상·장애인: 120 / 180 / 210 / 240 / 270일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;받을 수 있는 조건&lt;/strong&gt;: 비자발적 이직(권고사직·계약만료 등), 고용보험 180일 이상 가입, 적극적 재취업 활동. 자발적 퇴사는 원칙적으로 제외돼요.&lt;/li&gt;
&lt;li&gt;정확한 신청·수급은 &lt;a class="link" href="https://www.work24.go.kr" target="_blank" rel="noopener"
 &gt;고용24&lt;/a&gt; 또는 고용센터에서 확인하세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>오늘의 운세 — 별자리·띠별·타로</title><link>https://planfully.ai.kr/tools/horoscope/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/horoscope/</guid><description>&lt;p&gt;&lt;strong&gt;별자리·띠별 오늘의 운세&lt;/strong&gt;와 &lt;strong&gt;타로 한 장 뽑기&lt;/strong&gt;를 봐요. 운세는 날짜 기준이라 하루 동안 같은 결과가 나와요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:500px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:6px;margin-bottom:12px;"&gt;
 &lt;button class="hs-tab" data-t="star" style="flex:1;padding:10px;border:0;border-radius:8px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;⭐ 별자리&lt;/button&gt;
 &lt;button class="hs-tab" data-t="zodiac" style="flex:1;padding:10px;border:0;border-radius:8px;background:#e5e7eb;color:#333;font-weight:700;cursor:pointer;"&gt;🐭 띠별&lt;/button&gt;
 &lt;button class="hs-tab" data-t="tarot" style="flex:1;padding:10px;border:0;border-radius:8px;background:#e5e7eb;color:#333;font-weight:700;cursor:pointer;"&gt;🃏 타로&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="hs-star" class="hs-panel"&gt;
 &lt;select id="hs-star-sel" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;&lt;/select&gt;
 &lt;button class="hs-go" data-t="star" style="width:100%;margin-top:10px;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;오늘의 운세 보기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="hs-zodiac" class="hs-panel" style="display:none;"&gt;
 &lt;select id="hs-zodiac-sel" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;&lt;/select&gt;
 &lt;button class="hs-go" data-t="zodiac" style="width:100%;margin-top:10px;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;오늘의 운세 보기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="hs-tarot" class="hs-panel" style="display:none;"&gt;
 &lt;div style="text-align:center;color:#555;font-size:14px;margin-bottom:10px;"&gt;마음속으로 질문을 떠올리고 카드를 뽑으세요&lt;/div&gt;
 &lt;button class="hs-go" data-t="tarot" style="width:100%;padding:12px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-weight:700;cursor:pointer;"&gt;🃏 카드 한 장 뽑기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="hs-out" style="display:none;margin-top:16px;padding:18px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var STARS=['양자리','황소자리','쌍둥이자리','게자리','사자자리','처녀자리','천칭자리','전갈자리','사수자리','염소자리','물병자리','물고기자리'];
var ZOD=['쥐','소','호랑이','토끼','용','뱀','말','양','원숭이','닭','개','돼지'];
var TAROT=[['The Fool 바보','새로운 시작, 자유로운 도전. 두려움 없이 첫발을 내디뎌요.'],['The Magician 마법사','능력과 기회. 원하는 걸 실현할 힘이 있어요.'],['The High Priestess 여사제','직관과 비밀. 마음의 소리에 귀 기울여요.'],['The Empress 여황제','풍요와 사랑. 돌봄과 결실의 시기예요.'],['The Emperor 황제','안정과 리더십. 계획대로 밀고 나가요.'],['The Lovers 연인','사랑과 선택. 마음이 가는 쪽을 믿어요.'],['The Chariot 전차','의지와 승리. 흔들리지 않으면 이겨요.'],['Strength 힘','용기와 인내. 부드러움이 강함을 이겨요.'],['The Hermit 은둔자','성찰의 시간. 잠시 멈추고 나를 돌아봐요.'],['Wheel of Fortune 운명의 수레바퀴','전환점. 흐름이 당신 편으로 돌아와요.'],['Justice 정의','균형과 공정. 뿌린 대로 거둬요.'],['The Star 별','희망과 치유. 어둠 뒤 빛이 와요.'],['The Sun 태양','기쁨과 성공. 밝은 에너지가 가득해요.'],['The Moon 달','불안과 착각. 보이는 게 전부가 아니에요.'],['The World 세계','완성과 성취. 한 챕터가 아름답게 마무리돼요.']];
var GEN=['새로운 기회가 다가와요. 열린 마음이 행운을 부릅니다.','생각을 정리하기 좋은 날. 서두르지 말고 차근차근.','주변의 도움을 받게 돼요. 먼저 손 내밀어 보세요.','작은 성취가 있는 날. 스스로를 칭찬해 주세요.','예상 밖의 소식이 들려와요. 유연하게 대응해요.','에너지가 넘치는 하루. 미뤄둔 일을 시작하기 좋아요.','신중함이 필요한 날. 중요한 결정은 한 번 더 생각을.','인연이 닿는 날. 사람과의 만남에서 힌트를 얻어요.'];
var LOVE=['설레는 신호가 있어요. 솔직한 표현이 통해요.','오해가 풀릴 기회. 먼저 다가가면 좋아요.','안정감 있는 하루. 소소한 대화가 사이를 데워요.','밀당보다 진심. 있는 그대로 보여주세요.','새로운 만남의 예감. 평소와 다른 길로 가보세요.','혼자의 시간도 소중해요. 나를 채우면 매력이 올라가요.'];
var MONEY=['지출을 점검하기 좋은 날. 새는 돈을 잡아요.','뜻밖의 수입 가능성. 기회를 놓치지 마세요.','투자는 신중히. 확실한 것만 보세요.','아끼면 목돈이 보여요. 작은 절약이 쌓여요.','금전 정보가 들어와요. 메모해 두면 도움 돼요.','계획 소비가 유리한 날. 충동구매 주의.'];
var HEALTH=['가벼운 산책이 컨디션을 살려요.','수분 섭취와 휴식이 필요해요.','스트레칭으로 몸을 풀어주세요.','충분한 수면이 최고의 보약이에요.','과식 주의. 소화에 신경 써요.','마음의 여유가 몸을 편하게 해요.'];
var COLORS=['빨강','주황','노랑','초록','파랑','보라','흰색','검정','분홍','하늘'];
// ── 띠별 결과: 처음 만든 fortune 도구의 리치 포맷을 이식(2026-07-23 사용자 요청) ──
var ZOD_EM=['🐭','🐮','🐯','🐰','🐲','🐍','🐴','🐑','🐵','🐔','🐶','🐷'];
var ZTOTAL=['막힌 일이 술술 풀리는 날이에요. 미뤄둔 일에 도전해보세요.','조용하지만 알찬 하루. 작은 성취가 쌓입니다.','뜻밖의 좋은 소식이 찾아올 수 있어요. 연락을 기다려보세요.','서두르면 실수가 생겨요. 오늘은 천천히 가는 게 이득입니다.','주변의 도움으로 일이 잘 풀려요. 감사 인사를 잊지 마세요.','새로운 인연이나 기회가 문을 두드립니다. 마음을 열어보세요.','컨디션이 좋아 무엇을 해도 흐름을 탑니다. 자신감을 가지세요.','작은 오해가 생길 수 있으니 말은 한 번 더 생각하고 하세요.'];
var ZMONEY=['예상치 못한 지출 주의! 오늘은 지갑을 닫으세요.','작은 재물운이 들어와요. 미뤄둔 정산을 챙기세요.','투자·계약은 하루 미루는 게 좋아요.','생각지 못한 곳에서 이득이 생깁니다.'];
var ZLOVE=['솔직한 표현이 관계를 가깝게 만들어요.','혼자만의 시간이 오히려 매력을 키우는 날.','오래 연락 없던 사람에게서 소식이 올 수도.','작은 배려가 큰 감동으로 돌아옵니다.'];
var ZHEALTH=['가벼운 산책이 컨디션을 끌어올려요.','충분한 수분과 휴식이 필요한 날.','눈과 어깨의 피로에 신경 쓰세요.','평소보다 활력이 넘치는 하루입니다.'];
var ZDIRS=['동쪽','서쪽','남쪽','북쪽','동남쪽','남서쪽'];
function zrng(seed){var x=Math.sin(seed)*10000;return x-Math.floor(x);}
function zpick(arr,seed){return arr[Math.floor(zrng(seed)*arr.length)];}
function zscore(seed){return 1+Math.floor(zrng(seed)*5);}
function zbar(label,sc,color){return '&lt;div style="margin:8px 0;"&gt;&lt;div style="display:flex;justify-content:space-between;font-size:13.5px;"&gt;&lt;span&gt;'+label+'&lt;/span&gt;&lt;span style="color:'+color+';font-weight:700;"&gt;'+'★'.repeat(sc)+'☆'.repeat(5-sc)+'&lt;/span&gt;&lt;/div&gt;&lt;div style="height:8px;background:#e5e7eb;border-radius:4px;margin-top:6px;overflow:hidden;"&gt;&lt;div style="height:8px;border-radius:4px;width:'+(sc*20)+'%;background:'+color+';"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';}
function daySeedZ(){var d=new Date();return d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();}
function renderZodiac(zi){
 var base=daySeedZ()+zi*97, nm=ZOD[zi], em=ZOD_EM[zi];
 var sTot=zscore(base+1),sMon=zscore(base+2),sLov=zscore(base+3),sHea=zscore(base+4);
 var luckyNum=1+Math.floor(zrng(base+5)*45), color=zpick(COLORS,base+6), dir=zpick(ZDIRS,base+7);
 var h='&lt;div style="padding:16px 18px;border-radius:12px;margin-bottom:12px;background:#f5f3ff;text-align:center;"&gt;'
 +'&lt;div style="font-size:30px;"&gt;'+em+'&lt;/div&gt;'
 +'&lt;div style="font-weight:800;font-size:18px;color:#5b21b6;"&gt;'+nm+'띠 오늘의 운세&lt;/div&gt;'
 +'&lt;div style="margin-top:8px;font-size:15px;line-height:1.7;"&gt;'+zpick(ZTOTAL,base+8)+'&lt;/div&gt;&lt;/div&gt;';
 h+='&lt;div style="padding:16px 18px;border-radius:12px;margin-bottom:12px;background:#fafafa;border:1px solid #eee;"&gt;'
 +zbar('총운',sTot,'#7c3aed')+zbar('재물운',sMon,'#059669')+zbar('애정운',sLov,'#e11d48')+zbar('건강운',sHea,'#0891b2')
 +'&lt;div style="margin-top:10px;font-size:14px;line-height:1.8;color:#444;"&gt;💰 '+zpick(ZMONEY,base+9)+'&lt;br&gt;💕 '+zpick(ZLOVE,base+10)+'&lt;br&gt;🌿 '+zpick(ZHEALTH,base+11)+'&lt;/div&gt;&lt;/div&gt;';
 h+='&lt;div style="padding:16px 18px;border-radius:12px;background:#ecfdf5;display:flex;justify-content:space-around;text-align:center;font-size:14px;"&gt;'
 +'&lt;div&gt;&lt;div style="color:#888;font-size:12px;"&gt;행운의 숫자&lt;/div&gt;&lt;b style="font-size:20px;color:#047857;"&gt;'+luckyNum+'&lt;/b&gt;&lt;/div&gt;'
 +'&lt;div&gt;&lt;div style="color:#888;font-size:12px;"&gt;행운의 색&lt;/div&gt;&lt;b style="font-size:18px;color:#047857;"&gt;'+color+'&lt;/b&gt;&lt;/div&gt;'
 +'&lt;div&gt;&lt;div style="color:#888;font-size:12px;"&gt;행운의 방향&lt;/div&gt;&lt;b style="font-size:18px;color:#047857;"&gt;'+dir+'&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;';
 return h;
}
STARS.forEach(function(s){$('hs-star-sel').add(new Option(s,s));});
ZOD.forEach(function(s){$('hs-zodiac-sel').add(new Option(s+'띠',s));});
function hash(s){var h=5;for(var i=0;i&lt;s.length;i++)h=(h*33+s.charCodeAt(i))%2000003;return h;}
function todaySeed(){var d=new Date();return ''+d.getFullYear()+(d.getMonth()+1)+d.getDate();}
function pick(arr,seed){return arr[hash(seed)%arr.length];}
var out=$('hs-out');
// 탭
[].forEach.call(document.querySelectorAll('.hs-tab'),function(b){b.onclick=function(){
 [].forEach.call(document.querySelectorAll('.hs-tab'),function(x){x.style.background='#e5e7eb';x.style.color='#333';});
 b.style.background=b.getAttribute('data-t')==='tarot'?'#7c3aed':'#059669';b.style.color='#fff';
 ['star','zodiac','tarot'].forEach(function(t){$('hs-'+t).style.display=t===b.getAttribute('data-t')?'block':'none';});
 out.style.display='none';
};});
[].forEach.call(document.querySelectorAll('.hs-go'),function(b){b.onclick=function(){
 var t=b.getAttribute('data-t'), seed=todaySeed();
 if(t==='tarot'){
 var c=TAROT[Math.floor(Math.random()*TAROT.length)];
 out.innerHTML='&lt;div style="text-align:center;"&gt;&lt;div style="font-size:40px;"&gt;🃏&lt;/div&gt;&lt;div style="font-size:19px;font-weight:800;color:#7c3aed;margin:6px 0;"&gt;'+c[0]+'&lt;/div&gt;&lt;div style="font-size:15px;color:#333;line-height:1.6;"&gt;'+c[1]+'&lt;/div&gt;&lt;/div&gt;';
 } else if(t==='zodiac'){
 // 띠별 = fortune 리치 포맷
 var zi=$('hs-zodiac-sel').selectedIndex;
 out.innerHTML=renderZodiac(zi);
 } else {
 var sel=$('hs-'+t+'-sel').value, s=seed+sel;
 var score=hash(s+'g')%41+59; // 59~99
 out.innerHTML='&lt;div style="font-weight:800;font-size:17px;margin-bottom:8px;"&gt;'+ (t==='zodiac'?sel+'띠':sel) +' · 오늘의 운세&lt;/div&gt;'
 +'&lt;div style="text-align:center;font-size:30px;font-weight:800;color:#059669;margin-bottom:10px;"&gt;'+score+'점&lt;/div&gt;'
 +'&lt;div style="line-height:1.9;font-size:14.5px;"&gt;'
 +'🌈 &lt;b&gt;총운&lt;/b&gt; '+pick(GEN,s+'gen')+'&lt;br&gt;'
 +'💗 &lt;b&gt;애정&lt;/b&gt; '+pick(LOVE,s+'love')+'&lt;br&gt;'
 +'💰 &lt;b&gt;금전&lt;/b&gt; '+pick(MONEY,s+'money')+'&lt;br&gt;'
 +'🩺 &lt;b&gt;건강&lt;/b&gt; '+pick(HEALTH,s+'health')+'&lt;/div&gt;'
 +'&lt;div style="margin-top:10px;font-size:13px;color:#555;"&gt;행운의 숫자 &lt;b&gt;'+(hash(s+'num')%9+1)+'&lt;/b&gt; · 행운의 색 &lt;b&gt;'+pick(COLORS,s+'col')+'&lt;/b&gt;&lt;/div&gt;';
 }
 out.style.display='block';
};});
})();
&lt;/script&gt;
&lt;h2 id="오늘의-운세-어떻게-봐요"&gt;오늘의 운세, 어떻게 봐요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;별자리·띠별 운세&lt;/strong&gt;는 날짜 기준으로 정해져서 &lt;strong&gt;하루 동안 같은 결과&lt;/strong&gt;가 나와요. 내일이면 새로 바뀌어요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;총운·애정·금전·건강&lt;/strong&gt; 네 가지와 행운의 숫자·색을 함께 봐요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;타로&lt;/strong&gt;는 뽑을 때마다 한 장씩 나와요. 마음속 질문을 떠올리고 뽑아 보세요.&lt;/li&gt;
&lt;li&gt;재미로 보는 운세예요. 좋은 운세는 힘을 주고, 아쉬운 운세는 조심하라는 신호로 가볍게 받아들여요 🍀&lt;/li&gt;
&lt;li&gt;더 많은 도구는 &lt;a class="link" href="https://planfully.ai.kr/tools/" &gt;도구방&lt;/a&gt;에서 만나요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>이름궁합·MBTI 궁합 — 우리 잘 맞을까?</title><link>https://planfully.ai.kr/tools/love-match/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/love-match/</guid><description>&lt;p&gt;두 사람 이름으로 보는 &lt;strong&gt;이름궁합&lt;/strong&gt;과 MBTI 유형으로 보는 &lt;strong&gt;MBTI 궁합&lt;/strong&gt;을 재미로 확인해요. (같은 입력엔 항상 같은 결과가 나와요)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:500px;margin:0 auto;"&gt;
 &lt;div style="font-weight:700;color:#be185d;"&gt;💗 이름궁합&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:8px;"&gt;
 &lt;input type="text" id="lm-n1" placeholder="내 이름" style="flex:1;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;input type="text" id="lm-n2" placeholder="상대 이름" style="flex:1;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;/div&gt;
 &lt;button id="lm-name-go" style="width:100%;margin-top:10px;padding:12px;border:0;border-radius:10px;background:#be185d;color:#fff;font-weight:700;cursor:pointer;"&gt;이름궁합 보기&lt;/button&gt;
 &lt;div id="lm-name-out" style="display:none;margin-top:12px;padding:16px;border-radius:12px;background:#fdf2f8;text-align:center;"&gt;&lt;/div&gt;
 &lt;div style="font-weight:700;color:#7c3aed;margin-top:22px;"&gt;🧠 MBTI 궁합&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:8px;"&gt;
 &lt;select id="lm-m1" style="flex:1;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:15px;box-sizing:border-box;background:#fff;"&gt;&lt;/select&gt;
 &lt;select id="lm-m2" style="flex:1;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:15px;box-sizing:border-box;background:#fff;"&gt;&lt;/select&gt;
 &lt;/div&gt;
 &lt;button id="lm-mbti-go" style="width:100%;margin-top:10px;padding:12px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-weight:700;cursor:pointer;"&gt;MBTI 궁합 보기&lt;/button&gt;
 &lt;div id="lm-mbti-out" style="display:none;margin-top:12px;padding:16px;border-radius:12px;background:#f5f3ff;text-align:center;"&gt;&lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:12px;"&gt;※ 재미로 보는 궁합이에요. 이름궁합은 이름을 숫자로 바꿔 계산하는 놀이고, MBTI 궁합은 유형 성향을 단순화한 참고용이에요. 진짜 궁합은 서로 대화로 만들어가는 거예요 😊&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function hash(s){var h=7;for(var i=0;i&lt;s.length;i++){h=(h*31+s.charCodeAt(i))%1000003;}return h;}
// 이름궁합
$('lm-name-go').onclick=function(){
 var a=($('lm-n1').value||'').trim(), b=($('lm-n2').value||'').trim();
 if(!a||!b){alert('두 사람 이름을 입력해 주세요');return;}
 var key=[a,b].sort().join('♥');
 var pct=hash(key)%60+40; // 40~99
 var msg = pct&gt;=90?'천생연분! 서로에게 딱이에요 💞':pct&gt;=75?'꽤 잘 어울려요. 좋은 인연이에요 💗':pct&gt;=60?'노력하면 잘 맞아요. 대화가 열쇠예요 🙂':'다른 매력이 끌릴 수 있어요. 천천히 알아가요 🌱';
 $('lm-name-out').innerHTML='&lt;div style="font-size:14px;color:#555;"&gt;'+a+' ♥ '+b+'&lt;/div&gt;&lt;div style="font-size:38px;font-weight:800;color:#be185d;margin:4px 0;"&gt;'+pct+'%&lt;/div&gt;&lt;div style="font-size:14px;color:#333;"&gt;'+msg+'&lt;/div&gt;';
 $('lm-name-out').style.display='block';
};
// MBTI
var TYPES=['INTJ','INTP','ENTJ','ENTP','INFJ','INFP','ENFJ','ENFP','ISTJ','ISFJ','ESTJ','ESFJ','ISTP','ISFP','ESTP','ESFP'];
var s1=$('lm-m1'),s2=$('lm-m2');
TYPES.forEach(function(t){s1.add(new Option(t,t));s2.add(new Option(t,t));});
s2.selectedIndex=7;
function mbtiScore(a,b){
 var sc=55;
 if(a[0]!==b[0])sc+=10; else sc+=4; // E/I 상호보완
 if(a[1]===b[1])sc+=16; else sc-=4; // S/N 세계관 공유가 큼
 if(a[2]!==b[2])sc+=8; else sc+=6; // T/F
 if(a[3]!==b[3])sc+=8; else sc+=6; // J/P
 return Math.max(40,Math.min(99,sc));
}
$('lm-mbti-go').onclick=function(){
 var a=s1.value,b=s2.value;
 var pct=mbtiScore(a,b);
 var msg=pct&gt;=88?'환상의 케미! 서로 배우고 채워줘요 ✨':pct&gt;=74?'잘 맞는 편이에요. 대화가 잘 통해요 👍':pct&gt;=60?'다르지만 그래서 끌려요. 존중이 포인트 🤝':'많이 달라요. 서로의 방식을 이해하려 노력해요 🌿';
 $('lm-mbti-out').innerHTML='&lt;div style="font-size:15px;color:#555;font-weight:700;"&gt;'+a+' ✕ '+b+'&lt;/div&gt;&lt;div style="font-size:38px;font-weight:800;color:#7c3aed;margin:4px 0;"&gt;'+pct+'%&lt;/div&gt;&lt;div style="font-size:14px;color:#333;"&gt;'+msg+'&lt;/div&gt;';
 $('lm-mbti-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="궁합-재미로-보는-법"&gt;궁합, 재미로 보는 법
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;이름궁합&lt;/strong&gt;은 옛날부터 하던 놀이예요. 두 이름을 숫자로 바꿔 더해가며 % 를 내는 방식인데, 이 계산기는 같은 이름 조합엔 &lt;strong&gt;항상 같은 결과&lt;/strong&gt;가 나오게 만들었어요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MBTI 궁합&lt;/strong&gt;은 유형의 성향을 단순화한 참고예요. 보통 &lt;strong&gt;세계관(S/N)이 같으면&lt;/strong&gt; 대화가 잘 통하고, &lt;strong&gt;에너지 방향(E/I)이 다르면&lt;/strong&gt; 서로를 채워준다고들 해요.&lt;/li&gt;
&lt;li&gt;진짜 궁합은 성격 유형이나 이름이 아니라, &lt;strong&gt;서로를 이해하려는 노력&lt;/strong&gt;에서 나와요. 가볍게 웃으며 즐겨주세요 😊&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://planfully.ai.kr/tests/personality-test/" &gt;성격유형 테스트&lt;/a&gt;와 &lt;a class="link" href="https://planfully.ai.kr/tests/love-style/" &gt;연애 스타일 테스트&lt;/a&gt;도 있어요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>자동차세·취득세 계산기 — 배기량·차령별 연세액</title><link>https://planfully.ai.kr/tools/car-tax/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/car-tax/</guid><description>&lt;p&gt;배기량과 **차령(등록 후 연수)**을 넣으면 연간 자동차세(지방교육세 포함)를, 취득가액으로 취득세를 계산합니다. (비영업용 승용차 기준)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:500px;margin:0 auto;"&gt;
 &lt;div style="font-weight:700;color:#059669;"&gt;🚗 자동차세 (연간)&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:8px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;배기량 (cc)&lt;/span&gt;&lt;input type="tel" id="ct-cc" inputmode="numeric" placeholder="예: 1998" style="width:100%;padding:11px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;차령 (등록 후 연수)&lt;/span&gt;&lt;input type="tel" id="ct-age" inputmode="numeric" placeholder="예: 3" style="width:100%;padding:11px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:flex;align-items:center;gap:8px;margin-top:8px;font-size:14px;"&gt;&lt;input type="checkbox" id="ct-ev" style="width:17px;height:17px;"&gt; 전기차·수소차 (정액 13만원)&lt;/label&gt;
 &lt;div style="font-weight:700;color:#2563eb;margin-top:16px;"&gt;💰 취득세 (구입 시 1회)&lt;/div&gt;
 &lt;label style="display:block;margin-top:8px;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;차량 취득가액 (만원)&lt;/span&gt;&lt;input type="tel" id="ct-price" inputmode="numeric" placeholder="예: 3000" style="width:100%;padding:11px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="display:flex;align-items:center;gap:8px;margin-top:8px;font-size:14px;"&gt;&lt;input type="checkbox" id="ct-light" style="width:17px;height:17px;"&gt; 경차 (취득세 4%)&lt;/label&gt;
 &lt;button id="ct-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="ct-out" style="display:none;margin-top:20px;"&gt;
 &lt;table style="width:100%;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="ct-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 자동차세=배기량×cc당 세율(≤1000cc 80원·≤1600cc 140원·초과 200원)+지방교육세 30%. 차령 3년차부터 매년 5%씩 최대 50% 할인. 취득세=취득가액×7%(경차 4%·전기차 감면 별도). 연납 신청 시 자동차세 할인.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#ct-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#ct-rows td:last-child{text-align:right;font-weight:700;}#ct-rows tr.hl td{color:#047857;border-top:2px solid #059669;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){return Math.round(w).toLocaleString()+'원';}
$('ct-go').onclick=function(){
 var cc=parseInt($('ct-cc').value)||0;
 var age=parseInt($('ct-age').value)||0;
 var ev=$('ct-ev').checked;
 var price=(parseFloat($('ct-price').value)||0)*10000;
 var light=$('ct-light').checked;
 var rows='';
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 // 자동차세
 if(ev){
 var evTax=130000*1.3;
 rows+=row('자동차세 (전기·수소차 정액)', won(130000))
 + row('지방교육세 (30%)', won(130000*0.3))
 + row('연 자동차세 합계', won(evTax), true);
 } else if(cc&gt;0){
 var per = cc&lt;=1000?80:(cc&lt;=1600?140:200);
 var base=cc*per;
 var edu=base*0.3;
 var full=base+edu;
 // 차령 할인: 3년차 5%, 최대 50%(12년차)
 var disc=age&gt;=3?Math.min((age-2)*5,50):0;
 var final=full*(1-disc/100);
 rows+=row('cc당 세율', per+'원 × '+cc.toLocaleString()+'cc')
 + row('자동차세 (본세)', won(base))
 + row('지방교육세 (30%)', won(edu))
 + row('차령 할인', disc+'% (차령 '+age+'년)')
 + row('연 자동차세 (할인 후)', won(final), true);
 }
 // 취득세
 if(price&gt;0){
 var rate=light?0.04:0.07;
 rows+=row('취득세율', (rate*100)+'%'+(light?' (경차)':''))
 + row('취득세 (구입 시 1회)', won(price*rate), true);
 }
 $('ct-rows').innerHTML=rows||'&lt;tr&gt;&lt;td&gt;배기량 또는 취득가액을 입력해 주세요&lt;/td&gt;&lt;/tr&gt;';
 $('ct-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="자동차세-이렇게-붙어요"&gt;자동차세, 이렇게 붙어요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;자동차세(연간)&lt;/strong&gt; = 배기량 × cc당 세율 + 지방교육세(30%).
&lt;ul&gt;
&lt;li&gt;1,000cc 이하: 80원/cc · 1,600cc 이하: 140원/cc · 1,600cc 초과: 200원/cc&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;차령 할인&lt;/strong&gt;: 등록 후 3년차부터 매년 5%씩 깎여서 &lt;strong&gt;최대 50%&lt;/strong&gt;(12년차 이상)까지 줄어요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;연납 할인&lt;/strong&gt;: 1월에 1년치를 한 번에 내면 일정액을 할인해줘요(매년 할인율 변동).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;취득세(구입 시 1회)&lt;/strong&gt;: 취득가액의 &lt;strong&gt;7%&lt;/strong&gt;(경차 4%). 전기차·다자녀 등은 감면이 있어요.&lt;/li&gt;
&lt;li&gt;전기·수소차는 배기량이 없어 &lt;strong&gt;정액 13만원&lt;/strong&gt;(비영업용)이에요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>재산세 계산기 — 주택 공시가격으로 재산세·도시지역분·지방교육세</title><link>https://planfully.ai.kr/tools/property-tax/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/property-tax/</guid><description>&lt;p&gt;주택 &lt;strong&gt;공시가격&lt;/strong&gt;과 &lt;strong&gt;1세대 1주택자&lt;/strong&gt; 여부를 넣으면 과세표준·재산세 본세·도시지역분·지방교육세와 &lt;strong&gt;총 납부액&lt;/strong&gt;을 계산합니다. (2026년 주택 기준)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;주택 공시가격 (만원)&lt;/span&gt;&lt;input type="tel" id="pt-price" inputmode="numeric" placeholder="예: 30000 (3억원)" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="display:flex;align-items:center;gap:8px;margin-top:12px;font-size:14px;"&gt;&lt;input type="checkbox" id="pt-one" style="width:17px;height:17px;"&gt; 1세대 1주택자 (공정시장가액비율 특례 43~45%)&lt;/label&gt;
 &lt;label style="display:flex;align-items:center;gap:8px;margin-top:8px;font-size:14px;"&gt;&lt;input type="checkbox" id="pt-urban" checked style="width:17px;height:17px;"&gt; 도시지역(재산세 도시지역분 부과)&lt;/label&gt;
 &lt;button id="pt-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#d97757;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="pt-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#fdf5f2;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;총 납부액 (재산세+도시지역분+지방교육세)&lt;/div&gt;
 &lt;div id="pt-big" style="font-size:30px;font-weight:800;color:#c65f3f;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="pt-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 과세표준=공시가격×공정시장가액비율(주택 60%, 1주택 특례 3억↓ 43%·3억~6억 44%·6억↑ 45%). 재산세 본세=주택 누진세율(6천만↓ 0.1%, ~1.5억 0.15%, ~3억 0.25%, 3억↑ 0.4%). 도시지역분=과세표준×0.14%. 지방교육세=재산세 본세×20%. 1주택 특례세율(0.05~0.4%)은 별도로, 여기선 표준세율 기준입니다.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#pt-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#pt-rows td:last-child{text-align:right;font-weight:700;}#pt-rows tr.hl td{color:#c65f3f;border-top:2px solid #d97757;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){return Math.round(w).toLocaleString()+'원';}
// 주택 표준세율 누진(과세표준 기준), 누진공제 방식
// 6천만↓ 0.1% / ~1.5억 0.15%(-3만) / ~3억 0.25%(-18만) / 3억↑ 0.4%(-63만)
function propTax(base){
 if(base&lt;=60000000) return base*0.001;
 if(base&lt;=150000000) return base*0.0015-30000;
 if(base&lt;=300000000) return base*0.0025-180000;
 return base*0.004-630000;
}
function fmvRate(price,one){
 if(!one) return 0.60;
 if(price&lt;=300000000) return 0.43;
 if(price&lt;=600000000) return 0.44;
 return 0.45;
}
$('pt-go').onclick=function(){
 var price=(parseFloat($('pt-price').value)||0)*10000;
 if(price&lt;=0){alert('공시가격(만원)을 입력해 주세요');return;}
 var one=$('pt-one').checked, urban=$('pt-urban').checked;
 var rate=fmvRate(price,one);
 var base=price*rate;
 var main=propTax(base);
 var urbanTax=urban?base*0.0014:0;
 var eduTax=main*0.20;
 var total=main+urbanTax+eduTax;
 $('pt-big').textContent=won(total);
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('pt-rows').innerHTML=
 row('공시가격', won(price))
 +row('공정시장가액비율', (rate*100)+'%'+(one?' (1주택 특례)':' (일반)'))
 +row('과세표준', won(base))
 +row('재산세 본세', won(main))
 +(urban?row('도시지역분 (과표×0.14%)', won(urbanTax)):'')
 +row('지방교육세 (본세×20%)', won(eduTax))
 +row('총 납부액', won(total), true);
 $('pt-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="주택-재산세-이렇게-붙어요-2026년-기준"&gt;주택 재산세, 이렇게 붙어요 (2026년 기준)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;과세표준&lt;/strong&gt; = 공시가격 × &lt;strong&gt;공정시장가액비율&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;일반 주택은 &lt;strong&gt;60%&lt;/strong&gt;, 1세대 1주택자는 특례로 **공시가격 3억 이하 43% · 3억~6억 44% · 6억 초과 45%**로 더 낮게 적용돼요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;재산세 본세(주택 표준 누진세율)&lt;/strong&gt;: 과세표준 기준
&lt;ul&gt;
&lt;li&gt;6,000만원 이하 &lt;strong&gt;0.1%&lt;/strong&gt; · 6,000만&lt;del&gt;1.5억 &lt;strong&gt;0.15%&lt;/strong&gt; · 1.5억&lt;/del&gt;3억 &lt;strong&gt;0.25%&lt;/strong&gt; · 3억 초과 &lt;strong&gt;0.4%&lt;/strong&gt; (각 구간 초과분 누진).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;도시지역분&lt;/strong&gt; = 과세표준 × &lt;strong&gt;0.14%&lt;/strong&gt; (도시계획구역 내 주택에 추가).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;지방교육세&lt;/strong&gt; = 재산세 본세 × &lt;strong&gt;20%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;주택 재산세는 &lt;strong&gt;7월(1기분)·9월(2기분)에 반씩&lt;/strong&gt; 나눠 내요(세액 20만원 이하면 7월에 한 번에).&lt;/li&gt;
&lt;li&gt;이 계산기는 &lt;strong&gt;표준세율&lt;/strong&gt; 기준이에요. 1세대 1주택 특례세율(0.05~0.4%)이 적용되면 본세가 더 줄 수 있어요. 정확한 세액은 지자체 고지서·위택스로 확인하세요.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;세율·비율은 &lt;a class="link" href="https://simpletax.kr/taxRate/propertyTaxRate" target="_blank" rel="noopener"
 &gt;심플택스 2026 재산세율표&lt;/a&gt;와 &lt;a class="link" href="https://www.law.go.kr/LSW/lumLsLinkPop.do?lspttninfSeq=120262" target="_blank" rel="noopener"
 &gt;지방세법 시행령&lt;/a&gt;, 2026년 1주택자 공정시장가액비율 특례 기준을 참고했어요.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>주휴수당·시급 계산기 — 주급·월급 환산 (2026 최저 10,320원)</title><link>https://planfully.ai.kr/tools/hourly-wage/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/hourly-wage/</guid><description>&lt;p&gt;시급과 &lt;strong&gt;주 근로시간&lt;/strong&gt;을 넣으면 주휴수당과 주급·월급 환산액을 계산합니다. 2026년 최저임금은 &lt;strong&gt;시간당 10,320원&lt;/strong&gt;이에요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:10px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;시급 (원)&lt;/span&gt;&lt;input type="tel" id="hw-rate" inputmode="numeric" value="10320" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;주 근로시간&lt;/span&gt;&lt;input type="tel" id="hw-hrs" inputmode="decimal" placeholder="예: 20" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="hw-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="hw-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;주휴수당 포함 · 월급 환산&lt;/div&gt;
 &lt;div id="hw-big" style="font-size:34px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="hw-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div id="hw-tip" style="margin-top:12px;font-size:13.5px;"&gt;&lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 주휴수당 = (주 근로시간 ÷ 40) × 8 × 시급, &lt;b&gt;주 15시간 이상&lt;/b&gt; 근무 시 지급. 월급 환산은 주급 × 4.345주(=52.14주/12개월). 4대보험·세금 공제 전 금액이에요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#hw-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#hw-rows td:last-child{text-align:right;font-weight:700;}#hw-rows tr.hl td{color:#047857;border-top:2px solid #059669;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){return Math.round(w).toLocaleString()+'원';}
var MIN=10320;
$('hw-go').onclick=function(){
 var rate=parseFloat($('hw-rate').value)||0;
 var hrs=parseFloat($('hw-hrs').value)||0;
 if(!rate||!hrs){alert('시급과 주 근로시간을 입력해 주세요');return;}
 var weekWork=rate*hrs;
 var holiHours = hrs&gt;=15 ? Math.min(hrs,40)/40*8 : 0;
 var holiPay=holiHours*rate;
 var weekTotal=weekWork+holiPay;
 var month=weekTotal*4.345;
 $('hw-big').textContent=won(month);
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('hw-rows').innerHTML=
 row('주 근로수당 ('+hrs+'시간)', won(weekWork))
 +row('주휴수당'+(hrs&gt;=15?' ('+holiHours.toFixed(1)+'시간분)':' (주15시간 미만=없음)'), won(holiPay))
 +row('주급 (주휴 포함)', won(weekTotal), true)
 +row('월급 환산 (×4.345주)', won(month))
 +row('연봉 환산', won(month*12));
 var tips=[];
 if(rate&lt;MIN) tips.push('&lt;div style="padding:10px 12px;background:#fef2f2;border-radius:8px;color:#b91c1c;"&gt;⚠️ 시급이 2026년 최저임금(10,320원)보다 낮아요. 최저임금 위반일 수 있어요.&lt;/div&gt;');
 if(hrs&gt;=15) tips.push('&lt;div style="padding:10px 12px;background:#fffbeb;border-radius:8px;"&gt;💡 주 15시간 이상이라 &lt;b&gt;주휴수당&lt;/b&gt;을 받을 수 있어요. 안 주면 임금체불이에요.&lt;/div&gt;');
 else tips.push('&lt;div style="padding:10px 12px;background:#fffbeb;border-radius:8px;"&gt;💡 주 15시간 미만은 주휴수당이 없어요. 15시간만 넘겨도 주휴수당이 붙어요.&lt;/div&gt;');
 if(hrs&gt;40) tips.push('&lt;div style="padding:10px 12px;background:#eff6ff;border-radius:8px;"&gt;📌 주 40시간 초과분은 &lt;b&gt;연장근로수당(1.5배)&lt;/b&gt; 대상이에요(5인 이상 사업장). 이 계산기엔 미반영.&lt;/div&gt;');
 $('hw-tip').innerHTML=tips.join('');
 $('hw-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="주휴수당-놓치지-마세요"&gt;주휴수당, 놓치지 마세요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;주휴수당&lt;/strong&gt;이란: 1주 동안 정해진 근무일을 다 채우면, &lt;strong&gt;일하지 않은 하루치 임금&lt;/strong&gt;을 더 주는 제도예요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;조건&lt;/strong&gt;: 1주 &lt;strong&gt;소정근로시간 15시간 이상&lt;/strong&gt; + 그 주의 소정근로일을 개근.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;계산&lt;/strong&gt;: &lt;code&gt;주휴수당 = (주 근로시간 ÷ 40) × 8 × 시급&lt;/code&gt;. 주 40시간이면 8시간분, 주 20시간이면 4시간분이에요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2026년 최저임금&lt;/strong&gt;: 시간당 &lt;strong&gt;10,320원&lt;/strong&gt;(2025년보다 2.9% 인상). 주 40시간+주휴 기준 월 약 215만 원.&lt;/li&gt;
&lt;li&gt;알바·파트타임도 주휴수당 대상이에요. 안 주면 임금체불로 신고할 수 있어요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>칼로리·기초대사량(BMR) 계산기 — 유지·다이어트 칼로리</title><link>https://planfully.ai.kr/tools/calorie/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/calorie/</guid><description>&lt;p&gt;성별·나이·키·몸무게·활동량을 넣으면 **기초대사량(BMR)**과 하루 &lt;strong&gt;유지/다이어트/증량 칼로리&lt;/strong&gt;를 계산합니다. (Mifflin-St Jeor 공식)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:500px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:10px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;성별&lt;/span&gt;
 &lt;select id="cl-sex" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;&lt;option value="m"&gt;남성&lt;/option&gt;&lt;option value="f"&gt;여성&lt;/option&gt;&lt;/select&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;나이&lt;/span&gt;&lt;input type="tel" id="cl-age" inputmode="numeric" placeholder="30" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;키 (cm)&lt;/span&gt;&lt;input type="tel" id="cl-h" inputmode="decimal" placeholder="170" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;몸무게 (kg)&lt;/span&gt;&lt;input type="tel" id="cl-w" inputmode="decimal" placeholder="65" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:block;margin-top:12px;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;활동량&lt;/span&gt;
 &lt;select id="cl-act" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;
 &lt;option value="1.2"&gt;거의 안 함 (좌식 생활)&lt;/option&gt;
 &lt;option value="1.375"&gt;가벼운 운동 (주 1~3회)&lt;/option&gt;
 &lt;option value="1.55" selected&gt;보통 운동 (주 3~5회)&lt;/option&gt;
 &lt;option value="1.725"&gt;활발한 운동 (주 6~7회)&lt;/option&gt;
 &lt;option value="1.9"&gt;매우 활발 (육체노동·운동선수)&lt;/option&gt;
 &lt;/select&gt;&lt;/label&gt;
 &lt;button id="cl-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="cl-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:18px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;하루 유지 칼로리 (TDEE)&lt;/div&gt;
 &lt;div id="cl-big" style="font-size:34px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="cl-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 기초대사량(BMR)=가만히 있어도 쓰는 최소 칼로리. 유지 칼로리(TDEE)=BMR×활동계수. 다이어트는 유지−500(주 약 0.5kg 감량), 증량은 유지+300~500. 개인차가 있으니 2주 체중변화로 보정하세요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#cl-rows td{padding:9px 6px;border-bottom:1px solid #eee;}#cl-rows td:last-child{text-align:right;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
$('cl-go').onclick=function(){
 var sex=$('cl-sex').value, age=parseFloat($('cl-age').value)||0, h=parseFloat($('cl-h').value)||0, w=parseFloat($('cl-w').value)||0, act=parseFloat($('cl-act').value);
 if(!age||!h||!w){alert('나이·키·몸무게를 입력해 주세요');return;}
 var bmr=10*w+6.25*h-5*age+(sex==='m'?5:-161);
 var tdee=bmr*act;
 $('cl-big').textContent=Math.round(tdee).toLocaleString()+' kcal';
 function row(l,v,c){return '&lt;tr&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td'+(c?' style="color:'+c+';"':'')+'&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('cl-rows').innerHTML=
 row('기초대사량 (BMR)', Math.round(bmr).toLocaleString()+' kcal')
 +row('하루 유지 칼로리 (TDEE)', Math.round(tdee).toLocaleString()+' kcal')
 +row('다이어트 (−500)', Math.round(tdee-500).toLocaleString()+' kcal','#dc2626')
 +row('완만한 감량 (−300)', Math.round(tdee-300).toLocaleString()+' kcal')
 +row('증량 (+400)', Math.round(tdee+400).toLocaleString()+' kcal','#1d4ed8')
 +row('권장 단백질 (체중×1.6g)', Math.round(w*1.6)+' g');
 $('cl-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="칼로리-이렇게-잡으세요"&gt;칼로리, 이렇게 잡으세요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;기초대사량(BMR)&lt;/strong&gt;: 숨쉬고 심장 뛰는 데만 쓰는 최소 에너지. 근육이 많을수록 높아요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;유지 칼로리(TDEE)&lt;/strong&gt; = BMR × 활동계수. 이만큼 먹으면 체중이 유지돼요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;다이어트&lt;/strong&gt;: 유지 칼로리에서 &lt;strong&gt;하루 500kcal 덜&lt;/strong&gt; 먹으면 주 약 0.5kg 빠져요. 너무 적게(BMR 이하) 먹으면 근손실·요요가 와요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;증량&lt;/strong&gt;: 유지 + 300~500kcal + 근력운동.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;단백질&lt;/strong&gt;: 체중 1kg당 1.6~2.2g이 근육 유지·증가에 좋아요.&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://planfully.ai.kr/tools/bmi/" &gt;BMI(비만도)&lt;/a&gt;도 함께 확인해 보세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>퇴직금 계산기 — 평균임금 기준 예상 퇴직금 (2026)</title><link>https://planfully.ai.kr/tools/severance/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/severance/</guid><description>&lt;p&gt;입사일·퇴사일과 &lt;strong&gt;최근 3개월 급여&lt;/strong&gt;를 넣으면 1일 평균임금과 예상 퇴직금을 계산합니다. 상여금·연차수당도 법정 방식대로 반영해요. (근로기준법 평균임금 기준 근사 계산)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:10px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;입사일&lt;/span&gt;&lt;input type="date" id="sv-in" style="width:100%;padding:11px;border:2px solid #ccc;border-radius:10px;font-size:15px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;퇴사일(마지막 근무 다음날)&lt;/span&gt;&lt;input type="date" id="sv-out" style="width:100%;padding:11px;border:2px solid #ccc;border-radius:10px;font-size:15px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:block;margin-top:12px;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;최근 3개월 급여 총액 (세전, 만원)&lt;/span&gt;&lt;input type="tel" id="sv-pay" inputmode="numeric" placeholder="예: 900 (월300×3)" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;연간 상여금 (만원, 선택)&lt;/span&gt;&lt;input type="tel" id="sv-bonus" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;연차수당 (만원, 선택)&lt;/span&gt;&lt;input type="tel" id="sv-annual" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="sv-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;퇴직금 계산하기&lt;/button&gt;
 &lt;div id="sv-out2" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;예상 퇴직금 (세전)&lt;/div&gt;
 &lt;div id="sv-big" style="font-size:34px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="sv-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 1일 평균임금 = (3개월 급여 + 상여금×3/12 + 연차수당×3/12) ÷ 3개월 총일수. 퇴직금 = 1일 평균임금 × 30 × (재직일수 ÷ 365). 회사 규정·통상임금 비교 등으로 실제와 차이날 수 있어요. 1년 미만 근무는 퇴직금 대상이 아닙니다.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#sv-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#sv-rows td:last-child{text-align:right;font-weight:700;}#sv-rows tr.hl td{color:#047857;border-top:2px solid #059669;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){if(w&gt;=100000000)return (w/100000000).toFixed(2).replace(/\.?0+$/,'')+'억원';return Math.round(w).toLocaleString()+'원';}
$('sv-go').onclick=function(){
 var din=$('sv-in').value, dout=$('sv-out').value;
 var pay=(parseFloat($('sv-pay').value)||0)*10000;
 var bonus=(parseFloat($('sv-bonus').value)||0)*10000;
 var annual=(parseFloat($('sv-annual').value)||0)*10000;
 if(!din||!dout){alert('입사일과 퇴사일을 입력해 주세요');return;}
 var d1=new Date(din), d2=new Date(dout);
 var days=Math.round((d2-d1)/86400000);
 if(days&lt;=0){alert('퇴사일이 입사일보다 뒤여야 해요');return;}
 if(days&lt;365){alert('재직 1년 미만은 법정 퇴직금 대상이 아니에요 (재직일수 '+days+'일)');return;}
 // 최근 3개월 총일수(퇴사일 기준 역산 3개월)
 var d3=new Date(d2); d3.setMonth(d3.getMonth()-3);
 var months3=Math.round((d2-d3)/86400000);
 var base3=pay + bonus*3/12 + annual*3/12;
 var avgDaily=base3/months3; // 1일 평균임금
 var severance=avgDaily*30*(days/365);
 $('sv-big').textContent=won(severance);
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 var yy=Math.floor(days/365), mm=Math.floor((days%365)/30);
 $('sv-rows').innerHTML=
 row('재직일수', days.toLocaleString()+'일 (약 '+yy+'년 '+mm+'개월)')
 +row('최근 3개월 총일수', months3+'일')
 +row('평균임금 산정 총액', won(base3))
 +row('1일 평균임금', won(avgDaily))
 +row('30일분 × (재직일수/365)', '30 × '+(days/365).toFixed(2))
 +row('예상 퇴직금', won(severance), true);
 $('sv-out2').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="퇴직금-이렇게-계산돼요"&gt;퇴직금, 이렇게 계산돼요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;대상&lt;/strong&gt;: 1주 15시간 이상, &lt;strong&gt;1년 이상&lt;/strong&gt; 계속 근로한 근로자(정규·계약·알바 무관).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;공식&lt;/strong&gt;: &lt;code&gt;퇴직금 = 1일 평균임금 × 30일 × (재직일수 ÷ 365)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1일 평균임금&lt;/strong&gt;: 퇴직 전 &lt;strong&gt;3개월간 받은 임금 총액&lt;/strong&gt;을 그 기간의 총일수로 나눈 값. 여기에 상여금·연차수당은 &lt;strong&gt;연간액의 3/12&lt;/strong&gt;만큼 더해요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;통상임금과 비교&lt;/strong&gt;: 평균임금이 통상임금보다 적으면 통상임금으로 계산해요(근로자에게 유리한 쪽).&lt;/li&gt;
&lt;li&gt;실제 지급은 회사 규정·퇴직연금(DC/DB) 형태에 따라 달라질 수 있어요. 정확한 금액은 &lt;a class="link" href="https://www.moel.go.kr/retirementpayCal.do" target="_blank" rel="noopener"
 &gt;고용노동부 퇴직금 계산기&lt;/a&gt;에서도 확인하세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>평수 ↔ ㎡ 변환기 — 평 제곱미터 자동 계산</title><link>https://planfully.ai.kr/tools/pyeong/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/pyeong/</guid><description>&lt;p&gt;평수를 **제곱미터(㎡)**로, 제곱미터를 &lt;strong&gt;평수&lt;/strong&gt;로 바로 변환합니다. (1평 = 3.3058㎡)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:460px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;평 (평수)&lt;/span&gt;&lt;input type="tel" id="py-p" inputmode="decimal" placeholder="예: 34" style="width:100%;padding:14px;border:2px solid #ccc;border-radius:10px;font-size:18px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div style="text-align:center;color:#059669;font-size:22px;margin:8px 0;"&gt;⇅&lt;/div&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;제곱미터 (㎡)&lt;/span&gt;&lt;input type="tel" id="py-m" inputmode="decimal" placeholder="예: 112.4" style="width:100%;padding:14px;border:2px solid #ccc;border-radius:10px;font-size:18px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div id="py-out" style="margin-top:16px;text-align:center;padding:18px;border-radius:12px;background:#ecfdf5;font-size:17px;color:#047857;font-weight:700;min-height:24px;"&gt;&lt;/div&gt;
 &lt;div id="py-quick" style="margin-top:14px;"&gt;&lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:10px;"&gt;※ 1평 = 3.305785㎡ (= 400/121). 아파트 분양·등기부 면적은 ㎡로 표기해요. "국민평형 84㎡ = 약 25.4평(전용면적)".&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var K=3.3057851;
var p=$('py-p'), m=$('py-m'), out=$('py-out');
function fmt(n){return (Math.round(n*100)/100).toLocaleString();}
p.addEventListener('input',function(){
 var v=parseFloat(p.value);
 if(isNaN(v)){m.value='';out.textContent='';return;}
 var mm=v*K; m.value=fmt(mm);
 out.textContent=fmt(v)+'평 = '+fmt(mm)+'㎡';
});
m.addEventListener('input',function(){
 var v=parseFloat(m.value);
 if(isNaN(v)){p.value='';out.textContent='';return;}
 var pp=v/K; p.value=fmt(pp);
 out.textContent=fmt(v)+'㎡ = '+fmt(pp)+'평';
});
// 자주 찾는 평형 빠른 표
var rows=[[59,'전용 59㎡'],[74,'전용 74㎡'],[84,'국민평형 84㎡'],[101,'전용 101㎡'],[114,'전용 114㎡']];
$('py-quick').innerHTML='&lt;div style="font-size:13px;color:#555;margin-bottom:6px;font-weight:700;"&gt;자주 찾는 아파트 평형&lt;/div&gt;'+
 rows.map(function(r){return '&lt;div style="display:flex;justify-content:space-between;padding:6px 4px;border-bottom:1px solid #eee;font-size:14px;"&gt;&lt;span&gt;'+r[1]+'&lt;/span&gt;&lt;b&gt;약 '+fmt(r[0]/K)+'평&lt;/b&gt;&lt;/div&gt;';}).join('');
})();
&lt;/script&gt;
&lt;h2 id="평수-변환-이것만-알면-돼요"&gt;평수 변환, 이것만 알면 돼요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1평 = 3.3058㎡&lt;/strong&gt; (정확히는 400/121㎡). 반대로 &lt;strong&gt;1㎡ = 0.3025평&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;빠른 암산&lt;/strong&gt;: ㎡에 &lt;strong&gt;0.3&lt;/strong&gt;을 곱하면 대략 평수예요. (84㎡ × 0.3 ≈ 25평)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;전용면적 vs 공급면적&lt;/strong&gt;: 아파트 &amp;ldquo;84㎡&amp;ldquo;는 보통 &lt;strong&gt;전용면적&lt;/strong&gt;(약 25.4평)이고, 분양 광고의 &amp;ldquo;34평&amp;quot;은 발코니·공용부 포함 &lt;strong&gt;공급면적&lt;/strong&gt;인 경우가 많아 서로 달라요.&lt;/li&gt;
&lt;li&gt;등기부·분양계약서는 ㎡가 공식 단위예요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>프리랜서 3.3%·종합소득세 계산기 — 원천징수·5월 정산</title><link>https://planfully.ai.kr/tools/freelancer-tax/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/freelancer-tax/</guid><description>&lt;p&gt;프리랜서·사업소득의 &lt;strong&gt;3.3% 원천징수&lt;/strong&gt;액과 5월 &lt;strong&gt;종합소득세&lt;/strong&gt; 예상 납부·환급액을 계산합니다. (2026년 종합소득세율 기준)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:500px;margin:0 auto;"&gt;
 &lt;label style="display:block;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;연 총수입 (세전, 만원)&lt;/span&gt;&lt;input type="tel" id="fl-inc" inputmode="numeric" placeholder="예: 4000" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="display:block;margin-top:12px;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;필요경비 (만원)&lt;/span&gt;&lt;input type="tel" id="fl-exp" inputmode="numeric" placeholder="예: 1000" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;span style="font-size:12px;color:#999;"&gt;실제 경비 또는 업종별 경비율 적용액. 모르면 수입의 60~70% 정도로.&lt;/span&gt;&lt;/label&gt;
 &lt;label style="display:block;margin-top:12px;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;기타 소득공제 (만원, 선택)&lt;/span&gt;&lt;input type="tel" id="fl-ded" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;span style="font-size:12px;color:#999;"&gt;국민연금·노란우산·인적공제 추가분 등&lt;/span&gt;&lt;/label&gt;
 &lt;button id="fl-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;세금 계산하기&lt;/button&gt;
 &lt;div id="fl-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;" id="fl-card"&gt;
 &lt;div id="fl-lbl" style="font-size:15px;color:#555;"&gt;&lt;/div&gt;
 &lt;div id="fl-big" style="font-size:34px;font-weight:800;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="fl-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 3.3%(소득세 3%+지방세 0.3%)는 미리 뗀 세금(기납부). 5월 종합소득세 신고로 실제 세금과 정산해요. 여기선 본인 기본공제(150만)만 반영한 간이 계산이라, 다른 공제·세액공제로 실제와 차이나요. 성실신고·경비 증빙이 중요해요.&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#fl-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#fl-rows td:last-child{text-align:right;font-weight:700;}#fl-rows tr.hl td{border-top:2px solid #059669;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
function won(w){if(w&gt;=100000000)return (w/100000000).toFixed(2).replace(/\.?0+$/,'')+'억원';return Math.round(w).toLocaleString()+'원';}
function tax(base){base=Math.max(base,0);
 if(base&lt;=14000000)return base*0.06;
 if(base&lt;=50000000)return base*0.15-1260000;
 if(base&lt;=88000000)return base*0.24-5760000;
 if(base&lt;=150000000)return base*0.35-15440000;
 if(base&lt;=300000000)return base*0.38-19940000;
 if(base&lt;=500000000)return base*0.40-25940000;
 if(base&lt;=1000000000)return base*0.42-35940000;
 return base*0.45-65940000;}
$('fl-go').onclick=function(){
 var inc=(parseFloat($('fl-inc').value)||0)*10000;
 var exp=(parseFloat($('fl-exp').value)||0)*10000;
 var ded=(parseFloat($('fl-ded').value)||0)*10000;
 if(!inc){alert('연 총수입을 입력해 주세요');return;}
 var income=Math.max(inc-exp,0); // 사업소득금액
 var base=Math.max(income-1500000-ded,0); // 과세표준(본인 150만+기타)
 var calc=tax(base); // 산출세액(소득세)
 var local=calc*0.1; // 지방소득세 10%
 var decided=calc+local;
 var prepaid=inc*0.033; // 3.3% 기납부
 var refund=prepaid-decided;
 $('fl-lbl').textContent=refund&gt;=0?'5월 예상 환급':'5월 예상 추가납부';
 $('fl-big').textContent=won(Math.abs(refund));
 $('fl-big').style.color=refund&gt;=0?'#047857':'#dc2626';
 $('fl-card').style.background=refund&gt;=0?'#ecfdf5':'#fef2f2';
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('fl-rows').innerHTML=
 row('연 총수입', won(inc))
 +row('필요경비', '-'+won(exp))
 +row('사업소득금액', won(income))
 +row('과세표준 (공제 후)', won(base))
 +row('산출세액(소득세)', won(calc))
 +row('지방소득세 (10%)', won(local))
 +row('결정세액 합계', won(decided), true)
 +row('3.3% 기납부(원천징수)', won(prepaid))
 +row(refund&gt;=0?'→ 환급':'→ 추가납부', won(Math.abs(refund)), true);
 $('fl-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="프리랜서-세금-두-단계예요"&gt;프리랜서 세금, 두 단계예요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1단계 — 3.3% 원천징수&lt;/strong&gt;: 대금을 받을 때 지급처가 **3.3%(소득세 3% + 지방세 0.3%)**를 미리 떼요. 이건 &amp;ldquo;미리 낸 세금&amp;quot;이에요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2단계 — 5월 종합소득세 신고&lt;/strong&gt;: 1년치 수입에서 &lt;strong&gt;필요경비&lt;/strong&gt;를 빼고 실제 세금을 계산해, 미리 낸 3.3%와 정산해요. 더 냈으면 환급, 덜 냈으면 추가납부.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;경비가 핵심&lt;/strong&gt;: 사업 관련 지출(장비·통신·임차료 등)을 경비로 인정받으면 소득금액이 줄어 세금이 줄어요. **증빙(세금계산서·영수증)**을 챙기세요.&lt;/li&gt;
&lt;li&gt;소득이 낮은 프리랜서는 3.3%를 많이 떼여서 &lt;strong&gt;5월에 환급&lt;/strong&gt;받는 경우가 많아요. 신고 안 하면 그 돈을 못 돌려받아요.&lt;/li&gt;
&lt;li&gt;연 수입 규모에 따라 단순경비율/기준경비율/장부작성 방식이 달라요. 정확한 건 홈택스나 세무사와 확인하세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>BMI 계산기 — 비만도·표준체중·적정체중 (2026)</title><link>https://planfully.ai.kr/tools/bmi/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/bmi/</guid><description>&lt;p&gt;키와 몸무게를 입력하면 &lt;strong&gt;BMI(체질량지수)&lt;/strong&gt;, 비만도 단계, 그리고 나에게 맞는 &lt;strong&gt;표준·적정 체중 범위&lt;/strong&gt;를 알려드려요. (대한비만학회 기준)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:480px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:10px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;키 (cm)&lt;/span&gt;&lt;input type="tel" id="bmi-h" inputmode="decimal" placeholder="170" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;몸무게 (kg)&lt;/span&gt;&lt;input type="tel" id="bmi-w" inputmode="decimal" placeholder="65" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="bmi-go" style="width:100%;margin-top:14px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="bmi-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;" id="bmi-card"&gt;
 &lt;div style="font-size:14px;color:#555;"&gt;나의 BMI&lt;/div&gt;
 &lt;div id="bmi-val" style="font-size:40px;font-weight:800;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;div id="bmi-cat" style="font-size:18px;font-weight:700;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div id="bmi-scale" style="margin-top:14px;"&gt;&lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="bmi-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;button id="bmi-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;📤 공유하기&lt;/button&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#bmi-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#bmi-rows td:last-child{text-align:right;font-weight:700;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
// 대한비만학회: 저체중&lt;18.5, 정상18.5~23, 과체중23~25, 비만1단계25~30, 2단계30~35, 3단계35+
var CATS=[[18.5,'저체중','#0891b2'],[23,'정상','#059669'],[25,'과체중','#e0c07e'],[30,'비만 1단계','#f59e0b'],[35,'비만 2단계','#ef4444'],[999,'비만 3단계','#b91c1c']];
$('bmi-go').onclick=function(){
 var h=parseFloat($('bmi-h').value),w=parseFloat($('bmi-w').value);
 if(!h||!w||h&lt;80||h&gt;250||w&lt;20||w&gt;300){alert('키(cm)와 몸무게(kg)를 정확히 입력해 주세요');return;}
 var m=h/100, bmi=w/(m*m);
 var cat='',color='';for(var i=0;i&lt;CATS.length;i++){if(bmi&lt;CATS[i][0]){cat=CATS[i][1];color=CATS[i][2];break;}}
 $('bmi-val').textContent=bmi.toFixed(1);$('bmi-val').style.color=color;
 $('bmi-cat').textContent=cat;$('bmi-cat').style.color=color;
 $('bmi-card').style.background=color+'22';
 // 정상 체중범위 18.5~23
 var lo=(18.5*m*m),hi=(23*m*m),std=(22*m*m);
 $('bmi-rows').innerHTML=
 '&lt;tr&gt;&lt;td style="color:#555;"&gt;정상 체중 범위&lt;/td&gt;&lt;td&gt;'+lo.toFixed(1)+' ~ '+hi.toFixed(1)+' kg&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;표준 체중 (BMI 22)&lt;/td&gt;&lt;td&gt;'+std.toFixed(1)+' kg&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;현재와의 차이&lt;/td&gt;&lt;td&gt;'+(w&gt;hi?'+'+(w-hi).toFixed(1)+'kg 감량 권장':w&lt;lo?(lo-w).toFixed(1)+'kg 증량 여유':'정상 범위 ✓')+'&lt;/td&gt;&lt;/tr&gt;';
 $('bmi-out').style.display='block';
 $('bmi-share').onclick=function(){var t='내 BMI는 '+bmi.toFixed(1)+' ('+cat+')! 너도 확인 👉 '+location.origin+location.pathname;if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('복사됐어요!');});}};
};
})();
&lt;/script&gt;
&lt;h2 id="bmi란"&gt;BMI란?
&lt;/h2&gt;&lt;p&gt;BMI(Body Mass Index, 체질량지수)는 몸무게(kg)를 키(m)의 제곱으로 나눈 값으로, 비만 정도를 간단히 가늠하는 지표예요.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;BMI&lt;/th&gt;
 &lt;th&gt;판정 (대한비만학회)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;18.5 미만&lt;/td&gt;
 &lt;td&gt;저체중&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;18.5 ~ 23&lt;/td&gt;
 &lt;td&gt;정상&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;23 ~ 25&lt;/td&gt;
 &lt;td&gt;과체중&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;25 ~ 30&lt;/td&gt;
 &lt;td&gt;비만 1단계&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;30 ~ 35&lt;/td&gt;
 &lt;td&gt;비만 2단계&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;35 이상&lt;/td&gt;
 &lt;td&gt;비만 3단계&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;BMI는 근육량·체지방을 구분하지 못해요. 운동선수처럼 근육이 많으면 실제보다 높게 나올 수 있으니 참고용으로만 봐주세요.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>날짜 계산기 — 며칠 후 날짜·날짜 사이 일수·실근무일 계산</title><link>https://planfully.ai.kr/tools/date-calc/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/date-calc/</guid><description>&lt;p&gt;&lt;strong&gt;며칠 후/며칠 전이 무슨 날짜인지&lt;/strong&gt;, &lt;strong&gt;두 날짜 사이가 며칠인지&lt;/strong&gt;, 그 사이 &lt;strong&gt;평일·주말·공휴일·실근무일&lt;/strong&gt;이 며칠인지 계산해요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:6px;margin-bottom:14px;"&gt;
 &lt;button class="dc-tab" data-m="add" style="flex:1;"&gt;며칠 후/전 날짜&lt;/button&gt;
 &lt;button class="dc-tab" data-m="between" style="flex:1;"&gt;두 날짜 사이·근무일&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="dc-add"&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;"&gt;기준 날짜&lt;/label&gt;
 &lt;input type="tel" id="dc-base" inputmode="numeric" placeholder="예: 20260721" maxlength="10" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;label style="display:block;font-weight:700;margin:12px 0 6px;"&gt;며칠 (예: 100, 뒤로 가려면 -100)&lt;/label&gt;
 &lt;input type="tel" id="dc-days" inputmode="numeric" placeholder="100" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;/div&gt;
 &lt;div id="dc-between" style="display:none;"&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;"&gt;시작 날짜&lt;/label&gt;
 &lt;input type="tel" id="dc-d1" inputmode="numeric" placeholder="예: 20260101" maxlength="10" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;label style="display:block;font-weight:700;margin:12px 0 6px;"&gt;끝 날짜&lt;/label&gt;
 &lt;input type="tel" id="dc-d2" inputmode="numeric" placeholder="예: 20261231" maxlength="10" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;/div&gt;
 &lt;button id="dc-go" style="width:100%;margin-top:14px;padding:14px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="dc-out" style="display:none;margin-top:20px;text-align:center;padding:20px;border-radius:12px;background:#f5f3ff;"&gt;
 &lt;div id="dc-big" style="font-size:30px;font-weight:800;color:#6d28d9;line-height:1.3;"&gt;&lt;/div&gt;
 &lt;div id="dc-sub" style="font-size:14px;color:#555;margin-top:6px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;display:none;" id="dc-wtbl"&gt;&lt;tbody id="dc-wrows"&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;style&gt;.dc-tab{padding:11px;border:2px solid #d1d5db;border-radius:10px;background:#fff;font-weight:700;font-size:13.5px;cursor:pointer;}.dc-tab.on{border-color:#7c3aed;background:#f5f3ff;color:#6d28d9;}#dc-wrows td{padding:8px 6px;border-bottom:1px solid #eee;}#dc-wrows td:last-child{text-align:right;font-weight:700;}#dc-wrows tr.hl td{color:#6d28d9;border-top:2px solid #7c3aed;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var DOW=['일','월','화','수','목','금','토'];
// 대한민국 공휴일 (2025·2026, 대체공휴일 포함) — 출처: 관보/월력요항
var HOLIDAYS={
 '2025-01-01':'신정','2025-01-28':'설날연휴','2025-01-29':'설날','2025-01-30':'설날연휴',
 '2025-03-01':'삼일절','2025-03-03':'삼일절 대체','2025-05-05':'어린이날/부처님오신날','2025-05-06':'대체공휴일',
 '2025-06-06':'현충일','2025-08-15':'광복절','2025-10-03':'개천절','2025-10-05':'추석연휴','2025-10-06':'추석',
 '2025-10-07':'추석연휴','2025-10-08':'대체공휴일','2025-10-09':'한글날','2025-12-25':'성탄절',
 '2026-01-01':'신정','2026-02-16':'설날연휴','2026-02-17':'설날','2026-02-18':'설날연휴',
 '2026-03-01':'삼일절','2026-03-02':'삼일절 대체','2026-05-05':'어린이날','2026-05-24':'부처님오신날','2026-05-25':'부처님오신날 대체',
 '2026-06-06':'현충일','2026-07-17':'제헌절','2026-08-15':'광복절','2026-08-17':'광복절 대체',
 '2026-09-24':'추석연휴','2026-09-25':'추석','2026-09-26':'추석연휴','2026-09-28':'추석 대체',
 '2026-10-03':'개천절','2026-10-05':'개천절 대체','2026-10-09':'한글날','2026-12-25':'성탄절'
};
function key(d){return d.getFullYear()+'-'+('0'+(d.getMonth()+1)).slice(-2)+'-'+('0'+d.getDate()).slice(-2);}
function isHol(d){return HOLIDAYS.hasOwnProperty(key(d));}
function parse(v){v=(v||'').replace(/[^0-9]/g,'');if(v.length!==8)return null;var y=+v.slice(0,4),m=+v.slice(4,6),d=+v.slice(6,8);if(m&lt;1||m&gt;12||d&lt;1||d&gt;31)return null;return new Date(y,m-1,d);}
function fmt(d){return d.getFullYear()+'년 '+(d.getMonth()+1)+'월 '+d.getDate()+'일 ('+DOW[d.getDay()]+')';}
['dc-base','dc-d1','dc-d2'].forEach(function(id){$(id).addEventListener('input',function(){var v=this.value.replace(/[^0-9]/g,'').slice(0,8);if(v.length&gt;6)v=v.slice(0,4)+'.'+v.slice(4,6)+'.'+v.slice(6);else if(v.length&gt;4)v=v.slice(0,4)+'.'+v.slice(4);this.value=v;});});
var mode='add';
[].forEach.call(document.querySelectorAll('.dc-tab'),function(b){b.onclick=function(){mode=b.dataset.m;document.querySelectorAll('.dc-tab').forEach(function(x){x.classList.toggle('on',x===b);});$('dc-add').style.display=mode==='add'?'block':'none';$('dc-between').style.display=mode==='between'?'block':'none';};});
document.querySelector('.dc-tab').classList.add('on');
$('dc-go').onclick=function(){
 $('dc-wtbl').style.display='none';
 if(mode==='add'){
 var base=parse($('dc-base').value),n=parseInt(($('dc-days').value||'').replace(/[^0-9-]/g,''));
 if(!base||isNaN(n)){alert('기준 날짜(8자리)와 일수를 입력해 주세요');return;}
 var r=new Date(base);r.setDate(r.getDate()+n);
 $('dc-big').textContent=fmt(r);
 $('dc-sub').innerHTML=fmt(base)+' 에서 '+(n&gt;=0?n+'일 후':(-n)+'일 전');
 }else{
 var d1=parse($('dc-d1').value),d2=parse($('dc-d2').value);
 if(!d1||!d2){alert('두 날짜를 8자리로 입력해 주세요');return;}
 if(d1&gt;d2){var t=d1;d1=d2;d2=t;}
 var days=Math.round((d2-d1)/86400000);
 $('dc-big').textContent=days.toLocaleString()+'일';
 $('dc-sub').innerHTML=fmt(d1)+' ~ '+fmt(d2)+'&lt;br&gt;약 '+Math.floor(days/7)+'주 '+(days%7)+'일 · '+(days/365).toFixed(1)+'년';
 // 평일/주말/공휴일/실근무일 (양 끝 포함, days+1)
 var weekday=0,weekend=0,holiday=0,workday=0;
 var cur=new Date(d1);
 for(var i=0;i&lt;=days;i++){
 var dow=cur.getDay(), hol=isHol(cur);
 if(dow===0||dow===6){weekend++;}
 else{weekday++; if(hol){holiday++;}else{workday++;}}
 cur.setDate(cur.getDate()+1);
 }
 function row(l,v,hl){return '&lt;tr'+(hl?' class="hl"':'')+'&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td&gt;'+v+'&lt;/td&gt;&lt;/tr&gt;';}
 $('dc-wrows').innerHTML=
 row('총 일수 (양 끝 포함)', (days+1).toLocaleString()+'일')
 +row('평일 (월~금)', weekday.toLocaleString()+'일')
 +row('주말 (토·일)', weekend.toLocaleString()+'일')
 +row('공휴일 (평일과 겹치는)', holiday.toLocaleString()+'일')
 +row('실근무일 (평일 − 공휴일)', workday.toLocaleString()+'일', true);
 $('dc-wtbl').style.display='table';
 }
 $('dc-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="날짜-계산기-사용법"&gt;날짜 계산기 사용법
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;며칠 후/전 날짜&lt;/strong&gt;: 기준 날짜에서 며칠 후(또는 전, 음수 입력)가 무슨 요일·날짜인지 알려드려요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;두 날짜 사이·근무일&lt;/strong&gt;: 두 날짜 사이가 며칠인지, 그 기간의 &lt;strong&gt;평일·주말·공휴일·실근무일&lt;/strong&gt;이 각각 며칠인지 계산해요. (양 끝 날짜 포함)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;실근무일&lt;/strong&gt; = 평일(월~금) − 그 사이의 공휴일이에요. 연차·프로젝트 기간 산정에 써요.&lt;/li&gt;
&lt;li&gt;공휴일은 &lt;strong&gt;2025·2026년 대한민국 법정공휴일과 대체공휴일&lt;/strong&gt;을 반영했어요(관보·월력요항 기준). 회사 창립일 등 개별 휴무는 포함되지 않아요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;계산 결과는 브라우저에서 처리되며 입력값은 저장되지 않습니다.&lt;/p&gt;</description></item><item><title>내 생일엔 무슨 일이? — 그날의 사건과 생일이 같은 유명인</title><link>https://planfully.ai.kr/tools/my-birthday/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/my-birthday/</guid><description>&lt;p&gt;생년월일을 입력하면 &lt;strong&gt;내가 태어난 날 세상에서 일어난 일&lt;/strong&gt;과 &lt;strong&gt;나와 생일이 같은 유명인&lt;/strong&gt;(요즘 사람들이 많이 찾아보는 순서)을 보여드립니다. 입력한 정보는 어디에도 저장되지 않아요.&lt;/p&gt;
&lt;div id="bdaytool" style="max-width:560px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:8px;flex-wrap:wrap;"&gt;
 &lt;div style="flex:1 1 100%;"&gt;
 &lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;생년월일 &lt;span style="font-weight:400;color:#888;font-size:13px;"&gt;— 숫자 8자리로 입력&lt;/span&gt;&lt;/span&gt;
 &lt;input type="tel" id="bd-birth" inputmode="numeric" placeholder="예: 19880818" maxlength="10"
 style="width:100%;padding:14px;border:2px solid #ccc;border-radius:10px;font-size:18px;letter-spacing:1px;box-sizing:border-box;"&gt;
 &lt;/div&gt;
 &lt;button id="bd-go" style="flex:1 1 100%;padding:14px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;내 생일 이야기 보기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="bd-out" style="display:none;margin-top:18px;"&gt;
 &lt;div style="text-align:center;padding:16px;border-radius:12px;background:#f5f3ff;"&gt;
 &lt;div id="bd-head" style="font-size:20px;font-weight:800;color:#5b21b6;"&gt;&lt;/div&gt;
 &lt;div id="bd-sub" style="font-size:14px;color:#666;margin-top:4px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;h3 style="font-size:18px;margin:18px 0 10px;"&gt;📰 내가 태어난 날, 세상에선&lt;/h3&gt;
 &lt;div id="bd-events" style="font-size:14.5px;line-height:1.65;"&gt;&lt;/div&gt;
 &lt;h3 style="font-size:18px;margin:18px 0 10px;"&gt;🎂 나와 생일이 같은 유명인&lt;/h3&gt;
 &lt;div id="bd-births" style="font-size:14.5px;line-height:1.65;"&gt;&lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:10px;"&gt;출처: 한국어 위키백과 · 최근 60일 문서 조회수 기준 유명한 순&lt;/div&gt;
 &lt;button id="bd-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-weight:700;font-size:15px;cursor:pointer;"&gt;📤 내 생일 이야기 공유하기&lt;/button&gt;
 &lt;div style="margin-top:16px;padding:14px;border-radius:10px;background:#eff6ff;font-size:14.5px;"&gt;
 🔢 내 &lt;b&gt;만 나이·띠·별자리·생일 D-day&lt;/b&gt;가 궁금하다면 → &lt;a href="https://planfully.ai.kr/tools/age-calculator/"&gt;만나이 계산기&lt;/a&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
 var $=function(id){return document.getElementById(id);};
 var birthEl=$('bd-birth');
 birthEl.addEventListener('input',function(){
 var v=this.value.replace(/[^0-9]/g,'').slice(0,8);
 if(v.length&gt;6)v=v.slice(0,4)+'.'+v.slice(4,6)+'.'+v.slice(6);
 else if(v.length&gt;4)v=v.slice(0,4)+'.'+v.slice(4);
 this.value=v;
 });
 function parseBirth(){
 var v=birthEl.value.replace(/[^0-9]/g,'');
 if(v.length!==8)return null;
 var y=+v.slice(0,4), m=+v.slice(4,6), d=+v.slice(6,8);
 if(y&lt;1900||y&gt;new Date().getFullYear()||m&lt;1||m&gt;12)return null;
 if(d&lt;1||d&gt;new Date(y,m,0).getDate())return null;
 return new Date(y,m-1,d);
 }
 function esc(t){var d=document.createElement('div');d.textContent=t;return d.innerHTML;}
 function cleanWiki(t){
 return t.replace(/&lt;ref[^&gt;]*\/&gt;/g,'').replace(/&lt;ref[\s\S]*?&lt;\/ref&gt;/g,'')
 .replace(/\{\{[\s\S]*?\}\}/g,'')
 .replace(/\[\[(?:[^\]|]*\|)?([^\]]+)\]\]/g,'$1')
 .replace(/'''?/g,'').replace(/&lt;[^&gt;]+&gt;/g,'').trim();
 }
 function parseSection(wt,name){
 var re=new RegExp('==\\s*'+name+'\\s*==\\n([\\s\\S]*?)(?:\\n==|$)');
 var m=wt.match(re); if(!m)return [];
 var out=[], curYear=null;
 function push(year,body){
 var title=null, lre=/\[\[([^\]|]+)(?:\|[^\]]*)?\]\]/g, l;
 while((l=lre.exec(body))){ if(!/^\d+년|^\d+월|^\d+일/.test(l[1])){ title=l[1]; break; } }
 var txt=cleanWiki(body).replace(/[.。]\s*$/,'');
 if(txt)out.push({year:year,text:txt,title:title});
 }
 m[1].split('\n').forEach(function(line){
 var one=line.match(/^\*\s*\[\[(\d{3,4})년\]\]\s*[-–—]\s*(.+)/);
 if(one){curYear=+one[1];push(+one[1],one[2]);return;}
 var yr=line.match(/^\*\s*\[\[(\d{3,4})년\]\]\s*$/);
 if(yr){curYear=+yr[1];return;}
 var sub=line.match(/^\*\*\s*(.+)/);
 if(sub&amp;&amp;curYear)push(curYear,sub[1]);
 });
 return out;
 }
 function fetchViews(titles){
 var chunks=[]; for(var i=0;i&lt;titles.length;i+=50)chunks.push(titles.slice(i,i+50));
 function fetchChunk(ch){
 var base='https://ko.wikipedia.org/w/api.php?action=query&amp;format=json&amp;origin=*&amp;prop=pageviews&amp;redirects=1&amp;titles='+encodeURIComponent(ch.join('|'));
 var merged={pages:{},redirects:[]};
 function step(cont,n){
 var u=base+(cont?Object.keys(cont).map(function(k){return '&amp;'+k+'='+encodeURIComponent(cont[k]);}).join(''):'');
 return fetch(u).then(function(r){return r.json();}).then(function(j){
 if(!j||!j.query)return merged;
 (j.query.redirects||[]).forEach(function(rd){merged.redirects.push(rd);});
 Object.keys(j.query.pages).forEach(function(pid){
 var pg=j.query.pages[pid];
 if(!merged.pages[pid])merged.pages[pid]={title:pg.title,pageviews:{}};
 var pv=pg.pageviews||{};
 Object.keys(pv).forEach(function(k){if(pv[k])merged.pages[pid].pageviews[k]=pv[k];});
 });
 if(j.continue&amp;&amp;n&lt;6)return step(j.continue,n+1);
 return merged;
 });
 }
 return step(null,0).catch(function(){return merged;});
 }
 return Promise.all(chunks.map(fetchChunk)).then(function(results){
 var map={};
 results.forEach(function(res){
 res.redirects.forEach(function(rd){map['@'+rd.to]=rd.from;});
 Object.keys(res.pages).forEach(function(pid){
 var pg=res.pages[pid], tot=0;
 Object.keys(pg.pageviews).forEach(function(k){tot+=pg.pageviews[k];});
 map[pg.title]=tot;
 if(map['@'+pg.title])map[map['@'+pg.title]]=tot;
 });
 });
 return map;
 });
 }
 function rankRender(list, el, color, unit, topN){
 var titles=list.filter(function(e){return e.title;}).map(function(e){return e.title;});
 var done=function(sorted){
 el.innerHTML=sorted.length?sorted.map(function(e){
 return '&lt;div style="margin-bottom:6px;"&gt;&lt;b style="color:'+color+';"&gt;'+e.year+unit+'&lt;/b&gt; · '+esc(e.text)+'&lt;/div&gt;';
 }).join(''):'이 날짜의 데이터가 없어요';
 };
 if(!titles.length){done(list.slice(0,topN));return;}
 fetchViews(titles).then(function(views){
 list.forEach(function(e){e.v=(e.title&amp;&amp;views[e.title])||0;});
 list.sort(function(a,b){return b.v-a.v;});
 done(list.slice(0,topN));
 }).catch(function(){done(list.slice(0,topN));});
 }
 var DOW=['일요일','월요일','화요일','수요일','목요일','금요일','토요일'];
 var lastBirth=null, lastTopCeleb='';
 $('bd-go').onclick=function(){
 var bd=parseBirth();
 if(!bd){alert('생년월일을 숫자 8자리로 입력해 주세요 (예: 19880818)');return;}
 lastBirth=bd;
 $('bd-out').style.display='block';
 $('bd-head').textContent=bd.getFullYear()+'년 '+(bd.getMonth()+1)+'월 '+bd.getDate()+'일 '+DOW[bd.getDay()];
 $('bd-sub').textContent='당신은 '+DOW[bd.getDay()]+'에 태어났어요';
 $('bd-events').innerHTML='불러오는 중…'; $('bd-births').innerHTML='불러오는 중…';
 var title=(bd.getMonth()+1)+'월_'+bd.getDate()+'일';
 fetch('https://ko.wikipedia.org/w/api.php?action=parse&amp;format=json&amp;origin=*&amp;prop=wikitext&amp;page='+encodeURIComponent(title))
 .then(function(r){return r.json();}).then(function(j){
 var wt=j.parse.wikitext['*'];
 rankRender(parseSection(wt,'사건').filter(function(e){return e.year&gt;=1930;}), $('bd-events'), '#1d4ed8', '', 6);
 var _bl=parseSection(wt,'탄생').filter(function(e){return e.year&gt;=1930;});
 rankRender(_bl, $('bd-births'), '#7c3aed', '년생', 10);
 var _tv=_bl.filter(function(e){return e.title;});
 if(_tv.length){fetchViews(_tv.map(function(e){return e.title;})).then(function(v){_tv.sort(function(a,b){return (v[b.title]||0)-(v[a.title]||0);});lastTopCeleb=(_tv[0].text||'').replace(/^[^ ]+의 /,'');});}
 }).catch(function(){
 $('bd-events').textContent='불러오기 실패 — 잠시 후 다시 시도해 주세요';
 $('bd-births').textContent='불러오기 실패 — 잠시 후 다시 시도해 주세요';
 });
 };
 document.getElementById('bd-share').onclick=function(){
 if(!lastBirth)return;
 var d=lastBirth;
 var DOWk=['일','월','화','수','목','금','토'][d.getDay()];
 var t=d.getFullYear()+'년 '+(d.getMonth()+1)+'월 '+d.getDate()+'일('+DOWk+')에 태어난 나!'+(lastTopCeleb?' 나랑 생일 같은 유명인은 '+lastTopCeleb+' 🎂':'')+' 너도 확인해봐 👉 '+location.origin+location.pathname;
 if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('복사됐어요! 붙여넣기로 공유하세요.');});}
 };
})();
&lt;/script&gt;
&lt;h2 id="이-도구는-어떻게-만들었나요"&gt;이 도구는 어떻게 만들었나요?
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;그날의 사건·탄생 인물&lt;/strong&gt;: 한국어 위키백과의 날짜 문서(예: &amp;ldquo;8월 18일&amp;rdquo;)에 정리된 사건·탄생 목록을 실시간으로 불러옵니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;유명한 순 정렬&lt;/strong&gt;: 각 인물의 위키백과 문서가 최근 60일간 얼마나 조회됐는지를 기준으로 정렬합니다. 지금 사람들이 실제로 많이 찾아보는 인물이 위로 올라옵니다.&lt;/li&gt;
&lt;li&gt;모든 계산과 조회는 여러분의 브라우저에서 직접 이루어지며, 입력한 생년월일은 서버로 전송되지 않습니다.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>디데이 계산기 — D-day·기념일 며칠 남았나 (100일·1주년)</title><link>https://planfully.ai.kr/tools/dday/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/dday/</guid><description>&lt;p&gt;목표 날짜까지 &lt;strong&gt;며칠 남았는지(D-day)&lt;/strong&gt;, 시작일로부터 &lt;strong&gt;며칠 지났는지&lt;/strong&gt;, 그리고 &lt;strong&gt;100일·200일·1주년 기념일&lt;/strong&gt; 날짜까지 한 번에 계산해요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:6px;margin-bottom:14px;"&gt;
 &lt;button class="dd-tab" data-m="until" style="flex:1;"&gt;목표일까지 D-day&lt;/button&gt;
 &lt;button class="dd-tab" data-m="since" style="flex:1;"&gt;시작일부터 며칠째&lt;/button&gt;
 &lt;/div&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;" id="dd-label"&gt;목표 날짜&lt;/label&gt;
 &lt;input type="tel" id="dd-date" inputmode="numeric" placeholder="예: 20261225 (숫자 8자리)" maxlength="10" style="width:100%;padding:13px;border:2px solid #ccc;border-radius:10px;font-size:17px;box-sizing:border-box;"&gt;
 &lt;button id="dd-go" style="width:100%;margin-top:14px;padding:14px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="dd-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#eff6ff;"&gt;
 &lt;div id="dd-big" style="font-size:38px;font-weight:800;color:#1d4ed8;"&gt;&lt;/div&gt;
 &lt;div id="dd-sub" style="font-size:14px;color:#555;margin-top:4px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div id="dd-mile" style="margin-top:14px;"&gt;&lt;/div&gt;
 &lt;button id="dd-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-weight:700;cursor:pointer;"&gt;📤 공유하기&lt;/button&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;.dd-tab{padding:11px;border:2px solid #d1d5db;border-radius:10px;background:#fff;font-weight:700;font-size:13.5px;cursor:pointer;}.dd-tab.on{border-color:#2563eb;background:#eff6ff;color:#1d4ed8;}#dd-mile div{padding:8px 6px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;font-size:14.5px;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var mode='until';
function fmt(d){return d.getFullYear()+'.'+(d.getMonth()+1)+'.'+d.getDate();}
function parse(v){v=(v||'').replace(/[^0-9]/g,'');if(v.length!==8)return null;var y=+v.slice(0,4),m=+v.slice(4,6),d=+v.slice(6,8);if(m&lt;1||m&gt;12||d&lt;1||d&gt;31)return null;return new Date(y,m-1,d);}
$('dd-date').addEventListener('input',function(){var v=this.value.replace(/[^0-9]/g,'').slice(0,8);if(v.length&gt;6)v=v.slice(0,4)+'.'+v.slice(4,6)+'.'+v.slice(6);else if(v.length&gt;4)v=v.slice(0,4)+'.'+v.slice(4);this.value=v;});
[].forEach.call(document.querySelectorAll('.dd-tab'),function(b){b.onclick=function(){mode=b.dataset.m;document.querySelectorAll('.dd-tab').forEach(function(x){x.classList.toggle('on',x===b);});$('dd-label').textContent=mode==='until'?'목표 날짜':'시작 날짜';};});
document.querySelector('.dd-tab').classList.add('on');
$('dd-go').onclick=function(){
 var d=parse($('dd-date').value);if(!d){alert('날짜를 숫자 8자리로 입력해 주세요 (예: 20261225)');return;}
 var today=new Date();today.setHours(0,0,0,0);
 var diff=Math.round((d-today)/86400000);
 if(mode==='until'){
 $('dd-big').textContent=diff===0?'D-Day 🎉':diff&gt;0?'D-'+diff:'D+'+(-diff);
 $('dd-sub').textContent=fmt(d)+' '+['일','월','화','수','목','금','토'][d.getDay()]+'요일'+(diff&gt;0?' · '+diff+'일 남음':diff&lt;0?' · '+(-diff)+'일 지남':' · 오늘이에요!');
 $('dd-mile').innerHTML='';
 }else{
 var since=Math.round((today-d)/86400000)+1;
 $('dd-big').textContent=since+'일째';
 $('dd-sub').textContent=fmt(d)+' 시작 · 오늘로 '+since+'일째';
 // 기념일
 var miles=[[100,'100일'],[200,'200일'],[300,'300일'],[365,'1주년'],[500,'500일'],[730,'2주년'],[1000,'1000일']];
 var html='';
 miles.forEach(function(m){var md=new Date(d);md.setDate(md.getDate()+m[0]-1);var dleft=Math.round((md-today)/86400000);html+='&lt;div&gt;&lt;span&gt;'+m[1]+'&lt;/span&gt;&lt;span style="font-weight:700;"&gt;'+fmt(md)+' '+(dleft&gt;0?'(D-'+dleft+')':dleft===0?'(오늘!)':'(지남)')+'&lt;/span&gt;&lt;/div&gt;';});
 $('dd-mile').innerHTML='&lt;div style="font-weight:700;margin-bottom:6px;color:#1d4ed8;"&gt;🎯 기념일&lt;/div&gt;'+html;
 }
 $('dd-out').style.display='block';
 $('dd-share').onclick=function(){var t=$('dd-big').textContent+' — '+$('dd-sub').textContent+' 📅 '+location.origin+location.pathname;if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('복사됐어요!');});}};
};
})();
&lt;/script&gt;
&lt;h2 id="디데이-계산기-사용법"&gt;디데이 계산기 사용법
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;목표일까지 D-day&lt;/strong&gt;: 시험·기념일·전역일 등 다가오는 날까지 며칠 남았는지 계산해요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;시작일부터 며칠째&lt;/strong&gt;: 연애·금연·다이어트 시작일로부터 오늘이 며칠째인지, 그리고 100일·1주년 등 기념일 날짜를 자동으로 알려드려요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;모든 계산은 브라우저에서 이루어지며 입력값은 저장되지 않습니다.&lt;/p&gt;</description></item><item><title>만나이 계산기 — 만 나이·띠·별자리·정년·국민연금 D-day 한번에</title><link>https://planfully.ai.kr/tools/age-calculator/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/age-calculator/</guid><description>&lt;p&gt;생년월일을 입력하면 &lt;strong&gt;만 나이&lt;/strong&gt;(만 나이 통일법 기준), 연 나이, 살아온 날수, 띠, 별자리, 다음 생일까지 남은 날짜를 한 번에 계산합니다. 모든 계산은 브라우저 안에서만 이루어지며 입력한 정보는 어디에도 저장·전송되지 않습니다.&lt;/p&gt;
&lt;div id="agecalc" style="max-width:560px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;"&gt;
 &lt;div style="flex:1 1 100%;"&gt;
 &lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;생년월일 &lt;span style="font-weight:400;color:#888;font-size:13px;"&gt;— 숫자 8자리로 입력&lt;/span&gt;&lt;/span&gt;
 &lt;input type="tel" id="ac-birth" inputmode="numeric" placeholder="예: 19900514" maxlength="10"
 style="width:100%;padding:14px;border:2px solid #ccc;border-radius:10px;font-size:18px;letter-spacing:1px;box-sizing:border-box;"&gt;
 &lt;/div&gt;
 &lt;label style="flex:1 1 220px;display:block;"&gt;
 &lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;기준일 (기본: 오늘)&lt;/span&gt;
 &lt;input type="date" id="ac-base" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;"&gt;
 &lt;/label&gt;
 &lt;button id="ac-go" style="flex:1 1 100%;padding:14px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="ac-out" style="display:none;margin-top:18px;"&gt;
 &lt;div style="text-align:center;padding:18px;border-radius:12px;background:#eff6ff;"&gt;
 &lt;div style="font-size:15px;color:#555;"&gt;만 나이 &lt;span style="color:#6b7280;font-size:13px;"&gt;(만 나이 통일법 · 일명 "윤석열 나이")&lt;/span&gt;&lt;/div&gt;
 &lt;div id="ac-age" style="font-size:42px;font-weight:800;color:#1d4ed8;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;div id="ac-agesub" style="font-size:14px;color:#666;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:14px;border-collapse:collapse;font-size:15px;"&gt;
 &lt;tbody&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;세는 나이 (기존 한국 나이)&lt;/td&gt;&lt;td id="ac-kage" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;연 나이 (올해 − 출생연도)&lt;/td&gt;&lt;td id="ac-yage" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;살아온 날&lt;/td&gt;&lt;td id="ac-days" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;띠&lt;/td&gt;&lt;td id="ac-zodiac" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;별자리&lt;/td&gt;&lt;td id="ac-star" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;다음 생일까지&lt;/td&gt;&lt;td id="ac-bday" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;정년(만 60세)까지&lt;/td&gt;&lt;td id="ac-retire" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td style="padding:9px 6px;border-bottom:1px solid #eee;color:#555;"&gt;국민연금 수급 개시&lt;/td&gt;&lt;td id="ac-pension" style="padding:9px 6px;border-bottom:1px solid #eee;font-weight:700;text-align:right;"&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;/tbody&gt;
 &lt;/table&gt;
 &lt;button id="ac-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-weight:700;font-size:15px;cursor:pointer;"&gt;📤 내 결과 공유하기&lt;/button&gt;
 &lt;div style="margin-top:12px;padding:14px;border-radius:10px;background:#f5f3ff;font-size:14.5px;"&gt;
 🎂 내가 태어난 날 무슨 일이 있었는지, 나와 생일 같은 유명인이 궁금하다면 → &lt;a href="https://planfully.ai.kr/tools/my-birthday/"&gt;내 생일엔 무슨 일이?&lt;/a&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function(){
 var $=function(id){return document.getElementById(id);};
 $('ac-base').value = new Date().toISOString().slice(0,10);
 // 생년월일 = 숫자 8자리 직접 입력(YYYYMMDD) — 기기별 date picker/드롭다운 이슈 원천 회피
 var birthEl=$('ac-birth');
 birthEl.addEventListener('input',function(){
 var v=this.value.replace(/[^0-9]/g,'').slice(0,8);
 if(v.length&gt;6)v=v.slice(0,4)+'.'+v.slice(4,6)+'.'+v.slice(6);
 else if(v.length&gt;4)v=v.slice(0,4)+'.'+v.slice(4);
 this.value=v;
 });
 function parseBirth(){
 var v=birthEl.value.replace(/[^0-9]/g,'');
 if(v.length!==8)return null;
 var y=+v.slice(0,4), m=+v.slice(4,6), d=+v.slice(6,8);
 if(y&lt;1900||y&gt;new Date().getFullYear()||m&lt;1||m&gt;12)return null;
 if(d&lt;1||d&gt;new Date(y,m,0).getDate())return null;
 return new Date(y,m-1,d);
 }
 var ANIMALS=['원숭이','닭','개','돼지','쥐','소','호랑이','토끼','용','뱀','말','양'];
 var STARS=[[120,'염소자리'],[219,'물병자리'],[321,'물고기자리'],[420,'양자리'],[521,'황소자리'],[622,'쌍둥이자리'],[723,'게자리'],[823,'사자자리'],[923,'처녀자리'],[1023,'천칭자리'],[1123,'전갈자리'],[1222,'사수자리'],[1232,'염소자리']];
 function star(m,d){var k=m*100+d;for(var i=0;i&lt;STARS.length;i++){if(k&lt;STARS[i][0])return STARS[i][1];}return '염소자리';}
 $('ac-go').onclick=function(){
 var s=$('ac-base').value;
 var bd=parseBirth();
 if(!bd){alert('생년월일을 숫자 8자리로 입력해 주세요 (예: 19900514)');return;}
 var sd=new Date((s||new Date().toISOString().slice(0,10))+'T00:00:00');
 if(sd&lt;bd){alert('기준일이 생년월일보다 빠릅니다');return;}
 var age=sd.getFullYear()-bd.getFullYear();
 var hadBirthday=(sd.getMonth()&gt;bd.getMonth())||(sd.getMonth()===bd.getMonth()&amp;&amp;sd.getDate()&gt;=bd.getDate());
 if(!hadBirthday)age--;
 var months=(sd.getFullYear()-bd.getFullYear())*12+(sd.getMonth()-bd.getMonth());
 if(sd.getDate()&lt;bd.getDate())months--;
 var days=Math.floor((sd-bd)/86400000);
 var nb=new Date(sd.getFullYear(),bd.getMonth(),bd.getDate());
 if(nb&lt;=sd)nb=new Date(sd.getFullYear()+1,bd.getMonth(),bd.getDate());
 var dleft=Math.round((nb-sd)/86400000);
 $('ac-age').textContent='만 '+age+'세';
 $('ac-agesub').textContent='만 '+months+'개월 · '+(hadBirthday?'올해 생일 지남':'올해 생일 전');
 $('ac-kage').textContent=(sd.getFullYear()-bd.getFullYear()+1)+'살';
 $('ac-yage').textContent=(sd.getFullYear()-bd.getFullYear())+'세';
 $('ac-days').textContent=days.toLocaleString()+'일째';
 $('ac-zodiac').textContent=ANIMALS[bd.getFullYear()%12]+'띠 ('+bd.getFullYear()+'년생)';
 $('ac-star').textContent=star(bd.getMonth()+1,bd.getDate());
 $('ac-bday').textContent=dleft===0?'오늘이 생일! 🎉':'D-'+dleft+' ('+(nb.getMonth()+1)+'월 '+nb.getDate()+'일)';
 // 은퇴 카운트다운 — 법정 정년 60세(고령자고용법) + 국민연금 개시연령(출생연도별)
 function dday(target){return Math.ceil((target-sd)/86400000);}
 var r60=new Date(bd.getFullYear()+60,bd.getMonth(),bd.getDate());
 $('ac-retire').textContent = r60&lt;=sd ? '이미 지남 (만 60세)' :
 'D-'+dday(r60).toLocaleString()+' ('+r60.getFullYear()+'년 '+(r60.getMonth()+1)+'월)';
 var py=bd.getFullYear(), pAge = py&lt;=1952?60 : py&lt;=1956?61 : py&lt;=1960?62 : py&lt;=1964?63 : py&lt;=1968?64 : 65;
 var pd=new Date(py+pAge,bd.getMonth(),bd.getDate());
 $('ac-pension').textContent = pd&lt;=sd ? '이미 수급 연령 (만 '+pAge+'세)' :
 '만 '+pAge+'세 · D-'+dday(pd).toLocaleString()+' ('+pd.getFullYear()+'년)';
 $('ac-out').style.display='block';
 var _share=document.getElementById('ac-share');
 _share.onclick=function(){
 var _d=(''+(+ySel.value)).padStart(4,'0')+(''+(+mSel.value)).padStart(2,'0')+(''+(+dSel.value)).padStart(2,'0');
 var t='나는 '+$('ac-age').textContent+'! ('+$('ac-zodiac').textContent+' · '+$('ac-star').textContent+') 만나이·띠·별자리 확인 👉 '+location.origin+location.pathname+'?d='+_d;
 if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('복사됐어요!');});}
 };
 };
})();
&lt;/script&gt;
&lt;h2 id="만-나이-계산-방법"&gt;만 나이 계산 방법
&lt;/h2&gt;&lt;p&gt;2023년 6월 28일부터 시행된 &lt;strong&gt;만 나이 통일법&lt;/strong&gt;에 따라 법적·행정적 나이는 모두 만 나이를 사용합니다. 만 나이는 태어난 날을 0세로 시작해 &lt;strong&gt;생일이 지날 때마다 한 살씩&lt;/strong&gt; 더하는 방식입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;만 나이&lt;/strong&gt; = 현재 연도 − 출생 연도 (단, 올해 생일이 아직 안 지났으면 1을 뺌)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;연 나이&lt;/strong&gt; = 현재 연도 − 출생 연도 (병역법·청소년보호법 등 일부 법령에서 사용)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;세는 나이&lt;/strong&gt;(기존 한국 나이): 태어나자마자 1살, 새해마다 +1. 공식적으론 폐지됐지만 일상에선 여전히 쓰입니다.&lt;/li&gt;
&lt;li&gt;만 나이 통일법으로 한두 살 &amp;ldquo;어려진&amp;rdquo; 나이를 흔히 **&amp;ldquo;윤석열 나이&amp;rdquo;**라고 부르기도 합니다 — 위 계산기의 만 나이가 바로 그것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="자주-묻는-질문"&gt;자주 묻는 질문
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Q. 술·담배 구매 가능 나이는 만 나이인가요?&lt;/strong&gt;
아니요. 청소년보호법은 &lt;strong&gt;연 나이 19세&lt;/strong&gt;(그 해 1월 1일 기준)를 사용합니다. 생일과 무관하게 해당 연도에 19세가 되는 사람부터 구매할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q. 초등학교 입학은요?&lt;/strong&gt;
초·중등교육법 기준, &lt;strong&gt;만 6세가 된 날이 속한 해의 다음 해 3월&lt;/strong&gt;에 입학합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q. 정년과 국민연금 나이는 어떻게 계산하나요?&lt;/strong&gt;
법정 정년은 「고령자고용법」에 따라 &lt;strong&gt;만 60세 이상&lt;/strong&gt;입니다(회사 규정에 따라 더 길 수 있음). 국민연금(노령연금) 수급 개시 연령은 출생연도별로 다릅니다: 1952년 이전 60세 / 1953&lt;del&gt;56년 61세 / 1957&lt;/del&gt;60년 62세 / 1961&lt;del&gt;64년 63세 / 1965&lt;/del&gt;68년 64세 / &lt;strong&gt;1969년 이후 65세&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q. 띠는 양력? 음력?&lt;/strong&gt;
전통적으로 띠는 음력 설(입춘) 기준이지만, 현재는 양력 1월 1일 기준으로 보는 경우가 많습니다. 이 계산기는 양력 출생 연도 기준으로 표시하므로 1~2월 초 출생자는 전년도 띠일 수 있습니다.&lt;/p&gt;</description></item><item><title>배당금 계산기 — 월 배당 목표로 필요 원금·월 적립액 (노후·파이어족)</title><link>https://planfully.ai.kr/tools/dividend/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/dividend/</guid><description>&lt;p&gt;원하는 &lt;strong&gt;월 배당액&lt;/strong&gt;을 입력하면 필요한 &lt;strong&gt;투자 원금&lt;/strong&gt;과, 목표 기간 동안 &lt;strong&gt;매달 얼마씩&lt;/strong&gt; 모아야 하는지 계산해요. 노후·파이어(FIRE) 준비 설계에 참고하세요.&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:520px;margin:0 auto;"&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;"&gt;목표: 월 배당액 (만원)&lt;/label&gt;
 &lt;input type="tel" id="dv-target" inputmode="numeric" placeholder="예: 100 (월 100만원)" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;배당수익률 (연 %)&lt;/span&gt;
 &lt;select id="dv-yield" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;background:#fff;"&gt;
 &lt;option value="3"&gt;3% (안정 배당ETF)&lt;/option&gt;
 &lt;option value="4" selected&gt;4% (일반 고배당)&lt;/option&gt;
 &lt;option value="5"&gt;5% (고배당주)&lt;/option&gt;
 &lt;option value="6"&gt;6% (초고배당·리츠)&lt;/option&gt;
 &lt;option value="8"&gt;8% (커버드콜 등)&lt;/option&gt;
 &lt;/select&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;모으는 기간 (년)&lt;/span&gt;
 &lt;input type="tel" id="dv-years" inputmode="numeric" placeholder="20" value="20" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:block;font-weight:700;margin:12px 0 6px;"&gt;예상 연 주가 상승률 (%) &lt;span style="font-weight:400;color:#6b7280;font-size:13px;"&gt;— 배당과 별도, 모으는 동안 복리&lt;/span&gt;&lt;/label&gt;
 &lt;select id="dv-growth" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;background:#fff;"&gt;
 &lt;option value="0"&gt;0% (상승 없다고 보수적으로)&lt;/option&gt;
 &lt;option value="3"&gt;3% (안정적)&lt;/option&gt;
 &lt;option value="5" selected&gt;5% (장기 평균 근사)&lt;/option&gt;
 &lt;option value="7"&gt;7% (성장 기대)&lt;/option&gt;
 &lt;option value="10"&gt;10% (공격적)&lt;/option&gt;
 &lt;/select&gt;
 &lt;div style="margin-top:8px;font-size:13px;color:#6b7280;"&gt;이미 모은 돈이 있다면 (만원, 선택) &lt;input type="tel" id="dv-have" inputmode="numeric" placeholder="0" style="width:90px;padding:5px 8px;border:1px solid #ccc;border-radius:6px;"&gt;&lt;/div&gt;
 &lt;button id="dv-go" style="width:100%;margin-top:14px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="dv-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div style="font-size:14px;color:#555;"&gt;내가 실제로 넣는 총 투입 원금&lt;/div&gt;
 &lt;div id="dv-principal" style="font-size:34px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;div id="dv-monthly" style="font-size:16px;color:#065f46;font-weight:700;margin-top:6px;"&gt;&lt;/div&gt;
 &lt;div id="dv-asset" style="font-size:14px;color:#065f46;margin-top:8px;padding-top:8px;border-top:1px dashed #a7f3d0;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="dv-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="margin-top:16px;font-weight:700;color:#047857;"&gt;📋 고배당 예시 (참고용)&lt;/div&gt;
 &lt;table style="width:100%;margin-top:6px;font-size:14px;border-collapse:collapse;"&gt;&lt;tbody id="dv-list"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ 예시일 뿐이며 투자 권유가 아닙니다. 실제 배당률·주가는 수시로 바뀌니 증권사에서 확인하세요.&lt;/div&gt;
 &lt;button id="dv-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;📤 내 노후설계 공유&lt;/button&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#dv-rows td{padding:9px 6px;border-bottom:1px solid #eee;}#dv-rows td:last-child{text-align:right;font-weight:700;}#dv-list td{padding:7px 6px;border-bottom:1px solid #f0f0f0;}#dv-list td:last-child{text-align:right;font-weight:700;color:#047857;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
// 고배당 예시(참고용·고정) — 대표 유형별. 실시간 아님.
var LIST=[['배당ETF (S&amp;P500 배당귀족류)','약 2~3%'],['국내 고배당주 (통신·금융·정유)','약 4~6%'],['리츠(REITs)','약 5~7%'],['미국 배당성장주','약 2~4%'],['커버드콜 ETF','약 7~12%'],['월배당 ETF','약 4~8%']];
function won(man){ // 만원 단위 → 보기 좋은 문자열
 var w=man*10000;
 if(w&gt;=100000000){var eok=Math.floor(w/100000000);var rest=Math.round((w%100000000)/10000);return eok+'억'+(rest?' '+rest.toLocaleString()+'만':'')+'원';}
 return Math.round(man).toLocaleString()+'만원';
}
$('dv-go').onclick=function(){
 var tgt=parseFloat($('dv-target').value); // 월 배당 만원
 var y=parseFloat($('dv-yield').value)/100;
 var years=parseFloat($('dv-years').value)||20;
 var have=parseFloat($('dv-have').value)||0; // 만원
 var g=parseFloat($('dv-growth').value)/100; // 연 주가상승률
 if(!tgt||tgt&lt;=0){alert('원하는 월 배당액(만원)을 입력해 주세요');return;}
 var annualDiv=tgt*12; // 만원/년
 var principal=annualDiv/y; // 필요 원금(만원) — 목표 배당을 내려면 이만큼 필요
 // 모으는 동안 총수익률 = 배당 재투자 + 주가상승 (복리)
 var total=y+g;
 var r=total/12, n=years*12;
 var fvHave=have*Math.pow(1+r,n); // 기존 자금의 미래가치
 var remain=Math.max(principal-fvHave,0);
 var monthly = r&gt;0 ? remain*r/(Math.pow(1+r,n)-1) : remain/n; // 적립식 미래가치 역산 (만원)
 var totalIn=monthly*n+have; // 실제 총 투입
 $('dv-principal').textContent=won(totalIn);
 $('dv-monthly').textContent=years+'년간 매달 '+won(Math.ceil(monthly))+' 씩'+(have&gt;0?' (+시작자금 '+won(have)+')':'');
 $('dv-asset').innerHTML='💰 '+years+'년 뒤 주식 자산: &lt;b&gt;'+won(principal)+'&lt;/b&gt; &lt;span style="color:#059669;"&gt;(내 돈 '+won(totalIn)+' → 복리로 '+won(principal)+')&lt;/span&gt;&lt;br&gt;🔄 이 자산이 매달 '+won(tgt)+' 배당을 만들고, 배당은 모으는 동안 전액 재투자돼요';
 $('dv-rows').innerHTML=
 '&lt;tr&gt;&lt;td style="color:#555;"&gt;목표 월 배당&lt;/td&gt;&lt;td&gt;'+won(tgt)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;연 배당 (세전)&lt;/td&gt;&lt;td&gt;'+won(annualDiv)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;가정 배당수익률&lt;/td&gt;&lt;td&gt;연 '+($('dv-yield').value)+'%&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;가정 주가상승률&lt;/td&gt;&lt;td&gt;연 '+($('dv-growth').value)+'% (모으는 동안)&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;배당 재투자&lt;/td&gt;&lt;td style="color:#047857;"&gt;✓ 전액 재투자(복리)&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;모으는 동안 총수익률&lt;/td&gt;&lt;td&gt;연 '+((y+g)*100).toFixed(1)+'% &lt;span style="color:#6b7280;font-weight:400;"&gt;(배당'+($('dv-yield').value)+'%+상승'+($('dv-growth').value)+'%)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;목표 자산 (배당 발생 원천)&lt;/td&gt;&lt;td&gt;'+won(principal)+'&lt;/td&gt;&lt;/tr&gt;'
 +(have&gt;0?'&lt;tr&gt;&lt;td style="color:#555;"&gt;현재 보유&lt;/td&gt;&lt;td&gt;'+won(have)+'&lt;/td&gt;&lt;/tr&gt;':'')
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;매달 적립액 ('+years+'년)&lt;/td&gt;&lt;td&gt;'+won(Math.ceil(monthly))+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;'+years+'년간 총 납입 원금&lt;/td&gt;&lt;td&gt;'+won(monthly*n+have)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr style="background:#ecfdf5;"&gt;&lt;td style="color:#047857;font-weight:700;"&gt;'+years+'년 뒤 주식 자산가치&lt;/td&gt;&lt;td style="color:#047857;"&gt;'+won(principal)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr&gt;&lt;td style="color:#555;"&gt;└ 그중 순수익(복리)&lt;/td&gt;&lt;td&gt;+'+won(principal-(monthly*n+have))+'&lt;/td&gt;&lt;/tr&gt;';
 $('dv-list').innerHTML=LIST.map(function(x){return '&lt;tr&gt;&lt;td style="color:#444;"&gt;'+x[0]+'&lt;/td&gt;&lt;td&gt;'+x[1]+'&lt;/td&gt;&lt;/tr&gt;';}).join('');
 $('dv-out').style.display='block';
 $('dv-share').onclick=function(){
 var url=location.origin+location.pathname+'?t='+tgt+'&amp;y='+$('dv-yield').value+'&amp;g='+$('dv-growth').value+'&amp;n='+years+(have&gt;0?'&amp;h='+have:'');
 var t='월 배당 '+won(tgt)+' 받으려면 원금 '+won(principal)+', '+years+'년간 매달 '+won(Math.ceil(monthly))+'! 내 노후설계 👉 '+url;
 if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('결과 링크가 복사됐어요! 저장·공유하세요.');});}};
};
// 공유 링크(?t=&amp;y=&amp;g=&amp;n=&amp;h=)로 들어오면 값 채우고 자동 계산 (결과 저장·재현)
(function(){
 var p=new URLSearchParams(location.search);
 if(p.get('t')){
 $('dv-target').value=p.get('t');
 if(p.get('y'))$('dv-yield').value=p.get('y');
 if(p.get('g'))$('dv-growth').value=p.get('g');
 if(p.get('n'))$('dv-years').value=p.get('n');
 if(p.get('h'))$('dv-have').value=p.get('h');
 $('dv-go').click();
 }
})();
})();
&lt;/script&gt;
&lt;h2 id="배당금-계산기-이렇게-계산해요"&gt;배당금 계산기, 이렇게 계산해요
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;필요 원금&lt;/strong&gt; = 목표 월 배당 × 12 ÷ 배당수익률. 예를 들어 월 100만원(연 1,200만원)을 연 4% 배당으로 받으려면 원금 &lt;strong&gt;3억원&lt;/strong&gt;이 필요해요.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;배당 재투자&lt;/strong&gt;: 모으는 동안 받은 배당은 전액 다시 투자한다고 가정해요. 그래서 &amp;ldquo;모으는 동안 총수익률 = 배당률 + 주가상승률&amp;quot;로 복리 계산됩니다. (은퇴 후에는 배당을 생활비로 쓰는 구조)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N년 뒤 주식 자산가치&lt;/strong&gt; = 목표 원금에 도달한 그 자산이 곧 노후 자산이에요. 이 자산이 매달 목표 배당을 만들어내죠. 총 납입 원금과 복리 순수익도 함께 보여드려요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;월 적립액&lt;/strong&gt; = 목표 기간 동안 그 원금을 모으기 위해 매달 넣어야 하는 금액. **모으는 동안의 총수익률(배당 재투자 + 주가 상승)**을 복리로 반영해 계산해요. 주가 상승률을 높게 잡을수록 매달 넣어야 할 돈은 줄어듭니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="꼭-알아두세요"&gt;꼭 알아두세요
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;배당수익률은 직접 골라 입력&lt;/strong&gt;하세요. 실제 종목·ETF의 배당률과 주가는 수시로 바뀝니다.&lt;/li&gt;
&lt;li&gt;아래 예시 리스트는 &lt;strong&gt;유형별 참고용&lt;/strong&gt;이며 특정 종목 매수를 권유하지 않습니다. 세금(배당소득세 15.4%)·환율·주가 변동은 반영되지 않은 단순 계산이에요.&lt;/li&gt;
&lt;li&gt;실제 투자 결정 전에는 반드시 증권사·전문가와 상담하세요.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>연말정산 계산기 — 예상 환급금·결정세액 간편 계산 (2026)</title><link>https://planfully.ai.kr/tools/year-end-tax/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/year-end-tax/</guid><description>&lt;p&gt;연봉과 주요 공제 항목을 입력하면 &lt;strong&gt;예상 결정세액&lt;/strong&gt;과 &lt;strong&gt;환급/추가납부 예상액&lt;/strong&gt;을 간편하게 계산해요. (국세청 2026년 세율·공제 기준 — 간이 계산이라 실제와 차이가 날 수 있어요)&lt;/p&gt;
&lt;div class="pf-tool" style="max-width:560px;margin:0 auto;"&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;"&gt;총급여 (연봉, 만원)&lt;/label&gt;
 &lt;input type="tel" id="yt-salary" inputmode="numeric" placeholder="예: 5000" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;
 &lt;div style="display:flex;gap:10px;margin-top:12px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;부양가족 (본인 포함) &lt;span style="color:#999;font-weight:400;font-size:12px;"&gt;부모=60세↑·소득100만↓&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-fam" inputmode="numeric" value="1" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;20세 이하 자녀&lt;/span&gt;&lt;input type="tel" id="yt-child" inputmode="numeric" value="0" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:block;margin-top:14px;"&gt;&lt;span style="display:block;font-weight:700;margin-bottom:6px;"&gt;원천징수세율 &lt;span style="color:#999;font-weight:400;font-size:13px;"&gt;(회사에 신청한 비율)&lt;/span&gt;&lt;/span&gt;
 &lt;select id="yt-withhold" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;background:#fff;"&gt;
 &lt;option value="100" selected&gt;100% (기본 — 대부분 여기)&lt;/option&gt;
 &lt;option value="80"&gt;80% (매달 덜 떼고 연말에 덜 환급)&lt;/option&gt;
 &lt;option value="120"&gt;120% (매달 더 떼고 연말에 더 환급)&lt;/option&gt;
 &lt;/select&gt;&lt;/label&gt;
 &lt;label style="display:block;margin-top:10px;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;이미 낸 세금 (기납부·원천징수 총액, 만원) &lt;span style="color:#999;"&gt;— 급여명세서 있으면 입력, 없으면 자동추정&lt;/span&gt;&lt;/span&gt;
 &lt;input type="tel" id="yt-prepaid" inputmode="numeric" placeholder="비우면 원천징수세율로 자동 계산" style="width:100%;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;div style="margin-top:14px;font-weight:700;color:#059669;"&gt;💳 카드·현금 소득공제 (연간 사용액, 만원)&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:6px;"&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;신용카드 &lt;span style="color:#999;"&gt;15%&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-card" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;체크카드·현금 &lt;span style="color:#999;"&gt;30%&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-cash" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 30%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;전통시장 &lt;span style="color:#999;"&gt;40%&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-market" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 30%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;대중교통 &lt;span style="color:#999;"&gt;40%&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-transit" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 30%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;문화비·도서·공연·헬스장 &lt;span style="color:#999;"&gt;30%·7천↓&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-culture" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:5px;line-height:1.5;"&gt;※ 전통시장·대중교통·문화비는 &lt;b&gt;총급여 25% 초과분에 한해&lt;/b&gt; 위 공제율로 &lt;b&gt;각 100만원까지 추가공제&lt;/b&gt;돼요 (문화비·도서·공연·영화·박물관·미술관·헬스장·수영장은 총급여 7천만원 이하만).&lt;/div&gt;
 &lt;div style="margin-top:14px;font-weight:700;color:#2563eb;"&gt;🧾 세액공제 (연간 납입액, 만원)&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;연금저축 &lt;span style="color:#999;"&gt;(한도 600만)&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-pension" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;IRP &lt;span style="color:#999;"&gt;(연금저축 합산 900만)&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-irp" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;보장성 보험료&lt;/span&gt;&lt;input type="tel" id="yt-ins" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;의료비&lt;/span&gt;&lt;input type="tel" id="yt-med" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;기부금&lt;/span&gt;&lt;input type="tel" id="yt-donate" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;월세액 (연간)&lt;/span&gt;&lt;input type="tel" id="yt-rent" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;고향사랑기부금&lt;/span&gt;&lt;input type="tel" id="yt-hometown" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;label style="display:flex;align-items:center;gap:8px;margin-top:10px;font-size:14px;color:#333;cursor:pointer;"&gt;&lt;input type="checkbox" id="yt-marry" style="width:18px;height:18px;"&gt; 올해(2024~2026) 혼인신고했어요 &lt;span style="color:#999;font-size:12px;"&gt;— 결혼세액공제 50만원(생애 1회)&lt;/span&gt;&lt;/label&gt;
 &lt;div style="margin-top:14px;font-weight:700;color:#7c3aed;"&gt;🏠 추가 소득공제 (연간, 만원)&lt;/div&gt;
 &lt;div style="display:flex;gap:10px;margin-top:6px;flex-wrap:wrap;"&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;장기주택저당 이자상환&lt;/span&gt;&lt;input type="tel" id="yt-mortgage" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;주택청약저축 &lt;span style="color:#999;"&gt;(무주택)&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-housing" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;청년형 장기펀드 &lt;span style="color:#999;"&gt;(청년)&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-youthfund" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;label style="flex:1 1 45%;"&gt;&lt;span style="display:block;font-size:13px;color:#555;margin-bottom:4px;"&gt;국민성장펀드 &lt;span style="color:#999;"&gt;(3천↓40%·~5천20%·~7천10%)&lt;/span&gt;&lt;/span&gt;&lt;input type="tel" id="yt-kgf" inputmode="numeric" placeholder="0" style="width:100%;padding:10px;border:2px solid #ccc;border-radius:8px;box-sizing:border-box;"&gt;&lt;/label&gt;
 &lt;/div&gt;
 &lt;button id="yt-go" style="width:100%;margin-top:16px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;div id="yt-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:20px;border-radius:12px;" id="yt-card2"&gt;
 &lt;div id="yt-big-label" style="font-size:15px;color:#555;"&gt;&lt;/div&gt;
 &lt;div id="yt-big" style="font-size:36px;font-weight:800;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:12px;font-size:14.5px;border-collapse:collapse;"&gt;&lt;tbody id="yt-rows"&gt;&lt;/tbody&gt;&lt;/table&gt;
 &lt;div id="yt-tips" style="margin-top:16px;"&gt;&lt;/div&gt;
 &lt;div style="font-size:12px;color:#6b7280;margin-top:8px;"&gt;※ \'환급/추가납부\'는 &lt;b&gt;매달 미리 낸 세금(기납부) − 결정세액&lt;/b&gt;이에요. 기납부는 급여명세서 원천징수액을 직접 넣으면 정확하고, 안 넣으면 원천징수세율(80/100/120%)로 간이세액을 추정해요. 카드공제 초과분 배분·의료비 문턱(3%)·표준세액공제 등은 근사치라 홈택스 실제값과 차이가 납니다. 정확한 금액은 국세청 홈택스 연말정산 미리보기에서 확인하세요.&lt;/div&gt;
 &lt;button id="yt-share" style="width:100%;margin-top:14px;padding:12px;border:0;border-radius:10px;background:#059669;color:#fff;font-weight:700;cursor:pointer;"&gt;📤 공유하기&lt;/button&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;#yt-rows td{padding:8px 6px;border-bottom:1px solid #eee;}#yt-rows td:last-child{text-align:right;font-weight:700;}#yt-rows tr.hl td{color:#047857;border-top:2px solid #059669;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var v=function(id){return (parseFloat($(id).value)||0)*10000;}; // 만원→원
function earnDed(g){return g&lt;=5000000?g*0.7:g&lt;=15000000?3500000+(g-5000000)*0.4:g&lt;=45000000?7500000+(g-15000000)*0.15:g&lt;=100000000?12000000+(g-45000000)*0.05:14750000+(g-100000000)*0.02;}
function tax(base){base=Math.max(base,0);
 // 2026 종합소득세 누진공제(국세청): 6/15/24/35/38/40/42/45%
 if(base&lt;=14000000)return base*0.06;
 if(base&lt;=50000000)return base*0.15-1260000;
 if(base&lt;=88000000)return base*0.24-5760000;
 if(base&lt;=150000000)return base*0.35-15440000;
 if(base&lt;=300000000)return base*0.38-19940000;
 if(base&lt;=500000000)return base*0.40-25940000;
 if(base&lt;=1000000000)return base*0.42-35940000;
 return base*0.45-65940000;}
function won(w){if(w&gt;=100000000){return (w/100000000).toFixed(2).replace(/\.?0+$/,'')+'억원';}return Math.round(w).toLocaleString()+'원';}
$('yt-go').onclick=function(){
 var g=v('yt-salary');
 if(!g){alert('총급여(연봉, 만원)를 입력해 주세요');return;}
 var fam=Math.max(parseInt($('yt-fam').value)||1,1), child=parseInt($('yt-child').value)||0;
 // 소득공제
 var perDed=1500000*fam; // 인적공제 150만/인
 // 신용카드 등 소득공제: 총급여 25% 초과분에 공제율(신용15·체크현금30·전통시장40·대중교통40·문화비30)
 // 최저사용금액(25%)은 공제율 낮은 것부터 차감(신용→체크현금/문화→시장/교통) = 납세자 유리
 var thr=g*0.25;
 var credit=v('yt-card'), cash=v('yt-cash'), market=v('yt-market'), transit=v('yt-transit');
 var cultureUse=g&lt;=70000000?v('yt-culture'):0; // 문화비는 총급여 7천 이하만
 var bk=[{u:credit,r:0.15,g:'base'},{u:cash,r:0.30,g:'base'},{u:cultureUse,r:0.30,g:'add',n:'culture'},{u:market,r:0.40,g:'add',n:'market'},{u:transit,r:0.40,g:'add',n:'transit'}];
 bk.sort(function(a,b){return a.r-b.r;});
 var rem=thr; bk.forEach(function(x){var t=Math.min(x.u,rem); x.ded=(x.u-t)*x.r; rem-=t;});
 var baseCap=g&lt;=70000000?3000000:2500000; // 기본 한도(7천↓ 300만 / 초과 250만)
 var addCap =g&lt;=70000000?3000000:2000000; // 추가 한도(시장+교통+문화, 7천↓ 300만 / 초과 200만)
 var baseFull=bk.filter(function(x){return x.g==='base';}).reduce(function(s,x){return s+x.ded;},0);
 var baseDed=Math.min(baseFull,baseCap);
 var addFull=bk.filter(function(x){return x.g==='add';}).reduce(function(s,x){return s+Math.min(x.ded,1000000);},0); // 각 항목 100만 한도
 var addDed=Math.min(addFull,addCap);
 var cardDed=baseDed+addDed;
 var cardUse=credit+cash, cardFull=baseFull, cardCap=baseCap; // 팁·표시용(기본 카드 기준)
 var baseCapPoint=thr+baseCap/0.15; // 신용카드만으로 기본한도 채우는 사용액(이상이면 카드종류 무관)
 // 과세표준
 var mortgage=Math.min(v('yt-mortgage'),18000000); // 장기주택저당 이자 소득공제(한도 근사 1,800만)
 var housing=Math.min(v('yt-housing'),3000000)*0.40; // 주택청약: 납입 40%, 연 300만 한도(무주택 세대주)
 var youthfund=Math.min(v('yt-youthfund'),6000000)*0.40; // 청년형 장기펀드: 납입 40%, 연 600만 한도(총급여 5천↓ 청년)
 // 국민성장펀드: 투자액 차등 소득공제(3천↓40%·3~5천20%·5~7천10%), 공제한도 1,800만
 var kgfUse=v('yt-kgf');
 var kgf=(Math.min(kgfUse,30000000)*0.40)+(Math.max(Math.min(kgfUse,50000000)-30000000,0)*0.20)+(Math.max(Math.min(kgfUse,70000000)-50000000,0)*0.10);
 kgf=Math.min(kgf,18000000);
 var base=g-earnDed(g)-perDed-cardDed-mortgage-housing-youthfund-kgf;
 var calcTax=tax(base); // 산출세액
 // 세액공제
 // 연금저축 단독 600만 한도 + IRP 포함 합산 900만 한도
 var pensionSaving=Math.min(v('yt-pension'),6000000);
 var irpAmt=v('yt-irp');
 var pension=Math.min(pensionSaving+irpAmt,9000000);
 var pensionCr=pension*(g&lt;=55000000?0.165:0.132);
 var ins=Math.min(v('yt-ins'),1000000);
 var insCr=ins*0.12;
 var med=v('yt-med'); var medBase=Math.max(med-g*0.03,0); var medCr=medBase*0.15;
 var donate=v('yt-donate'); var donCr=Math.min(donate,g*0.3)*0.15;
 // 자녀세액공제(2025년 귀속 상향): 1명 25만, 2명 55만, 3명↑ 55만+40만/인 (8~20세)
 var childCr=child&lt;=0?0:child===1?250000:child===2?550000:550000+(child-2)*400000;
 // 결혼세액공제(2024~2026 혼인신고분, 생애 1회 50만원)
 var marryCr=$('yt-marry').checked?500000:0;
 // 월세 세액공제: 총급여 5,500만↓ 17%, 7,000만↓ 15%, 한도 1,000만
 var rent=Math.min(v('yt-rent'),10000000);
 var rentCr=g&lt;=55000000?rent*0.17:(g&lt;=70000000?rent*0.15:0);
 // 고향사랑기부: 10만원 이하 전액, 초과분 15%(상한 500만)
 var home=Math.min(v('yt-hometown'),5000000);
 var homeCr=Math.min(home,100000)+Math.max(home-100000,0)*0.15;
 var credits=pensionCr+insCr+medCr+donCr+childCr+rentCr+homeCr+marryCr;
 var stdCredit=130000; // 표준세액공제(특별공제 없을때) 근사
 var appliedCredit=Math.max(credits,stdCredit);
 var decided=Math.max(calcTax-appliedCredit,0); // 결정세액
 // 기납부(원천징수 총액) = 간이세액표 근사 × 선택 비율(80/100/120%)
 // 간이세액 ≈ 근로소득공제+본인공제150만만 반영한 산출세액 - 표준세액공제 13만
 var simpleTax=Math.max(tax(g-earnDed(g)-1500000)-130000,0);
 var wtRate=parseFloat($('yt-withhold').value)||100;
 var prepaidInput=v('yt-prepaid'); // 사용자가 직접 입력한 기납부(있으면 우선)
 var prepaidAuto=Math.round(simpleTax*wtRate/100);
 var noDeductTax=prepaidInput&gt;0?prepaidInput:prepaidAuto; // 기납부(원천징수)
 var prepaidManual=prepaidInput&gt;0;
 var refund=noDeductTax-decided;
 $('yt-big-label').textContent=refund&gt;=0?'예상 환급 (원천징수 '+wtRate+'% 기준)':'예상 추가납부 (원천징수 '+wtRate+'% 기준)';
 $('yt-big').textContent=won(Math.abs(refund));
 $('yt-big').style.color=refund&gt;=0?'#047857':'#dc2626';
 $('yt-card2').style.background=refund&gt;=0?'#ecfdf5':'#fef2f2';
 function sec(t){return '&lt;tr&gt;&lt;td colspan="2" style="padding-top:14px;font-weight:800;color:#111;border-bottom:2px solid #ddd;"&gt;'+t+'&lt;/td&gt;&lt;/tr&gt;';}
 function row(l,val,neg){return '&lt;tr&gt;&lt;td style="color:#555;"&gt;'+l+'&lt;/td&gt;&lt;td style="'+(neg?'color:#dc2626;':'')+'"&gt;'+(neg?'-':'')+won(val)+'&lt;/td&gt;&lt;/tr&gt;';}
 var incDedSum=earnDed(g)+perDed+cardDed+mortgage+housing+youthfund+kgf;
 var html=sec('① 소득')+row('총급여 (연봉)',g);
 html+=sec('② 소득공제 (소득을 줄여줘요)')
 +row('근로소득공제',earnDed(g),1)+row('인적공제 ('+fam+'명)',perDed,1)
 +(baseDed&gt;0?row('신용/체크카드'+(baseFull&gt;baseCap?' (한도도달)':''),baseDed,1):'')
 +(addDed&gt;0?row('전통시장·대중교통·문화비 추가'+(addFull&gt;addCap?' (한도도달)':''),addDed,1):'')
 +(mortgage&gt;0?row('장기주택저당 이자',mortgage,1):'')
 +(housing&gt;0?row('주택청약저축',housing,1):'')
 +(youthfund&gt;0?row('청년형 장기펀드',youthfund,1):'')
 +(kgf&gt;0?row('국민성장펀드',kgf,1):'')
 +'&lt;tr style="border-top:1px solid #eee;"&gt;&lt;td style="color:#111;font-weight:700;"&gt;소득공제 합계&lt;/td&gt;&lt;td style="color:#dc2626;font-weight:700;"&gt;-'+won(incDedSum)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr class="hl"&gt;&lt;td&gt;③ 과세표준&lt;/td&gt;&lt;td&gt;'+won(base)+'&lt;/td&gt;&lt;/tr&gt;';
 html+=sec('④ 산출세액 (과세표준 × 세율)')+row('과세표준 '+won(base)+' 기준',calcTax);
 html+=sec('⑤ 세액공제 (세금을 직접 깎아줘요)')
 +(pensionCr&gt;0?row('연금저축·IRP',pensionCr,1):'')
 +(rentCr&gt;0?row('월세',rentCr,1):'')
 +(insCr&gt;0?row('보장성 보험료',insCr,1):'')
 +(medCr&gt;0?row('의료비',medCr,1):'')
 +(donCr&gt;0?row('기부금',donCr,1):'')
 +(homeCr&gt;0?row('고향사랑기부',homeCr,1):'')
 +(childCr&gt;0?row('자녀 ('+child+'명)',childCr,1):'')
 +(marryCr&gt;0?row('결혼세액공제',marryCr,1):'')
 +(credits&lt;stdCredit?row('표준세액공제 (특별공제 대신)',stdCredit,1):'')
 +'&lt;tr style="border-top:1px solid #eee;"&gt;&lt;td style="color:#111;font-weight:700;"&gt;세액공제 합계&lt;/td&gt;&lt;td style="color:#dc2626;font-weight:700;"&gt;-'+won(appliedCredit)+'&lt;/td&gt;&lt;/tr&gt;'
 +'&lt;tr class="hl"&gt;&lt;td&gt;⑥ 결정세액 (실제 낼 세금)&lt;/td&gt;&lt;td&gt;'+won(decided)+'&lt;/td&gt;&lt;/tr&gt;';
 html+=sec('⑦ 환급 계산')
 +row('기납부 ('+(prepaidManual?'직접입력':'원천징수 '+wtRate+'% 자동추정')+', 매달 미리 낸 세금)',noDeductTax)
 +row('결정세액 (실제 낼 세금)',decided)
 +'&lt;tr class="hl"&gt;&lt;td&gt;'+(refund&gt;=0?'→ 예상 환급':'→ 예상 추가납부')+'&lt;/td&gt;&lt;td&gt;'+won(Math.abs(refund))+'&lt;/td&gt;&lt;/tr&gt;';
 $('yt-rows').innerHTML=html;
 // ── 맞춤 절세 팁 (입력값 기반) ──
 var tips=[];
 // 세액공제 vs 소득공제 우선순위
 var myRate=base&lt;=14000000?6:base&lt;=50000000?15:base&lt;=88000000?24:base&lt;=150000000?35:38;
 tips.push('💡 &lt;b&gt;세액공제가 소득공제보다 유리&lt;/b&gt;해요. 소득공제는 내 세율('+myRate+'%)만큼만 줄지만, 세액공제(연금저축·월세 등)는 낸 세금에서 직접 깎여요. 여윳돈은 세액공제 항목부터 채우세요.');
 // 연금저축 한도 여유
 if(pension&lt;9000000){var room=(9000000-pension)/10000;var rate2=g&lt;=55000000?16.5:13.2;
 tips.push('🏦 &lt;b&gt;연금저축·IRP 한도가 '+Math.round(room).toLocaleString()+'만원 남았어요.&lt;/b&gt; 여기 더 넣으면 '+rate2+'% ('+Math.round(room*rate2/100).toLocaleString()+'만원)를 돌려받아요. 절세율 최고 항목이에요.');}
 // 연금저축 vs IRP 우선순위
 tips.push('🥇 &lt;b&gt;연금저축 vs IRP, 뭐부터?&lt;/b&gt; 세액공제율은 둘 다 같아요(16.5%/13.2%). 그래서 &lt;b&gt;연금저축부터 600만원 채우고, 남는 건 IRP로&lt;/b&gt;(합산 900만). 이유: 연금저축은 ①중간에 일부만 인출 가능 ②주식형 100%까지 가능. IRP는 ①중도해지 시 세금 페널티가 크고 ②위험자산 70%까지만 담을 수 있어요. 유동성·운용자유도에서 연금저축이 유리해요.');
 // 국민성장펀드 안내
 if(kgfUse&gt;0){
 tips.push('🇰🇷 &lt;b&gt;국민성장펀드&lt;/b&gt;로 &lt;b&gt;'+won(kgf)+'&lt;/b&gt; 소득공제 받았어요(투자액 차등: 3천↓40%·5천↓20%·7천↓10%, 공제한도 1,800만). 단 &lt;b&gt;5년 폐쇄형이라 중도해지가 안 되고&lt;/b&gt;, 배당은 9% 분리과세예요. 여윳돈으로만 하세요.');}
 else if(g&gt;=30000000){
 tips.push('🇰🇷 &lt;b&gt;국민성장펀드&lt;/b&gt;는 투자액의 최대 40%까지 소득공제(3천만↓ 40%·~5천 20%·~7천 10%, 한도 1,800만)에 배당 9% 분리과세예요. 대신 5년 묶이는 폐쇄형이라 여유자금일 때만 고려하세요.');}
 // 신용카드 최적화
 var totalSpend=credit+cash+market+transit+cultureUse;
 if(totalSpend&lt;thr){var need=(thr-totalSpend)/10000;
 tips.push('💳 카드·현금 사용액이 아직 &lt;b&gt;총급여의 25%('+Math.round(thr/10000).toLocaleString()+'만원)에 '+Math.round(need).toLocaleString()+'만원 부족&lt;/b&gt;해요. 여기 넘어야 카드 공제가 시작돼요.');}
 else if(baseFull&gt;=baseCap){
 tips.push('💳 기본 카드공제가 &lt;b&gt;이미 한도('+Math.round(baseCap/10000)+'만원)에 도달&lt;/b&gt;했어요. 이 이상은 신용이든 체크든 공제가 안 늘어나니, &lt;b&gt;적립·혜택 좋은 신용카드를 쓰는 게 이득&lt;/b&gt;이에요.');}
 else{
 tips.push('💳 25%는 넘겼고 한도는 남았어요. 이 구간은 &lt;b&gt;체크카드·현금영수증이 공제율 2배(30%)&lt;/b&gt;라 유리해요. 참고로 &lt;b&gt;신용+체크·현금 합산이 '+Math.round(baseCapPoint/10000).toLocaleString()+'만원&lt;/b&gt;을 넘으면 그 뒤론 신용카드만 써도 공제가 똑같아져서, 그때부턴 혜택 좋은 신용카드가 이득이에요.');}
 // 전통시장·대중교통·문화비 추가공제 안내
 if(market+transit+cultureUse&gt;0){
 tips.push('🚌 &lt;b&gt;전통시장·대중교통(각 40%)·문화비(30%, 총급여 7천↓)&lt;/b&gt;는 25% 초과분에 한해 각 100만원까지 추가공제돼요. 지금 추가공제로 &lt;b&gt;'+won(addDed)+'&lt;/b&gt; 빠졌어요. 대중교통은 후불교통카드면 자동 집계돼요.');}
 else{
 tips.push('🚌 &lt;b&gt;대중교통·전통시장&lt;/b&gt; 쓴 게 있으면 따로 입력하세요. 신용카드(15%)보다 공제율이 높아요(각 40%, 100만원 한도). 다만 한도를 다 채우려면 그 항목에 250만원 넘게 써야 해서, 실제 절세는 크지 않아요.');}
 // 의료비 문턱
 if(med&gt;0&amp;&amp;med&lt;=g*0.03){
 tips.push('🏥 의료비는 &lt;b&gt;총급여의 3%('+Math.round(g*0.03/10000).toLocaleString()+'만원)를 넘는 금액만&lt;/b&gt; 공제돼요. 지금은 문턱 미달이라 공제가 0이에요.');}
 // 월세 자격 리마인더
 if(rent&gt;0){tips.push('🏠 월세 세액공제는 &lt;b&gt;무주택 세대주(총급여 8천만↓·기준시가 4억↓ 주택)&lt;/b&gt; 조건이에요. 자격 확인하세요.');}
 // 청년형 장기펀드 / 주택청약 팁
 if(g&lt;=50000000 &amp;&amp; v('yt-youthfund')===0){
 tips.push('🌱 &lt;b&gt;청년(만19~34세)이고 총급여 5천만원 이하&lt;/b&gt;면 「청년형 장기펀드」에 넣은 돈의 40%(연 600만원 한도 → 최대 240만원)를 소득공제받아요. 정부 지원 상품이에요.');}
 if(v('yt-housing')===0){
 tips.push('🏠 &lt;b&gt;무주택 세대주&lt;/b&gt;라면 「주택청약종합저축」 납입액의 40%(연 300만원 한도)를 소득공제받아요. 청약 기회 + 절세 둘 다 챙기세요.');}
 // 부모님(직계존속) 부양가족 공제 자격
 tips.push('👵 &lt;b&gt;부모님을 부양가족(150만원 공제)에 넣는 조건&lt;/b&gt;&lt;br&gt;· &lt;b&gt;나이&lt;/b&gt;: 만 60세 이상(2025년 귀속 기준 1965년생 이전). ※함께 안 살아도, 형제 중 실제 부양하는 1명이 공제.&lt;br&gt;· &lt;b&gt;소득&lt;/b&gt;: 연간 &lt;b&gt;소득금액 100만원 이하&lt;/b&gt;(근로소득만 있으면 총급여 500만원 이하).&lt;br&gt;· &lt;b&gt;연금 받으셔도 가능&lt;/b&gt;: 국민연금 등 공적연금은 &lt;b&gt;연 약 516만원(월 43만원) 이하&lt;/b&gt;면 소득요건 충족. &lt;b&gt;기초연금은 비과세&lt;/b&gt;라 아무리 받아도 소득에 안 잡혀요(공제 가능).&lt;br&gt;· &lt;b&gt;일용직이면 소득 무관&lt;/b&gt;: 일용근로소득은 분리과세(그때그때 세금 끝)라 소득금액에 안 들어가요 → 얼마를 버셔도 공제 가능.');
 // 고향사랑 꿀팁
 if(home===0){tips.push('🎁 &lt;b&gt;고향사랑기부 10만원&lt;/b&gt;은 전액 세액공제 + 답례품(3만원 상당)까지 받아요. 사실상 이득이라 안 하면 손해!');}
 $('yt-tips').innerHTML='&lt;div style="font-weight:700;color:#b45309;margin-bottom:8px;"&gt;🎯 나를 위한 절세 팁&lt;/div&gt;'+tips.map(function(x){return '&lt;div style="padding:10px 12px;background:#fffbeb;border-radius:8px;margin-bottom:6px;font-size:14px;line-height:1.6;"&gt;'+x+'&lt;/div&gt;';}).join('');
 $('yt-out').style.display='block';
 $('yt-share').onclick=function(){var t=(refund&gt;=0?'연말정산 예상 환급 '+won(Math.abs(refund)):'연말정산 추가납부 '+won(Math.abs(refund)))+'! 나도 계산 👉 '+location.origin+location.pathname;if(navigator.share){navigator.share({text:t});}else{navigator.clipboard.writeText(t).then(function(){alert('복사됐어요!');});}};
};
})();
&lt;/script&gt;
&lt;h2 id="연말정산-간단히-이해하기"&gt;연말정산, 간단히 이해하기
&lt;/h2&gt;&lt;p&gt;연말정산은 1년 동안 미리 낸 세금(원천징수)과 실제로 내야 할 세금(결정세액)을 비교해, 더 냈으면 &lt;strong&gt;환급&lt;/strong&gt;받고 덜 냈으면 &lt;strong&gt;추가납부&lt;/strong&gt;하는 절차예요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;소득공제&lt;/strong&gt;(과세표준을 줄임): 인적공제, 신용카드·체크카드 사용액, 주택자금 등&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;세액공제&lt;/strong&gt;(세금을 직접 깎음): 연금저축·IRP, 보장성 보험료, 의료비, 기부금, 자녀세액공제 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="환급을-늘리려면"&gt;환급을 늘리려면?
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;연금저축·IRP&lt;/strong&gt;가 세액공제율이 높아요(13.2~16.5%). 노후 준비 + 절세 두 마리 토끼.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;체크카드·현금영수증&lt;/strong&gt;은 신용카드보다 공제율이 2배(30%). 총급여 25% 넘게 쓰는 구간부터는 체크카드가 유리.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;의료비&lt;/strong&gt;는 총급여 3%를 넘는 금액만 공제돼요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;월세 세액공제&lt;/strong&gt;: 무주택 세대주(총급여 8천만↓·기준시가 4억↓ 주택)면 연 월세액의 15~17%를 세금에서 깎아줘요 (한도 1,000만원).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;고향사랑기부금&lt;/strong&gt;: 10만원까지는 전액 세액공제(사실상 낸 만큼 돌려받음)+답례품, 초과분은 15%.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;문화비·헬스장&lt;/strong&gt;: 총급여 7,000만원 이하면 도서·공연·영화·헬스장·수영장 결제액에 30% 소득공제 (신용카드 공제에 추가).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주택청약종합저축&lt;/strong&gt;: 무주택 세대주면 납입액의 40%를 소득공제 (연 300만원 한도).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;청년형 장기펀드(소득공제 장기펀드)&lt;/strong&gt;: 정부가 청년 자산형성을 돕는 상품. 만 19~34세·총급여 5천만원 이하면 납입액의 40%(연 600만원 한도 → 최대 240만원)를 소득공제받아요.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;이 계산기는 주요 항목만 반영한 &lt;strong&gt;간이 추정&lt;/strong&gt;이에요. 실제 연말정산은 훨씬 많은 규정이 적용되니, 정확한 금액은 &lt;a class="link" href="https://www.hometax.go.kr" target="_blank" rel="noopener"
 &gt;국세청 홈택스 연말정산 미리보기&lt;/a&gt;에서 확인하세요.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item><item><title>연봉계산기 — 실수령액·4대보험 (연봉 역산 지원)</title><link>https://planfully.ai.kr/tools/salary-calculator/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/salary-calculator/</guid><description>&lt;p&gt;연봉을 입력하면 국민연금·건강보험·장기요양·고용보험과 소득세를 뗀 &lt;strong&gt;실수령액&lt;/strong&gt;을 계산합니다. 반대로 &lt;strong&gt;실수령액이나 건강보험료로 연봉을 역산&lt;/strong&gt;할 수도 있어요. (2026년 요율 기준, 비과세 월 20만원 가정)&lt;/p&gt;
&lt;div id="salc" style="max-width:560px;margin:0 auto;"&gt;
 &lt;div style="display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;"&gt;
 &lt;button class="sc-tab" data-m="salary" style="flex:1;"&gt;연봉 → 실수령&lt;/button&gt;
 &lt;button class="sc-tab" data-m="net" style="flex:1;"&gt;실수령 → 연봉&lt;/button&gt;
 &lt;button class="sc-tab" data-m="health" style="flex:1;"&gt;건보료 → 연봉&lt;/button&gt;
 &lt;button class="sc-tab" data-m="pension" style="flex:1;"&gt;국민연금 → 연봉&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="sc-inrow"&gt;
 &lt;label style="display:block;font-weight:700;margin-bottom:6px;" id="sc-label"&gt;연봉 (세전, 만원)&lt;/label&gt;
 &lt;div style="display:flex;gap:8px;"&gt;
 &lt;input type="tel" id="sc-val" inputmode="numeric" placeholder="예: 4000" style="flex:1;padding:13px;border:2px solid #ccc;border-radius:10px;font-size:17px;"&gt;
 &lt;span id="sc-unit" style="align-self:center;color:#888;font-size:14px;"&gt;만원&lt;/span&gt;
 &lt;/div&gt;
 &lt;div style="margin-top:10px;font-size:13px;color:#888;"&gt;부양가족 &lt;input type="tel" id="sc-fam" inputmode="numeric" value="1" style="width:44px;padding:5px 8px;border:1px solid #ccc;border-radius:6px;text-align:center;"&gt;명 (본인 포함) · 20세 이하 자녀 &lt;input type="tel" id="sc-child" inputmode="numeric" value="0" style="width:44px;padding:5px 8px;border:1px solid #ccc;border-radius:6px;text-align:center;"&gt;명&lt;/div&gt;
 &lt;button id="sc-go" style="width:100%;margin-top:14px;padding:14px;border:0;border-radius:10px;background:#059669;color:#fff;font-size:17px;font-weight:700;cursor:pointer;"&gt;계산하기&lt;/button&gt;
 &lt;/div&gt;
 &lt;div id="sc-out" style="display:none;margin-top:20px;"&gt;
 &lt;div style="text-align:center;padding:18px;border-radius:12px;background:#ecfdf5;"&gt;
 &lt;div id="sc-big-label" style="font-size:14px;color:#555;"&gt;월 실수령액&lt;/div&gt;
 &lt;div id="sc-big" style="font-size:38px;font-weight:800;color:#047857;line-height:1.2;"&gt;&lt;/div&gt;
 &lt;div id="sc-big-sub" style="font-size:14px;color:#666;margin-top:2px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;table style="width:100%;margin-top:14px;border-collapse:collapse;font-size:14.5px;"&gt;
 &lt;tbody id="sc-rows"&gt;&lt;/tbody&gt;
 &lt;/table&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.sc-tab{padding:11px 8px;border:2px solid #d1d5db;border-radius:10px;background:#fff;font-weight:700;font-size:13.5px;cursor:pointer;}
.sc-tab.on{border-color:#059669;background:#ecfdf5;color:#047857;}
#sc-rows td{padding:9px 6px;border-bottom:1px solid #eee;}
#sc-rows td:last-child{text-align:right;font-weight:700;}
#sc-rows tr.tot td{border-top:2px solid #059669;border-bottom:none;color:#047857;font-weight:800;padding-top:12px;}
&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var mode='salary';
// 2026 요율 (근로자 부담분)
var NP=0.045, HI=0.03545, LTC=0.1295, EI=0.009; // 국민연금4.5·건보3.545·장기요양(건보의12.95%)·고용0.9
var NP_CAP=6170000; // 국민연금 상한 기준소득월액(근사)
function won(n){return Math.round(n).toLocaleString()+'원';}
function manToWon(m){return m*10000;}
// 간이 소득세(월) — 근로소득 간이세액 근사(부양가족·자녀 반영 단순화)
function incomeTax(monthlyGross, fam, child){
 var taxable=Math.max(monthlyGross-200000,0); // 비과세 20만 가정
 // 과세표준 근사: 연 환산 후 근로소득공제·인적공제 반영
 var annual=taxable*12;
 var earnDed = annual&lt;=5000000?annual*0.7 : annual&lt;=15000000?3500000+(annual-5000000)*0.4 : annual&lt;=45000000?7500000+(annual-15000000)*0.15 : annual&lt;=100000000?12000000+(annual-45000000)*0.05 : 14750000+(annual-100000000)*0.02;
 var base=annual-earnDed-1500000*fam-1500000*child; // 기본공제 150만/인
 base=Math.max(base,0);
 var tax = base&lt;=14000000?base*0.06 : base&lt;=50000000?840000+(base-14000000)*0.15 : base&lt;=88000000?6240000+(base-50000000)*0.24 : base&lt;=150000000?15360000+(base-88000000)*0.35 : base*0.38;
 tax=Math.max(tax,0);
 var local=tax*0.1;
 return (tax+local)/12;
}
function deductions(monthlyGross, fam, child){
 var npBase=Math.min(monthlyGross,NP_CAP);
 var np=npBase*NP;
 var hi=monthlyGross*HI;
 var ltc=hi*LTC;
 var ei=monthlyGross*EI;
 var tax=incomeTax(monthlyGross,fam,child);
 return {np:np,hi:hi,ltc:ltc,ei:ei,tax:tax,total:np+hi+ltc+ei+tax};
}
function netFromGrossMonthly(g,fam,child){var d=deductions(g,fam,child);return g-d.total;}
// 역산: 목표 월실수령 → 세전 월급 (이분탐색)
function grossFromNet(targetNet,fam,child){
 var lo=targetNet, hi=targetNet*2.2;
 for(var i=0;i&lt;40;i++){var m=(lo+hi)/2; if(netFromGrossMonthly(m,fam,child)&lt;targetNet)lo=m;else hi=m;}
 return (lo+hi)/2;
}
// 역산: 월 건강보험료 → 세전 월급
function grossFromHealth(monthlyHI){ return monthlyHI/HI; }
// 역산: 월 국민연금 → 세전 월급 (상한 반영)
function grossFromPension(monthlyNP){ var g=monthlyNP/NP; return g&gt;NP_CAP? (function(){alert("국민연금 상한(기준소득월액 "+NP_CAP.toLocaleString()+"원)을 초과해 정확한 역산이 어려워요. 상한 기준으로 표시합니다.");return NP_CAP;})() : g; }

var tabs=document.querySelectorAll('.sc-tab');
function setMode(m){
 mode=m;
 tabs.forEach(function(t){t.classList.toggle('on',t.dataset.m===m);});
 var lab=$('sc-label'),unit=$('sc-unit');
 if(m==='salary'){lab.textContent='연봉 (세전, 만원)';unit.textContent='만원';$('sc-val').placeholder='예: 4000';}
 if(m==='net'){lab.textContent='희망 월 실수령액 (만원)';unit.textContent='만원';$('sc-val').placeholder='예: 300';}
 if(m==='health'){lab.textContent='월 건강보험료 (원)';unit.textContent='원';$('sc-val').placeholder='예: 150000';}
 if(m==='pension'){lab.textContent='월 국민연금 (원)';unit.textContent='원';$('sc-val').placeholder='예: 180000';}
}
tabs.forEach(function(t){t.onclick=function(){setMode(t.dataset.m);};});
setMode('salary');

$('sc-go').onclick=function(){
 var v=parseFloat(($('sc-val').value||'').replace(/[^0-9.]/g,''));
 if(!v){alert('값을 입력해 주세요');return;}
 var fam=Math.max(parseInt($('sc-fam').value)||1,1), child=parseInt($('sc-child').value)||0;
 var gm; // 세전 월급
 if(mode==='salary'){gm=manToWon(v)/12;}
 else if(mode==='net'){gm=grossFromNet(manToWon(v),fam,child);}
 else if(mode==='health'){gm=grossFromHealth(v);}
 else {gm=grossFromPension(v);}
 var d=deductions(gm,fam,child);
 var net=gm-d.total;
 var annualGross=gm*12;
 $('sc-big-label').textContent='월 실수령액';
 $('sc-big').textContent=won(net);
 $('sc-big-sub').textContent='세전 연봉 '+won(annualGross)+' · 월급 '+won(gm);
 var rows=[
 ['세전 월급',won(gm)],
 ['국민연금 (4.5%)','-'+won(d.np)],
 ['건강보험 (3.545%)','-'+won(d.hi)],
 ['장기요양 (건보의 12.95%)','-'+won(d.ltc)],
 ['고용보험 (0.9%)','-'+won(d.ei)],
 ['소득세+지방세 (간이)','-'+won(d.tax)],
 ['공제 합계','-'+won(d.total)]
 ];
 var html='';
 rows.forEach(function(r){html+='&lt;tr&gt;&lt;td style="color:#555;"&gt;'+r[0]+'&lt;/td&gt;&lt;td&gt;'+r[1]+'&lt;/td&gt;&lt;/tr&gt;';});
 html+='&lt;tr class="tot"&gt;&lt;td&gt;월 실수령액&lt;/td&gt;&lt;td&gt;'+won(net)+'&lt;/td&gt;&lt;/tr&gt;';
 html+='&lt;tr class="tot"&gt;&lt;td&gt;연 실수령액&lt;/td&gt;&lt;td&gt;'+won(net*12)+'&lt;/td&gt;&lt;/tr&gt;';
 $('sc-rows').innerHTML=html;
 $('sc-out').style.display='block';
};
})();
&lt;/script&gt;
&lt;h2 id="계산-기준-2026년"&gt;계산 기준 (2026년)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;국민연금&lt;/strong&gt; 4.5%(근로자분, 기준소득월액 상한 있음) · &lt;strong&gt;건강보험&lt;/strong&gt; 3.545% · &lt;strong&gt;장기요양보험&lt;/strong&gt; 건강보험료의 12.95% · &lt;strong&gt;고용보험&lt;/strong&gt; 0.9%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;소득세&lt;/strong&gt;는 근로소득 간이세액을 근사 계산합니다(부양가족·자녀 수 반영). 실제 원천징수액은 회사 설정과 연말정산에서 달라질 수 있어요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;비과세&lt;/strong&gt;는 식대 등 월 20만원을 가정했습니다. 비과세 항목이 다르면 실수령액이 달라집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="역계산은-이렇게-써요"&gt;역계산은 이렇게 써요
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;실수령 → 연봉&lt;/strong&gt;: &amp;ldquo;월 300만원 받으려면 연봉이 얼마여야 하지?&amp;ldquo;를 계산합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;건보료 → 연봉&lt;/strong&gt;: 건강보험료 고지서의 월 보험료로 대략적인 세전 소득을 역산합니다(직장가입자 보수월액 기준).&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;이 계산기는 참고용 근사치입니다. 정확한 금액은 국세청 홈택스·4대사회보험 정보연계센터에서 확인하세요.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>