:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.75rem;--text-hero: clamp(2.5rem, 6vw, 3.75rem);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--shadow-sm: 0 1px 2px rgba(16, 24, 32, .04), 0 1px 3px rgba(16, 24, 32, .07);--shadow-md: 0 6px 20px rgba(16, 24, 32, .1);--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 32%, transparent);--bg: #f6f7f8;--card: #ffffff;--ink: #14201c;--muted: #586b63;--line: #e3e7e5;--line-strong: #cdd5d1;--accent: #f0d9a8;--accent-weak: #fff6e5;--accent-ink: #14201c;--warn-bg: #fff6e5;--warn-ink: #7a5200;--warn-line: #f0dcae;--danger: #c0392b;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;color:var(--ink);background:var(--bg)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f1311;--card: #1a201d;--ink: #e9eeeb;--muted: #9fb0a9;--line: #2b332f;--line-strong: #3a443f;--accent: #3fa07d;--accent-weak: #16241f;--accent-ink: #06120d;--warn-bg: #3a2f16;--warn-ink: #f0d9a8;--warn-line: #5c4a20;--danger: #e2685c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 6px 22px rgba(0, 0, 0, .55)}}:root[data-theme=dark]{--bg: #0f1311;--card: #1a201d;--ink: #e9eeeb;--muted: #9fb0a9;--line: #2b332f;--line-strong: #3a443f;--accent: #3fa07d;--accent-weak: #16241f;--accent-ink: #06120d;--warn-bg: #3a2f16;--warn-ink: #f0d9a8;--warn-line: #5c4a20;--danger: #e2685c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 6px 22px rgba(0, 0, 0, .55)}:root[data-theme=light]{--bg: #fbf3e8;--card: #fffdf9;--ink: #201a12;--muted: #7c6f5c;--line: #ece0cd;--line-strong: #ddccae;--accent: #f0d9a8;--accent-weak: #fff6e5;--accent-ink: #201a12;--warn-bg: #fff6e5;--warn-ink: #7a5200;--warn-line: #f0dcae;--danger: #b3382b;--shadow-sm: 0 1px 2px rgba(45, 26, 2, .05), 0 1px 3px rgba(45, 26, 2, .08);--shadow-md: 0 6px 20px rgba(45, 26, 2, .12);letter-spacing:-.01em}@media(prefers-color-scheme:dark){:root[data-theme=light]{--bg: #17130f;--card: #221c15;--ink: #f2ebe0;--muted: #ab9c86;--line: #362d22;--line-strong: #4a3c2c;--accent: #f0d9a8;--accent-weak: #3a2f1a;--accent-ink: #201a12;--warn-bg: #3a2f16;--warn-ink: #f0d9a8;--warn-line: #5c4a20;--danger: #e2685c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 6px 22px rgba(0, 0, 0, .55)}}:root[data-theme=light] h1,:root[data-theme=light] h2,:root[data-theme=light] h3{letter-spacing:-.025em}*{box-sizing:border-box}body{margin:0}h1,h2,h3{line-height:1.2}button{font:inherit;cursor:pointer}input,select{font:inherit;color:inherit}:where(a,button,input,select,summary):focus-visible{outline:none;box-shadow:var(--ring);border-color:var(--accent)}@media(prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app{max-width:1240px;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-7)}[data-theme=light] .app{overflow-x:hidden}.app__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.app__header h1{margin:0 0 var(--space-1);font-size:var(--text-xl);letter-spacing:-.02em}.app__tagline{margin:0;max-width:48ch;color:var(--muted);font-size:var(--text-lg)}.app__header-controls{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.theme-toggle,.currency-toggle{display:inline-flex;padding:2px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card)}.theme-toggle__opt,.currency-toggle__opt{border:none;background:transparent;color:var(--muted);padding:var(--space-1) var(--space-3);border-radius:calc(var(--radius-sm) - 2px);font-size:var(--text-sm);transition:background-color .12s ease,color .12s ease}.theme-toggle__opt[aria-checked=true],.currency-toggle__opt[aria-checked=true]{background:var(--accent-weak);color:var(--ink);font-weight:600}.app__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--space-4);margin-top:var(--space-6)}.app__cards{display:grid;gap:var(--space-4);align-content:start}@media(max-width:760px){.app__grid{grid-template-columns:1fr}}.sidebar{display:flex;flex-direction:column;gap:var(--space-5);overflow-y:auto}.sidebar__title{margin:0;font-size:var(--text-lg);letter-spacing:-.01em}.sidebar__section{display:flex;flex-direction:column;gap:var(--space-2)}.sidebar__section h3{margin:0;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.sidebar__section p{margin:0;font-size:var(--text-sm);line-height:1.55}.app__footer{margin-top:var(--space-6);color:var(--muted);font-size:var(--text-xs)}.app__footer p{max-width:70ch}.card{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-sm)}.card h2{margin:0;font-size:var(--text-lg);letter-spacing:-.01em}.card__head{display:flex;flex-direction:row;align-items:flex-start;gap:var(--space-2);justify-content:space-between;margin-bottom:var(--space-4)}.card--result{border:1px solid transparent;box-shadow:var(--shadow-md);background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(140deg,var(--accent),color-mix(in srgb,var(--accent) 55%,var(--card))) border-box}.field__hint{margin:0;font-size:var(--text-xs);color:var(--muted)}.inline-field{display:flex;align-items:center;gap:var(--space-2)}.inline-field label,.inline-field__label{font-size:var(--text-sm);font-weight:600;color:var(--muted);white-space:nowrap}.number-field__control.number-field__control--compact{width:auto;max-width:6rem}.number-field__control--compact input{min-height:1.7rem}select,input[type=text],input[type=number]{min-height:2.1rem;padding:0 var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card);transition:border-color .12s ease,box-shadow .12s ease}.number-field{display:flex;flex-direction:column;gap:var(--space-2)}.number-field__control{display:flex;align-items:stretch;width:9.375rem;max-width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card);transition:border-color .12s ease,box-shadow .12s ease}.number-field__control:focus-within{border-color:var(--accent);box-shadow:var(--ring)}.number-field__control input{flex:1;min-width:0;min-height:1.9rem;padding:0 var(--space-3);border:none;background:transparent;border-radius:inherit}.number-field__control input:focus-visible{box-shadow:none}.number-field__prefix,.number-field__suffix{display:inline-flex;align-items:center;padding-inline:var(--space-3);color:var(--muted);background:var(--accent-weak);border-radius:var(--radius-sm) 0 0 var(--radius-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.number-field__prefix{border-right:1px solid var(--line-strong)}.number-field__suffix{border-left:1px solid var(--line-strong);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.years-control{display:flex;align-items:center;gap:var(--space-2)}.years-control__value{min-width:1.5rem;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.icon-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);transition:background-color .12s ease,border-color .12s ease,color .12s ease}.icon-btn:hover{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn:disabled:hover{border-color:var(--line-strong);background:var(--card);color:var(--ink)}.icon-btn--danger{background:transparent;color:var(--danger)}.icon-btn--danger:hover{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.grid-table{width:100%;border-collapse:collapse}.grid-table th,.grid-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);vertical-align:middle}.grid-table thead th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.grid-table tbody th[scope=row]{font-variant-numeric:tabular-nums;white-space:nowrap}.grid-table td{font-variant-numeric:tabular-nums}.grid-table__muted{color:var(--muted)}.grid-table__note{font-size:var(--text-xs);color:var(--muted);border-bottom:none}.grid-table tbody tr.row--warn{background:var(--warn-bg)}.grid-table tbody tr.row--warn th,.grid-table tbody tr.row--warn td{color:var(--warn-ink)}.totals-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}.totals-fields__slider{grid-column:1 / -1;display:flex;flex-direction:column;gap:var(--space-2)}.totals-fields__slider>label{font-size:var(--text-sm);color:var(--muted)}.totals-fields__slider>label strong{color:var(--ink);font-variant-numeric:tabular-nums}input[type=range]{width:100%;max-width:22rem;accent-color:var(--accent);cursor:pointer}.exceptional{display:flex;flex-direction:column;gap:var(--space-4)}.exceptional__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.exceptional__row{display:grid;grid-template-columns:6rem 1fr 1.4fr auto;gap:var(--space-2);align-items:center;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card)}@media(max-width:560px){.exceptional__row{display:flex;flex-direction:column;align-items:stretch}.exceptional__row .icon-btn{align-self:flex-end}}.results{display:flex;flex-direction:column;gap:var(--space-5)}.results__headline,.results__fund{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.stat{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.stat__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.stat__value{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat__sub{font-size:var(--text-xs);color:var(--muted)}.stat--primary{border:none;padding:var(--space-5);background:var(--accent);color:var(--accent-ink)}.stat--primary .stat__label,.stat--primary .stat__sub{color:color-mix(in srgb,var(--accent-ink) 78%,transparent)}.stat--primary .stat__value{font-size:var(--text-hero);line-height:1}.progress{margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1)}.progress__track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--accent-ink) 22%,transparent);overflow:hidden}.progress__fill{height:100%;border-radius:inherit;background:var(--accent-ink);transition:width .25s ease}.progress__caption{font-size:var(--text-xs);color:color-mix(in srgb,var(--accent-ink) 78%,transparent);font-variant-numeric:tabular-nums}.results__trend{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md)}.results__trend-label{font-size:var(--text-sm);color:var(--muted)}.sparkline{color:var(--accent);flex-shrink:0;max-width:60%}.assumptions{margin:0 0 var(--space-5);padding:var(--space-3) var(--space-4) var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-4) var(--space-5)}.assumptions legend{padding:0 var(--space-2);margin-left:calc(-1 * var(--space-2));font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.assumptions__field{display:flex;flex-direction:column;gap:var(--space-1)}.assumptions__field>label{font-size:var(--text-xs);font-weight:600;color:var(--muted)}.assumptions__field input[type=date],.assumptions__field input[type=number]{min-height:1.7rem;max-width:11rem}.assumptions__field .number-field__control--compact input{min-height:1.7rem}.assumptions__field--wide{flex-basis:100%}.assumptions__check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--ink);cursor:pointer}.assumptions__check input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--accent);cursor:pointer}.assumptions__pension{margin:var(--space-2) 0 0 calc(1.1rem + var(--space-2));display:flex;flex-direction:column;gap:var(--space-1)}.assumptions__pension .field__hint{max-width:22rem}.projection{margin:0;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md)}.projection__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.projection__badge{font-size:var(--text-xs);font-weight:700;padding:2px var(--space-2);border-radius:999px;white-space:nowrap}.projection__badge--ok{background:color-mix(in srgb,var(--accent) 30%,var(--card));color:var(--ink)}.projection__badge--short{background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-line)}.projection-chart{display:block;width:100%;height:auto;overflow:visible}.projection-chart__grid{stroke:var(--line);stroke-width:1}.projection-chart__axis-label{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.projection-chart__area{fill:var(--accent);opacity:.14;stroke:none}.projection-chart__line--actual{fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.projection-chart__line--projected{fill:none;stroke:color-mix(in srgb,var(--accent) 60%,var(--ink));stroke-width:2.5;stroke-dasharray:5 4;stroke-linecap:round;stroke-linejoin:round}.projection-chart__target{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:3 3}.projection-chart__target-label,.projection-chart__retire-label{fill:var(--muted);font-size:11px;font-weight:600}.projection-chart__retire{stroke:var(--line-strong);stroke-width:1.5;stroke-dasharray:2 3}.projection-chart__reached{fill:color-mix(in srgb,var(--accent) 60%,var(--ink));stroke:var(--card);stroke-width:2}.projection__legend{display:flex;gap:var(--space-4);font-size:var(--text-xs);color:var(--muted)}.projection__key{display:inline-flex;align-items:center;gap:var(--space-2)}.projection__key:before{content:"";width:18px;height:0;border-top-width:2.5px;border-top-style:solid}.projection__key--actual:before{border-top-color:var(--ink)}.projection__key--projected:before{border-top-style:dashed;border-top-color:color-mix(in srgb,var(--accent) 60%,var(--ink))}.projection__notes{margin:0;padding-left:var(--space-5);font-size:var(--text-sm);color:var(--ink);display:flex;flex-direction:column;gap:var(--space-1)}.projection__notes .projection__assumption{list-style:none;margin-left:calc(-1 * var(--space-5));margin-top:var(--space-1);font-size:var(--text-xs);color:var(--muted)}.results__empty{margin:0;padding:var(--space-5);border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--muted);font-size:var(--text-sm);text-align:center}.results__warnings{margin:0;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-line);border-radius:var(--radius-sm);font-size:var(--text-sm);display:flex;flex-direction:column;gap:var(--space-1)}.method{font-size:var(--text-sm);color:var(--muted)}.method summary{cursor:pointer;font-weight:600;color:var(--ink)}.method p{margin:var(--space-2) 0 0;max-width:66ch}[data-theme=light] .app__header{position:relative;padding-bottom:var(--space-5)}[data-theme=light] .app__header:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 20%,transparent) 0%,transparent 60%)}[data-theme=light] .card__head{position:relative;padding-bottom:var(--space-3)}[data-theme=light] .card__head:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 16%,transparent) 0%,transparent 65%)}@supports ((background-clip: text) or (-webkit-background-clip: text)){[data-theme=light] .app__title h1,[data-theme=light] .stat:not(.stat--primary) .stat__value{background:linear-gradient(87deg,var(--ink) 35%,var(--accent) 100%);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}}[data-theme=light] .stat__value{letter-spacing:-.03em}[data-theme=light] .card--result{position:relative;isolation:isolate}[data-theme=light] .card--result:before{content:"";position:absolute;top:50%;right:-8%;width:55%;max-width:24rem;aspect-ratio:1;background:var(--accent);opacity:.16;filter:blur(4rem);border-radius:50%;transform:translateY(-50%);z-index:-1;pointer-events:none}@media(max-width:560px){[data-theme=light] .card--result:before{opacity:.12}}
