<?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/tools/</link><description>Recent content in 도구방 on 계획대로 느긋하게</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://planfully.ai.kr/tools/index.xml" rel="self" type="application/rss+xml"/><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;/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;/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;}&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var DOW=['일','월','화','수','목','금','토'];
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(){
 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').textContent=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;}
 var days=Math.abs(Math.round((d2-d1)/86400000));
 $('dc-big').textContent=days.toLocaleString()+'일';
 $('dc-sub').textContent=fmt(d1)+' ~ '+fmt(d2)+'&lt;br&gt;약 '+Math.floor(days/7)+'주 '+(days%7)+'일 · '+(days/365).toFixed(1)+'년';
 $('dc-sub').innerHTML=$('dc-sub').textContent.replace('&lt;br&gt;','&lt;br&gt;');
 }
 $('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;/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><item><title>오늘의 운세 — 띠별 무료 운세 (재물·애정·건강·행운)</title><link>https://planfully.ai.kr/tools/fortune/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate><guid>https://planfully.ai.kr/tools/fortune/</guid><description>&lt;p&gt;띠를 고르면 &lt;strong&gt;오늘의 총운·재물운·애정운·건강운&lt;/strong&gt;과 &lt;strong&gt;행운의 숫자·색깔·방향&lt;/strong&gt;을 알려드려요. 같은 날엔 몇 번을 봐도 같은 결과가 나오고, 내일이면 새로운 운세로 바뀝니다. (재미로 봐주세요 😊)&lt;/p&gt;
&lt;div id="fortune" style="max-width:560px;margin:0 auto;"&gt;
 &lt;div style="text-align:center;"&gt;
 &lt;div style="font-weight:700;margin-bottom:10px;" id="ft-date"&gt;&lt;/div&gt;
 &lt;div style="font-size:14px;color:#888;margin-bottom:8px;"&gt;당신의 띠를 골라주세요&lt;/div&gt;
 &lt;div id="ft-zodiac" style="display:grid;grid-template-columns:repeat(4,1fr);gap:8px;"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div id="ft-result" style="display:none;margin-top:22px;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.ft-z{padding:12px 4px;border:2px solid #d1d5db;border-radius:10px;background:#fff;cursor:pointer;font-size:14px;font-weight:700;transition:all .12s;}
.ft-z:hover{border-color:#7c3aed;background:#f5f3ff;}
.ft-z .em{font-size:24px;display:block;}
.ft-card{padding:16px 18px;border-radius:12px;margin-bottom:12px;}
.ft-bar{height:8px;background:#e5e7eb;border-radius:4px;margin-top:6px;overflow:hidden;}
.ft-bar &gt; div{height:8px;border-radius:4px;}
&lt;/style&gt;
&lt;script&gt;
(function(){
var $=function(id){return document.getElementById(id);};
var Z=[['쥐','🐭'],['소','🐮'],['호랑이','🐯'],['토끼','🐰'],['용','🐲'],['뱀','🐍'],['말','🐴'],['양','🐑'],['원숭이','🐵'],['닭','🐔'],['개','🐶'],['돼지','🐷']];
var now=new Date();
var dstr=(now.getMonth()+1)+'월 '+now.getDate()+'일';
$('ft-date').textContent='🔮 '+now.getFullYear()+'년 '+dstr+' 오늘의 운세';
var daySeed=now.getFullYear()*10000+(now.getMonth()+1)*100+now.getDate();

// 결정론적 유사난수 (같은 날+같은 띠 = 같은 결과)
function rng(seed){var x=Math.sin(seed)*10000;return x-Math.floor(x);}

var TOTAL=[
 '막힌 일이 술술 풀리는 날이에요. 미뤄둔 일에 도전해보세요.',
 '조용하지만 알찬 하루. 작은 성취가 쌓입니다.',
 '뜻밖의 좋은 소식이 찾아올 수 있어요. 연락을 기다려보세요.',
 '서두르면 실수가 생겨요. 오늘은 천천히 가는 게 이득입니다.',
 '주변의 도움으로 일이 잘 풀려요. 감사 인사를 잊지 마세요.',
 '새로운 인연이나 기회가 문을 두드립니다. 마음을 열어보세요.',
 '컨디션이 좋아 무엇을 해도 흐름을 탑니다. 자신감을 가지세요.',
 '작은 오해가 생길 수 있으니 말은 한 번 더 생각하고 하세요.'
];
var MONEY=['예상치 못한 지출 주의! 오늘은 지갑을 닫으세요.','작은 재물운이 들어와요. 미뤄둔 정산을 챙기세요.','투자·계약은 하루 미루는 게 좋아요.','생각지 못한 곳에서 이득이 생깁니다.'];
var LOVE=['솔직한 표현이 관계를 가깝게 만들어요.','혼자만의 시간이 오히려 매력을 키우는 날.','오래 연락 없던 사람에게서 소식이 올 수도.','작은 배려가 큰 감동으로 돌아옵니다.'];
var HEALTH=['가벼운 산책이 컨디션을 끌어올려요.','충분한 수분과 휴식이 필요한 날.','눈과 어깨의 피로에 신경 쓰세요.','평소보다 활력이 넘치는 하루입니다.'];
var COLORS=['빨강','주황','노랑','초록','파랑','보라','흰색','검정','분홍','하늘'];
var DIRS=['동쪽','서쪽','남쪽','북쪽','동남쪽','남서쪽'];

$('ft-zodiac').innerHTML=Z.map(function(z,i){return '&lt;button class="ft-z" data-i="'+i+'"&gt;&lt;span class="em"&gt;'+z[1]+'&lt;/span&gt;'+z[0]+'띠&lt;/button&gt;';}).join('');
[].forEach.call(document.querySelectorAll('.ft-z'),function(b){
 b.onclick=function(){show(parseInt(b.dataset.i));};
});
function bar(label,score,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(score)+'☆'.repeat(5-score)+'&lt;/span&gt;&lt;/div&gt;&lt;div class="ft-bar"&gt;&lt;div style="width:'+(score*20)+'%;background:'+color+';"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';
}
function pick(arr,seed){return arr[Math.floor(rng(seed)*arr.length)];}
function score(seed){return 1+Math.floor(rng(seed)*5);}
function show(zi){
 var base=daySeed+zi*97;
 var z=Z[zi];
 var sTot=score(base+1),sMon=score(base+2),sLov=score(base+3),sHea=score(base+4);
 var luckyNum=1+Math.floor(rng(base+5)*45);
 var color=pick(COLORS,base+6), dir=pick(DIRS,base+7);
 var html='&lt;div class="ft-card" style="background:#f5f3ff;text-align:center;"&gt;'
 +'&lt;div style="font-size:30px;"&gt;'+z[1]+'&lt;/div&gt;'
 +'&lt;div style="font-weight:800;font-size:18px;color:#5b21b6;"&gt;'+z[0]+'띠 오늘의 운세&lt;/div&gt;'
 +'&lt;div style="margin-top:8px;font-size:15px;line-height:1.7;"&gt;'+pick(TOTAL,base+8)+'&lt;/div&gt;'
 +'&lt;/div&gt;';
 html+='&lt;div class="ft-card" style="background:#fafafa;border:1px solid #eee;"&gt;'
 +bar('총운','+'.length&amp;&amp;sTot,'#7c3aed')
 +bar('재물운',sMon,'#059669')
 +bar('애정운',sLov,'#e11d48')
 +bar('건강운',sHea,'#0891b2')
 +'&lt;div style="margin-top:10px;font-size:14px;line-height:1.8;color:#444;"&gt;'
 +'💰 '+pick(MONEY,base+9)+'&lt;br&gt;'
 +'💕 '+pick(LOVE,base+10)+'&lt;br&gt;'
 +'🌿 '+pick(HEALTH,base+11)
 +'&lt;/div&gt;&lt;/div&gt;';
 html+='&lt;div class="ft-card" style="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;';
 html+='&lt;div style="display:flex;gap:10px;margin-top:8px;"&gt;'
 +'&lt;button id="ft-again" style="flex:1;padding:12px;border:2px solid #7c3aed;border-radius:10px;background:#fff;color:#5b21b6;font-weight:700;cursor:pointer;"&gt;다른 띠 보기&lt;/button&gt;'
 +'&lt;button id="ft-share" style="flex:1;padding:12px;border:0;border-radius:10px;background:#7c3aed;color:#fff;font-weight:700;cursor:pointer;"&gt;운세 공유&lt;/button&gt;'
 +'&lt;/div&gt;';
 html+='&lt;div style="margin-top:14px;padding:12px;border-radius:10px;background:#eff6ff;font-size:13.5px;"&gt;더 많은 도구: &lt;a href="https://planfully.ai.kr/tools/"&gt;도구방&lt;/a&gt; · 게임 한판 &lt;a href="https://planfully.ai.kr/games/"&gt;게임방&lt;/a&gt;&lt;/div&gt;';
 $('ft-result').innerHTML=html;
 $('ft-result').style.display='block';
 $('ft-again').onclick=function(){$('ft-result').style.display='none';window.scrollTo({top:$('fortune').offsetTop-20,behavior:'smooth'});};
 $('ft-share').onclick=function(){
 var url=location.origin+location.pathname+'?z='+zi;
 var t=z[0]+'띠 '+dstr+' 운세: '+pick(TOTAL,base+8)+' 행운의 숫자 '+luckyNum+' 🔮 너도 봐 👉 '+url;
 if(navigator.share)navigator.share({text:t});else navigator.clipboard.writeText(t).then(function(){alert('복사됐어요!');});
 };
 window.scrollTo({top:$('ft-result').offsetTop-40,behavior:'smooth'});
}
// 공유 링크(?z=띠index)로 들어오면 그 띠 운세를 바로 표시
(function(){var m=location.search.match(/[?&amp;]z=(\d{1,2})/);if(m){var zi=parseInt(m[1]);if(zi&gt;=0&amp;&amp;zi&lt;12)show(zi);}})();
})();
&lt;/script&gt;
&lt;h2 id="오늘의-운세는-어떻게-만드나요"&gt;오늘의 운세는 어떻게 만드나요?
&lt;/h2&gt;&lt;p&gt;이 운세는 &lt;strong&gt;오늘 날짜와 띠를 조합한 규칙&lt;/strong&gt;으로 생성됩니다. 그래서 같은 날에는 몇 번을 다시 봐도 결과가 같고, 날짜가 바뀌면 새로운 운세가 나와요. 재미와 하루의 기분 전환을 위한 콘텐츠이며, 실제 사주·명리학과는 다릅니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;띠&lt;/strong&gt; 12지신 기준 (양력 연도로 간편 계산)&lt;/li&gt;
&lt;li&gt;총운·재물운·애정운·건강운을 별점으로, 행운의 숫자(1~45)·색·방향까지&lt;/li&gt;
&lt;li&gt;입력한 정보는 저장되지 않고, 모든 계산은 브라우저에서 이루어집니다.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>