:root{--ink:#20302d;--muted:#61706c;--paper:#f7f5f0;--white:#fff;--sage:#dfe9e4;--sage-light:#f1f6f3;--green:#1f5c4e;--green-dark:#143d35;--gold:#b9873c;--line:#d5ddd8;--danger:#9b2c2c;--shadow:0 16px 45px rgba(28,48,42,.09);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;line-height:1.55}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}a{color:var(--green-dark)}.skip-link{position:absolute;left:-999px;top:1rem;background:var(--green-dark);color:#fff;padding:.75rem 1rem;z-index:30}.skip-link:focus{left:1rem}.site-header{max-width:1240px;margin:auto;padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{color:var(--green-dark);font-weight:850;letter-spacing:.12em;text-decoration:none}.brand span{display:block;font-size:.67rem;letter-spacing:.03em;color:var(--muted);font-weight:600}.site-header ol{display:flex;list-style:none;gap:.55rem;margin:0;padding:0;color:var(--muted);font-size:.82rem}.site-header li+li:before{content:"/";margin-right:.55rem;color:#a2aca9}main{max-width:1240px;margin:auto;padding:0 1.5rem}.hero{padding:4.5rem 0 3rem;max-width:920px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--green);font-size:.73rem;font-weight:850}.hero h1{font-family:Georgia,serif;font-size:clamp(2.6rem,6.7vw,5rem);letter-spacing:-.04em;line-height:1;margin:.5rem 0 1.3rem}.lede{font-size:1.22rem;color:var(--muted);max-width:760px}.trust-row{display:flex;flex-wrap:wrap;gap:.75rem;margin:1.6rem 0}.trust-row span{background:var(--sage);padding:.45rem .8rem;border-radius:999px;font-size:.82rem;font-weight:700}.privacy-callout{border-left:4px solid var(--green);padding:.8rem 1rem;background:var(--sage-light);max-width:760px;margin:1.5rem 0}.primary,.secondary,.link-button,.danger-link,.icon-button,.filter-row button{border-radius:8px;padding:.72rem 1rem;font-weight:800;border:0}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green-dark)}.secondary{background:#fff;border:1px solid var(--green);color:var(--green)}.link-button{background:transparent;color:var(--green);text-decoration:underline;text-underline-offset:3px}.danger-link{background:transparent;color:var(--danger);text-decoration:underline;padding:.4rem}.planner{scroll-margin-top:1rem}.progress-nav{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:1rem 1.2rem;margin-bottom:1rem;box-shadow:var(--shadow)}.progress-nav>p{font-weight:800;margin:.1rem 0 .65rem}.progress-track{height:8px;background:#e7ebe8;border-radius:999px;overflow:hidden}.progress-track span{display:block;height:100%;background:var(--green);transition:width .2s}.progress-nav ol{list-style:none;margin:1rem 0 0;padding:0;display:grid;grid-template-columns:repeat(9,1fr);gap:.35rem}.progress-nav button{width:100%;border:0;background:transparent;padding:.25rem;color:var(--muted)}.progress-nav button span{display:grid;place-items:center;width:2rem;height:2rem;margin:auto;border:1px solid var(--line);border-radius:50%;font-weight:800}.progress-nav button small{display:block;margin-top:.3rem;font-size:.62rem;line-height:1.15}.progress-nav button[aria-current=step] span{background:var(--green);color:#fff;border-color:var(--green)}.progress-nav button.complete span{background:var(--sage);border-color:var(--green)}.planner-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:1rem;align-items:start}.stage-card,.running-summary{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:clamp(1.2rem,3vw,2.25rem);box-shadow:var(--shadow)}.stage-card:focus{outline:none}.stage-heading{border-bottom:1px solid var(--line);padding-bottom:1.3rem;margin-bottom:1.5rem}.stage-heading h2,.method h2{font-family:Georgia,serif;font-size:clamp(1.9rem,4vw,2.7rem);line-height:1.05;margin:.2rem 0}.stage-heading p:last-child{color:var(--muted);max-width:720px}.running-summary{position:sticky;top:1rem;padding:1.2rem}.summary-head h2{font-family:Georgia,serif;margin:.1rem 0 1rem;font-size:1.45rem}.running-summary dl,.summary-dialog dl{margin:0}.running-summary dl>div,.summary-dialog dl>div{display:flex;justify-content:space-between;gap:.7rem;padding:.58rem 0;border-bottom:1px solid var(--line);font-size:.82rem}.running-summary dd,.summary-dialog dd{font-weight:850;margin:0;text-align:right}.summary-stage{font-weight:800;background:var(--sage);padding:.65rem;border-radius:8px}.privacy-note{font-size:.74rem;color:var(--muted)}.stage-actions{position:sticky;bottom:0;z-index:10;background:rgba(247,245,240,.96);border:1px solid var(--line);box-shadow:0 -8px 28px rgba(32,48,45,.08);padding:.9rem 1.1rem;margin:1rem 301px 4rem 0;display:flex;align-items:center;justify-content:space-between;gap:.7rem}.field-grid{display:grid;gap:1rem;margin:1rem 0}.field-grid.two{grid-template-columns:1fr 1fr}.field-grid.three{grid-template-columns:repeat(3,1fr)}label{display:grid;gap:.4rem;font-weight:750;font-size:.88rem}input,select,textarea{width:100%;border:1px solid #9eaaa5;border-radius:8px;padding:.72rem .78rem;background:#fff;color:var(--ink)}textarea{min-height:86px;resize:vertical}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid rgba(31,92,78,.3);outline-offset:2px;border-color:var(--green)}[aria-invalid=true]{border:2px solid var(--danger)}small,.optional{color:var(--muted);font-size:.74rem;font-weight:500}.optional{font-style:italic}.subsection{border-top:1px solid var(--line);margin-top:1.8rem;padding-top:1.5rem}.subsection h3,.panel h3{font-family:Georgia,serif;font-size:1.35rem;margin:0 0 .35rem}.subsection>p,.subsection-title p{color:var(--muted);margin:.3rem 0}.subsection-title{display:flex;justify-content:space-between;align-items:start;gap:1rem}.tax-modes{display:grid;grid-template-columns:repeat(4,1fr);gap:.65rem;margin:1rem 0}.tax-modes label{display:flex;align-items:center;border:1px solid var(--line);border-radius:9px;padding:.7rem}.tax-modes input{width:auto}.tax-detail{background:var(--sage-light);padding:1rem;border-radius:10px}.tax-detail p{margin:.1rem 0}.callout{border-left:4px solid var(--green);background:var(--sage-light);padding:1rem 1.15rem;margin:1rem 0}.callout.warning{border-color:var(--gold);background:#fff8e8}.callout p{margin:.3rem 0;color:var(--muted)}.record-list{display:grid;gap:.75rem;margin:1rem 0}.record-row{border:1px solid var(--line);border-radius:12px;padding:1rem;display:grid;grid-template-columns:1.2fr 1fr .8fr .8fr 1.2fr auto;gap:.65rem;align-items:end}.mini-totals,.funding-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin:1.25rem 0}.mini-totals p,.funding-grid article{border:1px solid var(--line);border-radius:10px;padding:1rem;margin:0;display:grid}.mini-totals strong,.funding-grid strong{font-family:Georgia,serif;font-size:1.45rem}.empty{color:var(--muted);font-style:italic;background:var(--sage-light);padding:1rem;border-radius:8px}.filter-row{display:flex;flex-wrap:wrap;gap:.45rem;margin:1rem 0}.filter-row button{padding:.45rem .7rem;background:#fff;border:1px solid var(--line);font-size:.78rem}.filter-row button.active{background:var(--green-dark);color:#fff}.library-grid,.forgotten-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem}.library-card,.forgotten-card{border:1px solid var(--line);border-radius:12px;padding:1rem;display:flex;flex-direction:column;align-items:start;justify-content:space-between;gap:.75rem}.library-card h4,.expense-row h4,.forgotten-card h3{margin:.2rem 0;font-family:Georgia,serif;font-size:1.1rem}.library-card p,.forgotten-card p,.expense-row p{margin:.25rem 0;color:var(--muted);font-size:.84rem}.category-label,.status-label,.badge{display:inline-block;text-transform:uppercase;letter-spacing:.06em;font-size:.62rem;font-weight:850;color:var(--green);margin-right:.45rem}.badge{background:#fff4d8;color:#745114;padding:.18rem .35rem;border-radius:4px}.expense-list{display:grid;gap:.65rem}.expense-row{border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem;display:grid;grid-template-columns:1fr auto auto;gap:1rem;align-items:center}.row-actions{display:flex}.role-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem}.question{background:var(--sage-light);padding:.7rem;border-radius:6px}.choice-row{display:flex;flex-wrap:wrap;gap:.5rem}.forgotten-card.is-review{border:2px solid var(--gold)}.forgotten-card.is-dismissed{opacity:.72;background:#f4f4f2}.review-later{border:2px solid var(--gold);padding:1rem;margin-top:1rem}.error-summary{background:#fff0f0;border:2px solid var(--danger);color:var(--danger);padding:1rem;margin-bottom:1rem}.error-summary ul{margin-bottom:0}.range-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin:1rem 0}.range-cards article{border:1px solid var(--line);border-radius:12px;padding:1rem;display:grid}.range-cards .expected{background:var(--green-dark);color:#fff}.range-cards strong{font-family:Georgia,serif;font-size:clamp(1.6rem,3.5vw,2.35rem)}.range-cards .expected small{color:#c8d5d1}.funding-grid{grid-template-columns:repeat(4,1fr)}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.panel{border:1px solid var(--line);border-radius:12px;padding:1.1rem;margin-top:.8rem}.panel dl{margin:0}.panel dl>div,.reconcile-grid p{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line);margin:0}.panel dd{font-weight:800;margin:0}.panel dl .total{font-size:1.08rem;border-bottom:2px solid var(--ink)}.ranked{padding-left:1.4rem}.ranked li{padding:.42rem}.ranked li strong{float:right}.reconcile-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1.5rem}.expense-reconciliation{overflow-x:auto}.expense-reconciliation table{width:100%;border-collapse:collapse;font-size:.8rem}.expense-reconciliation th,.expense-reconciliation td{text-align:left;padding:.55rem;border-bottom:1px solid var(--line)}.expense-reconciliation th:last-child,.expense-reconciliation td:last-child{text-align:right}.comparison-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}.comparison-grid label{background:var(--sage-light);padding:.8rem;border-radius:8px}.comparison-grid strong{font-size:1.2rem}.disclaimer{font-size:.82rem;color:var(--muted)}.final-actions{display:flex;align-items:center;gap:1rem;margin-top:1rem}.final-actions p{color:var(--muted);font-size:.8rem}.method{padding:5rem 0}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.method-grid p{border-top:2px solid var(--green);padding-top:1rem}dialog{border:0;border-radius:16px;box-shadow:0 30px 90px rgba(10,30,25,.25);padding:0;color:var(--ink);max-height:90vh}dialog::backdrop{background:rgba(20,35,31,.6)}.expense-dialog{width:min(680px,calc(100% - 2rem));padding:1.25rem}.summary-dialog{width:min(430px,calc(100% - 2rem));padding:1.25rem}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:1rem;border-bottom:1px solid var(--line);margin-bottom:1rem}.dialog-head h2{font-family:Georgia,serif;margin:.2rem 0 1rem}.icon-button{font-size:1.5rem;background:transparent;padding:.25rem .55rem}.guidance{color:var(--green-dark);font-weight:650}.dialog-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1.2rem}.check-label{grid-template-columns:auto 1fr;align-items:start;margin:1rem 0}.check-label input{width:auto;margin-top:.25rem}.check-label small{grid-column:2}.mobile-summary-button{display:none}.print-only{display:none}footer{background:var(--green-dark);color:#fff;padding:2.5rem max(1.5rem,calc((100vw - 1192px)/2));display:flex;justify-content:space-between;gap:2rem;font-size:.8rem}footer p{max-width:540px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:950px){.planner-layout{grid-template-columns:1fr}.running-summary{display:none}.stage-actions{margin-right:0;margin-bottom:5.5rem}.mobile-summary-button{display:flex;position:fixed;bottom:0;left:0;right:0;width:100%;z-index:20;border:0;border-top:1px solid var(--line);background:var(--green-dark);color:#fff;padding:.6rem 1rem;justify-content:space-around;align-items:center}.mobile-summary-button span{display:grid;text-align:left}.mobile-summary-button small{color:#c8d5d1}.mobile-summary-button strong{font-size:1rem}.progress-nav ol{overflow-x:auto;grid-template-columns:repeat(9,76px);padding-bottom:.3rem}.progress-nav button small{font-size:.58rem}.record-row{grid-template-columns:1fr 1fr}.record-row .danger-link{justify-self:start}.funding-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.site-header nav{display:none}.hero{padding-top:3rem}.field-grid.two,.field-grid.three,.library-grid,.forgotten-grid,.role-grid,.result-grid,.method-grid,.comparison-grid{grid-template-columns:1fr}.tax-modes{grid-template-columns:1fr 1fr}.expense-row{grid-template-columns:1fr auto}.expense-row .row-actions{grid-column:1/-1}.reconcile-grid{grid-template-columns:1fr}.subsection-title{display:block}.subsection-title button{margin-top:.7rem}.final-actions{display:block}.final-actions button{width:100%}footer{flex-direction:column}}
@media(max-width:420px){main{padding:0 .7rem}.site-header{padding:1rem}.stage-card{border-radius:12px;padding:1rem}.record-row,.funding-grid,.mini-totals,.range-cards,.tax-modes{grid-template-columns:1fr}.stage-actions{padding:.65rem}.stage-actions button{padding:.65rem .6rem}.expense-row{grid-template-columns:1fr}.expense-row>strong{font-size:1.2rem}.hero h1{font-size:2.55rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
@media print{@page{size:letter;margin:.62in;@bottom-center{content:"Page " counter(page) " of " counter(pages);font-size:8pt;color:#555}}body{background:#fff;font-size:9.5pt}.site-header,.hero,.progress-nav,.running-summary,.stage-actions,.method,body>footer,.mobile-summary-button,.final-actions,.stage-heading,.error-summary,.summary-dialog,.expense-dialog{display:none!important}main{max-width:none;padding:0}.planner-layout,.result-grid{display:block}.stage-card{border:0;box-shadow:none;padding:0;margin:0}.print-only{display:block}.print-title{border-bottom:2px solid #222;margin-bottom:.2in}.print-title h1{font-family:Georgia,serif;font-size:22pt;margin:.05in 0}.range-cards,.funding-grid{break-inside:avoid}.range-cards .expected{background:#fff;color:#000;border:2px solid #000}.range-cards .expected small{color:#444}.panel,.callout{box-shadow:none;break-inside:avoid;margin-top:.12in}.expense-reconciliation{overflow:visible;break-inside:auto}.expense-reconciliation thead{display:table-header-group}.expense-reconciliation tr{break-inside:avoid}.comparison-grid input{display:none}.print-footer{border-top:1px solid #777;margin-top:.2in;font-size:8pt}.print-report a{color:#000;text-decoration:underline}}
.custom-roles{margin-top:1.25rem}.record-row.compact{grid-template-columns:1.3fr .5fr 1.5fr auto}
@media(max-width:950px){.record-row.compact{grid-template-columns:1fr 1fr}}
@media(max-width:420px){.record-row.compact{grid-template-columns:1fr}}
.summary-column{position:sticky;top:1rem}.summary-column .running-summary{position:static}.save-panel{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:1rem;margin-top:.8rem;box-shadow:var(--shadow)}.save-panel h3{font-family:Georgia,serif;font-size:1.15rem;margin:0 0 .35rem}.save-panel>p{font-size:.78rem;color:var(--muted);margin:.35rem 0 .75rem}.save-plan-button{width:100%}.save-secondary-actions{display:flex;flex-wrap:wrap;justify-content:center}.save-secondary-actions button{font-size:.75rem;padding:.55rem}.save-status{border-top:1px solid var(--line);padding-top:.7rem!important;font-weight:750;color:var(--green-dark)!important}.save-privacy{font-size:.7rem!important}.mobile-save-panel{box-shadow:none;margin-top:1rem}.resume-dialog{width:min(520px,calc(100% - 2rem));padding:1.25rem}
@media(max-width:950px){.summary-column{display:none}.mobile-save-panel{display:block}}
@media(max-width:420px){.save-secondary-actions{display:grid;grid-template-columns:1fr}.save-secondary-actions button{width:100%}}
@media print{.summary-column,.save-panel,.resume-dialog{display:none!important}}
