:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--text-2xs: 11px;--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}.panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card)}.panel--tight{border-radius:var(--radius-sm)}.stack{display:flex;flex-direction:column}.stack--2xs{gap:2px}.stack--xs{gap:var(--space-1)}.stack--sm{gap:var(--space-2)}.stack--md{gap:var(--space-3)}.stack--lg{gap:var(--space-4)}.stack--xl{gap:var(--space-5)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);font:inherit;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.btn:hover{border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:hover{border-color:var(--line-strong);background:var(--card);color:var(--ink)}.btn--danger:hover{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}.btn--icon{flex-shrink:0;width:2rem;height:2rem;padding:0}.btn--icon.btn--danger{background:transparent;color:var(--danger)}.btn--sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm);font-weight:600}.btn--lg{gap:var(--space-3);padding:var(--space-3) var(--space-5);font-size:var(--text-base);font-weight:600;box-shadow:var(--shadow-sm)}.app{max-width:1440px;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}.app__currency-help{display:flex;align-items:center;gap:var(--space-2)}.btn--icon.app__help-btn{display:inline-flex}.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,4fr);gap:var(--space-4);margin-top:var(--space-6)}.app__cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:var(--space-4);align-items:start}@media(max-width:760px){.app__grid{grid-template-columns:1fr}}.app__grid--no-sidebar{grid-template-columns:1fr}.sidebar{overflow-y:auto}.sidebar--closed{display:none}.sidebar__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.sidebar__title{margin:0;font-size:var(--text-lg);letter-spacing:-.01em}.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;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__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}.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)}@media(max-width:640px){.grid-table thead{display:none}.grid-table,.grid-table tbody,.grid-table tr{display:block;width:100%}.grid-table tbody tr{margin-bottom:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3)}.grid-table tbody tr:last-child{margin-bottom:0}.grid-table tbody th[scope=row]{display:block;padding:var(--space-2) 0;font-size:var(--text-base)}.grid-table td{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-1) var(--space-3);padding:var(--space-2) 0}.grid-table td:before{content:attr(data-label);flex-shrink:0;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.grid-table td:last-of-type{border-bottom:none}.grid-table tfoot td{display:block;padding:var(--space-3) 0 0;border-bottom:none}}.exceptional__list{list-style:none;margin:0;padding:0}.exceptional__row{display:grid;grid-template-columns:6rem 1fr 1.4fr auto;gap:var(--space-2);align-items:center;padding:var(--space-3)}@media(max-width:560px){.exceptional__row{display:flex;flex-direction:column;align-items:stretch}.exceptional__row .btn--icon{align-self:flex-end}}.results__headline,.results__fund{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.stat{padding:var(--space-4)}.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:clamp(1.75rem,4vw,2.75rem);line-height:1.1;overflow-wrap:anywhere}.progress{margin-top:var(--space-3)}.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)}.results__trend-label{font-size:var(--text-sm);color:var(--muted)}.sparkline{color:var(--accent);flex-shrink:0;max-width:60%}.retirees-grid{display:grid;grid-template-columns:minmax(9rem,1.3fr) minmax(6rem,1fr) minmax(6rem,1fr);column-gap:var(--space-4);row-gap:var(--space-3);align-items:center;margin-bottom:var(--space-4)}.retirees-grid__col-head{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.retirees-grid__label{font-size:var(--text-sm);color:var(--ink)}.retirees-grid__cell input[type=number]{width:100%;max-width:7rem}.retirees-grid__cell .number-field__control{width:100%;max-width:9.375rem}.retirees-grid__subhead{grid-column:1 / -1;margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--line);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}@media(max-width:480px){.retirees-grid{grid-template-columns:1fr}.retirees-grid__col-head,.retirees-grid__label{margin-top:var(--space-2)}}.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}.projection{margin:0;padding:var(--space-4)}.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:var(--text-2xs);font-variant-numeric:tabular-nums}.projection-chart__area{fill:var(--accent);opacity:.14;stroke:none}.projection-chart__early-fill{fill:var(--accent);opacity:.22;stroke:none}.projection-chart__early-edge{stroke:var(--line-strong);stroke-width:1.5;stroke-dasharray:3 3}.projection-chart__early-label{fill:var(--muted);font-size:var(--text-2xs);font-weight:600}.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:var(--text-2xs);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)}.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)}.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] .card__head{position:relative;padding-bottom:var(--space-3)}[data-theme=light] .app__header:after,[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) 18%,transparent) 0%,transparent 62%)}@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}}.guide-modal{margin:auto;padding:0;border:none;border-radius:var(--radius-md);background:var(--card);color:var(--ink);box-shadow:var(--shadow-md);width:min(28rem,calc(100vw - var(--space-6)));max-height:calc(100vh - var(--space-6))}.guide-modal::backdrop{background:color-mix(in srgb,black 55%,transparent)}.guide-modal__panel{max-height:calc(100vh - var(--space-6));overflow-y:auto;padding:var(--space-5)}.guide-modal__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.guide-modal__head h2{margin:0;font-size:var(--text-lg);letter-spacing:-.01em}@media(max-width:640px){.sidebar{display:none}}.app--gate{min-height:60vh}.login-gate__button{align-self:flex-start;margin-top:var(--space-6)}.login-gate__message{margin-top:var(--space-6);max-width:48ch;color:var(--muted);font-size:var(--text-base)}.user-menu{display:flex;align-items:center;gap:var(--space-2);padding-left:var(--space-3);border-left:1px solid var(--line)}.user-menu__avatar{width:1.75rem;height:1.75rem;border-radius:50%;object-fit:cover}.user-menu__avatar--fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--accent-weak);color:var(--ink);font-size:var(--text-xs);font-weight:700}.user-menu__email{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);color:var(--muted)}.user-menu__link{border:none;background:transparent;padding:0;color:var(--muted);font-size:var(--text-sm);font-weight:600;text-decoration:underline;text-underline-offset:2px}.user-menu__link:hover,.user-menu__link[aria-pressed=true]{color:var(--accent)}.app__admin{margin-top:var(--space-6);display:grid}.admin-panel__empty,.admin-panel__error{margin:0;font-size:var(--text-sm);color:var(--muted)}.admin-panel__error{color:var(--danger)}.admin-panel__list{list-style:none;margin:0;padding:0}.admin-panel__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3)}.admin-panel__email,.admin-panel__date{font-size:var(--text-xs);color:var(--muted)}.admin-panel__pin{font-size:var(--text-xs);font-weight:600;color:var(--muted)}.admin-panel__preapprove-form{display:flex;flex-wrap:wrap;gap:var(--space-2)}.admin-panel__preapprove-form input{flex:1;min-width:12rem}.admin-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4)}@media(max-width:760px){.admin-board{grid-template-columns:1fr}}.admin-column{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;min-height:6rem;padding:var(--space-3);border:1px dashed var(--line-strong);border-radius:var(--radius-md);transition:border-color .12s ease,background-color .12s ease}.admin-column--over{border-style:solid;border-color:var(--accent);background:var(--accent-weak)}.admin-column__head{display:flex;align-items:baseline;justify-content:space-between}.admin-column__head h4{margin:0;font-size:var(--text-sm)}.admin-column__count{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--muted)}.admin-card{padding:var(--space-3);cursor:grab}.admin-card:active{cursor:grabbing}.admin-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.admin-card__actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}
