1import{r as s,j as e}from"./react-core-SaLnwSRd.js";import{H as re}from"./heart-DGq1wBpK.js";import{U as I}from"./users-CBYZFNoB.js";import{D as le}from"./dollar-sign-BiE6OmrL.js";import{T as oe}from"./triangle-alert-BMgd-u6-.js";import{b as ne}from"./table-SplBQe3a.js";import{b as de,d as ie}from"./index-CRJ-gAjQ.js";const ye=({theme:xe})=>{const[ce,me]=s.useState("Partner 1"),[w,J]=s.useState(56),[M,G]=s.useState(65),[f,q]=s.useState(55e4),[j,O]=s.useState(1200),[i,W]=s.useState(2900),[c,B]=s.useState(67),[ue,be]=s.useState("Partner 2"),[C,z]=s.useState(54),[A,H]=s.useState(64),[k,U]=s.useState(4e5),[v,Y]=s.useState(1e3),[m,Q]=s.useState(2100),[u,K]=s.useState(67),[N,V]=s.useState(6.8),[x,X]=s.useState(7500),[b,he]=s.useState(800),[y,Z]=s.useState(null),h=Math.max(0,M-w),p=Math.max(0,A-C),o=s.useMemo(()=>{const t=c-67,a=t<0?1+t*.06:1+t*.08;return Math.round(i*a)},[i,c]),n=s.useMemo(()=>{const t=i*.5,a=Math.max(m,t),l=u-67,d=l<0?1+l*.06:1+(m>t?l*.08:0);return Math.round(a*d)},[i,m,u]),P=o+n,r=s.useMemo(()=>{const t=Math.max(h,p);let a=f,l=k;const d=N/100/12;for(let g=1;g<=t;g++)for(let F=0;F<12;F++)g<=h?a=a*(1+d)+j:a=a*(1+d),g<=p?l=l*(1+d)+v:l=l*(1+d);const R=Math.round(a+l),ee=R*.04,S=Math.round(ee/12),$=P+b,E=S+$,te=E-x,L=Math.max(o,n),se=L+b*.6,T=S+se,D=x*.75,ae=T-D;return{totalNestEggAtFullRetire:R,safeMonthlyPortfolioDraw:S,totalGuaranteedMonthly:$,totalJointMonthlyIncome:E,monthlySurplusOrDeficit:te,survivorSS:L,survivorTotalMonthly:Math.round(T),survivorEstimatedTarget:Math.round(D),survivorGap:Math.round(ae)}},[h,p,f,k,N,j,v,P,b,x,o,n]),_=[{q:"How does Social Security spousal benefit work for married couples?",a:"A spouse is entitled to receive up to 50% of their partnerâs Full Retirement Age (FRA) Primary Insurance Amount (PIA) if it exceeds their own earned benefit. To receive the full 50% spousal top-up, the claiming spouse must have reached their full retirement age (67 for those born 1960 or later)."},{q:'What is the "Survivor Benefit Trap" in couple retirement planning?',a:"When one spouse passes away, the smaller of the coupleâs two Social Security checks is permanently eliminated. Furthermore, the surviving spouse must file taxes as Single, which compresses tax brackets and often leads to higher tax rates and higher Medicare IRMAA surcharges on less total income."},{q:"What is the advantage of staggering retirement ages for couples?",a:"Staggering retirement allows the couple to maintain subsidized employer health insurance until both reach Medicare age (65), continues retirement plan contributions, and cushions cash flow during the transition."},{q:"Why should the higher-earning spouse usually delay Social Security until age 70?",a:"Delaying to age 70 guarantees an 8% annual boost (plus COLAs) and locks in the highest possible survivor benefit for the surviving partner for the remainder of their lifetime."}];return e.jsxs("div",{className:"w-full max-w-6xl mx-auto space-y-8",id:"couples-retirement-calculator-root",children:[e.jsx("div",{className:"bg-gradient-to-r from-rose-950 via-purple-950 to-slate-900 text-white rounded-2xl p-6 md:p-8 shadow-xl",children:e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 max-w-3xl",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 bg-rose-500/20 text-rose-300 text-xs font-semibold rounded-full border border-rose-400/30",children:[e.jsx(re,{className:"w-3.5 h-3.5"}),"Joint Wealth & Longevity Planner"]}),e.jsx("h1",{className:"text-2xl md:text-4xl font-bold tracking-tight",children:"Couples Retirement Calculator 2027"}),e.jsx("p",{className:"text-rose-100 text-sm md:text-base leading-relaxed",children:"Synchronize dual retirement ages, combined 401(k) accounts, spousal Social Security maximization, and protect against the single survivor income cliff."})]}),e.jsxs("div",{className:"bg-white/10 backdrop-blur-md rounded-xl p-4 border border-white/20 text-center min-w-[200px]",children:[e.jsx("span",{className:"text-xs text-rose-200 uppercase tracking-wider block font-medium",children:"Combined Nest Egg"}),e.jsxs("span",{className:"text-2xl md:text-3xl font-black text-white",children:["$",r.totalNestEggAtFullRetire.toLocaleStr
1ing()]}),e.jsx("span",{className:"text-xs text-emerald-300 block mt-1",children:"At Full Joint Retirement"})]})]})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-6 space-y-6",children:[e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl p-6 shadow-sm border border-slate-200 dark:border-slate-800 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-slate-100 dark:border-slate-800 pb-3",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-900 dark:text-white flex items-center gap-2",children:[e.jsx(I,{className:"w-4 h-4 text-rose-600 dark:text-rose-400"}),"Partner 1 Profile"]}),e.jsxs("span",{className:"text-xs text-slate-500 font-medium",children:["Retires in ",h," yrs"]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Current Age"}),e.jsx("input",{type:"number",value:w,onChange:t=>J(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Retire Age"}),e.jsx("input",{type:"number",value:M,onChange:t=>G(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"SS Claim Age"}),e.jsxs("select",{value:c,onChange:t=>B(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold",children:[e.jsx("option",{value:62,children:"62 (Early 70%)"}),e.jsx("option",{value:65,children:"65 (86.7%)"}),e.jsx("option",{value:67,children:"67 (Full 100%)"}),e.jsx("option",{value:70,children:"70 (Max 124%)"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Current 401(k)/IRA"}),e.jsx("input",{type:"number",step:5e3,value:f,onChange:t=>q(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Monthly Contribution"}),e.jsx("input",{type:"number",step:50,value:j,onChange:t=>O(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-xs font-medium text-slate-600 dark:text-slate-400 mb-1",children:[e.jsx("span",{children:"Social Security (FRA Estimate)"}),e.jsxs("span",{className:"font-bold text-rose-600",children:["$",o,"/mo at age ",c]})]}),e.jsx("input",{type:"number",value:i,onChange:t=>W(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white"})]})]}),e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl p-6 shadow-sm border border-slate-200 dark:border-slate-800 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-slate-100 dark:border-slate-800 pb-3",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-900 dark:text-white flex items-center gap-2",children:[e.jsx(I,{className:"w-4 h-4 text-purple-600 dar
1k:text-purple-400"}),"Partner 2 Profile"]}),e.jsxs("span",{className:"text-xs text-slate-500 font-medium",children:["Retires in ",p," yrs"]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Current Age"}),e.jsx("input",{type:"number",value:C,onChange:t=>z(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Retire Age"}),e.jsx("input",{type:"number",value:A,onChange:t=>H(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"SS Claim Age"}),e.jsxs("select",{value:u,onChange:t=>K(Number(t.target.value)),className:"w-full px-2.5 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold",children:[e.jsx("option",{value:62,children:"62 (Early 70%)"}),e.jsx("option",{value:65,children:"65 (86.7%)"}),e.jsx("option",{value:67,children:"67 (Full 100%)"}),e.jsx("option",{value:70,children:"70 (Max 124%)"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Current 401(k)/IRA"}),e.jsx("input",{type:"number",step:5e3,value:k,onChange:t=>U(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Monthly Contribution"}),e.jsx("input",{type:"number",step:50,value:v,onChange:t=>Y(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-xs font-medium text-slate-600 dark:text-slate-400 mb-1",children:[e.jsx("span",{children:"Social Security (FRA Estimate)"}),e.jsxs("span",{className:"font-bold text-purple-600",children:["$",n,"/mo at age ",u]})]}),e.jsx("input",{type:"number",value:m,onChange:t=>Q(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white"})]})]}),e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl p-5 shadow-sm border border-slate-200 dark:border-slate-800 space-y-3",children:[e.jsx("h3",{className:"text-xs font-bold text-slate-800 dark:text-slate-200 uppercase tracking-wider",children:"Joint Spending Goal & Return"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Target Spending ($/mo)"}),e.jsx("input",{type:"number",value:x,onChange:t=>X(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-rose-300 dark:border-rose-700 bg-rose-50/40 dark:bg-rose-950/20 text-slate-900 dark:text-white font-bold"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-medium text-slate-600 dark:text-slate-400 block mb-1",children:"Expected Return (%)"}),e.jsx("input",{type:"number",step:"0.1",value:N,onChange:t=>V(Number(t.target.value)),className:"w-full px-3 py-1.5 text-sm rounded-lg border border-slate-300 dark:border-slate-700 bg-slate-50 dark:bg-slate-800 text-slate-900 dark:text-white font-semibold"})]})]})]})]}),e.jsxs("div",{className:"lg:col-span-6 space-y-6",children:[e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl p-6 shadow-sm border border-slate-200 dark:border-slate-800 space-y-6",children:[e.jsxs("h2",{className:"text-lg font-bold text-slate-900 dark:text-white flex items-center gap-2",children:[e.jsx(le,{className:"w-5 h-5 text-rose-600 dar
1k:text-rose-400"}),"Joint Monthly Retirement Income"]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"bg-slate-50 dark:bg-slate-800/50 p-4 rounded-xl border border-slate-100 dark:border-slate-800",children:[e.jsx("span",{className:"text-xs text-slate-500 dark:text-slate-400 block",children:"Total Joint Income"}),e.jsxs("span",{className:"text-2xl font-black text-slate-900 dark:text-white mt-1 block",children:["$",r.totalJointMonthlyIncome.toLocaleString()]}),e.jsx("span",{className:"text-[11px] text-slate-400",children:"/ month"})]}),e.jsxs("div",{className:`p-4 rounded-xl border ${r.monthlySurplusOrDeficit>=0?"bg-emerald-50 dark:bg-emerald-950/30 border-emerald-200 dark:border-emerald-800":"bg-rose-50 dark:bg-rose-950/30 border-rose-200 dark:border-rose-800"}`,children:[e.jsx("span",{className:"text-xs block font-medium",children:r.monthlySurplusOrDeficit>=0?"Monthly Surplus":"Monthly Deficit"}),e.jsxs("span",{className:`text-2xl font-black mt-1 block ${r.monthlySurplusOrDeficit>=0?"text-emerald-700 dark:text-emerald-300":"text-rose-700 dark:text-rose-300"}`,children:[r.monthlySurplusOrDeficit>=0?"+":"","$",r.monthlySurplusOrDeficit.toLocaleString()]}),e.jsxs("span",{className:"text-[11px] text-slate-500",children:["vs $",x.toLocaleString()," goal"]})]})]}),e.jsxs("div",{className:"space-y-2.5 pt-2",children:[e.jsx("h3",{className:"text-xs font-bold text-slate-800 dark:text-slate-200 uppercase tracking-wider",children:"Monthly Income Stack"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex justify-between items-center p-2.5 bg-slate-50 dark:bg-slate-800/40 rounded-lg",children:[e.jsx("span",{className:"text-slate-600 dark:text-slate-400",children:"Partner 1 Social Security"}),e.jsxs("span",{className:"font-bold text-rose-600",children:["$",o.toLocaleString(),"/mo"]})]}),e.jsxs("div",{className:"flex justify-between items-center p-2.5 bg-slate-50 dark:bg-slate-800/40 rounded-lg",children:[e.jsx("span",{className:"text-slate-600 dark:text-slate-400",children:"Partner 2 Social Security"}),e.jsxs("span",{className:"font-bold text-purple-600",children:["$",n.toLocaleString(),"/mo"]})]}),e.jsxs("div",{className:"flex justify-between items-center p-2.5 bg-slate-50 dark:bg-slate-800/40 rounded-lg",children:[e.jsx("span",{className:"text-slate-600 dark:text-slate-400",children:"4% Safe Portfolio Draw"}),e.jsxs("span",{className:"font-bold text-blue-600",children:["$",r.safeMonthlyPortfolioDraw.toLocaleString(),"/mo"]})]}),e.jsxs("div",{className:"flex justify-between items-center p-2.5 bg-slate-50 dark:bg-slate-800/40 rounded-lg",children:[e.jsx("span",{className:"text-slate-600 dark:text-slate-400",children:"Joint Pension"}),e.jsxs("span",{className:"font-bold text-slate-700 dark:text-slate-300",children:["$",b.toLocaleString(),"/mo"]})]})]})]})]}),e.jsxs("div",{className:"bg-amber-50 dark:bg-amber-950/20 rounded-2xl p-6 border border-amber-200 dark:border-amber-800 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-amber-800 dark:text-amber-300 font-bold text-sm",children:[e.jsx(oe,{className:"w-5 h-5 text-amber-600"}),"Survivor Income Cliff & Longevity Protection"]}),e.jsxs("p",{className:"text-xs text-amber-900/80 dark:text-amber-200/80 leading-relaxed",children:["When the first spouse passes away, the smaller Social Security benefit ($",Math.min(o,n).toLocaleString(),"/mo) ends immediately."]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-xs pt-1",children:[e.jsxs("div",{className:"bg-white/80 dark:bg-slate-900/80 p-3 rounded-xl border border-amber-200 dark:border-amber-900",children:[e.jsx("span",{className:"text-slate-500 block",children:"Surviving Income"}),e.jsxs("span",{className:"text-base font-bold text-slate-900 dark:text-white mt-0.5 block",children:["$",r.survivorTotalMonthly.toLocaleString(),"/mo"]}),e.jsx("span",{className:"text-[10px] text-slate-400",children:"Keeps highest SS check"})]}),e.jsxs("div",{className:"bg-white/80 dark:bg-slate-900/80 p-3 rounded-xl border border-amber-200 dark:border-amber-900",children:[e.jsx("span",{className:"text-slate-500 block",children:"Single Living Budget"}),e.jsxs("span",{className:"text-base font-bold text-slate-900 dark:text-white mt-0.5 block",children:["$",r.survivorEstimatedTarget.toLocaleStr
1ing(),"/mo"]}),e.jsx("span",{className:"text-[10px] text-slate-400",children:"Estimated 75% of couple spend"})]})]}),e.jsxs("div",{className:"text-xs font-semibold flex items-center justify-between text-amber-900 dark:text-amber-200 pt-1",children:[e.jsx("span",{children:"Survivor Net Cash Status:"}),e.jsxs("span",{className:r.survivorGap>=0?"text-emerald-700 dark:text-emerald-400":"text-rose-600",children:[r.survivorGap>=0?"Fully Protected (+":"Income Shortfall (-","$",Math.abs(r.survivorGap).toLocaleString(),"/mo)"]})]})]})]})]}),e.jsxs("div",{className:"bg-white dark:bg-slate-900 rounded-2xl p-6 md:p-8 shadow-sm border border-slate-200 dark:border-slate-800 space-y-4",children:[e.jsxs("h2",{className:"text-xl font-bold text-slate-900 dark:text-white flex items-center gap-2",children:[e.jsx(ne,{className:"w-5 h-5 text-rose-600 dark:text-rose-400"}),"Couples Retirement Planning FAQs"]}),e.jsx("div",{className:"space-y-3 divide-y divide-slate-100 dark:divide-slate-800",children:_.map((t,a)=>e.jsxs("div",{className:"pt-3 first:pt-0",children:[e.jsxs("button",{onClick:()=>Z(y===a?null:a),className:"w-full flex items-center justify-between text-left font-semibold text-slate-900 dark:text-white text-sm md:text-base hover:text-rose-600 dar
1k:hover:text-rose-400",children:[e.jsx("span",{children:t.q}),y===a?e.jsx(de,{className:"w-4 h-4 text-slate-400"}):e.jsx(ie,{className:"w-4 h-4 text-slate-400"})]}),y===a&&e.jsx("p",{className:"mt-2 text-xs md:text-sm text-slate-600 dark:text-slate-400 leading-relaxed",children:t.a})]},a))})]})]})};export{ye as CouplesRetirementCalculator};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.