
:root{
  --bg:#F7F9FB; --surface:#FFFFFF; --surface2:#F1F4F9;
  --ink:#231557; --ink2:#4A4670; --muted:#6A678C; --line:#DAD9EA; --line2:#ECEBF5;
  --accent:#0878A0; --accent-ink:#0878A0; --accent-soft:rgba(10,203,245,.30); --accent-softer:rgba(10,203,245,.13);
  --brand:#231557; --on-brand:#FFFFFF; --cyan:#0ACBF5; --bar-bg:#231557; --side-bg:#1B3A8C;
  --hero-bg:linear-gradient(135deg,#231557 0%,#33207F 100%);
  --s1:#0878A0; --s2:#5B3FD1; --s3:#C2410C; --s4:#1D7B4E; --s5:#B5179E; --on-s:#FFFFFF;
  /* one colour per kind of money, the same on every tab (HACKING.md, Colours): money in is blue, spending warm,
     debt purple, the three kinds of account amber, green and teal. s1 to s5 are for people and the tools. */
  --k-job:#2A78D6; --k-self:#0F8A6F; --k-ss:#7048C2; --k-pen:#0A8FC2; --k-oth:#5C7C99; --gold:#B8860B;
  --k-health:#C92A2A; --k-edu:#A0522D; --k-life:#E8590C; --k-give:#D6336C; --k-xoth:#8C7A6B;
  --k-emp:#0F8F84; --k-emp2:#3AAFA0; --k-home:#8C6D46; --k-biz:#6B6F80;
  --k-d1:#4A3AA7; --k-d2:#7B61D1; --k-d3:#8E44AD; --k-d4:#2E2378; --k-d5:#A58BF0;
  --g-pre:#9A6700; --g-roth:#1D7B4E; --g-tax:#0E7490;
  --good:#1D7B4E; --good-bg:#E3F3EA; --warn:#8F6100; --warn-bg:#FBF0D6; --serious:#B1450E; --serious-bg:#FCE6D8; --crit:#B3261E; --crit-bg:#FADDDA;
  --shadow:0 1px 2px rgba(35,21,87,.06),0 6px 18px rgba(35,21,87,.06);
  --sans:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue','Noto Sans','Liberation Sans',Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,'SF Mono',Menlo,Consolas,'Cascadia Mono','Roboto Mono','Liberation Mono','DejaVu Sans Mono',monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#120B33; --surface:#1B1246; --surface2:#231A55;
    --ink:#F7F9FB; --ink2:#C3C0E0; --muted:#9994C4; --line:#33296B; --line2:#271E5C;
    --accent:#0ACBF5; --accent-ink:#0ACBF5; --accent-soft:rgba(10,203,245,.34); --accent-softer:rgba(10,203,245,.14);
    --brand:#0ACBF5; --on-brand:#120B33; --bar-bg:#0C0724; --side-bg:#102463;
    --hero-bg:linear-gradient(135deg,#2A1B72 0%,#3B2698 100%);
  --s1:#1D9FC5; --s2:#8B6AEA; --s3:#DE682A; --s4:#2CA46A; --s5:#D8529A; --on-s:#120B33;
  --k-job:#3987E5; --k-self:#3DC4A0; --k-ss:#B49CF5; --k-pen:#3CC0EC; --k-oth:#93AAC2; --gold:#E3B341;
  --k-health:#FF6B6B; --k-edu:#D48A5A; --k-life:#F07A3A; --k-give:#F06595; --k-xoth:#B3A394;
  --k-emp:#2BB3A3; --k-emp2:#6AD6C8; --k-home:#C9A77A; --k-biz:#A3A7B8;
  --k-d1:#9085E9; --k-d2:#B7A9F7; --k-d3:#C37FE0; --k-d4:#6E5FD6; --k-d5:#D9CFFF;
  --g-pre:#E3B74F; --g-roth:#5CC792; --g-tax:#22B8CF;
    --good:#5CC792; --good-bg:#16352A; --warn:#E3B74F; --warn-bg:#3A2F14; --serious:#F29457; --serious-bg:#3E2616; --crit:#FF8177; --crit-bg:#432120;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.28);
  }
}
:root[data-theme="dark"]{
  --bg:#120B33; --surface:#1B1246; --surface2:#231A55;
  --ink:#F7F9FB; --ink2:#C3C0E0; --muted:#9994C4; --line:#33296B; --line2:#271E5C;
  --accent:#0ACBF5; --accent-ink:#0ACBF5; --accent-soft:rgba(10,203,245,.34); --accent-softer:rgba(10,203,245,.14);
  --brand:#0ACBF5; --on-brand:#120B33; --bar-bg:#0C0724; --side-bg:#102463;
  --hero-bg:linear-gradient(135deg,#2A1B72 0%,#3B2698 100%);
  --s1:#1D9FC5; --s2:#8B6AEA; --s3:#DE682A; --s4:#2CA46A; --s5:#D8529A; --on-s:#120B33;
  --k-job:#3987E5; --k-self:#3DC4A0; --k-ss:#B49CF5; --k-pen:#3CC0EC; --k-oth:#93AAC2; --gold:#E3B341;
  --k-health:#FF6B6B; --k-edu:#D48A5A; --k-life:#F07A3A; --k-give:#F06595; --k-xoth:#B3A394;
  --k-emp:#2BB3A3; --k-emp2:#6AD6C8; --k-home:#C9A77A; --k-biz:#A3A7B8;
  --k-d1:#9085E9; --k-d2:#B7A9F7; --k-d3:#C37FE0; --k-d4:#6E5FD6; --k-d5:#D9CFFF;
  --g-pre:#E3B74F; --g-roth:#5CC792; --g-tax:#22B8CF;
  --good:#5CC792; --good-bg:#16352A; --warn:#E3B74F; --warn-bg:#3A2F14; --serious:#F29457; --serious-bg:#3E2616; --crit:#FF8177; --crit-bg:#432120;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.28);
}
/* dark bands (top bar, headline card) use the dark-surface status colours in both themes */
.on-dark{--good:#5CC792;--good-bg:#16352A;--warn:#E3B74F;--warn-bg:#3A2F14;--serious:#F29457;--serious-bg:#3E2616;--crit:#FF8177;--crit-bg:#432120;--accent:#0ACBF5}
*{box-sizing:border-box}
html{color-scheme:light dark}
:root[data-theme="light"]{color-scheme:light}
:root[data-theme="dark"]{color-scheme:dark}
body{margin:0;min-width:1180px;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;padding-inline:16px;-webkit-text-size-adjust:100%}
.wrap{max-width:2200px;margin-inline:auto}
button,input{font:inherit;color:inherit}
/* the browser draws <small> a sixth smaller than its line; never below 12 pixels (version 131) */
small{font-size:max(12px,.84em)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* top bar */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;margin-inline:-16px;padding:10px 16px;background:var(--bar-bg);color:#fff}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;line-height:1.15}
.brand .bmark{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:var(--cyan)}
.brand .bmark svg{display:block}
.brand .btxt{display:flex;flex-direction:column;min-width:0}
.brand b{font-size:17px;font-weight:800;letter-spacing:-.01em;color:#fff}
#brandSub{font-family:var(--mono);font-size:12px;color:#B9B5E0;letter-spacing:.04em;text-transform:uppercase}
/* a terminal cursor after the plan line */
#brandSub::after{content:"";display:inline-block;width:.62em;height:1.05em;margin-left:4px;vertical-align:-.2em;background:var(--cyan);opacity:.85;animation:tcur 1.1s steps(1,end) infinite}
@keyframes tcur{50%{opacity:0}}
/* the result pill carries a status light; it pulses while the plan runs */
#livePill::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 2px color-mix(in srgb,currentColor 22%,transparent),0 0 7px currentColor}
.live[data-busy="1"] #livePill::before{animation:led .6s ease-in-out infinite alternate}
@keyframes led{to{opacity:.25;box-shadow:none}}
@media (prefers-reduced-motion:reduce){#brandSub::after,.live[data-busy="1"] #livePill::before{animation:none}}
.live{display:flex;align-items:center;gap:10px;font-size:13px;color:#D7D4F0}
.live strong{font-size:18px;font-weight:800;color:var(--cyan);font-variant-numeric:tabular-nums}
.busy-note{font-family:var(--mono);font-size:12px;color:#B9B5E0;min-width:0}
/* while the plan runs, a terminal line with a progress bar */
.busy-note:not(:empty){display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:4px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.14);color:#8FF0C8;white-space:pre}
.busy-note:not(:empty)::before{content:"$";color:#B9B5E0}


/* edu note, left sidebar, search */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.shell{display:grid;grid-template-columns:218px minmax(0,1fr);gap:20px;align-items:start;max-width:2200px;margin-inline:auto;padding-top:14px}
.main{min-width:0}
.shell .tabs{display:flex;gap:2px}
.navgrp{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#8F8AC0;padding:8px 10px 2px}.navgrp:first-child{padding-top:2px}
.sbox{position:relative;--si-bg:rgba(255,255,255,.10);--si-ink:#fff;--si-line:rgba(255,255,255,.2);--si-mut:#B9B5E0}
.sic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--si-mut);display:flex;pointer-events:none}
.sbox input{width:100%;box-sizing:border-box;padding:9px 34px 9px 34px;border-radius:9px;border:1px solid var(--si-line);background:var(--si-bg);color:var(--si-ink);font-size:14px;min-width:0}
.sbox input::placeholder{color:var(--si-mut)}
.sbox input:focus{outline:2px solid var(--cyan);outline-offset:1px}
.skey{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:12px;border:1px solid var(--si-line);border-radius:5px;padding:0 6px;color:var(--si-mut);pointer-events:none}
.sclr{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:26px;height:26px;border:0;border-radius:7px;background:none;color:var(--si-mut);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.sclr:hover{color:var(--si-ink)}
.sbox:focus-within .skey{display:none}
.sres{position:absolute;left:0;top:calc(100% + 6px);z-index:40;width:min(440px,calc(100vw - 260px));max-height:min(70vh,520px);overflow-y:auto;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(18,11,51,.28);padding:6px;text-align:left}
.sres[hidden],.sq[hidden],.sclr[hidden]{display:none}
.sres ul{list-style:none;margin:0;padding:0}
.sres li{padding:8px 10px;border-radius:8px;cursor:pointer}
.sres li[aria-selected="true"],.sres li:hover{background:var(--accent-softer)}
.sh{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.st{font-weight:700;font-size:13.5px;min-width:0;overflow-wrap:anywhere}
.sv{flex:none;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.sx{font-size:12.5px;color:var(--ink2);margin-top:2px;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sres mark{background:var(--warn-bg);color:inherit;border-radius:3px;padding:0 1px}
.sstat{font-size:12px;color:var(--muted);padding:4px 10px 6px}
.sq{display:flex;flex-wrap:wrap;gap:6px;padding:2px 10px 8px}
.srch-hit{animation:shit 2.4s ease-out}
@keyframes shit{0%,55%{outline:3px solid var(--accent);outline-offset:3px;box-shadow:0 0 0 6px var(--accent-softer)}100%{outline:3px solid transparent;outline-offset:3px;box-shadow:0 0 0 6px transparent}}
@media (prefers-reduced-motion:reduce){.srch-hit{animation:none;outline:3px solid var(--accent);outline-offset:3px}}
.side{display:flex;flex-direction:column;gap:8px;position:sticky;top:calc(var(--hh,56px) + 12px);max-height:calc(100vh - var(--hh,56px) - 24px);background:var(--side-bg);color:#fff;border-radius:14px;padding:12px;z-index:15}
.shell .tabs{flex-direction:column}
.shell .tabs button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 10px;font-size:14px}
.shell .tabs .ti{display:block;width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}



.solverow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px}
.solverow .numbox{width:74px;flex:none;box-sizing:border-box}
.solverow .numbox input{width:100%;min-width:0}
.solverow .btn{flex:none}

/* start from, in the sidebar */
.side .tunerow{flex-direction:column;align-items:stretch;gap:4px;margin-top:8px}
.side .msg{color:#D7D4F0;font-size:12px}
/* the two ways to start over (version 103): one outlined button shape, amber to go back to the sample or default,
   red to clear everything. Both ask first. */
.shell .reset,.shell .blankbtn{align-self:stretch;margin:0;flex:none;text-align:center;text-decoration:none;font:inherit;font-size:12.5px;font-weight:700;white-space:normal;line-height:1.25;padding:7px 6px;border:1px solid;border-radius:9px;background:var(--side-bg);cursor:pointer}
.shell .reset{color:#FFD58A;border-color:rgba(255,196,92,.55)}
.shell .reset:hover{border-color:#FFC45C;color:#fff;background:rgba(255,196,92,.16)}
.shell .blankbtn{color:#FFC4BD;border-color:rgba(255,129,119,.5)}
.shell .blankbtn:hover{border-color:#FF8177;color:#fff;background:rgba(255,129,119,.16)}
.shell .reset:focus-visible,.shell .blankbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.shell .resets{display:flex;flex-direction:column;align-items:stretch;gap:5px;flex:none}
.shell .tabs button{padding-block:3px;line-height:1.35}
/* the whole menu fits a 900-pixel-high window, and a 768-pixel one with the tighter spacing below */
.side{padding:10px;gap:7px}
.shell .tabs{gap:1px}
.navgrp{padding:6px 10px 1px}
.sbox input{padding-block:7px}
@media (max-height:940px){   /* 940 since version 97: one more tab (Plan Settings) and the blank-plan link. Above it the rows are 24 pixels or more (WCAG 2.5.8), so Enterprise's 29 tabs scroll in their list up to about 1210 pixels */
  .shell .tabs button{padding-block:2px;font-size:13.5px;gap:9px;line-height:1.24}   /* 1.24 since version 338: one more tab (Planner Guide) */
  .shell .tabs .ti{width:16px;height:16px}
  .navgrp{padding:4px 10px 0;font-size:12px}
  .side{gap:6px}
  .sbox input{padding-block:5px;font-size:13.5px}
  .shell .reset,.shell .blankbtn{padding-block:4px}
}
@media (max-height:895px){   /* 800 until version 449 */
  .shell .tabs button{padding-block:1px;line-height:1.18}   /* 1.18 since version 338: one more tab (Planner Guide) */
  .shell .tabs{gap:0}   /* since version 304: one more tab (Retirement Analysis) */
  .navgrp{padding-top:3px;line-height:1.2}   /* 1.2 since version 131: the group names are 11.5 pixels, up from 9.5 */
  .shell .reset,.shell .blankbtn{padding-block:2px;font-size:12px}   /* the two start-over buttons, one line each */
  .shell .resets{gap:3px}
}
.sscroll{display:flex;flex-direction:column;gap:8px;flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;padding:3px;margin:-3px}

/* pills */
.pill[hidden]{display:none}
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:999px;font-size:12.5px;font-weight:600;white-space:nowrap}
.pill svg{width:14px;height:14px;flex:none}
.lv-good{background:var(--good-bg);color:var(--good)} .lv-warn{background:var(--warn-bg);color:var(--warn)}
.lv-serious{background:var(--serious-bg);color:var(--serious)} .lv-crit{background:var(--crit-bg);color:var(--crit)}

.layout{display:grid;gap:16px;padding-block:20px 40px;align-items:start}


/* inputs */
.inputs{display:flex;flex-direction:column;gap:12px}
.inputs{position:sticky;top:calc(var(--hh,56px) + 10px + env(safe-area-inset-top,0px));max-height:calc(100vh - var(--hh,56px) - 30px);overflow-y:auto;padding-right:4px;scrollbar-width:thin}
.presets{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink2);padding:5px 11px;border-radius:999px;font-size:13px;cursor:pointer;transition:background .15s,border-color .15s}
.chip:hover{border-color:var(--accent);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600}
.lab{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:2px 0 6px}
details.grp{background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}
details.grp>summary{list-style:none;cursor:pointer;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:14.5px}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary::after{content:"";width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s;margin-right:4px}
details.grp[open]>summary::after{transform:rotate(-135deg)}
.grp .body{padding:2px 14px 6px;display:flex;flex-direction:column}
.field{padding:10px 0;border-top:1px solid var(--line2)}
.field:first-child{border-top:0}
.field .top-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.field label{font-size:13.5px;font-weight:500}
.numbox{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:7px;background:var(--surface2);padding:2px 8px;min-width:0}
.numbox:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.numbox input{border:0;background:transparent;width:88px;text-align:right;font-family:var(--mono);font-size:13.5px;font-variant-numeric:tabular-nums;padding:3px 0;outline:0}
.numbox span{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.field .top-row .numbox{flex:none}                 /* a long label wraps; the value box keeps its size */
@supports (field-sizing:content){                  /* where the browser allows it, the box follows the number so the $ or % sits right beside it */
  .field .top-row .numbox input{field-sizing:content;width:auto!important;min-width:3ch;max-width:11ch}
}
.hint{margin:5px 0 0;font-size:12px;color:var(--muted);line-height:1.4}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:22px;background:transparent;margin:0;cursor:pointer;--p:50%}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--p),var(--line) var(--p))}
input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--line)}
input[type=range]::-moz-range-progress{height:4px;border-radius:2px;background:var(--accent)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:50%;background:var(--surface);border:2px solid var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.25)}
input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--surface);border:2px solid var(--accent)}
.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{border:0;background:var(--surface2);padding:7px 8px;font-size:13px;cursor:pointer;color:var(--ink2);border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--brand);color:var(--on-brand);font-weight:700}
.reset{align-self:flex-start;border:0;background:none;color:var(--accent-ink);font-weight:600;font-size:13px;cursor:pointer;padding:4px 0;text-decoration:underline;text-underline-offset:3px}

/* results */
.results{display:flex;flex-direction:column;gap:16px;min-width:0;transition:opacity .15s}
.results[data-busy="1"]{opacity:.55}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:18px 20px}
.verdict{background:var(--hero-bg);border-color:transparent;color:#fff;display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 28px;align-items:center}

.big{color:var(--cyan);font-size:clamp(46px,9vw,72px);font-weight:800;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.big small{font-size:.4em;font-weight:700;letter-spacing:0;color:#fff;margin-left:2px}
.vlab{font-size:14px;color:#D7D4F0;margin:6px 0 0;max-width:22ch}
.vr{display:flex;flex-direction:column;gap:10px;min-width:0}
.vr .l1{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14.5px}
.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;position:relative;padding-top:8px}
.scale i{display:block;height:8px;border-radius:2px;opacity:.5}
.scale i.on{opacity:1}
.scale .mk{position:absolute;top:0;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #fff;transform:translateX(-50%)}
.scale-l{display:grid;grid-template-columns:repeat(5,1fr);font-family:var(--mono);font-size:12px;gap:3px;margin-top:-2px;color:#B9B5E0}
.scale-l span{text-align:left;white-space:nowrap;overflow:hidden;text-overflow:clip}
.cmp{font-size:13px;color:#D7D4F0}
.cmp b{color:#fff;font-weight:700}
.dl{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.dl[hidden]{display:none}
.btn{display:inline-flex;align-items:center;gap:7px;border-radius:8px;padding:8px 14px;font-size:13.5px;font-weight:700;cursor:pointer;border:1px solid transparent}
.btn svg{width:15px;height:15px;flex:none}
.btn.primary{background:var(--cyan);color:#120B33}
.btn.primary:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent;border-color:rgba(255,255,255,.4);color:#fff}
.btn.ghost:hover{border-color:#fff}
.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.on-dark .btn:focus-visible,.btn.ghost:focus-visible{outline-color:#fff}   /* version 427: the white ring only on a dark band; on a card it was white on white */
label.btn:has(+ .hh-file:focus-visible){outline:2px solid var(--accent);outline-offset:2px}   /* a "Load" label whose file box (1 pixel, see-through) has the focus */
.dl-msg{font-size:12.5px;color:#D7D4F0}

/* compare scenarios */
.cmpcard h2{margin:0;font-size:17px;font-weight:800}
.cmpcard .sub{margin:2px 0 0;font-size:13px;color:var(--ink2);max-width:70ch}
.cmpnote{margin:0;font-size:13.5px;color:var(--ink2)}
#viewCmp .cmpcard{margin-top:16px}
.cmphead{display:flex;flex-wrap:wrap;gap:12px 20px;justify-content:space-between;align-items:flex-end;margin-bottom:12px}
.saveform{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.saveform input{border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:8px 10px;font-size:13.5px;min-width:0;width:200px;color:var(--ink)}
.saveform input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.btn.solid{background:var(--brand);color:var(--on-brand)}
.btn.solid:hover{filter:brightness(1.12)}
.btn.line{background:transparent;border-color:var(--line);color:var(--ink)}
.btn.line:hover{border-color:var(--accent)}
/* anything that deletes or resets: red text and a red edge, so it never passes for a routine button */
.btn.danger{background:transparent;border-color:color-mix(in srgb,var(--crit) 45%,transparent);color:var(--crit)}
.btn.danger:hover{border-color:var(--crit);background:var(--crit-bg)}
.btn.sm{padding:5px 10px;font-size:12.5px;font-weight:600}
.btn[disabled]{opacity:.55;cursor:default}
.msg{font-size:12.5px;color:var(--ink2)}

.cdiff{display:block;margin-top:4px;font-size:12.5px;color:#D7D4F0;line-height:1.4}
.cdiff .linkbtn,.verdict .cmp .linkbtn{color:var(--cyan)}
.chip.tune{border-color:var(--accent);color:var(--accent-ink);font-weight:700}
.chip[disabled]{opacity:.55;cursor:default}
.empty{border:1px dashed var(--line);border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;color:var(--ink2);font-size:14px}
.empty p{margin:0;max-width:64ch}
.empty[hidden]{display:none}
.bdg{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--ink);color:var(--on-s);font-size:12px;font-weight:800;flex:none;margin-right:6px;line-height:1}
.bdg.cur{background:var(--ink);color:var(--bg)}
.bdt{font-size:12px;font-weight:800;fill:var(--on-s);font-family:var(--sans)}
.dt{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}
.cmptop{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:2px 0 6px}
.seg.s2{display:inline-grid;grid-template-columns:auto auto}
.field[hidden],.btn[hidden]{display:none}
.plist{display:flex;flex-direction:column;gap:6px}
.plist button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink2);border-radius:8px;padding:8px 10px;cursor:pointer;font:inherit;transition:background .15s,border-color .15s}
.plist button b{font-size:13.5px;font-weight:700;color:var(--ink)}
.plist button span{font-size:12px;line-height:1.35;color:var(--muted)}
.plist button:hover{border-color:var(--accent)}
.plist button[aria-pressed="true"]{background:var(--brand);border-color:var(--brand)}
.plist button[aria-pressed="true"] b{color:var(--on-brand)}
.plist button[aria-pressed="true"] span{color:var(--on-brand);opacity:.86}
.demos{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.seg.s2 button{padding:6px 14px}
.lgrow{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--ink2);margin-bottom:6px}
.lgrow span{display:inline-flex;align-items:center;gap:6px}
.lg{display:inline-block;width:22px;height:0}
.ctw{overflow-x:auto;margin-top:14px}
table.ct th,table.ct td{min-width:100px;padding-left:8px;padding-right:8px;overflow-wrap:break-word}
table.ct th:first-child,table.ct td:first-child{min-width:170px;position:sticky;left:0;background:var(--surface)}
table.ct thead th{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:12.5px;font-weight:700;color:var(--ink);white-space:normal;vertical-align:bottom}
.cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,470px),1fr));margin-top:16px}
.sc{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface2);border-top:3px solid var(--c);min-width:0}
.sc header{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.sc .bdg{background:var(--c);color:var(--on-s);margin:0}
.scname{flex:1;min-width:0;border:1px solid transparent;background:transparent;border-radius:6px;padding:4px 6px;font-size:15px;font-weight:800;color:var(--ink)}
.scname:hover{border-color:var(--line)}
.scname:focus{outline:0;border-color:var(--accent);background:var(--surface)}
.sc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.sc-chart{grid-column:1/-1;background:var(--surface);border:1px solid var(--line2);border-radius:8px;padding:8px 10px 6px}
.sc-plot{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:84px 16px;column-gap:6px}
.sc-plot svg{display:block;width:100%;height:84px;overflow:visible}
.sc-plot .grid{stroke:var(--line2);stroke-width:1}
.sc-y,.sc-x{position:relative;font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.sc-y span{position:absolute;right:0;transform:translateY(-50%);white-space:nowrap;line-height:1}
.sc-x{grid-column:2}
.sc-x span{position:absolute;top:3px;transform:translateX(-50%);white-space:nowrap;line-height:1}
.sc-x span.x0{transform:none}
.sc-x span.x1{transform:translateX(-100%)}
.sc-cap{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:4px}
.sc-out,.sc-t{background:var(--surface);border:1px solid var(--line2);border-radius:8px;padding:9px 10px;min-width:0}
.sc .k{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.sc-out .v{font-size:22px;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-bottom:6px;color:var(--ink);background:none}
.sc-out .v span{font-size:12px;font-weight:500;color:var(--ink2);letter-spacing:0}
.sc-out{background:var(--surface)}
.tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.tri span{display:flex;flex-direction:column;background:var(--surface2);border-radius:6px;padding:4px 6px;min-width:0;overflow-wrap:anywhere;white-space:nowrap}
.tri span.mid{background:var(--accent-softer)}
.tri i{white-space:normal;font-style:normal;font-family:var(--mono);font-size:12px;font-weight:400;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.sc-diff{margin:10px 0 0;font-size:12.5px;color:var(--ink2);line-height:1.45}
.sc-diff b{color:var(--ink)}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:12px}
/* five tiles: all in one row when they fit, otherwise three and two rather than four and one */
.kpis:has(>.kpi:nth-child(5):last-child){grid-template-columns:repeat(auto-fit,minmax(max(172px,min(calc((100% - 26px) / 3),calc((908px - 100%) * 1000))),1fr))}
.charts{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
.lower{display:grid;gap:16px;grid-template-columns:minmax(0,1fr);align-items:start}
.lowerR{display:flex;flex-direction:column;gap:16px;min-width:0}
@media (min-width:1600px){.charts,.lower{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1700px){body{font-size:16px}.layout{gap:24px}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:0}
.kpi .k{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);min-height:2.6em}
.kpi .v{font-size:24px;font-weight:800;color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px}
.kpi .s{font-size:12px;color:var(--muted);margin-top:2px}
.chartcard h2{margin:0;font-size:17px;font-weight:800;letter-spacing:-.005em}
.chartcard p.sub{margin:2px 0 10px;font-size:13px;color:var(--ink2)}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--ink2);margin-bottom:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{display:inline-block;width:18px;height:10px;border-radius:2px}
.sw.line{height:0;border-top:2.5px solid var(--accent);border-radius:0}
.sw.mid{background:var(--accent-soft)} .sw.wide{background:var(--accent-softer);border:1px solid var(--accent-soft)}
.chart{position:relative;width:100%;touch-action:pan-y}
.chart svg{display:block;overflow:visible}
.ax{font-family:var(--mono);font-size:12px;fill:var(--muted)}
.grid{stroke:var(--line2);stroke-width:1}
.axis{stroke:var(--line);stroke-width:1}
.band-wide{fill:var(--accent-softer)} .band-mid{fill:var(--accent-soft)}
.ln{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linejoin:round}
.ref{stroke:var(--ink2);stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.reflab{font-family:var(--mono);font-size:12px;fill:var(--ink2)}
.xh{stroke:var(--ink2);stroke-width:1;stroke-dasharray:2 3}
.dot{fill:var(--surface);stroke:var(--accent);stroke-width:2}
.bcut{fill:var(--surface)}.bcutv{font-family:var(--mono);font-size:12px;font-weight:600;fill:var(--ink2)}
.tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.18);padding:8px 10px;font-size:12.5px;line-height:1.45;min-width:170px;z-index:5}
.tip[hidden]{display:none}
.tip .th{font-family:var(--mono);font-size:12px;color:var(--muted);margin-bottom:3px}
.tip div.r{display:flex;justify-content:space-between;gap:14px}
.tip b{font-variant-numeric:tabular-nums;font-weight:600}
.note{font-size:12px;color:var(--muted);margin:6px 0 0}
.words p{margin:0 0 10px;max-width:68ch}
.words p:last-child{margin:0}
.words h2{margin:0 0 8px;font-size:17px;font-weight:800}
details.more{background:var(--surface);border:1px solid var(--line);border-radius:10px}
details.more>summary{cursor:pointer;padding:12px 16px;font-weight:600;font-size:14px}
details.more .in{padding:0 16px 14px;font-size:13.5px;color:var(--ink2)}
details.more .in p{margin:0 0 8px;max-width:72ch}
.tw{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:12.5px;font-variant-numeric:tabular-nums}
th,td{padding:6px 10px;text-align:right;border-bottom:1px solid var(--line2);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:500}
footer{font-size:12px;color:var(--muted);padding-bottom:28px;max-width:80ch}
/* tabs and accounts */
.tabs{display:inline-flex;gap:4px;background:rgba(255,255,255,.10);border-radius:9px;padding:3px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs button{flex:none}
.tabs button{border:0;background:transparent;color:#D7D4F0;padding:6px 16px;border-radius:7px;font-size:13.5px;font-weight:700;cursor:pointer}
.tabs button:hover{color:#fff}
.tabs button[aria-selected="true"]{background:var(--cyan);color:#120B33}
.tabs button:focus-visible{outline:2px solid #fff;outline-offset:1px}
.wrap[hidden]{display:none}
.banner{background:var(--accent-softer);border:1px solid var(--accent-soft);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--ink);line-height:1.4}
.banner[hidden]{display:none}
.linkbtn{border:0;background:none;color:var(--accent-ink);font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0;font-size:inherit}
.acct{padding-block:20px 40px;display:flex;flex-direction:column;gap:16px}
.acct h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.01em}
.acct h2{margin:0;font-size:17px;font-weight:800}
.acct .sub{margin:2px 0 10px;font-size:13px;color:var(--ink2);max-width:75ch}
.ahead{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 28px;align-items:flex-end}
.ahead p{margin:4px 0 0;font-size:13.5px;color:var(--ink2);max-width:78ch}
.switch{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:14px;cursor:pointer;position:relative}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch .trk{width:44px;height:26px;border-radius:999px;background:var(--line);position:relative;transition:background .15s;flex:none}
.switch .trk::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .15s}
.switch input:checked+.trk{background:var(--accent)}
.switch input:checked+.trk::after{transform:translateX(18px)}
.switch input:focus-visible+.trk{outline:2px solid var(--accent);outline-offset:2px}
.msgline{min-height:0;font-size:13px;color:var(--warn);font-weight:600}
.msgline:empty{display:none}
.atiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.acbars[hidden]{display:none}
.gbar{display:flex;height:34px;border-radius:8px;overflow:hidden;gap:2px;margin-top:6px}
.gbar>div{display:flex;align-items:center;padding:0 10px;font-size:12px;font-weight:700;color:var(--on-s);white-space:nowrap;overflow:hidden;min-width:0}
.gleg,.mixleg{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:12.5px;color:var(--ink2);margin-top:8px}
.gleg span,.mixleg span{display:inline-flex;align-items:center}
.gleg b,.mixleg b{margin-left:5px;color:var(--ink)}
.mixbar{display:flex;height:18px;border-radius:6px;overflow:hidden;gap:2px;margin-top:6px}
.mixbar i{display:block;background:var(--accent)}
.acbars .lab2{font-size:12.5px;font-weight:700;margin-top:14px}
.acols{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,400px);align-items:start}

.acside{display:flex;flex-direction:column;gap:16px;min-width:0}
.addrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
/* the "+ Add" menus (016-addmenu.js) */
.addmenu{position:relative;display:inline-block}
.am-btn[aria-expanded="true"]{border-color:var(--accent);color:var(--accent-ink)}
.am-pop{position:absolute;left:0;top:calc(100% + 6px);z-index:30;width:min(620px,calc(100vw - 48px));max-height:min(64vh,520px);overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(18,11,51,.22);padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 10px;align-items:start}
.am-pop[hidden]{display:none}
.am-grp{display:flex;flex-direction:column;gap:1px;min-width:0}
.am-gh{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:6px 8px 2px}
.am-pop .am-it{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:9px;align-items:start;text-align:left;width:100%;border:0;border-radius:8px;background:none;padding:6px 8px;color:var(--ink);font:inherit;line-height:1.3}
.am-pop .am-it svg{grid-row:span 2;width:17px;height:17px;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.am-pop .am-it b{font-size:13.5px;font-weight:700}
.am-pop .am-it span{grid-column:2;font-size:12px;color:var(--muted)}
.am-pop .am-it:hover,.am-pop .am-it:focus-visible{background:var(--accent-softer);outline:none}
.am-pop .am-it:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.am-pop .am-it[disabled]{opacity:.5;cursor:default;background:none}
.addrow .chip[disabled]{opacity:.5;cursor:default}
.acrow{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:12px;display:flex;flex-direction:column;gap:10px}
.acrow+.acrow{margin-top:10px}

.acrow input[type=text],.acrow select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:13.5px;min-width:0}
.acrow input:focus,.acrow select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}

.tag{font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.tag.pre{background:var(--warn-bg);color:var(--warn)}
.tag.roth{background:var(--good-bg);color:var(--good)}
.tag.tax{background:var(--accent-softer);color:var(--ink)}
.ar2{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:10px}
.af{display:flex;flex-direction:column;gap:3px;min-width:0}
.af.wide{grid-column:span 2}
.af>span:first-child{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.af .numbox{width:100%}
.af .numbox input{width:100%;min-width:0;border:0;background:transparent;padding:3px 0}
.af .numbox input:focus{box-shadow:none}
.af .ro{font-family:var(--mono);font-size:13.5px;padding:6px 0;color:var(--ink)}
.acrow .hint{margin:0}
.lv{display:flex;align-items:center;gap:12px;margin:6px 0 2px}
.big2{font-size:40px;font-weight:800;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1}
.acside .plist{margin-top:6px}
.acside .field{padding:10px 0 4px}

.psptr{border:1px dashed var(--line);border-radius:10px;padding:10px 12px;margin:0}

.acmain{display:flex;flex-direction:column;gap:16px;min-width:0}
.grp[hidden]{display:none}
#pgroups{display:flex;flex-direction:column;gap:12px;min-width:0}
.gnote{margin:0;padding:8px 14px 12px;font-size:12.5px;color:var(--ink2);line-height:1.45;border-top:1px solid var(--line2)}
.acct .grp .plist{margin-top:2px}
.pnote{font-size:12.5px;color:var(--ink2);line-height:1.45;margin:0 0 8px}
/* income tab */
#incGroups{display:flex;flex-direction:column;gap:12px;min-width:0}
.numbox[hidden]{display:none}
.irow{padding:8px 10px 12px}
.ir1{display:flex;gap:6px;align-items:center}
.ir-main{flex:1 1 auto;min-width:0;display:grid;grid-template-columns:22px minmax(110px,1.2fr) minmax(90px,.6fr) minmax(130px,1.1fr);grid-template-areas:"ic t amt per";gap:4px 12px;align-items:center;text-align:left;background:none;border:0;padding:6px 6px;cursor:pointer;color:var(--ink);border-radius:8px}
.ir-main:hover{background:var(--surface2)}
.ir-ic{grid-area:ic;width:22px;height:22px}
.ir-t{grid-area:t;display:flex;flex-direction:column;min-width:0}
.ir-nm{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ir-ty{font-size:12px;color:var(--muted)}
.ir-amt{grid-area:amt;font-family:var(--mono);font-size:13.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ir-per{grid-area:per;font-size:13px;color:var(--ink2);min-width:0}
.ir-chev{display:block;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .15s;margin-top:-3px}
.irow.open .ir-chev{transform:rotate(-135deg);margin-top:3px}
.ir-ctl{display:flex;gap:2px;flex:none}
.ib{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;color:var(--muted);border-radius:8px;cursor:pointer;padding:0}
.ib:hover{background:var(--surface2);color:var(--ink)}
.ib[disabled]{opacity:.35;cursor:default;background:none;color:var(--muted)}
.ib svg{width:16px;height:16px}
.ir-det{display:flex;flex-direction:column;gap:10px;padding:2px 6px 0;border-top:1px solid var(--line2);margin-top:2px;padding-top:12px}
.ir-det[hidden]{display:none}
.ir-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
/* a start and an end, side by side on one row of the editor */
.af-when{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.af input.ir-name{width:100%}
.af select{width:100%}
.af .pair{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;min-width:0}
.af .pair select{flex:1 1 0;width:auto;min-width:0}
.af .pair .numbox{width:84px;flex:none}
/* an amount with its unit: the box takes the room, the /yr or /mo choice stays small */
.af .pair.amtp .numbox{flex:1 1 auto;width:auto;min-width:0}
.af .pair.amtp select{flex:0 0 78px}
/* in the list editors every row lines its boxes up along the bottom, whatever the length of the labels above them,
   and every box is the same height */
.ir-grid>.af,.af-when>.af{justify-content:flex-end}
.ir-grid .af>*{order:2}
.ir-grid .af>span:first-child{order:0}
.ir-grid .af>.ferr{order:1}                                   /* a message about the box sits between its label and the box */
.af .pair.acbal .numbox{width:140px;flex:none}
.af .pair.acbal input[type=range]{flex:1 1 auto;min-width:60px;margin:0}
.acrow .af>select,.acrow .af>input,.acrow .af>.numbox,.acrow .af .pair>select,.acrow .af .pair>.numbox{height:36px;box-sizing:border-box}
.acrow .af .numbox{display:flex;align-items:center}
.acrow .af .numbox[hidden],.acrow .af [hidden]{display:none}
.ir-det .hint{margin:0}



/* people tab */
#pplGroups{display:flex;flex-direction:column;gap:12px;min-width:0}


.av{flex:none;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;color:var(--on-s)}





.rl{font-size:12.5px;font-weight:700;fill:var(--ink)}
.bl{font-size:12px;font-weight:700;fill:var(--on-s)}
body.mo{overflow:hidden}
.ovl{position:fixed;inset:0;z-index:60;background:rgba(18,11,51,.62);display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto}
.ovl[hidden]{display:none}
.dlg{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.4);width:min(440px,100%);padding:20px 22px;max-height:100%;overflow:auto}
.dlg form{display:flex;flex-direction:column;gap:14px}
.dlg h2{margin:0 0 14px;font-size:18px;font-weight:800}


.df{display:flex;flex-direction:column;gap:4px;min-width:0}
.df>span{font-size:12.5px;font-weight:700;color:var(--ink2)}
.df input,.df select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:9px 10px;font-size:15px;min-width:0;width:100%}
.df input[aria-invalid="true"]{border-color:var(--crit)}
.df input:focus,.df select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.df input[aria-invalid="true"],.df input[aria-invalid="true"]:focus{border-color:var(--crit)}
.ferr{font-style:normal;font-size:12.5px;color:var(--crit);font-weight:600}
.ferr[hidden]{display:none}

.dis{align-self:flex-start;border:0;background:none;color:var(--accent-ink);font-weight:700;font-size:13.5px;cursor:pointer;padding:2px 0}

.dlg .btn:focus-visible,.dis:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* insights tab */
.atiles#insTiles{grid-template-columns:repeat(3,minmax(0,1fr))}

.in-sec{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}
.in-h2s{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:0}
.in-health{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px 26px;align-items:center;margin:6px 0 14px}
.in-ring{position:relative;width:132px;height:132px}
.in-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.in-ring .rt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;font-size:24px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.in-ring .rt small{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.in-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.in-stats.in-stats2{margin-top:10px}
.note.in-read{margin:10px 0 0;max-width:86ch;line-height:1.5}
.early-tbl tr.after td{font-weight:700;border-top:2px solid var(--line)}
#insEarly .in-failtbl.scroll{max-height:360px;overflow-y:auto;border-bottom:1px solid var(--line)}
#insEarly .in-failtbl thead th{position:sticky;top:0;background:var(--surface)}
@media (max-width:520px){#insEarly .in-stats,#insFail .in-stats{grid-template-columns:minmax(0,1fr)}}   /* dollar figures do not fit three to a row on a phone (version 198) */
.in-stat{border-left:2px solid var(--line);padding-left:10px;min-width:0}
/* the bridge card */
.brx{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface2)}
.brxr{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;align-items:end}
.brx select,.brx .numbox{width:100%}
.brx select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:13.5px;min-width:0}
.brx .hint{margin:10px 0 0}
.bridge-tbl{margin-top:12px}
.bridge-tbl tr.bad td{background:var(--crit-bg)}
.bridge-tbl tr.bad td:first-child{font-weight:700}
.in-stat .k{font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.in-stat .v{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.obs{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.ob{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:8px;padding:9px 12px;background:var(--surface)}
.ob b{font-size:14px}
.ob p{margin:2px 0 0;font-size:13px;color:var(--ink2);line-height:1.45}
.ob-act{--c:var(--crit);--cb:var(--crit-bg)}
.ob-watch{--c:var(--warn);--cb:var(--warn-bg)}
.ob-info{--c:var(--muted);--cb:var(--surface2)}
.ob-good{--c:var(--good);--cb:var(--good-bg)}
.in-tag{display:inline-block;font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap;background:var(--cb,var(--surface2));color:var(--c,var(--ink2))}
.ob-tg{margin-top:1px;min-width:52px;text-align:center}
.tg-good{--c:var(--good);--cb:var(--good-bg)}
.tg-watch{--c:var(--warn);--cb:var(--warn-bg)}
.tg-act{--c:var(--crit);--cb:var(--crit-bg)}
.tg-info{--c:var(--muted);--cb:var(--surface2)}
.in-bar{display:flex;height:16px;border-radius:5px;overflow:hidden;background:var(--line2);gap:2px;margin:10px 0 8px}
.in-bar span{display:block;min-width:2px}
.in-tbl{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0 0}
.in-tbl td{padding:5px 0;border-bottom:1px solid var(--line2)}
.in-tbl td:last-child{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.in-tbl tr.tot td{font-weight:800;border-top:1px solid var(--line);border-bottom:0}
.in-tbl .sw{width:10px;height:10px;margin-right:8px;vertical-align:-1px}
.in-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:12px}
.in-mix{display:flex;gap:16px;align-items:center;margin-top:16px;padding-top:14px;border-top:1px solid var(--line2)}
.in-donut{width:76px;height:76px;flex:none}
.in-goal{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:var(--surface)}
.g-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.g-mid{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.g-mid .g-name{flex:1 1 190px;min-width:0}
.g-tx{margin:6px 0 0}
.in-goal input[type=text],.in-inp,.in-ta{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:13.5px;min-width:0;font-family:inherit}
.in-goal input[type=text]:focus,.in-inp:focus,.in-ta:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.in-goal .numbox input{border:0;background:transparent;padding:3px 0;width:88px;text-align:right}
.in-goal .numbox input:focus{box-shadow:none}
.in-chk{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;cursor:pointer}
.in-ta{width:100%;resize:vertical;line-height:1.5;margin-top:6px;display:block}
.tds{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.in-td{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line2);padding:3px 0}
.in-td label{display:flex;align-items:center;gap:9px;flex:1 1 auto;min-width:0;cursor:pointer;font-size:13.5px;padding:4px 0}
.in-td label span{overflow-wrap:anywhere}
.in-td.done label span{text-decoration:line-through;color:var(--muted)}
.tdadd{display:flex;gap:8px;margin-top:10px}
.tdadd .in-inp{flex:1 1 auto}
.in-fld{display:flex;flex-direction:column;gap:3px;min-width:0}
.in-fld>span:first-child{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.in-fld .numbox{width:100%}
.in-fld .numbox input{width:100%;min-width:0;border:0;background:transparent;padding:3px 0;text-align:right}
.in-fld .numbox input:focus{outline:0;box-shadow:none}
.in-out{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.in-prot{display:flex;flex-direction:column;margin-top:10px}
.in-prot .pr{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line2);font-size:13.5px}
.in-prot .pr select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:5px 8px;font-size:13px}
.in-prot .pr-t{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}

/* inheritances */
.ferr{font-size:12px;font-weight:600;color:var(--crit);line-height:1.3}
.ferr:empty{display:none}
.af.bad .numbox,.af.bad select{border-color:var(--crit)}
.ir-warn{color:var(--crit)!important;font-weight:700}
.af select:disabled{opacity:.7;cursor:default}
/* expenses tab */
.af[hidden]{display:none}

.xr-n{color:var(--muted)}
.af .pair .numbox.wide{width:132px}
.af .pair .numbox>span{white-space:nowrap}

.xmh{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.xmh h2{margin:0 0 4px}
.xsub{margin:0;font-size:13.5px;color:var(--ink2)}












/* how many runs fail in each year of the plan: a shape, not a table to read off */
.in-cols{width:100%;height:94px;display:block;overflow:visible}
.in-cols rect{fill:var(--warn);opacity:.85}
.in-colx{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:2px}
#insFail .in-tbl th{text-align:left;font-weight:600;color:var(--ink2);font-size:12px;padding-bottom:4px}
#insFail .in-failtbl.scroll{max-height:360px;overflow-y:auto;border-bottom:1px solid var(--line)}
#insFail .in-failtbl thead th{position:sticky;top:0;background:var(--surface)}
#insFail tr.worst td{font-weight:700;color:var(--warn)}
/* the reorder arrows stack, which keeps the row's width for the figures, and a delete that does not
   need the row opened first. Deleting is one click, and Undo at the top of the page steps back. */
.ir-ud{display:inline-flex;flex-direction:column;flex:none}
.ir-ud .ib{width:26px;height:16px;border-radius:5px}
.ir-ud .ib svg{width:13px;height:13px}
.ib[data-a="del"]{color:var(--crit)}
.ib[data-a="del"]:hover{background:var(--crit-bg);color:var(--crit)}
/* variables: a name, a value, what it is, and how many boxes lean on it */
#varsCard .vr{display:grid;grid-template-columns:minmax(0,1.1fr) 140px minmax(0,1.4fr) 68px 30px;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line2)}
#varsCard .vr:first-child{border-top:0}
#varsCard .vr input{width:100%;box-sizing:border-box}
#varsCard .v-nm{font-weight:600}
#varsCard .v-use{font-size:12px;color:var(--muted);font-family:var(--mono);text-align:right}
#varsCard code,#dataCard code{font-family:var(--mono);font-size:12px;background:var(--surface2);padding:1px 5px;border-radius:5px}
#dataCard textarea{width:100%;min-height:110px;font-family:var(--mono);font-size:12px;margin-top:8px;box-sizing:border-box}
#dataCard .hh-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
#dataCard .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
/* the data list: spaces for the controls a list does not have, so every list's chevrons line up */
.ib.ib-sp{visibility:hidden;pointer-events:none}
.ir-ud.ir-ud-sp{width:26px;height:32px}
.ir-amt{overflow:hidden;text-overflow:ellipsis}
.ir-av{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-size:12px;font-weight:800;line-height:1}
.irow .ferr{color:var(--crit);font-style:normal;font-size:12px}
/* the account editor's sliders: balance, and the stock/bond split (stocks in the accent, bonds lighter, as in the mix bar) */
.ac-slide input[type=range]{margin-top:4px}
.ac-mix-r{--acs:var(--accent);--acb:color-mix(in srgb,var(--accent) 38%,var(--surface))}
input[type=range].ac-mix-r::-webkit-slider-runnable-track{height:8px;border-radius:4px;background:linear-gradient(to right,var(--acs) var(--p),var(--acb) var(--p))}
input[type=range].ac-mix-r::-webkit-slider-thumb{margin-top:-5px}
input[type=range].ac-mix-r::-moz-range-track{height:8px;border-radius:4px;background:var(--acb)}
input[type=range].ac-mix-r::-moz-range-progress{height:8px;border-radius:4px;background:var(--acs)}
.ac-mixlab{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:12px;color:var(--ink2);text-transform:none;letter-spacing:0}
.ac-mixlab .ac-ms{color:var(--ink);font-weight:600}
.ac-mixlab .ac-mc{color:var(--muted)}
/* the "?" help: a small round button beside a label; its explanation shows on hover or focus */
.qt{position:relative;display:inline-block;vertical-align:1px;margin-left:3px}
.qm{width:16px;height:16px;border-radius:50%;border:1px solid var(--muted);background:var(--surface);color:var(--muted);font:700 12px/1 var(--sans);padding:0;cursor:help;display:inline-flex;align-items:center;justify-content:center}
.qm:hover,.qm:focus-visible{border-color:var(--accent);color:var(--accent);outline:0;box-shadow:0 0 0 2px var(--accent-softer)}
.qt-b{display:none;position:absolute;z-index:30;left:-10px;top:calc(100% + 8px);width:300px;background:var(--ink);color:var(--surface);font:400 12.5px/1.45 var(--sans);text-transform:none;letter-spacing:0;padding:9px 11px;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.25);pointer-events:none}
.qt-b::before{content:'';position:absolute;left:13px;top:-5px;border:5px solid transparent;border-top:0;border-bottom-color:var(--ink)}
.qt:hover .qt-b,.qm:focus + .qt-b{display:block}
.qt.qt-r .qt-b{left:auto;right:-10px}
.qt.qt-r .qt-b::before{left:auto;right:13px}
/* Appearance switch in the Assumptions header */
.ahact{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px}
.thm{display:flex;flex-direction:column;align-items:flex-start}
.thm-top{display:flex;align-items:baseline;gap:10px;margin:0 0 4px}
.thm .lab{margin:0}
.seg.th-seg{display:inline-grid;grid-template-columns:auto auto auto}
.seg.th-seg button{padding:6px 14px}
.th-now{font-size:12px;color:var(--muted);white-space:nowrap}
/* the input guard's note under a field that dropped a character (014-guard.js) */
.guard-tip{position:fixed;z-index:80;max-width:300px;padding:6px 10px;border-radius:8px;background:var(--bar-bg);color:#fff;font-size:12px;line-height:1.35;box-shadow:0 6px 18px rgba(0,0,0,.25);pointer-events:none}
.guard-tip[hidden]{display:none}

/* ---------- Plan Settings, a tab under Planning since version 97 (it was a panel beside every tab) ---------- */
.psgroups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.ps-col{display:flex;flex-direction:column;gap:16px;min-width:0}
@media (max-width:1260px){.psgroups{grid-template-columns:minmax(0,1fr)}}
.psgroups details.grp{background:var(--surface);border:1px solid var(--line);border-radius:14px;min-width:0}
.psgroups details.grp>summary{padding:14px 18px;font-size:15px}
.psgroups details.grp>.body{padding:0 18px 8px}
.psgroups details.grp>.gnote{margin:0 18px 14px}
.psgroups .field{padding:10px 0 6px}
#viewPset>.banner{margin:0 0 14px}
.ps-name{display:flex;align-items:flex-start;gap:8px}
.ps-name h2{margin:0;min-width:0;overflow-wrap:anywhere}
.ps-name .ib{margin-left:auto;flex:none}
.ps-act{display:flex;gap:8px;margin-top:10px}
#psPlan .msg,#psSolve .msg{font-size:12.5px}
#psPlan .msg:empty{display:none}
#psSolve .solverow{margin-top:10px}
.vgo{margin:8px 0 0;font-size:13px}
.vgo .linkbtn{color:#BFEFFF}
.top #undoBtn:disabled{opacity:.45;cursor:default}
@media (min-width:1261px){#viewPset .acside{position:sticky;top:calc(var(--hh,56px) + 14px)}}   /* the result stays in view while the long spending rule scrolls */
#depRows input[data-t=text]{text-align:left}
/* The loading cover (version 449): the top bar's purple over the whole page until the start code has opened the first
   tab in the saved view; then it fades out. It lifts by itself after eight seconds whatever happens. */
.boot{position:fixed;inset:0;z-index:10000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  background:#231557;color:#DCD8F7;font-family:var(--sans,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif);text-align:center;padding:16px;
  animation:boot-out .3s ease 8s forwards}
html[data-theme="dark"] .boot{background:#0C0724}
@media (prefers-color-scheme:dark){html:not([data-theme="light"]) .boot{background:#0C0724}}
.boot-mark{color:#0ACBF5;display:flex;margin-bottom:6px}
.boot-name{margin:0;font-size:20px;font-weight:800;color:#FFFFFF;letter-spacing:-.01em}
.boot-msg{margin:0;font-size:14px;color:#DCD8F7}
.boot-bar{display:block;width:140px;height:3px;border-radius:2px;background:rgba(255,255,255,.14);overflow:hidden;margin-top:12px}
.boot-bar i{display:block;width:40%;height:100%;border-radius:2px;background:#0ACBF5;animation:boot-run 1.1s ease-in-out infinite}
@keyframes boot-run{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
@keyframes boot-out{to{opacity:0;visibility:hidden}}
html.booted .boot{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s ease,visibility 0s linear .22s;animation:none}
html[data-motion="reduce"] .boot,html[data-motion="reduce"] .boot-bar i{transition:none;animation:none}
html[data-motion="reduce"] .boot{animation:boot-out 0s 8s forwards}
@media (prefers-reduced-motion:reduce){.boot-bar i{animation:none;width:100%;opacity:.5}html.booted .boot{transition:none}}
@media print{.boot{display:none}}
/* tools tab */
.tl-top{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-top:14px;align-items:start}
.tl-top{grid-template-columns:minmax(0,480px) minmax(0,1fr)}
.tl-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px 16px;align-content:start}
.tl-form select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 9px;font-size:13.5px;min-width:0;width:100%}
.tl-form select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.tl-form .numbox{padding:4px 10px}
.tl-form .numbox>span{white-space:nowrap}
.tl-out{background:var(--surface2);border:1px solid var(--line2);border-radius:12px;padding:14px 16px;min-width:0}
.tl-h{margin:0 0 8px;font-size:17px;font-weight:800}
.tl-ans{background:var(--hero-bg);color:#fff;border-radius:12px;padding:14px 16px;margin:0 0 10px}
.tl-ans .k{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#B9B5E0}
.tl-ans .v{font-size:clamp(28px,5vw,40px);font-weight:800;letter-spacing:-.02em;color:var(--cyan);font-variant-numeric:tabular-nums;line-height:1.1;margin-top:4px;overflow-wrap:anywhere}
.tl-ans .s{font-size:13px;color:#D7D4F0;margin-top:4px}
.tl-mix .in-donut{width:104px;height:104px}
.tl-mix .lgrow{flex-direction:column;gap:6px}
.tl-two{display:grid;gap:16px;grid-template-columns:minmax(0,1fr);align-items:start}
@media (min-width:1280px){.tl-two{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tl-tw{overflow:auto;max-height:460px;margin-top:8px}
.tl-tw table{min-width:380px}
.tl-tw table.gv-tbl:not(:has(thead)){min-width:0;width:100%}   /* a table of notes, row name and text, wraps on a phone instead of scrolling, */
#tp_reach td.neg{color:var(--crit);font-weight:600}                    /* a year the reachable money is below zero (version 299) */
.ir-grid .af.af-ck{flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:8px}.ir-grid .af-ck>input{order:0;margin-top:2px;flex:0 0 auto;width:16px;height:16px}.ir-grid .af-ck>span{order:1;font-family:var(--sans);font-size:14px;letter-spacing:0;text-transform:none;color:var(--ink)}   /* a check box in a row (version 303) */
#tp_swr tr.sw-worst th,#tp_swr tr.sw-worst td{color:var(--crit);font-weight:600}   /* the start year that set the safe rate (version 312) */
#tp_seq td.neg{color:var(--crit);font-weight:600}#tp_seq tr.sq-on th,#tp_seq tr.sq-on td{background:var(--surface2);font-weight:600}   /* a start year that runs out, and the one charted (version 313) */
#tp_dca tr.dca-on th,#tp_dca tr.dca-on td{background:var(--surface2);font-weight:600}   /* the months chosen (version 315) */
.ef-dot{fill:var(--muted);opacity:.4}.ef-line{fill:none;stroke:var(--s1);stroke-width:2.4;stroke-linejoin:round}.ef-me circle{fill:var(--s2);stroke:var(--surface);stroke-width:2}.ef-knee circle{fill:var(--crit);stroke:var(--surface);stroke-width:2}.ef-lab{paint-order:stroke;stroke:var(--surface);stroke-width:3px}#tp_ef tr.ef-k th,#tp_ef tr.ef-k td{font-weight:600;background:var(--surface2)}   /* the frontier chart (version 316) */
#tp_pcmp .tl-tw{max-height:none}#tp_pcmp tbody th{white-space:nowrap}   /* the measures, all eleven, without a scroll, each name on one line (version 317) */
.tl-tw[data-x]{max-height:none}                                 /* and the notes under a tool are shown in full (version 182) */
.tl-tw thead th{position:sticky;top:0;background:var(--surface);z-index:1}
.tl-tw td:first-child,.tl-tw th:first-child{width:1%}

#tlSched .cmptop h2{margin:0}
.tl-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:10px;margin:0 0 16px}
/* the picker: one small card per group, its tools stacked under a heading */
.tl-grp{display:flex;flex-direction:column;gap:8px;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 10px 12px}
/* the groups share their rows, so a heading that wraps keeps every group's first tool on one line */
@supports (grid-template-rows:subgrid){.tl-grp{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:8px;align-content:start}.tl-gh{align-self:end}.tl-gb{align-self:start}}
.tl-gh{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 2px}
.tl-gh svg{width:15px;height:15px;flex:none;fill:none;stroke:var(--accent);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.tl-gb{display:flex;flex-direction:column;gap:6px}
.tl-grp .chip{display:block;width:100%;text-align:left;border-radius:8px;padding:7px 10px;font-size:13.5px;line-height:1.3}
.tl-tw tr.hl td{background:var(--accent-softer)}
.tl-warn{color:var(--crit)}
.tl-grid{min-width:0!important}
.tl-grid th,.tl-grid td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding:7px 8px}
.tl-grid td.best{box-shadow:inset 0 0 0 2px var(--good);font-weight:700}
.tl-grid td.pick{box-shadow:inset 0 0 0 2px var(--accent)}
.tl-grid td.best.pick{box-shadow:inset 0 0 0 2px var(--good),inset 0 0 0 4px var(--accent)}
#tpNew>div>.card,#tpNew>div>.tl-two{margin-top:16px}
#tpNew>div>.tl-two>.card{margin-top:0}
#tpNew>div>:first-child{margin-top:0}   /* every tool starts the same distance below the picker */
.tl-out .in-tbl td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.tl-out .in-tbl td:last-child{text-align:right;min-width:0}
.tl-form .tl-area{grid-column:1/-1}
.tl-form textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 10px;font-family:var(--mono);font-size:12px;line-height:1.5;resize:vertical;min-height:96px}
.tl-form textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
#tp_capneeds .tl-tw[data-t],#tp_bizplan .tl-tw[data-t],#tp_inhira .tl-tw[data-t]{max-height:none}
#tp_capneeds .tl-tw[data-t] th:first-child,#tp_bizplan .tl-tw[data-t] th:first-child,#tp_inhira .tl-tw[data-t] th:first-child{width:auto;min-width:12em}

/* Between Jobs (version 434): what buys the most time, under the result */
.rw-steps{margin:6px 0 0;padding-left:20px}
.rw-steps li{margin:5px 0;font-size:13px;line-height:1.45}
/* One strip of tabs inside a tab (version 187): About, Capabilities and the Checklists' lists. It is the look About's
   own tabs have had since version 122, now under one name so a new strip takes it by adding the class; the spacing is
   Capabilities', which fits its nine tabs in one row on a wide screen. */
.subtabs{display:flex;flex-wrap:wrap;gap:5px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.subtabs [role=tab]{appearance:none;border:0;background:transparent;color:var(--ink2);font:inherit;font-size:13.5px;font-weight:700;padding:7px 10px;border-radius:8px;cursor:pointer}
.subtabs [role=tab]:hover{background:var(--surface2);color:var(--ink)}
.subtabs [role=tab][aria-selected=true]{background:var(--accent);color:var(--on-brand,#fff)}
.subtabs [role=tab]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* plans dialog */
.hbtn{margin-left:auto}
.pfdlg{width:min(640px,100%)}
.pfdlg h3{margin:18px 0 8px;font-size:15px;font-weight:800}
.pfdlg .pfrow{margin-top:14px}
.pfdlg input[type=text],.pfdlg textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px}
.pfdlg textarea{font-family:var(--mono);font-size:12px;resize:vertical;min-height:84px}
.pfdlg input[type=text]:focus,.pfdlg textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.pfbtns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.pffile{position:relative;overflow:hidden}
.pffile input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.pffile:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.pfitem{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:8px 0;border-top:1px solid var(--line2)}
.pfitem:first-child{border-top:0}
.pfitem b{display:block;font-size:14px;overflow-wrap:anywhere}
.pfitem small{color:var(--muted);font-size:12px}
.pfitem .pfa{display:flex;gap:6px;flex:none}
.pferr{color:var(--crit);font-weight:600}

/* client report dialog */
.rpdlg{width:min(680px,100%)}
.rpdlg h3{margin:16px 0 8px;font-size:15px;font-weight:800}
.rpdlg h3 .rp-s{font-size:12px;font-weight:500;color:var(--muted);margin-left:6px}
.rpdlg input[type=text],.rpdlg textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px}
.rpdlg textarea{resize:vertical;min-height:84px}
.rpdlg input[type=text]:focus,.rpdlg textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.rp-g{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.rp-row{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-top:12px}
.rp-sw{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.rp-sw button{width:30px;height:30px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;box-shadow:inset 0 0 0 2px var(--surface)}
.rp-sw button[aria-pressed="true"]{border-color:var(--ink)}
.rp-sw button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rp-logo{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:4px}
.rp-prev{width:64px;height:34px;border:1px dashed var(--line);border-radius:6px;background:#fff center/contain no-repeat;flex:none}
.rp-opts{display:grid;gap:8px;margin-top:12px}

/* 529 plans in Your Accounts (152-mod-s529.js, version 112) */
.s5box{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.s5h{font-size:15px;margin:0 0 10px;color:var(--ink)}
#s5Sum{margin:10px 0 0}
/* csv import dialog */
.imdlg{width:min(860px,100%)}
.imdlg textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 10px;font-family:var(--mono);font-size:12px;resize:vertical;min-height:100px}
.imdlg textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.imhdr{display:flex;align-items:center;gap:8px;font-size:13.5px;margin:6px 0 10px}
.imcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.imcols select,.imtw select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:7px;padding:5px 6px;font:inherit;font-size:13px;max-width:100%}
.imtw{max-height:300px;overflow:auto;border:1px solid var(--line2);border-radius:8px}
.imtw table{width:100%;min-width:640px;border-collapse:collapse;font-size:13px}
.imtw th,.imtw td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--line2);vertical-align:middle}
.imtw th{position:sticky;top:0;background:var(--surface);font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.imtw td.n{text-align:right;font-variant-numeric:tabular-nums}
.imtw tr.imskip td{color:var(--muted)}
.imtw tr.imneed td{background:var(--warn-bg,rgba(200,120,0,.12))}
.imtw .imnote{font-size:12px;color:var(--ink2)}
.immode{border:0;padding:0;margin:12px 0 4px;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13.5px}
.immode legend{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:0;margin-bottom:6px}
.immode label{display:flex;align-items:center;gap:6px}
.demos .btn+.btn{margin-left:8px}
/* "What moves the result most" card on the Insights tab */
#insSens .addrow{align-items:center}
.sn-sum{margin:14px 0 4px;font-size:14.5px;line-height:1.5;color:var(--ink)}
.sn-key{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:12px;color:var(--muted);margin:10px 0 2px}
.sn-key i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.sn-list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px}
.sn-row{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:4px 16px;align-items:center;padding:10px 0;border-top:1px solid var(--line2)}
.sn-row:first-child{border-top:0}
.sn-n{min-width:0}.sn-n b{display:block;font-size:14px}.sn-n span{display:block;font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.sn-bars{display:grid;grid-template-columns:minmax(0,1fr) 2px minmax(0,1fr);align-items:center;height:22px;min-width:0}
.sn-bars .l{display:flex;justify-content:flex-end}.sn-bars .r{display:flex;justify-content:flex-start}
.sn-bars .mid{height:100%;background:var(--muted);opacity:.6}
.sn-bars i{display:block;height:14px;min-width:2px;border-radius:3px}
.sn-bars .l i{background:var(--good);border-radius:3px 0 0 3px}.sn-bars .r i{background:var(--serious);border-radius:0 3px 3px 0}
.sn-v{grid-column:2;display:flex;flex-wrap:wrap;gap:2px 18px;font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.sn-v b{font-weight:700;color:var(--ink)}
.sn-none{color:var(--muted)}
.sn-foot{margin-top:10px}
#insSens.stale .sn-list,#insSens.stale .sn-sum,#insSens.stale .sn-key{opacity:.5}
.sn-stale{color:var(--warn);font-weight:700}

.sn-v .nw{white-space:nowrap}
/* the vertical timeline on the People tab */
.tlcard{margin-top:16px}
.tlv{overflow:hidden;position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 14px;margin-top:12px}
.tlv.lane{grid-template-columns:auto minmax(0,1fr) 172px}
.tlhh>header{padding:7px 10px;line-height:1.25;font-size:12px;font-weight:800;color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--line2)}
.tlax{position:relative;width:74px;flex:none}
.tlyr{position:absolute;right:8px;transform:translateY(-50%);text-align:right;white-space:nowrap;line-height:1.15}
.tlyr b{display:block;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.tlyr span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.tlrule{position:absolute;left:0;right:0;height:1px;background:var(--line2);opacity:.6;pointer-events:none}
.tlcols{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;position:relative;z-index:1}
.tlcols.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.tlcol{min-width:0;border:1px solid var(--line2);border-radius:12px;overflow:hidden;background:var(--surface)}
.tlcol>header{background:var(--pc);color:#fff;padding:7px 12px;line-height:1.25}
.tlcol>header b{display:block;font-size:14.5px;font-weight:800;overflow-wrap:anywhere}
.tlcol>header span{font-size:12px}
.tlbody{position:relative;padding:8px 0}
.tlwork{position:absolute;inset:0 0 auto 0;background:var(--line2);opacity:.45}
.tlgone{position:absolute;left:0;right:0;bottom:0;background:repeating-linear-gradient(135deg,var(--line2),var(--line2) 4px,transparent 4px,transparent 8px);opacity:.7}
.tlgut{position:absolute;top:0;bottom:0;right:7px;width:40px}
.tlbar{position:absolute;width:7px;border-radius:4px;opacity:.82}
.tlchips{list-style:none;margin:0;padding:0;position:absolute;left:8px;right:52px;top:0}
.tlc{position:absolute;left:0;right:0;display:flex;align-items:center;gap:6px;height:23px;padding:0 16px 0 7px;border-radius:5px;background:var(--surface2);border:1px solid var(--line2);border-left:3px solid var(--tc);
  clip-path:polygon(0 0,calc(100% - 9px) 0,100% 50%,calc(100% - 9px) 100%,0 100%)}
.tlc .tli{flex:none;width:14px;height:14px;color:var(--tc)}
.tlc .tli svg{width:14px;height:14px;display:block}
.tlc b{flex:1 1 auto;min-width:0;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tlc em{flex:none;font-style:normal;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.tlc-end{background:var(--crit-bg)}
.tlc-in{background:var(--good-bg)}
.tlc-hh{border-style:dashed;border-left-style:solid}
.tlshared{position:absolute;inset:0 0 auto 0;pointer-events:none;z-index:2}
.tlsh{position:absolute;left:0;right:6px;display:flex;align-items:center;justify-content:flex-end;gap:7px;transform:translateY(-50%);pointer-events:auto}
.tlsh::before{content:"";flex:1 1 auto;height:0;border-top:1.5px dashed var(--tc);opacity:.4}
.tlsh .tli{flex:none;width:14px;height:14px;color:var(--tc)}
.tlsh .tli svg{width:14px;height:14px;display:block}
.tlsh b{flex:0 1 auto;font-size:12px;font-weight:700;color:var(--tc);background:var(--surface);padding:1px 7px;border:1px solid var(--tc);border-radius:999px;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.tlsh em{flex:none;font-style:normal;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;background:var(--surface);padding:0 4px}
.tlswb{background:linear-gradient(90deg,var(--s2),var(--s3))}

/* how long you might live */
.lfcard{margin-top:16px}
.lf-tbl{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
.lf-tbl th,.lf-tbl td{padding:6px 8px;border-bottom:1px solid var(--line2);text-align:left}
.lf-tbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.lf-tbl .n{text-align:right;font-variant-numeric:tabular-nums}
.lf-tbl tbody th{font-weight:700}
.lf-tbl tbody th small{display:block;font-weight:500;font-size:12px;color:var(--muted)}
.lf-hh{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin-top:12px}
.lf-hh>div{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface2)}
.lf-hh b{display:block;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}
.lf-hh span{font-size:12.5px;color:var(--ink2)}
#lfChart{margin-top:6px}
/* Years Alone (167-mod-alone.js, version 111) and the ages under the years on How Long You Might Live */
.alcard{margin-top:16px}
.al-hh{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.lgrow i.sw{display:inline-block;width:11px;height:11px;border-radius:3px}
.al-chart{margin-top:6px}
.chart svg text.ax2{font-size:12px;opacity:.8}
/* the life spans' two views (version 444) */
#ppLifeCard[data-v=life] #ppAlone,#ppLifeCard[data-v=alone] #ppLife{display:none}
.pp-lseg{float:right;margin:0 0 8px 12px;position:relative;z-index:2}
html[data-mode="easy"] #ppLseg{display:none}
/* guidance and cash flow */
.gdset .gdrow{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;margin-top:12px;align-items:start}

.gdrisk .numbox{width:auto}
.gdrisk .numbox input{width:46px;text-align:right}
.gdrisk .solverow{margin-top:7px;flex-wrap:nowrap;align-items:flex-start}
.gdrisk .solverow .hint{flex:1 1 auto;min-width:0}
.gdrun{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.gdempty{color:var(--ink2)}
.gdempty p{margin:0}
.gdtop{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-softer)}
.gdtop.stale{border-color:var(--warn)}
.gdwarn{margin:12px 0 0;padding:10px 12px;border:1px solid var(--warn);border-radius:9px;background:var(--warn-bg);color:var(--warn);font-size:13px;line-height:1.5}
.gdstale{margin:0 0 10px;font-size:13px;color:var(--warn)}
.gdlist{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.gdlist li{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 10px;border:1px solid var(--line2);border-radius:9px;background:var(--surface2)}
.gdlist li>span{font-size:13px;color:var(--ink2);flex:1 1 160px}
.gdlist li>b{font-size:14px}
.gdlist li>i{font-style:normal;font-size:12px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink)}
.gdlist li.same>i{color:var(--muted)}
.gdnone{margin:12px 0 0;font-size:14px;color:var(--ink2)}
.gdstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:10px;margin-top:14px}


.gdstat{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;background:var(--surface2)}
.gdstat .k{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);line-height:1.35}
.gdstat .v{font-size:22px;font-weight:800;margin-top:5px;letter-spacing:-.02em}
.gdstat .s{font-size:12px;color:var(--muted);margin-top:2px}
.gdapply{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.gdapply .hint{margin:0}
.gdcard{margin-top:16px}
.gdhd{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.gdhd>div{flex:1 1 320px;min-width:0}
.gdhd .sub{margin:2px 0 0}
.gdkeep{font-size:12px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--good);border:1px solid var(--good);border-radius:999px;padding:4px 10px;white-space:nowrap}
.gdtbl{margin-top:12px;overflow-x:auto}
.gdmore{margin-top:10px}   /* Show All Pairs (version 429) */
.gdtbl table{min-width:min(700px,100%)}
.gdtbl tbody th{max-width:260px;white-space:normal}
.gdtbl table{width:100%;border-collapse:collapse}
.gdtbl th,.gdtbl td{padding:8px 9px;border-top:1px solid var(--line2);text-align:left;font-size:13.5px;vertical-align:top}
.gdtbl thead th{border-top:0;border-bottom:1px solid var(--line);font-size:11.5px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:700;white-space:nowrap}
.gdtbl td.n,.gdtbl th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.gdtbl tbody th{font-weight:600}
.gdtbl tbody tr.win{background:var(--accent-softer)}
.gdtbl tbody tr.win th,.gdtbl tbody tr.win td{border-top-color:var(--accent-soft)}
.gdnote{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}
.gdtag{display:inline-block;font-size:12px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:2px 7px;margin-left:6px;vertical-align:1px}
.gdtag.rec{background:var(--accent-ink);color:#fff}
.gdtag.now{background:var(--line2);color:var(--ink2)}
.gdtag.over{background:var(--crit-bg);color:var(--crit)}
.gddot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:0}
.gdna{color:var(--muted)}
.gdwhy{margin:12px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink2)}

/* cash flow */
.seg3{grid-template-columns:repeat(3,auto);flex:none}
.flowhd{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.flowhd .msg{margin:0}
.flowtbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.flowtbl th,.flowtbl td{padding:6px 9px;border-top:1px solid var(--line2);font-size:12.5px;white-space:nowrap}
.flowtbl td,.flowtbl th.n{text-align:right}
.flowtbl th[scope=row]{text-align:left;font-weight:600}
.flowtbl thead th{position:sticky;top:0;z-index:1;background:var(--surface);border-top:0;border-bottom:1px solid var(--line);font-size:11.5px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:right;vertical-align:bottom;padding-top:8px}
.flowtbl thead th:first-child,.flowtbl thead th:nth-child(2){text-align:left}
.flowtbl tbody tr:nth-child(even){background:var(--surface2)}
.flowtbl tbody tr.ret th[scope=row]{color:var(--accent-ink)}
.flowtbl .z{color:var(--muted)}
#flowTbl{max-height:min(66vh,760px);overflow:auto;border:1px solid var(--line2);border-radius:10px}

/* "nothing beat it" and "something beat it but not by enough" are different claims, so the second
   one does not get the settled grey that reads as a decided result */
.gdlist li.same>i.close{color:var(--warn)}
.flowtbl tbody tr.wk th[scope=row]{color:color-mix(in srgb,var(--mm-inc) 75%,var(--ink))}
.flowtbl tbody tr.ret th,.flowtbl tbody tr.ret td{border-top:2px solid var(--ink2)}
/* retiring abroad */
.abbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.abbar .hint{flex:1 0 100%;margin:0}
.abfile{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.abrow{border:1px solid var(--line);border-radius:12px;margin-top:8px;background:var(--surface);overflow:hidden}
.abrow.open{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.abhd{display:grid;grid-template-columns:minmax(0,1.7fr) repeat(3,minmax(0,1fr)) minmax(0,150px);gap:12px;align-items:center;width:100%;text-align:left;border:0;background:none;color:inherit;font:inherit;padding:12px 14px;cursor:pointer}
.abhd:hover{background:var(--surface2)}
.abname{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:15px;font-weight:800;letter-spacing:-.01em}
.abname small{font-weight:500;font-size:12px;color:var(--muted);line-height:1.3}
.abn{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:right}
.abn b{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.abn small{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);line-height:1.3}
.abp{display:flex;justify-content:flex-end}
.abdet{padding:0 14px 14px;border-top:1px solid var(--line2)}
.abwatch{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:var(--warn-bg);color:var(--ink);font-size:13.5px;line-height:1.5}
.abdl{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 18px;margin:12px 0 0}
.abdl div{min-width:0}
.abdl dt{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.abdl dd{margin:3px 0 0;font-size:13.5px;line-height:1.45}
.abnote{display:block;margin-top:4px;font-size:12.5px;color:var(--ink2);line-height:1.45}
.abact{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}
.abact .hint{margin:0}
/* Retiring Abroad, now one of the tools */
.tp-abroad>.card+.card{margin-top:16px}
.tp-abroad .ab-h3{margin:2px 0 4px;font-size:15px}
/* getting there */
.gtgoal .gtrow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:12px;align-items:start}

.gtf .lab{margin-bottom:5px}
.gtf .numbox input{width:8ch}
.gtf .hint{margin:6px 0 0}
.gtrun{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.gtempty{color:var(--ink2)}
.gtempty p{margin:0}
.gttop{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-softer)}
.gttop.good{border-color:var(--good)}
.gttop.bad{border-color:var(--crit)}
.gttop.stale{border-color:var(--warn)}
.gtstale{margin:0 0 10px;font-size:13px;color:var(--warn)}
.gtlead{margin:8px 0 0;font-size:15px;line-height:1.55}
.gtstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:10px;margin-top:14px}
.gtstat{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;background:var(--surface2)}
.gtstat .k{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);line-height:1.35}
.gtstat .v{font-size:22px;font-weight:800;margin-top:5px;letter-spacing:-.02em}
.gtstat .s{font-size:12px;color:var(--muted);margin-top:2px}
.gtapply{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.gtapply .hint{margin:0}
.gtcard{margin-top:16px}
.gttbl{margin-top:12px;overflow-x:auto}
.gttbl table{width:100%;border-collapse:collapse}
.gttbl th,.gttbl td{padding:9px 10px;border-top:1px solid var(--line2);text-align:left;font-size:13.5px;vertical-align:top}
.gttbl thead th{border-top:0;border-bottom:1px solid var(--line);font-size:11.5px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.gttbl td.n,.gttbl th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.gttbl tbody th{font-weight:600}
.gttbl tr.tot th,.gttbl tr.tot td{border-top:1.5px solid var(--line);font-weight:800}
.gtnote{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:2px}
.gtwhy{margin:12px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink2)}
/* ---------- where the household's income ranks ----------
   Five class colours after the reference picture, re-stepped so they pass the palette checks
   (lightness band, chroma, colour-blind and normal-vision separation of neighbours) on this page's
   own surfaces: the picture's orange beside yellow could not be told apart, so the bottom band is red,
   and its violet top band vanished next to blue on the dark surface, so the top band is magenta.
   Yellow and magenta sit under 3:1 on white, which is why every band is also labelled on the chart
   and listed in the table under it. */
:root{ --cls-poor:#e34948; --cls-work:#eda100; --cls-middle:#008300; --cls-upper:#2a78d6; --cls-owning:#e87ba4; }
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){ --cls-poor:#e34948; --cls-work:#c98500; --cls-middle:#008300; --cls-upper:#3987e5; --cls-owning:#d55181; }
}
:root[data-theme="dark"]{ --cls-poor:#e34948; --cls-work:#c98500; --cls-middle:#008300; --cls-upper:#3987e5; --cls-owning:#d55181; }

#hhCard .hh-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin:12px 0 4px}
#hhCard .hh-ctl label{font-size:13px;color:var(--ink2);display:flex;align-items:center;gap:8px}
#hhCard .hh-ctl input[type=range]{width:220px}
#hhCard .hh-ctl output{font-family:var(--mono);font-size:13px;color:var(--ink);min-width:3.2em}
.hh-svg{width:100%;height:auto;display:block;margin-top:10px;overflow:visible}
.hh-svg .grid{stroke:var(--line);stroke-width:1}
.hh-svg .ax{fill:var(--muted);font-size:12px;font-family:var(--mono)}
.hh-svg .bl{fill:var(--ink);font-size:12px;font-weight:700}
.hh-svg .bs{fill:var(--ink2);font-size:12px}
.hh-svg .th{fill:var(--ink2);font-size:12px;font-family:var(--mono)}
.hh-svg rect.b{transition:opacity .12s}
.hh-svg rect.b:hover{opacity:.72}
.hh-svg .poor{fill:var(--cls-poor)} .hh-svg .work{fill:var(--cls-work)} .hh-svg .middle{fill:var(--cls-middle)}
.hh-svg .upper{fill:var(--cls-upper)} .hh-svg .owning{fill:var(--cls-owning)}
.hh-svg .cut{stroke:var(--surface);stroke-width:3}
.hh-svg .you{stroke:var(--ink);stroke-width:2}
.hh-svg .youdot{fill:var(--ink);stroke:var(--surface);stroke-width:2}
.hh-svg .youbox{fill:var(--surface);stroke:var(--ink);stroke-width:1.2}
.hh-svg .youtx{fill:var(--ink);font-size:12px;font-weight:700}
.hh-svg .youtx2{fill:var(--ink2);font-size:12px}
.hh-leg{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12px;color:var(--ink2)}
.hh-leg span{display:inline-flex;align-items:center;gap:6px}
.hh-leg i{width:10px;height:10px;border-radius:2px;display:inline-block}
.hh-leg i.poor{background:var(--cls-poor)} .hh-leg i.work{background:var(--cls-work)} .hh-leg i.middle{background:var(--cls-middle)}
.hh-leg i.upper{background:var(--cls-upper)} .hh-leg i.owning{background:var(--cls-owning)}
#hhCard details{margin-top:12px} #hhCard summary{cursor:pointer;font-size:13px;color:var(--ink2)}
#hhCard .in-tbl td:first-child i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:7px;vertical-align:0}
#hhData textarea{width:100%;min-height:92px;font-family:var(--mono);font-size:12px;margin-top:6px;box-sizing:border-box}
#hhData .hh-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
#hhData .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
#hhData .hh-src{font-size:12.5px;color:var(--ink2);line-height:1.5}
#hhData code{font-family:var(--mono);font-size:12px}
/* The year timeline on the Overview tab and the Cash Flow tab (243-ytl.js): ages and phase, flags over a phase-coloured
   track, and an event log styled like a security console */
.ytl{position:relative;margin:4px 0 12px;
  --ytl-ret:var(--accent);--ytl-ss:var(--k-ss);--ytl-pension:var(--k-pen);--ytl-job:var(--k-job);--ytl-other:var(--k-oth);--ytl-ann:var(--k-pen);--ytl-rev:var(--k-home);
  --ytl-rmd:var(--g-pre);--ytl-med:var(--k-health);--ytl-debt:var(--k-d2);--ytl-death:var(--crit)}
.ytl .k-ret{--k:var(--ytl-ret)} .ytl .k-ss{--k:var(--ytl-ss)} .ytl .k-pension{--k:var(--ytl-pension)} .ytl .k-job{--k:var(--ytl-job)} .ytl .k-other{--k:var(--ytl-other)}
.ytl .k-ann{--k:var(--ytl-ann)} .ytl .k-rev{--k:var(--ytl-rev)} .ytl .k-rmd{--k:var(--ytl-rmd)} .ytl .k-med{--k:var(--ytl-med)} .ytl .k-debt{--k:var(--ytl-debt)} .ytl .k-death{--k:var(--ytl-death)}
/* who, which phase, which year */
.ytl-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 20px;margin-bottom:4px}
.ytl-ppl{display:flex;flex-wrap:wrap;gap:6px 18px}
.ytl-p{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink2)}
.ytl-p b{color:var(--ink);font-size:15px;font-variant-numeric:tabular-nums}
.ytl-p small{color:var(--muted)}
.ytl-av{width:24px;height:24px;font-size:12px}
.ytl-when{display:flex;align-items:center;gap:8px}
.ytl-ph{font-size:12px;font-family:var(--mono);letter-spacing:.03em;padding:3px 9px;border-radius:999px;background:color-mix(in srgb,var(--mm-ast) 12%,transparent);border:1px solid color-mix(in srgb,var(--mm-ast) 40%,transparent);color:var(--ink);margin-right:6px}
.ytl-ph.work{background:color-mix(in srgb,var(--mm-inc) 12%,transparent);border-color:color-mix(in srgb,var(--mm-inc) 40%,transparent)}
.ytl-y{font-family:var(--mono);font-size:20px;color:var(--ink);min-width:58px;text-align:center;font-variant-numeric:tabular-nums}
.ytl-when .ib{width:30px;height:30px}
/* the flags and the track */
.ytl-tl{position:relative;padding:34px 8px 0}
.ytl-mk{position:absolute;top:0;transform:translateX(-50%);display:block;border:0;background:none;padding:0;cursor:pointer;font:inherit}
.ytl-mk span{display:block;font-size:12px;line-height:1.1;color:var(--ink2);background:var(--surface2);border:1px solid var(--line);border-left:3px solid var(--k,var(--line));border-radius:4px;padding:2px 7px 2px 5px;white-space:nowrap}
.ytl-mk i{position:absolute;left:50%;top:calc(100% + 1px);width:1px;height:10px;background:var(--line);pointer-events:none}
.ytl-mk:hover span,.ytl-mk:focus-visible span,.ytl-mk.on span{border-color:var(--k,var(--accent));color:var(--ink);background:color-mix(in srgb,var(--k,var(--accent)) 12%,var(--surface))}
.ytl-trk{position:relative;height:18px}
.ytl-bar{position:absolute;left:0;right:0;top:6px;height:6px;border-radius:3px;background:var(--mm-ast)}
.ytl-work{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:3px 0 0 3px;background:var(--mm-inc)}
.ytl-trk.has-work .ytl-work{width:var(--w)}
.ytl-tk{position:absolute;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;transform:rotate(45deg);background:var(--k,var(--ink2));border:1.5px solid var(--surface);pointer-events:none}
.ytl-now{position:absolute;top:-6px;width:18px;height:18px;margin-left:-9px;border-radius:50%;background:var(--surface);border:3px solid var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.25);pointer-events:none;z-index:1}
.ytl-trk input[type=range]{position:absolute;left:-8px;right:-8px;top:-2px;width:calc(100% + 16px);height:22px;margin:0;opacity:0;cursor:pointer}
.ytl-trk:focus-within .ytl-now{outline:2px solid var(--accent);outline-offset:2px}
.ytl-ends{position:relative;display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:4px;min-height:14px}
.ytl-leg{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;color:var(--ink2)}
.ytl-leg>span{display:inline-flex;align-items:center;gap:5px}
.ytl-leg>span::before{content:"";width:10px;height:6px;border-radius:2px;background:var(--mm-ast)}
.ytl-leg>span.w::before{background:var(--mm-inc)}
.ytl-leg>span.m::before{width:6px;height:6px;border-radius:50%;background:var(--surface);border:2px solid var(--accent)}
/* the event log */
.ytl-log{margin-top:12px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;background:var(--surface2);font-family:var(--mono);font-size:12px;overflow:hidden}
.ytl-lh{display:flex;justify-content:space-between;gap:12px;padding:5px 10px;border-bottom:1px solid var(--line2);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ytl-lh span:first-child{display:inline-flex;align-items:center;gap:6px;color:var(--ink2)}
.ytl-lines{list-style:none;margin:0;padding:4px 0}
.ytl-ln{display:grid;grid-template-columns:44px 74px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:3px 10px;color:var(--ink2)}
.ytl-ln time{color:var(--muted);font-variant-numeric:tabular-nums}
.ytl-tag{justify-self:start;font-size:12px;letter-spacing:.05em;padding:1px 6px;border-radius:4px;color:color-mix(in srgb,var(--k,var(--muted)) 60%,var(--ink));background:color-mix(in srgb,var(--k,var(--muted)) 14%,transparent);border:1px solid color-mix(in srgb,var(--k,var(--muted)) 35%,transparent);white-space:nowrap}
.ytl-msg{font-family:var(--sans);font-size:12.5px;line-height:1.4;min-width:0}
.ytl-rel{color:var(--muted);font-size:12px;white-space:nowrap}
.ytl-ln.past .ytl-msg{color:var(--muted)}
.ytl-ln.now{background:var(--accent-softer);color:var(--ink)}
.ytl-ln.now time{color:var(--ink);font-weight:600}
.ytl-ln.now .ytl-msg::after{content:"";display:inline-block;width:7px;height:13px;margin-left:5px;vertical-align:-2px;background:var(--accent);animation:ytl-caret 1.1s steps(1) infinite}
.ytl-ln.now.quiet .ytl-msg{color:var(--ink2)}
@keyframes ytl-caret{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.ytl-ln.now .ytl-msg::after{animation:none}}
[data-motion="reduce"] .ytl-ln.now .ytl-msg::after{animation:none}
/* ---------- the Overview tab ----------
   Four quadrant colours, chosen so that every pair that shares an edge in the shield passes the
   palette checks in both themes. Assets (green) and Expenses (orange) sit on the diagonal, where
   they only meet at a point, because that pair cannot be told apart by a red-blind reader. */
:root{ --mm-inc:#2a78d6; --mm-ast:#008300; --mm-lia:#4a3aa7; --mm-exp:#eb6834; --sk-tax:#7d7a99; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --mm-inc:#3987e5; --mm-ast:#008300; --mm-lia:#9085e9; --mm-exp:#d95926; --sk-tax:#9a97b8; } }
:root[data-theme="dark"]{ --mm-inc:#3987e5; --mm-ast:#008300; --mm-lia:#9085e9; --mm-exp:#d95926; --sk-tax:#9a97b8; }
.q-inc{--q:var(--mm-inc)} .q-ast{--q:var(--mm-ast)} .q-lia{--q:var(--mm-lia)} .q-exp{--q:var(--mm-exp)}
.mm-card{position:relative;overflow:hidden;padding:18px 22px 14px}

/* the timeline */

/* the stage: items, category boxes, the shield, category boxes, items */
.mm-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 310px minmax(0,1fr);align-items:center;gap:0 40px;min-height:520px;padding:6px 0}
.mm-side{display:flex;flex-direction:column;gap:22px;position:relative;z-index:1}
.mm-half{display:flex;flex-direction:column;gap:12px}
.mm-half>h2{margin:0;font-size:12px;font-weight:700;line-height:1.5;letter-spacing:.08em;text-transform:uppercase;font-family:var(--mono);color:var(--q)}
.mm-side.R .mm-half>h2{text-align:right}
.mm-grp{display:grid;grid-template-columns:minmax(0,1fr) 128px;align-items:center;gap:34px}
.mm-side.R .mm-grp{grid-template-columns:128px minmax(0,1fr)}
.mm-items{display:flex;flex-direction:column;gap:5px;min-width:0}
.mm-item{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid color-mix(in srgb,var(--q) 45%,var(--line));background:color-mix(in srgb,var(--q) 7%,var(--surface));border-radius:8px;padding:5px 10px;font-size:12.5px;min-width:0}
.mm-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2)}
.mm-item b{font-family:var(--mono);font-weight:600;font-size:12px;color:var(--ink);white-space:nowrap}
.mm-item.zero{border-style:dashed}.mm-item.zero b{color:var(--ink2);font-weight:400}
.mm-cat{border:1.5px solid var(--q);background:color-mix(in srgb,var(--q) 13%,var(--surface));border-radius:10px;padding:8px 8px;text-align:center;cursor:pointer;font:inherit;color:var(--ink);width:100%}
.mm-cat small{display:block;font-size:12px;color:var(--ink2);line-height:1.2}
.mm-cat b{display:block;font-family:var(--mono);font-size:13px;margin-top:3px}
.mm-cat:hover,.mm-cat:focus-visible{background:color-mix(in srgb,var(--q) 22%,var(--surface))}
.mm-cat.zero{border-style:dashed}.mm-cat.zero b{color:var(--ink2)}
.mm-core{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}
.mm-core svg{width:310px;height:auto;display:block;overflow:visible}
.mm-core .qd{cursor:pointer;transition:filter .12s}
.mm-core .qd:hover,.mm-core .qd:focus-visible{filter:brightness(1.06) saturate(1.1);outline:none}
.mm-core .qd path{fill:color-mix(in srgb,var(--q) 20%,var(--surface));stroke:var(--q);stroke-width:2}
.mm-core .ql{fill:var(--ink);font-size:14px;font-weight:700}
.mm-core .qv{fill:var(--ink);font-size:17px;font-weight:700;font-family:var(--mono)}
.mm-core .gap{stroke:var(--surface);stroke-width:5}
.mm-core .rim{fill:none;stroke:var(--ink);stroke-width:2.2;opacity:.85}
.mm-core .hub{fill:var(--surface);stroke:var(--ink);stroke-width:1.6}
.mm-core .hk{fill:var(--muted);font-size:12px;font-family:var(--mono);letter-spacing:.06em}
.mm-core .hv{fill:var(--ink);font-size:14px;font-weight:700;font-family:var(--mono)}
.mm-core .lock{fill:none;stroke:var(--ink);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.mm-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}
.mm-wires path{fill:none;stroke-width:1.4;opacity:.55}
.mm-foot{text-align:center;margin-top:10px}

/* the drawer: quick edits without leaving the map */
.mm-drawer{position:absolute;top:0;right:0;bottom:0;width:430px;max-width:100%;background:var(--surface);border-left:2px solid var(--q,var(--line));box-shadow:-10px 0 28px rgba(0,0,0,.12);z-index:5;padding:18px 18px 16px;overflow-y:auto}
.mm-drawer h2{margin:0 0 4px;color:var(--ink)}
.mm-drawer .mm-dh{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.mm-drawer .mm-dl{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.mm-drawer .mm-dr{display:grid;gap:6px;align-items:center;padding:8px;border:1px solid var(--line2);border-radius:9px;background:var(--surface2)}
.mm-drawer .mm-dr input,.mm-drawer .mm-dr select{width:100%;box-sizing:border-box;min-width:0}
.mm-drawer .mm-dr label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;min-width:0}
.mm-drawer .mm-dr .numbox{width:100%;box-sizing:border-box}
.mm-drawer .mm-dr .numbox input{width:100%;min-width:0}
.mm-drawer .mm-dr>label>input{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:7px;padding:5px 8px;font-size:13.5px;font-family:var(--sans);text-transform:none;letter-spacing:0;height:30px}
.mm-drawer .mm-dr .numbox input{color:var(--ink);text-transform:none;letter-spacing:0}
.mm-drawer .mm-dr>label>input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.mm-drawer .mm-dr>label>input[readonly]{color:var(--muted);background:transparent}
.mm-drawer .mm-dr>label>input[inputmode]{font-family:var(--mono);text-align:right}
.mm-drawer .mm-dr .numbox{height:30px}
.mm-drawer .mm-dr{align-items:end}
.mm-drawer .addrow{margin-top:12px}
.mm-drawer .mm-dfoot{margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:10px}

/* ---------- the one-year flow on the Cash Flow tab ---------- */
.sk-yr{display:flex;align-items:center;gap:10px;margin:10px 0 6px}




.sk-say{margin:4px 0 8px;font-size:15px;line-height:1.55;color:var(--ink);max-width:880px;min-height:3em}
.sk-ch{width:100%}
.sk-ch svg{display:block;overflow:visible}
.sk .sk-l{opacity:.32;transition:opacity .12s}
.sk .sk-l:hover{opacity:.6}
.sk .sk-n{shape-rendering:crispEdges}

.sk .sk-t{fill:var(--ink);font-size:13px;font-weight:600}
.sk .sk-v{fill:var(--ink2);font-size:12px;font-family:var(--mono)}


/* ---------- the Cash Flow diagram: five columns, a year picker across the whole plan ---------- */
:root{ --cf-emp:#0f8f84; --cf-use:#4758c9; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --cf-emp:#2bb3a3; --cf-use:#7c8cf0; } }
:root[data-theme="dark"]{ --cf-emp:#2bb3a3; --cf-use:#7c8cf0; }
.sk2 .sk-l{opacity:.36;transition:opacity .12s}
.sk2 .sk-bands:hover .sk-l{opacity:.2}
.sk2 .sk-bands .sk-l:hover{opacity:.72}
.sk2.sk-focus .sk-l{opacity:.14}
.sk2.sk-focus .sk-l.on{opacity:.72}
.sk2 .sk-t,.sk2 .sk-v{paint-order:stroke;stroke:var(--surface);stroke-width:3.2px;stroke-linejoin:round}
.sk2 .sk-t{font-size:12px;font-weight:600;fill:var(--ink)}
.sk2 .sk-v{font-size:12.5px;font-weight:700;font-family:var(--sans);fill:var(--ink)}
.sk2 .sk-bg .sk-t{font-size:12.5px;fill:var(--ink2)}
.sk2 .sk-bg .sk-v{font-size:16px;font-weight:800}
.sk2 .sk-nd{cursor:default}
.sk-det{margin-top:10px}
.sk-det summary{cursor:pointer;font-size:13px;color:var(--accent-ink);font-weight:600}
.sk-tbl{border-collapse:collapse;font-size:13px;margin-top:8px;min-width:420px}
.sk-tbl th,.sk-tbl td{padding:4px 12px 4px 0;border-bottom:1px solid var(--line2);text-align:left}
.sk-tbl .n{text-align:right;font-variant-numeric:tabular-nums}
.sk-tbl th[scope=row]{font-weight:500}
/* ---------- Tools: Annuity Planning, the kinds explained ---------- */
.an-kinds .sub{max-width:900px}
.an-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-top:12px}
.an-k{display:flex;flex-direction:column;gap:6px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface2)}
.an-kh{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.an-kh h3{margin:0;font-size:15px;color:var(--ink)}
.an-tag{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--accent);border:1px solid var(--accent);border-radius:10px;padding:1px 7px;white-space:nowrap}
.an-what{margin:0;font-size:13.5px;color:var(--ink);line-height:1.45}
.an-k dl{margin:2px 0 4px;display:grid;grid-template-columns:minmax(0,1fr);gap:1px 0;font-size:12.5px;line-height:1.45}
.an-k dd+dt{margin-top:6px}
.an-k dt{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-top:2px}
.an-k dd{margin:0;color:var(--ink2)}
.an-src{display:block;margin-top:3px;font-size:12px;color:var(--muted)}
.an-src a{color:var(--accent)}
.an-k .btn{align-self:flex-start;margin-top:auto}
/* the kinds in three bands, best first, with their fees */
.an-tiers{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.an-tier{--tc:var(--good);--tb:var(--good-bg);display:flex;flex-direction:column;gap:10px;border-radius:14px;padding:12px;background:var(--tb);border:1px solid color-mix(in srgb,var(--tc) 30%,transparent)}
.an-tier.an-middle{--tc:var(--warn);--tb:var(--warn-bg)}
.an-tier.an-worst{--tc:var(--crit);--tb:var(--crit-bg)}
.an-tl{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:2px 4px}
.an-tl b{font-size:22px;font-weight:900;letter-spacing:.02em;text-transform:uppercase;color:var(--tc);line-height:1}
.an-tl p{flex:1 1 380px;margin:0;font-size:13px;line-height:1.45;color:var(--ink2)}
.an-rk{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--muted)}
.an-rk::before{content:"rank "}
.an-tl b{min-width:112px}
.an-tier .an-grid{margin-top:0;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.an-tier .an-k{background:var(--surface)}
.an-fee{display:flex;align-items:baseline;gap:8px;margin:0;padding:6px 8px;border-radius:8px;background:var(--surface2);font-size:12.5px;line-height:1.35}
.an-fee span{flex:none;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.an-fee b{color:var(--ink);font-weight:700}
.an-fh{margin:18px 0 2px;font-size:15px}
.an-ftw{margin-top:8px}
.an-ftbl{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed;min-width:760px}
.an-ftbl col.c1{width:23%}.an-ftbl col.c2{width:9%}.an-ftbl col.c3{width:28%}.an-ftbl col.c4{width:26%}.an-ftbl col.c5{width:14%}
.an-ftbl th,.an-ftbl td{text-align:left;vertical-align:top;white-space:normal;overflow-wrap:break-word;padding:7px 8px;border-bottom:1px solid var(--line2);line-height:1.4}
.an-ftbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.an-ftbl tbody th{font-weight:700;color:var(--ink)}
.an-ftbl tbody th small{display:block;font-family:var(--mono);font-weight:500;color:var(--muted);font-size:12px}
.an-pill{display:inline-block;padding:1px 8px;border-radius:999px;font-weight:700;font-size:12px;color:var(--tc);background:var(--tb);border:1px solid color-mix(in srgb,var(--tc) 35%,transparent)}
.an-ftbl tr.an-best{--tc:var(--good);--tb:var(--good-bg)}
.an-ftbl tr.an-middle{--tc:var(--warn);--tb:var(--warn-bg)}
.an-ftbl tr.an-worst{--tc:var(--crit);--tb:var(--crit-bg)}
.an-rnote{margin:10px 0 0}
/* the Health Plan Selector (232-mod-health.js, version 114) */
.hc-more{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--ink2);line-height:1.5}
.hc-more li{margin:4px 0}
.hc-more b{color:var(--ink)}
.hc-sum{font-size:13px;color:var(--ink2)}
.hc-warn{margin:8px 0 0;padding:8px 12px 8px 26px;border-radius:8px;background:var(--warn-bg);color:var(--warn);font-size:12.5px;line-height:1.45}
.hc-tbl{width:100%;border-collapse:collapse;font-size:13px}
.hc-tbl th,.hc-tbl td{text-align:right;padding:7px 10px;border-bottom:1px solid var(--line2);white-space:normal;vertical-align:top}
.hc-tbl th:first-child{text-align:left;font-weight:600;color:var(--ink2)}
.hc-tbl thead th{font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:13px;font-weight:700;color:var(--ink)}
.hc-tbl small{display:block;font-size:12px;font-weight:500;color:var(--muted)}
.hc-tbl tr.hc-y td,.hc-tbl tr.hc-y th{background:var(--surface2)}
.hc-tbl tr.hc-y td b{color:var(--good)}
.hc-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.hc-type{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface);font-size:13px;line-height:1.5;color:var(--ink2)}
.hc-type.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.hc-th{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hc-type h3{margin:0;font-size:15px;color:var(--ink)}
.hc-tag{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--accent-softer);color:var(--accent-ink)}
.hc-full{margin:2px 0 6px;font-size:12px;color:var(--muted)}
.hc-type p{margin:0 0 8px}
.hc-pc{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hc-pc b{color:var(--ink);font-size:12.5px}
.hc-pc ul{margin:4px 0 0;padding-left:16px}
.hc-pc li{margin:2px 0}
.hc-when{margin:8px 0 0 !important;padding-top:8px;border-top:1px dashed var(--line)}
.hc-when b{color:var(--ink)}
#tp_hc .tl-tw{max-height:none}
#tp_hc .tl-tw .hc-tbl th:first-child{width:auto;min-width:150px}
#tp_hc .tl-tw table.hc-tbl{min-width:0}
/* the Student Loan Optimizer (232-mod-sloan.js, version 117) */
#tp_sl .tl-tw{max-height:none}
#tp_sl .tl-tw table.sl-tbl{min-width:0;width:100%}
.sl-tbl th,.sl-tbl td{white-space:normal;vertical-align:top}
#tp_sl .tl-tw .sl-tbl th:first-child{width:auto;min-width:170px;text-align:left}
.sl-tbl small{display:block;font-size:12px;font-weight:500;color:var(--muted)}
.sl-tbl tr.hl td b{color:var(--good)}
@media (min-width:1280px){#tp_sl .tl-two{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}}
#tp_sl .sl-tbl th,#tp_sl .sl-tbl td{padding-left:6px;padding-right:6px}
/* the Risk Tolerance Questionnaire (232-mod-risk.js, version 118) */
#tp_rq .tl-tw,#tp_style .tl-tw,#tp_transition .tl-tw{max-height:none}
#tp_style .tl-tw table.rq-tbl{min-width:0;width:100%}
#tp_rq .tl-tw table.rq-tbl{min-width:0;width:100%}
.rq{margin-top:14px;display:grid;gap:14px}
.rq-set{border:1px solid var(--line);border-radius:12px;padding:10px 14px 12px;margin:0;min-width:0}
.rq-set legend{font-weight:800;font-size:14px;padding:0 6px;color:var(--ink)}
.rq-set>.hint{margin:0 0 6px}
.rq-q{padding:8px 0;border-top:1px dashed var(--line)}
.rq-q:first-of-type{border-top:0}
.rq-qt{margin:0 0 4px;font-weight:700;font-size:13.5px;color:var(--ink)}
.rq-a{display:flex;gap:8px;align-items:flex-start;padding:3px 4px;border-radius:7px;cursor:pointer;font-size:13.5px;line-height:1.35}
.rq-a:hover{background:var(--surface2)}
.rq-a input{margin:2px 0 0;flex:none;accent-color:var(--s1)}
.rq-a:has(input:checked){background:var(--surface2);font-weight:600}
.rq-sc{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.rq-sc>div{border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:2px 8px}
.rq-sc span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.rq-sc b{font-size:22px;color:var(--ink)}
.rq-sc i{grid-column:1/-1;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--s1) var(--v),var(--line) var(--v))}
.rq-sc small{grid-column:1/-1;color:var(--muted);font-size:12px}
.rq-tbl th,.rq-tbl td{white-space:normal;vertical-align:top}
#tp_rq .tl-tw .rq-tbl th:first-child,#tp_style .tl-tw .rq-tbl th:first-child,#tp_transition .tl-tw .rq-tbl th:first-child{width:auto;min-width:120px;text-align:left}
.rq-tbl small{color:var(--muted);font-size:12px}
.rq-tag{display:inline-block;margin-left:4px;padding:1px 6px;border-radius:999px;background:var(--s1);color:#fff;font-size:12px;font-weight:800;vertical-align:1px}
.rq-ans td:last-child{white-space:nowrap}
.rq-grp th{background:var(--surface2);font-weight:800;text-align:left}
#tp_rq .tl-tw tr.hl th,#tp_sl .tl-tw tr.hl th{background:var(--accent-softer)}
.rq-ans td{text-align:left}
.rq-ans th[scope=col]:nth-child(2){text-align:left}
@media (min-width:900px){#tp_rq .tl-out{position:sticky;top:72px}}
/* ---------- Tools: Medicare Premiums ---------- */
.md-kinds .sub{max-width:900px}
.md-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.md-k .an-src{margin-top:auto;padding-top:4px}
.md-cost b{font-weight:600;color:var(--ink2);font-size:12.5px}
.md-pc{display:grid;grid-template-columns:1fr;gap:6px}
.md-pc h4{margin:0 0 2px;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.md-pc ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px;font-size:12.5px;line-height:1.4;color:var(--ink2)}
.md-pc li{position:relative;padding-left:16px}
.md-pc li::before{content:"+";position:absolute;left:2px;top:0;font-weight:800;color:var(--good)}
.md-pc .md-con li::before{content:"−";color:var(--crit)}
.md-fit{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:8px}
.md-fit>div{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;padding:10px 12px;background:var(--surface2)}
.md-fit b{display:block;font-size:13px;color:var(--ink)}
.md-fit p{margin:4px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink2)}
.md-sw{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-2px}
.md-sww{width:3px;background:var(--ink);border-radius:1px}
.md-bars{display:flex;flex-direction:column;gap:10px;padding:6px 0 2px}
.md-row{display:grid;grid-template-columns:170px minmax(0,1fr) 120px;gap:12px;align-items:center}
.md-nm{font-size:13px;font-weight:600;color:var(--ink);line-height:1.25}
.md-nm small{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}
.md-trk{position:relative;display:flex;gap:2px;height:22px;align-items:stretch}
.md-seg{display:block;height:100%;min-width:2px}
.md-p{background:var(--s1);border-radius:4px 0 0 4px}
.md-o{background:var(--s3);border-radius:0 4px 4px 0}
.md-row:not(.on) .md-seg{opacity:.78}
.md-w{position:absolute;top:-4px;bottom:-4px;width:3px;margin-left:-1px;background:var(--ink);border-radius:1px;box-shadow:0 0 0 2px var(--surface)}
.md-w.md-inf{background:repeating-linear-gradient(180deg,var(--ink) 0 4px,transparent 4px 7px);box-shadow:none}
.md-v{display:flex;flex-direction:column;line-height:1.2}
.md-v b{font-size:14px;font-variant-numeric:tabular-nums;color:var(--ink)}
.md-v span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.md-ftbl{width:100%;border-collapse:collapse;font-size:12.5px}
.md-ftbl th,.md-ftbl td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line2);vertical-align:top;white-space:normal}
.md-ftbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.md-ftbl .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.md-ftbl a{color:var(--accent-ink)}
.md-csv{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
#tp_med .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.md-match{color:var(--ink);font-weight:600}
#tp_med [data-x]{max-height:none;overflow:visible}
#tp_med .tl-tw .md-ftbl td:first-child,#tp_med .tl-tw .md-ftbl th:first-child{width:auto}
#tp_med .md-ctbl td:first-child{white-space:nowrap}
#tp_med .md-ctbl{min-width:0;font-size:12.5px}
#tp_med .md-ctbl th,#tp_med .md-ctbl td{padding-left:6px;padding-right:6px}
/* ---------- Assumptions: the yearly figures ---------- */
.rf-card .sub{max-width:900px}
.rf-yr select{font:inherit;font-weight:700;border:1px solid var(--line);border-radius:7px;background:var(--surface2);color:var(--ink);padding:2px 6px}
.seg.rf-grp{display:flex;flex-wrap:wrap;margin:12px 0 10px;width:max-content;max-width:100%}
.seg.rf-grp button{padding:7px 12px}
.rf-tw{max-height:560px;overflow:auto;border:1px solid var(--line2);border-radius:9px}
.rf-tbl{width:100%;border-collapse:collapse;font-size:13px}
.rf-tbl th,.rf-tbl td{padding:5px 8px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle}
.rf-tbl thead th{position:sticky;top:0;background:var(--surface);z-index:1;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--muted);font-weight:600;white-space:nowrap}
.rf-tbl thead th small{display:block;font-size:11.5px;color:var(--accent);letter-spacing:.06em;text-transform:uppercase}
.rf-tbl tbody th{font-weight:600;color:var(--ink);min-width:260px}
.rf-tbl tbody th small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.rf-tbl .n{text-align:right;width:130px}
.rf-tbl td.rf-on{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.rf-tbl input{width:118px;box-sizing:border-box;text-align:right;font-family:var(--mono);font-size:13px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink);padding:4px 6px}
.rf-tbl input:hover{border-color:var(--line)}
.rf-tbl input:focus{outline:0;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 2px var(--accent-softer)}
.rf-use{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.04em;border-radius:9px;padding:1px 7px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.rf-use.rf-plan{border-color:var(--accent);color:var(--accent)}
.rf-use.rf-tools,.rf-use.rf-statements{border-color:var(--ink2);color:var(--ink2)}
.rf-del{border:0;background:none;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
.rf-del:hover{color:var(--crit)}
.rf-x{margin:10px 0 0}
.rf-fra{margin-top:14px;max-width:560px}
.rf-fra h3{margin:0 0 4px;font-size:15px}
.rf-paste{margin-top:8px}
.rf-paste summary{cursor:pointer;font-size:13px;color:var(--ink2)}
.rf-paste textarea{width:100%;min-height:70px;box-sizing:border-box;font-family:var(--mono);font-size:12.5px;margin-top:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--ink);padding:8px}
.rf-src{font-size:12px;color:var(--muted);margin:10px 0 0}
.rf-src a{color:var(--accent)}
#refCard .hh-btns{display:flex;flex-wrap:wrap;gap:8px}
#refCard .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
#viewParams > .rf-card{margin-top:18px}
/* the Accounts tab: State Tax and Deductions */
#acState .st-lab{display:flex;flex-direction:column;gap:5px;margin-top:10px}
#acState .st-lab .lab{margin:0}
#acState select,#acFill{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font:inherit;font-size:13.5px;max-width:100%}
#acState .st-row{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:flex-end}
#acState .numbox{display:flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:0 9px;height:36px;max-width:170px}
#acState .numbox input{border:0;background:transparent;color:var(--ink);font:inherit;font-size:13.5px;width:100%;min-width:0;text-align:right;outline:none}
#acState .numbox:focus-within{outline:2px solid var(--accent);outline-offset:1px}
#acState .st-rules,#acState .st-it{margin-top:8px}
#acState .st-rules td:first-child,#acState .st-it td:first-child{color:var(--ink2)}
#acState .st-it td:last-child{text-align:right;font-variant-numeric:tabular-nums}
#acState .st-file{margin-top:10px}
#acState .hh-btns{display:flex;flex-wrap:wrap;gap:8px}
#acState .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.pp-qss{display:flex;gap:8px;align-items:flex-start;margin-top:8px;font-size:12.5px;color:var(--ink2);line-height:1.4}
.pp-qss input{margin-top:2px;accent-color:var(--accent)}
#acFillF{margin-top:12px}#acFill{width:100%}
/* Roth conversions card (146-mod-conv.js) */
#acConv .cv-mode{grid-template-columns:repeat(3,1fr);margin-top:10px}
#acConv .field{margin-top:10px}
#cvTo{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font:inherit;font-size:13.5px;width:100%}
.cv-yrs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.cv-yrs input{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font:inherit;font-size:13.5px;min-width:0}
.cv-sum{margin:10px 0 6px;font-size:13.5px}
.cv-tbl{width:100%;border-collapse:collapse;font-size:13px;margin:4px 0 6px;table-layout:fixed}
.cv-tbl col,.cv-tbl th:first-child{width:52%}
.cv-tbl tbody th{font-weight:600;color:var(--ink2);white-space:normal;overflow-wrap:anywhere;line-height:1.3}
.cv-tbl th,.cv-tbl td{padding:5px 6px;border-bottom:1px solid var(--line2);text-align:left}
.cv-tbl td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cv-tbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:right}
.cv-tbl thead th:first-child{text-align:left}
.cv-tbl td.cv-good{color:var(--good);font-weight:700}
#acState .st-move{margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
#acState .st-move .more{margin-top:8px}
#acState .st-move-h{margin:6px 0 0}
/* the Financial Product Selector (232-mod-products.js, version 121) */
#tp_fp .tl-two{grid-template-columns:minmax(0,1fr)}
#tp_fp .tl-tw{max-height:none}
#tp_fp .tl-tw table.fp-tbl{min-width:0;width:100%}
.fp-sl{margin:0 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface2)}
.fp-sl label{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.fp-sl label span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.fp-sl output{font-size:22px;font-weight:800;color:var(--ink)}
.fp-sl input[type=range]{width:100%;margin:4px 0;accent-color:var(--s1)}
.fp-ticks{display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;color:var(--muted)}
.fp-legal{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;font-size:13px;line-height:1.45;color:var(--ink2)}
.fp-legal li{padding:7px 10px 7px 12px;border-radius:8px;border-left:4px solid var(--line);background:var(--surface2)}
.fp-legal li.y{border-left-color:var(--good)}
.fp-legal b{color:var(--ink)}
.fp-nm{font-size:12px;fill:var(--muted)}
.fp-row.on .fp-nm{fill:var(--ink);font-weight:700}
.fp-gate{font-size:12px;font-weight:700;fill:var(--ink)}
.fp-you{font-weight:700;fill:var(--ink)}
.fp-tbl th,.fp-tbl td{white-space:normal;vertical-align:top;text-align:left}
.fp-tbl tr.hl td b{color:var(--good)}
#tp_fp .tl-tw tr.hl th{background:var(--accent-softer)}
.fp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.fp-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface);font-size:13px;line-height:1.5;color:var(--ink2);opacity:.78}
.fp-card.on{opacity:1;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.fp-ch{display:flex;align-items:center;gap:6px 8px;flex-wrap:wrap}
.fp-ch h3{margin:0;font-size:15px;color:var(--ink);flex:1 1 100%}
.fp-st{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--surface2);color:var(--ink2)}
.fp-st.y{background:var(--good-bg);color:var(--good)}
.fp-lock{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--warn-bg);color:var(--warn)}
.fp-full{margin:4px 0 0;font-size:12px;color:var(--muted)}
.fp-rec,.fp-risk,.fp-view{margin:8px 0 0}
.fp-card .hc-pc{margin-top:8px}
.fp-rec b,.fp-risk b,.fp-view b{color:var(--ink)}
.fp-from{color:var(--muted)}
#tp_fp .tl-tw .fp-tbl th:first-child{width:auto;min-width:300px;text-align:left}
/* ---------- Statements: ratios, balance sheet, income statement ---------- */
.st-ratios{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}
.st-r{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-top:3px solid var(--line)}
.st-r.st-good{border-top-color:var(--good)}
.st-r.st-watch{border-top-color:var(--warn)}
.st-r h2{margin:0;font-size:14.5px}
.st-r .st-v{font-size:28px;font-weight:800;font-family:var(--mono);color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}
.st-r .st-v.sm{font-size:18px}
.st-calc{margin:0;display:flex;flex-direction:column;gap:2px}
.st-calc span{font-size:12px;font-family:var(--mono);letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
.st-calc code{font-size:12.5px;color:var(--ink2);white-space:normal;word-break:break-word}
.st-say{margin:0;font-size:13px;color:var(--ink);line-height:1.45}
.st-guide{margin:auto 0 0;font-size:12px;color:var(--muted);line-height:1.4}
.st-guide a{color:var(--accent)}
.st-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:start}
.st-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.st-tbl th,.st-tbl td{padding:5px 8px;text-align:left;border-bottom:1px solid var(--line2);vertical-align:middle}
.st-tbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--muted);text-transform:uppercase;font-weight:600}
.st-tbl .n{text-align:right;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}
.st-tbl td:last-child,.st-tbl th:last-child{width:34px}
.st-sec th{padding-top:14px;font-size:12px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border-bottom:2px solid var(--line)}
.st-cat th{font-weight:700;color:var(--ink)}
.st-cat td{font-weight:700}
.st-ln td:first-child{padding-left:22px;color:var(--ink2)}
.st-tot th,.st-tot td{font-weight:700;border-top:1.5px solid var(--line)}
.st-net th,.st-net td{font-weight:800;font-size:15px;border-top:2px solid var(--ink);border-bottom:0;padding-top:8px}
.st-tag{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:8px;padding:0 5px;margin-left:4px;vertical-align:1px}
.st-from{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
.st-own input{font:inherit;border:1px solid var(--line);border-radius:6px;background:var(--surface2);color:var(--ink);padding:3px 6px;box-sizing:border-box}
.st-own .st-nm{width:100%}
.st-own .st-v{width:110px;text-align:right;font-family:var(--mono)}
.st-own input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.st-add{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.st-add select{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:7px;background:var(--surface2);color:var(--ink);padding:5px 8px}
.st-sw{margin-left:auto}
.st-card .hh-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.st-card .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.st-room{margin-top:12px}
.st-foot{margin-top:12px}
/* Estate and Heirs (232-mod-estate.js, version 125) */
#tp_est .tl-two{grid-template-columns:minmax(0,1fr)}
@media (min-width:1280px){#tp_est .tl-two{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}
#tp_est .tl-tw{max-height:none}
#tp_est .tl-tw table.est-tbl{min-width:0;width:100%}
.est-tbl th,.est-tbl td{white-space:normal;vertical-align:top;text-align:left}
#tp_est .tl-tw .est-tbl th:first-child{width:auto;min-width:150px}
.est-list{margin:10px 0 0;padding-left:18px;font-size:13px;line-height:1.5;color:var(--ink2)}
.est-list li{margin:4px 0}
.est-l{font-size:12px;fill:var(--ink2)}
.est-v{font-size:12px;font-weight:700;fill:var(--ink)}
.est-v.in{fill:#fff}
/* ---------- Investments tab ---------- */
#ivTiles{grid-template-columns:repeat(5,minmax(0,1fr))}
.ivhd{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin:4px 0 8px}
.ivhd .lgrow{margin:0}
.ivhd .seg[hidden]{display:none}
#ivCh{position:relative}
.iv-a{opacity:.78;stroke:var(--surface);stroke-width:1}
.iv-ret{stroke:var(--ink2);stroke-width:1;stroke-dasharray:3 3}
.iv-rl{fill:var(--ink2)}
.ivtbl{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.ivtbl th,.ivtbl td{padding:6px 8px;border-top:1px solid var(--line2);text-align:left;vertical-align:top}
.ivtbl thead th{border-top:0;border-bottom:1px solid var(--line);font-size:11.5px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:500}
.ivtbl .n{text-align:right;white-space:nowrap}
.ivtbl th[scope=row]{font-weight:600}
.ivtbl tr.tot th,.ivtbl tr.tot td{border-top:2px solid var(--line);font-weight:700}
.ivtbl tr.grp th{background:var(--surface2);font-size:12px;font-weight:700;color:var(--ink2)}
.ivtbl tr.emp th[scope=row]{color:var(--cf-emp)}
.ivtbl .dt{vertical-align:-1px}
.ivk{display:block;font-size:12px;font-weight:400;color:var(--muted)}
.ivnote{font-size:13px;color:var(--ink2);margin:10px 0 0;line-height:1.5}
.ivbar{height:22px}
.ivbr{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.ivbr-r{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n v" "b b";gap:2px 10px;font-size:13px}
.ivbr-r.at{font-weight:700}
.ivbr-r.at .ivbr-v{font-size:15px}
.ivbr-n{grid-area:n;color:var(--ink2)}
.ivbr-r.at .ivbr-n{color:var(--ink)}
.ivbr-v{grid-area:v;font-variant-numeric:tabular-nums;font-weight:700}
.ivbr-b{grid-area:b;height:6px;background:var(--surface2);border-radius:3px;overflow:hidden}
.ivbr-b i{display:block;height:100%;border-radius:3px}

/* a card that opens another, where two were merged (version 444) */
.ptr-card p{margin:6px 0 10px;font-size:14px;line-height:1.55;color:var(--ink2)}
.ptr-card .ptr-b{display:flex;flex-wrap:wrap;gap:8px}
.in-go{margin-top:12px}
.in-when{margin:8px 0 0}
/* ---------- the spending budget on the Expenses tab: a grouped data list, totals, and a chart card ---------- */
:root{ --bud-must:var(--accent); --bud-like:color-mix(in srgb,var(--accent) 34%,var(--surface)); }
.bud-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px;margin:6px 0 4px}
.bud-tots{display:flex;flex-wrap:wrap;gap:10px 32px}
.bud-tots[hidden]{display:none}
.bud-tots>div{display:flex;flex-direction:column}
.bud-tots .k{font-size:12px;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bud-tots b{font-size:22px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.bud-tots .must b{color:var(--accent-ink)}
.bud-tots small{font-size:12.5px;color:var(--muted)}
.bud-st{margin:8px 0 14px;font-size:13.5px;color:var(--ink2);min-height:1em}
.bud-st:empty{margin:0}
.bud-st.on b{color:var(--good)}
.bud-st.warn{color:var(--warn);font-weight:600}
/* group headers between the rows */
.bud-gh{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 4px 6px 0;border-bottom:1px solid var(--line);margin-top:6px}
.bud-gh:first-child{margin-top:0}
.bud-gh.open{border-bottom:2px solid var(--accent);margin-bottom:8px}
.bud-tg{display:flex;align-items:center;gap:9px;border:0;background:none;cursor:pointer;padding:6px 4px;color:var(--ink);font-size:14.5px;font-weight:700;text-align:left;border-radius:6px}
.bud-tg svg{color:var(--mm-exp);flex:none}
.bud-tg .ir-chev{flex:none;transform:rotate(-45deg);transition:transform .15s}
.bud-gh.open .bud-tg .ir-chev{transform:rotate(45deg)}
.bud-gc{font-size:12px;font-weight:500;color:var(--muted)}
.bud-gt{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums}
.bud-gt b{font-size:14px}
.bud-gt small{font-size:12px;color:var(--muted)}
.bud-row{margin-left:14px}
.bud-k{display:inline-block;font-size:12px;font-weight:800;border-radius:999px;padding:2px 10px;border:1.5px solid var(--accent);color:var(--accent-ink)}
.bud-k.must{background:var(--accent);color:var(--on-brand)}
:root[data-theme="light"] .bud-k.must{color:#fff}
.bud-acts{align-items:center}
.bud-tpl{position:relative;display:inline-block}
.bud-menu{position:absolute;left:0;top:calc(100% + 6px);z-index:5;width:min(340px,80vw);background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;display:flex;flex-direction:column;gap:2px}
.bud-menu[hidden]{display:none}
.bud-menu button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:0;background:transparent;border-radius:8px;padding:8px 10px;cursor:pointer;color:var(--ink);font:inherit}
.bud-menu button:hover,.bud-menu button:focus-visible{background:var(--surface2)}
.bud-menu b{font-size:13.5px}
.bud-menu span{font-size:12px;color:var(--muted)}
.bud-msg{margin:10px 0 0;font-size:13px;color:var(--ink2)}
.bud-msg:empty{display:none}
/* the chart card */
.bud-bars{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.bud-r{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) 120px;align-items:center;gap:12px;font-size:13.5px}
.bud-rn{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:600}
.bud-rn svg{color:var(--mm-exp);flex:none}
.bud-rb{display:flex;height:12px;border-radius:4px;overflow:hidden;background:var(--surface2)}
.bud-rb i{display:block;height:100%}
.bud-rb .m,.bud-leg .m{background:var(--bud-must)}
.bud-rb .l,.bud-leg .l{background:var(--bud-like)}
.bud-rv{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.bud-rv small{font-weight:500;color:var(--muted);margin-left:8px;display:inline-block;min-width:32px}
.bud-leg{display:flex;gap:18px;margin-top:10px;font-size:12.5px;color:var(--ink2)}
.bud-leg span{display:inline-flex;align-items:center;gap:6px}
.bud-leg i{display:inline-block;width:12px;height:12px;border-radius:3px}
#budSrc a{color:var(--accent-ink)}
/* Goals by priority on the Plan tab (249-mod-goals.js, version 126) */
.gl-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.gl-tbl th,.gl-tbl td{white-space:normal;padding:8px 10px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle}
.gl-tbl thead th{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.gl-tbl tbody th{font-weight:700;color:var(--ink)}
.gl-tbl td:first-child{width:44px;color:var(--muted);font-variant-numeric:tabular-nums}
.gl-tbl td:last-child{min-width:230px;white-space:nowrap}
.gl-tbl td:nth-child(3){min-width:160px}
.gl-tbl select{font:inherit;font-size:13px;padding:4px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface2);color:var(--ink)}
.gl-base th{color:var(--ink2)}
.gl-off th,.gl-off td{color:var(--muted)}
.gl-bar{display:inline-block;width:130px;height:12px;border-radius:4px;background:var(--line2);overflow:hidden;vertical-align:middle;margin-left:6px}
.gl-bar i{display:block;height:100%;border-radius:4px}
.gl-tbl td b{display:inline-block;min-width:42px;font-variant-numeric:tabular-nums;color:var(--ink)}
.gl-na{color:var(--muted);font-size:12.5px}
/* the Checklists tab */
.ck-tabs{margin:16px 0}
.atiles#ckTiles{grid-template-columns:repeat(3,minmax(0,1fr))}   /* six tiles, two even rows, as the Insights tab has them (version 187) */
.ck-nx .v{font-size:16px;line-height:1.25;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ck-ctx{display:flex;flex-wrap:wrap;gap:10px 14px;margin:12px 0 4px}
.ck-ctx label{display:flex;flex-direction:column;min-width:170px}
.ck-ctx .lab{margin:0 0 5px}
.ck-ctx input,.ck-ctx select,.ui-num input{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font-size:13.5px;font-family:inherit;min-width:0}
.ck-ctx input:focus-visible,.ck-ctx select:focus-visible,.ui-num input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.ck-who{margin:12px 0 2px}
.ck-bar{height:6px;border-radius:999px;background:var(--line2);overflow:hidden;margin:14px 0 4px}
.ck-bar i{display:block;height:100%;background:var(--good);border-radius:999px;transition:width .25s}
.ck-grp{margin-top:16px}
.ck-gh{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 6px;font-size:14px;font-weight:800;padding-bottom:5px;border-bottom:1px solid var(--line2)}
.ck-gh small{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.03em}
.ck-old>summary{cursor:pointer;list-style:none}
.ck-old>summary::-webkit-details-marker{display:none}
.ck-old>summary .ck-gh span::after{content:" ▸";color:var(--muted);font-weight:600}
.ck-old[open]>summary .ck-gh span::after{content:" ▾"}
.ck-list{list-style:none;margin:0;padding:0}
.ck-it{display:flex;gap:10px;align-items:flex-start;padding:9px 8px;border-radius:8px;border-left:3px solid transparent}
.ck-it+.ck-it{border-top:1px solid var(--line2)}
.ck-it>input{flex:none;width:17px;height:17px;margin:2px 0 0;accent-color:var(--good);cursor:pointer}
.ck-body{flex:1 1 auto;min-width:0}
.ck-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px}
.ck-t{font-size:14px;font-weight:700;color:var(--ink);cursor:pointer}
.ck-due{display:inline-flex;align-items:baseline;gap:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.ck-kind{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:4px;border:1px solid var(--line)}
.ck-kind.kd{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 45%,transparent)}
.ck-kind.kf{color:var(--accent-ink)}
.ck-d{margin:3px 0 0;font-size:13px;color:var(--ink2);line-height:1.45;max-width:78ch}
.ck-src{margin:4px 0 0;font-size:12px;color:var(--muted)}
.ck-src>span{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;margin-right:4px}
.ck-src a{color:var(--accent-ink)}
.ck-late{border-left-color:var(--crit);background:var(--crit-bg)}
.ck-late .ck-when{color:var(--crit);font-weight:700}
.ck-soon{border-left-color:var(--warn)}
.ck-soon .ck-when{color:var(--warn);font-weight:700}
.ck-now .ck-when{color:var(--good);font-weight:600}
.ck-done .ck-t{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.ck-done .ck-d{color:var(--muted)}
.ck-flash{outline:2px solid var(--accent);outline-offset:-2px}
.ck-foot{margin:14px 0 0;font-size:12.5px}
.ck-next{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.ck-go{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;border:1px solid var(--line);border-left:3px solid var(--line);background:var(--surface2);border-radius:8px;padding:7px 10px;cursor:pointer;color:var(--ink);font:inherit}
.ck-go:hover{border-color:var(--accent)}
.ck-go b{font-size:13px}
.ck-go span{font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.ck-go small{font-size:12px;color:var(--muted)}
.ck-soon .ck-go{border-left-color:var(--warn)}
.ck-tbl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:10px 0;border-top:1px solid var(--line2)}
.ck-tbl>div:first-child{display:flex;flex-direction:column;min-width:0}
.ck-tbl b{font-size:13.5px}
.ck-tbl span{font-size:12px;color:var(--muted)}
.ck-tbl .hh-btns{margin:0}
#viewCheck .hh-btns{display:flex;flex-wrap:wrap;gap:8px}
#ckData .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
/* the unemployment estimate */
#uiCard{margin-top:16px}
#uiCard[hidden]{display:none}
.ui-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:18px;margin-top:12px;align-items:start}
.ui-qs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ui-q{display:flex;flex-direction:column;min-width:0}
.ui-q .lab{margin:0 0 5px}
.ui-hrs{margin-top:10px}
.ui-num{display:flex;align-items:center;gap:6px}
.ui-num i{font-style:normal;color:var(--muted);font-size:13px}
.ui-num input{flex:1 1 auto;width:100%;text-align:right;font-variant-numeric:tabular-nums}
.ui-in .hh-btns{margin-top:12px}
.ui-out{border:1px solid var(--line);border-radius:10px;background:var(--surface2);padding:14px}
.ui-big{display:grid;grid-template-columns:repeat(3,auto);justify-content:space-between;gap:10px}
.ui-big span{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.ui-big b{display:block;white-space:nowrap;font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:2px}
.ui-big.no b{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.ui-warn{margin:10px 0 0;font-size:13px;font-weight:700;color:var(--crit)}
.ui-chk{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px}
.ui-chk li{display:flex;gap:7px;align-items:baseline}
.ui-chk li>span:first-child{flex:none;font-weight:800;width:12px}
.ui-chk .ok>span:first-child{color:var(--good)}
.ui-chk .no>span:first-child{color:var(--crit)}
.ui-why{margin:10px 0 8px;font-size:12.5px;color:var(--ink2);line-height:1.45}
.ui-act{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:10px}
.ui-act .hint{margin:0}
.ui-empty{color:var(--ink2);font-size:13.5px}
.ui-empty p{margin:0}
/* a checklist tick on a People timeline chip */
.tlck{flex:none;display:inline-flex;align-items:center;gap:2px;height:18px;padding:0 3px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--muted);cursor:pointer;font:600 12px/1 var(--mono)}
.tlck svg{display:block}
.tlck .ckv{opacity:0}
.tlck.on{color:var(--good);border-color:color-mix(in srgb,var(--good) 50%,transparent)}
.tlck.on .ckv{opacity:1}
.tlck:hover,.tlck:focus-visible{border-color:var(--accent);color:var(--accent-ink)}
.tlsh .tlck{pointer-events:auto}
.tlckleg{display:inline-flex;align-items:center;gap:5px}
.tlckleg svg{color:var(--good)}

/* eight lists (version 180): four to a row, two on a phone */

/* Giving Strategies (232-mod-give.js, version 127) */
#tp_give .tl-two{grid-template-columns:minmax(0,1fr)}
#tp_give .tl-tw{max-height:none}
#tp_give .tl-tw table.gv-tbl{min-width:0;width:100%}
.gv-tbl th,.gv-tbl td{white-space:normal;vertical-align:top;text-align:left}
#tp_give .tl-tw .gv-tbl th:first-child{width:auto;min-width:220px}
.gv-tbl small{display:block;font-size:12px;font-weight:500;color:var(--muted)}
.gv-tbl tr.hl td b{color:var(--good)}
#tp_give .tl-tw tr.hl th{background:var(--accent-softer)}
.gv-l{font-size:12.5px;fill:var(--ink2)}
.gv-l.b{font-weight:800;fill:var(--ink)}
.gv-v{font-size:12.5px;font-weight:700;fill:var(--ink)}
/* Asset Location and Tax-Loss Harvesting (232-mod-location.js, version 128) */
#tp_loc .tl-tw{max-height:none}
#tp_loc .tl-tw table.loc-tbl,#tp_loc .tl-tw table.gv-tbl{min-width:0;width:100%}
.loc-tbl th,.loc-tbl td{white-space:normal;vertical-align:top}
#tp_loc .tl-tw .loc-tbl th:first-child{width:auto;min-width:120px;text-align:left}
.loc-sum th,.loc-sum td{border-top:2px solid var(--line);font-weight:700}
.loc-sum td b{color:var(--good)}
#tp_loc .tl-tw .gv-tbl th:first-child{width:auto;min-width:280px;text-align:left}
/* the Progress tab */
#viewProg .card{margin-top:16px}
#viewProg .hh-btns{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
#viewProg .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.kpi.pr-up .v{color:var(--good)}
.kpi.pr-dn .v{color:var(--crit)}
.pr-dt input,#prBankTo{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:32px;font:inherit;font-size:13px}
.pr-add{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink2)}
.pr-tw{margin-top:12px;overflow-x:auto}
.pr-tbl{border-collapse:collapse;font-size:12.5px;min-width:100%}
.pr-tbl th,.pr-tbl td{padding:3px 6px;border-bottom:1px solid var(--line2);text-align:left;white-space:nowrap}
.pr-tbl thead th{vertical-align:bottom;padding-bottom:6px}
.pr-tbl thead th.n{min-width:128px}
.pr-tbl thead input[type=date]{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:6px;padding:2px 6px;font:inherit;font-size:12px;height:28px}
.pr-tbl thead .pr-on input[type=date]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.pr-tbl .rf-del{margin-left:4px}
.pr-tbl tbody th{font-weight:500;color:var(--ink2)}
.pr-tbl td.n input{width:100%;min-width:104px;text-align:right;border:1px solid transparent;background:transparent;color:var(--ink);border-radius:6px;padding:4px 6px;font:inherit;font-variant-numeric:tabular-nums}
.pr-tbl td.n input:hover{border-color:var(--line)}
.pr-tbl td.n input:focus{border-color:var(--accent);background:var(--surface2);outline:none}
.pr-tbl .pr-sec th{padding-top:10px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}
.pr-tbl .pr-tot th,.pr-tbl .pr-tot td{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;padding-right:12px}
.pr-tbl .pr-tot th{text-align:left}
.pr-tbl .pr-nw th,.pr-tbl .pr-nw td{background:var(--accent-softer)}
.pr-files{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.pr-files b{font-size:13.5px}
.pr-files .pnote{margin:4px 0 0}
.pr-btbl{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
.pr-btbl th,.pr-btbl td{padding:6px 8px;border-bottom:1px solid var(--line2);text-align:left}
.pr-btbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.pr-btbl .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pr-btbl tbody th{font-weight:600}
.pr-btbl .pr-tot th,.pr-btbl .pr-tot td{font-weight:800;border-bottom:0}
.pr-over{color:var(--crit)}
.pr-under{color:var(--good)}
.pr-bars{width:36%;min-width:140px}
.pr-bars span{display:block;height:7px;border-radius:0 4px 4px 0;min-width:1px}
.pr-bars span+span{margin-top:2px}
.pr-b{background:var(--s5)}
.pr-a{background:var(--s1)}
.pr-a.over{background:var(--crit)}
.pr-key{display:inline-flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-family:var(--sans)}
.pr-key i{display:inline-block;width:12px;height:7px;border-radius:0 3px 3px 0}
.pr-mtw{margin-top:10px;overflow-x:auto}
.pr-mtbl{font-size:12.5px;min-width:100%}
.pr-mtbl th,.pr-mtbl td{padding:5px 7px;white-space:nowrap}
.pr-mtbl tbody th{font-weight:600}
#prMonSay{margin:2px 0 6px}
/* version 378: your category rules and Copy to the Budget */
.pr-rules{margin-top:10px}
.pr-rules summary{cursor:pointer;font-weight:600}
.pr-rl{margin:8px 0;padding-left:22px;display:flex;flex-direction:column;gap:6px}
.pr-rl li{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pr-tobud{margin-top:10px}
/* Tools: Insurance Needs. The step-by-step tables are label and amount: the label takes the room and wraps only when it
   must, the amount keeps to its own width (the tools' tables otherwise shrink the first column, which suits a year). */
#tp_ins .tl-tw table{min-width:0}
#tp_ins .tl-tw .in-tbl td:first-child{width:auto;white-space:normal;padding-right:16px}
#tp_ins .tl-tw .in-tbl td:last-child{width:1%}
/* the full-width card: keep the numbers next to their labels and the notes to a readable line */
#tp_ins [data-x] .in-tbl{max-width:640px}
#tp_ins [data-x] .hint{max-width:88ch}
#tp_ins .ins-bars .md-nm{white-space:normal}
/* The Debt Calculator on the Liabilities tab (206-mod-debt.js) */
#dbtCard h3{margin:22px 0 2px;font-size:14px;font-weight:800;letter-spacing:-.01em}
#dbtCard h3:first-of-type{margin-top:18px}
#dbtCard .sub{margin:2px 0 0}
.dbt-ctls{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 22px;margin-top:6px}
.dbt-ctls .field:first-child{border-top:1px solid var(--line2)}
.dbt-opt{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding:10px 0 2px;border-top:1px solid var(--line2)}
.dbt-seg{display:inline-flex;gap:3px;background:var(--surface2);border:1px solid var(--line);border-radius:9px;padding:3px;flex-wrap:wrap}
.dbt-seg button{border:0;background:transparent;color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;padding:5px 11px;border-radius:7px;cursor:pointer}
.dbt-seg button:hover{color:var(--ink)}
.dbt-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.10)}
.dbt-chk[hidden]{display:none}
.dbt-chk{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);cursor:pointer}
.dbt-chk input{margin:0}
.dbt-head{margin:12px 0 0;font-size:13.5px;line-height:1.5}
.dbt-head b{font-weight:800;color:var(--ink)}
.dbt-min + .dbt-min{border-top:1px solid var(--line2);margin-top:12px}   /* one block per card (version 136) */
.dbt-tiles{margin-top:14px}
.dbt-order{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.dbt-order li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.dbt-order li:first-child{border-color:var(--accent)}
.dbt-n{flex:none;width:22px;height:22px;border-radius:50%;background:var(--surface2);color:var(--muted);font-family:var(--mono);font-size:12px;display:grid;place-items:center}
.dbt-order li:first-child .dbt-n{background:var(--accent);color:#fff}
.dbt-i{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.dbt-i b{font-size:13px;font-weight:700}
.dbt-i span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.dbt-w{flex:none;font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}
.dbt-sc{overflow-x:auto;margin-top:8px}
.dbt-tbl th{text-align:left;padding:0 0 4px;border-bottom:1px solid var(--line)}
.dbt-tbl td:first-child,.dbt-tbl th:first-child{text-align:left;font-family:var(--sans);white-space:normal}
.dbt-tbl td+td,.dbt-tbl th+th{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:12px}
.dbt-tbl tr.on td{font-weight:700;color:var(--ink)}
.dbt-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:var(--good-bg);color:var(--good);font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;vertical-align:1px}
.dbt-act{margin-top:16px;padding-top:12px;border-top:1px solid var(--line2)}
#dbtMsg:empty{display:none}
@media (max-width:560px){
  .dbt-order li{flex-wrap:wrap}
  .dbt-w{width:100%;padding-left:32px}
}
/* Consolidate or Transfer? (version 137) */
.dbc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;margin-top:10px}
.dbc-f{border:1px solid var(--line);border-radius:10px;padding:8px 14px 12px;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;min-width:0}
.dbc-f legend{font-weight:800;font-size:14px;padding:0 6px}
.dbc-f .af{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2)}
.dbc-f .numbox input{width:100%;min-width:0;text-align:right}
@media (max-width:1179px){.dbc-grid{grid-template-columns:minmax(0,1fr)}}
/* Marketplace Coverage on the Accounts tab (version 104) */
#acAca .lab{margin-top:14px}
#acAca .seg{margin-top:6px}
#acAca .aca-seg{grid-template-columns:repeat(2,1fr)}
#acAca .demos{margin-top:8px}
/* Portfolio presets on the Plan Settings tab, and gold in the mix bars (version 106) */
.pp-list{margin-top:10px}
.pp-list button .pp-rec{display:block;margin-top:2px;font-family:var(--mono);font-size:12px;color:var(--muted)}
.mx-gold{background:var(--gold)!important;opacity:1!important}
/* a field the accounts set (Portfolio Today with the accounts on): a quieter, dashed box and a greyed slider (version 108) */
.field.locked .numbox{background:transparent;border-style:dashed;border-color:var(--line)}
.field.locked .numbox input:disabled{color:var(--muted);-webkit-text-fill-color:var(--muted);opacity:1;cursor:not-allowed}
.field.locked .numbox span{color:var(--muted)}
.field.locked input[type=range]:disabled{opacity:.45;filter:grayscale(1);cursor:not-allowed}
.field.locked .top-row label{color:var(--ink2)}
/* Guided setup: a panel docked on the right of the shell while it is open */
.shell.coach-on{grid-template-columns:218px minmax(0,1fr) 360px}
/* the data tabs' list and notes stack while the panel takes the room */
@media (max-width:1900px){.shell.coach-on .acols{grid-template-columns:minmax(0,1fr)}}
.coach{display:flex;flex-direction:column;position:sticky;top:calc(var(--hh,56px) + 12px);height:calc(100vh - var(--hh,56px) - 24px);min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;z-index:14;box-shadow:0 6px 24px rgba(35,21,87,.08)}
.coach[hidden]{display:none}
.ob-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 10px 8px 16px;background:var(--bar-bg);color:#fff}
.ob-kick{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.ob-kick::before{content:'> ';color:var(--cyan)}
.ob-hd .ib{color:#fff}
.ob-bar{height:3px;background:var(--line2)}
.ob-bar i{display:block;height:100%;width:0;background:var(--cyan);transition:width .25s}
.ob-body{flex:1 1 auto;overflow:auto;padding:14px 16px 10px}
.ob-body h2{margin:0 0 4px;font-size:18px;outline:0}
.ob-sub{margin:0 0 12px;color:var(--ink2);font-size:13px;line-height:1.45}
.ob-form{display:flex;flex-direction:column;gap:10px}
.ob-form .af select,.ob-form .ob-txt{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:7px;background:var(--surface2);color:var(--ink);padding:6px 8px;font-size:13.5px}
.ob-form .ob-txt:focus,.ob-form .af select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.ob-form .af .numbox input{text-align:right}
.ob-h{display:block;font-style:normal;font-size:12px;color:var(--muted);line-height:1.35;margin-top:1px}
.ob-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ob-p{border:1px solid var(--line2);border-radius:10px;padding:8px 12px 12px;margin:0;display:flex;flex-direction:column;gap:9px;min-width:0}
.ob-p legend{padding:0 4px;font-weight:700;font-size:13px;color:var(--ink)}
.ob-p[hidden],.ob-if[hidden]{display:none}
.ob-if{display:flex;flex-direction:column;gap:9px}
.ob-seg{display:grid;gap:6px}
.ob-opt{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;padding:8px 10px;cursor:pointer;background:var(--surface2)}
.ob-opt:has(input:checked){border-color:var(--accent);background:var(--accent-softer)}
.ob-opt input,.ob-chk input{margin:3px 0 0;accent-color:var(--accent);flex:none}
.ob-opt span,.ob-chk span{display:flex;flex-direction:column;gap:1px;font-size:13.5px}
.ob-opt small,.ob-chk small{color:var(--muted);font-size:12px;line-height:1.35}
.ob-p > .ob-seg{grid-template-columns:repeat(auto-fit,minmax(92px,1fr))}
.ob-p > .ob-seg .ob-opt{padding:7px 8px}
.ob-h[hidden]{display:none}
.ob-chk{display:flex;gap:9px;align-items:flex-start;cursor:pointer}
.ob-once{display:flex;flex-direction:column;gap:6px}
.ob-once + .ob-once{border-top:1px dashed var(--line2);padding-top:8px}
.ob-note{margin:4px 0 0;font-size:12.5px;color:var(--ink2);line-height:1.45}
.ob-err{margin:10px 0 0;color:var(--crit);font-size:13px;font-weight:600}
.ob-err:empty,.ob-ok:empty{display:none}
.ob-ok{margin:10px 0 0;color:var(--ink2);font-size:12.5px;border-left:3px solid var(--cyan);padding-left:8px}
.ob-ft{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 16px 12px;border-top:1px solid var(--line2)}
.ob-ft #obNext{margin-left:auto}
.ob-skip,.ob-undo{font-size:12.5px;font-weight:600}
.ob-undo{flex-basis:100%;text-align:left;color:var(--muted)}
.ob-sum{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ob-sum li{display:flex;gap:10px;justify-content:space-between;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--line2)}
.ob-sum li div{display:flex;flex-direction:column;gap:1px;min-width:0}
.ob-sum b{font-size:13px}
.ob-sum span{font-size:12.5px;color:var(--ink2);line-height:1.4}
.ob-sum .linkbtn{font-size:12.5px;flex:none}
.ob-res{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0 4px;padding:10px 12px;border-radius:10px;background:var(--bar-bg);color:#fff}
.ob-res span{font-size:13px}
.ob-res b{font-family:var(--mono);font-size:20px;color:var(--cyan)}
/* what a step just filled, pointed out on its tab */
.ob-hl{animation:obhl 2.4s ease-out 1;border-radius:12px}
@keyframes obhl{0%,55%{box-shadow:0 0 0 3px var(--cyan),0 0 0 9px var(--accent-softer)}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion:reduce){.ob-hl{animation:none;outline:3px solid var(--cyan);outline-offset:3px}}
#obBtn[aria-expanded="true"]{border-color:var(--cyan);color:var(--cyan)}
.hbtn + .hbtn{margin-left:8px}

/* the debt step's list (version 138) */
.ob-three{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:8px}
.ob-dadd{align-self:flex-start}
@media (max-width:420px){.ob-three{grid-template-columns:1fr 1fr}}
/* a jump to a section (the setups, links to a card) lands below the sticky top bar, not under it (version 175) */
html{scroll-padding-top:calc(var(--hh,56px) + 12px)}
/* Reports tab: meeting packs, client reports in groups, and the planner's papers */
.rpt-sec > h2{margin:0;font-size:18px}
.rpt-sec > .sub{margin:2px 0 10px}
.rpt-packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.rpt-grps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;align-items:start}
.rpt-pack,.rpt-grp{display:flex;flex-direction:column;min-width:0}
.rpt-pack h3,.rpt-grp h3{margin:0 0 2px;font-size:15px}
.rpt-pack .sub{margin:0 0 10px}
.rpt-parts{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 12px;margin-bottom:12px}
.rpt-part{display:flex;gap:7px;align-items:center;font-size:13px;color:var(--ink2);cursor:pointer;padding:2px 0}
.rpt-part input{margin:0;accent-color:var(--accent);flex:none}
.rpt-go{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:auto}
.rpt-it{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line2)}
.rpt-grp h3 + .rpt-it{border-top:0;padding-top:6px}
.rpt-pl .rpt-it:first-child{border-top:0;padding-top:0}
.rpt-pl .rpt-it:last-child{padding-bottom:0}
.rpt-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.rpt-tx b{font-size:13.5px;color:var(--ink)}
.rpt-tx span{font-size:12.5px;color:var(--ink2);line-height:1.4;max-width:70ch}
.rpt-it .btn{flex:none;min-width:58px}
.rpt-msg{display:block;font-style:normal;font-size:12px;color:var(--muted);line-height:1.35}
.rpt-msg:empty{display:none}
.rpt-msg.pferr{color:var(--crit);font-weight:600}
.rpt-pl{border-left:3px solid var(--cyan)}
.rpt-set{display:flex;flex-direction:column;gap:10px}
.rpt-set h2{margin:0}
.rpt-set .sub{margin:0}
.rpt-set h3{margin:6px 0 0;font-size:14px}
.rpt-set input[type=text],.rpt-set textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font:inherit;font-size:13.5px}
.rpt-set textarea{resize:vertical;min-height:84px}
.rpt-set input[type=text]:focus,.rpt-set textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.rpt-nodl{margin:0 0 12px}
/* Current vs Proposed: the two pickers (252-mod-cvp.js) */
.rpt-cvps{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin-top:6px}
.rpt-cvps select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:7px;padding:5px 8px;font:inherit;font-size:13px;min-width:0;width:100%}
.rpt-cvpno{display:block;margin-top:4px;font-size:12.5px;color:var(--muted)}
/* About: the planner's name, its designer, the version and date, what it does and the disclaimer */
.about-hero{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.about-mark{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;background:var(--bar-bg);color:var(--cyan);flex:none}
.about-id{display:flex;flex-direction:column;gap:4px;min-width:0}
.about-id h2{font-size:22px}
.about-by{margin:0;font-size:14.5px;color:var(--ink2)}
.about-by b{color:var(--ink)}
.about-meta{display:flex;flex-wrap:wrap;gap:8px 28px;margin:8px 0 0}
.about-meta div{display:flex;flex-direction:column;gap:1px}
.about-meta dt{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.about-meta dd{margin:0;font-family:var(--mono);font-size:15px;font-weight:700;color:var(--ink)}
.about-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;align-items:start}
.about-p{margin:8px 0 10px;font-size:13.5px;line-height:1.55;color:var(--ink2);max-width:80ch}
.about-p b{color:var(--ink)}
/* the designer: a monogram beside the story */
.about-me{display:flex;gap:18px;align-items:flex-start}
.about-av{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;flex:none;background:var(--bar-bg);color:var(--cyan);font-family:var(--mono);font-size:20px;font-weight:700;letter-spacing:.04em}
.about-me-tx{min-width:0;flex:1 1 auto}
.about-role{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:6px 0 4px;font-size:13px;color:var(--muted)}
.about-role b{font-size:14.5px;color:var(--ink)}
.about-role span{position:relative;padding-left:14px}
.about-role span::before{content:'';position:absolute;left:0;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:var(--cyan)}
.about-me .about-p{max-width:90ch}
.about-sec{border-left:3px solid var(--crit)}
@media (max-width:640px){.about-me{flex-direction:column}}

/* the About tab's own tabs (version 122) */
.about-disc{margin:14px 0 0;padding:10px 14px;border-radius:10px;background:var(--warn-bg);color:var(--ink2);font-size:13.5px;line-height:1.45}
.about-disc a{color:var(--accent-ink);font-weight:700}
.about-tabs{margin:16px 0 0}   /* the strip itself is .subtabs (019-subtabs.css, version 187) */
.about-panel>.card{margin-top:16px}
.about-links{margin:6px 0 10px;display:flex;flex-wrap:wrap;gap:8px}
.about-links a{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13.5px;color:var(--accent-ink);text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:4px 12px}
.about-links a:hover{background:var(--surface2)}
.about-docs{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:10px;max-width:80ch}
.about-docs li{display:grid;gap:2px;font-size:13.5px;line-height:1.5}
.about-docs a{font-weight:600;width:max-content;max-width:100%}
.about-docs span{color:var(--ink2)}
/* "How Wrong Can It Be?" on the About tab (249-mod-acc.js) */
#accCard h3{margin:20px 0 2px;font-size:14px;font-weight:800;letter-spacing:-.01em}
#accCard.stale #accOut{opacity:.55}
.acc-head{margin:14px 0 0;font-size:13.5px;line-height:1.55}
.acc-head b{font-weight:800;color:var(--ink)}
.acc-sc{overflow-x:auto;margin-top:10px}
.acc-tbl{font-size:12.5px}
.acc-tbl th{text-align:left;padding:0 0 5px;border-bottom:1px solid var(--line)}
.acc-tbl th+th,.acc-tbl td+td{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:14px}
.acc-tbl td:first-child,.acc-tbl th:first-child{text-align:left;font-family:var(--sans);white-space:normal;min-width:210px}
.acc-tbl td:first-child b{display:block;font-weight:700}
.acc-tbl td:first-child span{display:block;font-size:12px;color:var(--muted);line-height:1.35}
.acc-tbl tr.acc-h td{padding-top:16px;border-bottom:1px solid var(--line)}
.acc-tbl tr.acc-h b{font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-family:var(--mono);color:var(--q);font-weight:500}
.acc-tbl tr.acc-h span{margin-top:2px;max-width:70ch}
.acc-d{min-width:118px}
.acc-bar{display:inline-block;width:46px;height:6px;border-radius:3px;background:var(--line2);margin-right:8px;vertical-align:1px;overflow:hidden}
.acc-bar i{display:block;height:100%;border-radius:3px}
.acc-bar i.up{background:var(--crit)}
.acc-bar i.dn{background:var(--good)}
.acc-fixed{margin-top:22px;padding-top:6px;border-top:1px solid var(--line2)}
.acc-list{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.acc-list li{font-size:12.5px;line-height:1.5;color:var(--muted);padding-left:16px;position:relative}
.acc-list li::before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:var(--good)}
.acc-list b{color:var(--ink);font-weight:700}
.acc-ord{display:block;margin-top:8px;font-size:12.5px;color:var(--muted)}
/* Settings: the small choices in a grid, then the disclaimer switch and the data kept in this browser */
.set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;align-items:stretch}
@media (min-width:1200px){.set-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.set-card{display:flex;flex-direction:column}
.set-card .sub{margin-bottom:12px}
.seg.set-seg{display:inline-grid;grid-template-columns:auto auto;align-self:flex-start}
.seg.set-seg.s3{grid-template-columns:auto auto auto}
.seg.set-seg button{padding:7px 14px;white-space:nowrap}
.set-now{margin:8px 0 0}
.set-st{margin:10px 0 6px;font-size:13px;color:var(--ink2)}
.set-st:empty{display:none}
.set-st.off{border-left:3px solid var(--crit);padding-left:8px;color:var(--ink)}
.set-tw{margin-top:4px}
.set-tbl{width:100%;max-width:640px;border-collapse:collapse;font-size:13px}
.set-tbl th,.set-tbl td{text-align:left;padding:6px 10px 6px 0;border-bottom:1px solid var(--line2)}
.set-tbl th{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.set-tbl td:last-child,.set-tbl th:last-child{text-align:right;padding-right:0;width:1%;white-space:nowrap;font-family:var(--mono)}
.set-tbl tfoot td{font-weight:700;border-bottom:0}
.set-acts{margin-top:12px}
/* the confirmation asked before a step that cannot be taken back, or before the disclaimer goes */
.cfdlg{width:min(480px,100%)}
.cf-body p{margin:0 0 10px;font-size:14px;line-height:1.5;color:var(--ink2)}
.cf-body b{color:var(--ink)}
.cf-btns{margin-top:16px}
.btn.solid.cf-danger{background:var(--crit);border-color:var(--crit);color:var(--bg)}
/* Actual Data: how the tables work, a summary of every table, then one card per table */
.dt-how3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:10px}
.dt-how3 .pnote{margin:0}
.dt-tw{margin-top:14px}
.dt-sum{width:100%;border-collapse:collapse;font-size:13px}
.dt-sum th,.dt-sum td{white-space:normal;text-align:left;padding:7px 12px 7px 0;border-bottom:1px solid var(--line2);vertical-align:top}
.dt-sum thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}
.dt-sum td.n{font-family:var(--mono);white-space:nowrap}
.dt-sum tbody tr:last-child td,.dt-sum tbody tr:last-child th{border-bottom:0}
.dt-sum .linkbtn{font-weight:700}
.dt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.dt-card{display:flex;flex-direction:column;scroll-margin-top:16px}
.dt-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.dt-top h2{margin:0}
.dt-pill{flex:none;font-family:var(--mono);font-size:12px;letter-spacing:.04em;border-radius:10px;padding:2px 8px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.dt-pill.dt-mine{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-softer)}
.dt-card .sub{margin:6px 0 0}
.dt-where{margin:8px 0 0;font-size:13px;color:var(--ink2);line-height:1.45}
.dt-stat{margin:10px 0 0;font-size:13px;color:var(--ink2);line-height:1.5}
.dt-stat b{color:var(--ink)}
.dt-use{display:inline-grid;grid-template-columns:auto auto;align-self:flex-start;margin-top:12px}
.dt-use button{padding:7px 14px;white-space:nowrap}
.dt-use button:disabled{opacity:.45;cursor:not-allowed}
.dt-card .hh-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.dt-card .hh-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.dt-card label.btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.dt-msg{margin:8px 0 0}
.dt-msg:empty{display:none}
.dt-msg.bad{color:var(--crit)}
.dt-ed{margin-top:12px}
.dt-ed textarea{width:100%;min-height:220px;font-family:var(--mono);font-size:12px;line-height:1.45;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);resize:vertical;white-space:pre;overflow-wrap:normal;overflow-x:auto}
.dt-ed .hh-btns{margin-top:8px}
.dt-fmt{margin-top:12px;border-top:1px solid var(--line2);padding-top:10px}
.dt-fmt summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--ink2)}
.dt-cols{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:8px;table-layout:fixed}
.dt-cols th,.dt-cols td{text-align:left;padding:5px 10px 5px 0;border-bottom:1px solid var(--line2);vertical-align:top;white-space:normal;overflow-wrap:anywhere}
.dt-cols th{width:38%;font-family:var(--mono);font-weight:600;color:var(--ink)}
.dt-cols td{color:var(--ink2)}
.dt-ex{margin:8px 0 0;font-family:var(--mono);font-size:12px;line-height:1.5;background:var(--surface2);border-radius:8px;padding:8px 10px;overflow-x:auto;white-space:pre;color:var(--ink2)}
.dt-rule{margin:8px 0 0}
#viewData #refCard,#viewData #hhData{margin-top:16px}
#pDataLink .btn{margin-top:10px}
@media (max-width:1100px){.dt-grid{grid-template-columns:minmax(0,1fr)}.dt-how3{grid-template-columns:minmax(0,1fr);gap:8px}}
/* College per child (version 99): the average-budget chips on an education row, a child's college line and actions on
   the People tab, and the Student Aid Index tool's bars */
.xr-cb{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 2px}
.xr-cb .hint{margin:0 4px 0 0}
.dep-col{margin-top:10px}
.dep-acts{margin:6px 0 2px}
.dep-acts[hidden]{display:none}
.dep-msg:empty{display:none}
#tp_sai .sai-bars .md-nm{white-space:normal}
/* Capabilities (248-mod-caps.js, 147-caps.html, version 113) */
.cap-tiles{margin-bottom:16px}
.cap-tiles .kpi .s{font-size:12.5px;color:var(--ink2);margin-top:4px;line-height:1.45}
.cap-tiles .cap-free{border-color:var(--good);background:var(--good-bg)}
.cap-tiles .cap-free .v{color:var(--good)}
.cap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:12px}
.cap-g{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--surface2)}
.cap-g h3{margin:0 0 6px;font-size:14.5px;color:var(--ink)}
.cap-g p{margin:0;font-size:13px;line-height:1.55;color:var(--ink2)}
.cap-tbl{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.cap-tbl th,.cap-tbl td{text-align:left;vertical-align:top;padding:9px 10px;border-bottom:1px solid var(--line2);line-height:1.5;white-space:normal;overflow-wrap:break-word}
.cap-tbl thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}
.cap-tbl tbody th{color:var(--ink);font-weight:700}
.cap-tbl td{color:var(--ink2)}
.cap-pro th:nth-child(1){width:17%}.cap-pro th:nth-child(2){width:41%}
.cap-cmp th:nth-child(1){width:19%}.cap-cmp th:nth-child(2){width:14%}.cap-cmp th:nth-child(3){width:24%}
.cap-cmp tr.cap-me th,.cap-cmp tr.cap-me td{background:var(--good-bg)}
.cap-cmp tr.cap-me td b{color:var(--good)}
.cap-h3{margin:18px 0 4px;font-size:15px;color:var(--ink)}
.cap-chart{position:relative;margin-top:8px}
.cap-chart svg text.cap-n{font-size:12.5px;fill:var(--ink2)}
.cap-chart svg text.cap-n.me,.cap-chart svg text.cap-v.me{font-weight:800;fill:var(--ink)}
.cap-chart svg text.cap-v{font-size:12px;fill:var(--ink2);font-variant-numeric:tabular-nums}
.cap-chart svg text.cap-v.na{fill:var(--muted);font-style:italic}
.cap-note{border-style:dashed}
.cap-src a{color:var(--accent-ink)}
.cap-two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
/* the Capabilities tab's own tabs and the feature matrix (version 129) */
.cap-noteline{margin:0 0 14px;padding:10px 14px;border-radius:10px;background:var(--warn-bg);color:var(--ink2);font-size:13.5px;line-height:1.45}
.cap-noteline a{color:var(--accent-ink);font-weight:700}
.cap-panel>.card{margin-top:16px}
.mx-tw{margin-top:10px;overflow-x:auto}
.mx-tbl{border-collapse:separate;border-spacing:0;font-size:13px;min-width:100%}
.mx-tbl th,.mx-tbl td{padding:7px 3px;border-bottom:1px solid var(--line2);text-align:center;white-space:nowrap}
.mx-tbl thead th{vertical-align:bottom;font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:12px;font-weight:700;color:var(--ink2);background:var(--surface2);border-bottom:2px solid var(--line)}
.mx-tbl thead th span{display:inline-block;white-space:normal;max-width:64px;line-height:1.2}
.mx-tbl .mx-sw{text-align:left;position:sticky;left:0;background:var(--surface);z-index:1;min-width:128px}
.mx-tbl thead .mx-sw{background:var(--surface2)}
.mx-tbl tbody .mx-sw{font-weight:700;color:var(--ink);white-space:normal}
.mx-tbl .mx-sw small{display:block;font-weight:500;font-size:12px;color:var(--muted)}
.mx-tbl tr.mx-me th,.mx-tbl tr.mx-me td{background:var(--good-bg)}
.mx-tbl td{font-size:17px;font-weight:900;line-height:1}
.mx-y,.mx-tbl td.mx-y{color:var(--good)}
.mx-p,.mx-tbl td.mx-p{color:var(--warn)}
.mx-n,.mx-tbl td.mx-n{color:var(--crit)}
.mx-u,.mx-tbl td.mx-u{color:var(--muted)}
.mx-tbl sup{font-size:9px;font-weight:700;margin-left:1px}
.mx-tbl sup.mx-s{color:var(--muted);font-weight:500;font-size:8.5px}
.mx-tbl td.mx-sc{font-size:13px;font-weight:800;color:var(--ink)}
.mx-leg{margin:10px 0 0;font-size:12.5px;color:var(--ink2)}
.mx-leg span{font-weight:800;margin:0 3px 0 10px}
.mx-leg span:first-child{margin-left:0}
.mx-src ol{margin:6px 0 0;padding-left:22px;font-size:12.5px;line-height:1.6}
/* the view switch in the top bar, and what the Easy and Client views leave out (249-mod-mode.js, version 115) */
.mode-seg{display:inline-flex;border:1px solid rgba(255,255,255,.28);border-radius:8px;overflow:hidden;flex:none}
.mode-seg button{background:transparent;border:0;color:rgba(255,255,255,.78);font:inherit;font-size:12.5px;font-weight:600;padding:5px 10px;cursor:pointer}
.mode-seg button+button{border-left:1px solid rgba(255,255,255,.2)}
.mode-seg button:hover{color:#fff;background:rgba(255,255,255,.08)}
.mode-seg button[aria-pressed="true"]{background:var(--cyan);color:#120B33}
.mode-seg button:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
@media (max-width:420px){.mode-seg button{padding:5px 7px}}   /* five views fit a 360-pixel phone (version 189) */
.navgrp[hidden],.tabs button[hidden]{display:none !important}
/* Easy: the long notes and the specialist cards go; one-line hints stay */
html[data-mode="easy"] .note,html[data-mode="easy"] .pnote,
html[data-mode="easy"] #acTax,html[data-mode="easy"] #acConv,html[data-mode="easy"] #acAca,
html[data-mode="easy"] #ppSurvCard,html[data-mode="easy"] #ppAlone,html[data-mode="easy"] #ppAbout,
html[data-mode="easy"] #hhCard,html[data-mode="easy"] #iAbout,html[data-mode="easy"] #xAbout{display:none !important}
/* Easy's Plan tab (version 250): no Stress Test choice and no downloads */
html[data-mode="easy"] #vStressWrap,html[data-mode="easy"] #dl{display:none !important}
/* step 2 (version 251): no key-figure boxes under the headline */
html[data-mode="easy"] #kpis{display:none !important}
/* step 3 (version 252): no taxes and penalties chart, no goals by priority and no In Plain Words; what is left below fills the width */
html[data-mode="easy"] #goalCard,html[data-mode="easy"] #words{display:none !important}
/* version 284: nor Taxes Over the Retirement Years and Health Care Over the Retirement Years */
html[data-mode="easy"] #txCard,html[data-mode="easy"] #hcCard{display:none !important}
html[data-mode="easy"] .lower{grid-template-columns:minmax(0,1fr)}
/* Client: pictures and numbers; the settings, the words around them and the controls go */
html[data-mode="client"] #obBtn,html[data-mode="client"] #undoBtn,
html[data-mode="client"] .ahead p,html[data-mode="client"] .sub,html[data-mode="client"] .note,html[data-mode="client"] .pnote,html[data-mode="client"] .hint,
html[data-mode="client"] #flowCsv,html[data-mode="client"] #skTbl,html[data-mode="client"] .cmphead,html[data-mode="client"] #viewCmp .demos,
html[data-mode="client"] #cmpEmpty,html[data-mode="client"] #cards .card-acts{display:none !important}
html[data-mode="client"] .pres .sub{display:block !important}
/* Easy words (version 238): a text written twice shows its plain half in Easy and its full half elsewhere; the notes on
   how the model works stay out of Easy */
.ez-e{display:none}
html[data-mode="easy"] .ez-e{display:inline}
html[data-mode="easy"] .ez-f,html[data-mode="easy"] .ez-hide,html[data-mode="easy"] #tpNew [data-x] .hint,html[data-mode="easy"] #tpNew [data-t] .hint{display:none !important}
/* Plan Summary */
.pres{padding-block:20px 40px;display:flex;flex-direction:column;gap:16px}
.pr-hero{background:var(--hero-bg);color:#fff;border:0;padding:28px 30px}
.pr-hero h1{margin:0;font-size:30px;letter-spacing:-.02em;color:#fff}
.pr-hero p{margin:6px 0 0;color:rgba(255,255,255,.78);font-size:14px}
.pr-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.pr-tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;position:relative;box-shadow:var(--shadow);min-height:132px}
.pr-v{font-size:36px;font-weight:800;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.pr-k{margin-top:6px;font-size:14px;font-weight:600;color:var(--ink2)}
.pr-s{margin-top:2px;font-size:12.5px;color:var(--muted)}
.pr-tile.ring{padding-right:92px}
.pr-ringw{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:64px;height:64px}
.pr-ring{width:64px;height:64px}
.pr-ring .trk{fill:none;stroke:var(--line2);stroke-width:10}
.pr-ring .val{fill:none;stroke-width:10;stroke-linecap:round}
.pr-ring.good .val{stroke:var(--good)} .pr-ring.warn .val{stroke:var(--warn)} .pr-ring.serious .val{stroke:var(--serious)} .pr-ring.crit .val{stroke:var(--crit)}
.pr-two{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:stretch}
.pr-two .card{margin:0}
.pr-sw1,.pr-sw2{display:inline-block;width:14px;height:10px;border-radius:2px}
.pr-sw1{background:var(--accent-soft)} .pr-sw2{background:var(--accent-softer)}
.pr-incw{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:8px}
.pr-donut{width:180px;height:180px;flex:none}
.ps-dt{font-size:20px;font-weight:800;fill:var(--ink)}
.pr-ds{font-size:12px;fill:var(--muted)}
.pr-leg{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;flex:1 1 160px;min-width:0}
.pr-leg li{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:13.5px;color:var(--ink2)}
.pr-leg i{width:12px;height:12px;border-radius:3px}
.pr-leg b{color:var(--ink);font-variant-numeric:tabular-nums}
.pr-miles{width:100%;height:auto;margin-top:6px}
.pr-ax{stroke:var(--line);stroke-width:3}
.pr-tk{stroke:var(--line);stroke-width:1.2}
.pr-dot{fill:var(--s1);stroke:var(--surface);stroke-width:3}
.pr-dot.k-ret{fill:var(--brand)} .pr-dot.k-ss{fill:var(--k-ss)} .pr-dot.k-med{fill:var(--k-health)} .pr-dot.k-rmd{fill:var(--g-pre)} .pr-dot.k-debt{fill:var(--good)} .pr-dot.k-death{fill:var(--muted)} .pr-dot.k-pension{fill:var(--k-pen)}
.pr-ml{font-size:14px;font-weight:700;fill:var(--ink)}
.pr-my,.pr-yr{font-size:12.5px;fill:var(--muted)}
.ps-bars{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.pr-bar{display:grid;grid-template-columns:200px minmax(0,1fr) 56px;gap:12px;align-items:center;font-size:14px}
.pr-bn{color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-bar.me .pr-bn{font-weight:800;color:var(--ink)}
.pr-bt{height:18px;border-radius:5px;background:var(--line2);overflow:hidden}
.pr-bt i{display:block;height:100%;border-radius:5px}
.pr-bar b{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}
.pr-disc{margin:0;font-size:12px;color:var(--muted);text-align:center}
/* the top bar holds the view switch on one line: the plan line under the name gives way first (version 115) */
.top .wrap{flex-wrap:nowrap}
.brand{flex:1 1 auto;min-width:0}
.brand .btxt{overflow:hidden}
#brandSub{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .hbtn,.top .live{flex:none}
/* the scenario rows had taken the Progress tab's .pr-bars and .pr-dt rules (7px-high names in a box 36% wide), so the
   summary's own classes are .ps-bars and .ps-dt (version 123) */
/* Phones and narrow windows (version 130). Below 1,180 pixels the two-column layouts stack; below 900 the side
   column becomes a menu that slides in (249-mod-narrow.js) and the header wraps and scrolls away. */
.navbtn{display:none}
.navscrim[hidden]{display:none}
/* the screen-reader words in a scrolled table are placed inside it, not against the page, so they cannot widen it
   (the Statements tab scrolled sideways at every width before version 130) */
.tw{position:relative}
@media (max-width:1179px){
  /* the page used to keep a width of 1,180 pixels and scroll sideways in a smaller window */
  body{min-width:0}
  /* two-column layouts stack: the list or tool first, its notes or chart under it */
  .acols,.shell.coach-on .acols,.tl-top,.in-2col,.st-cols,.in-health{grid-template-columns:minmax(0,1fr)}
  .mm-stage{grid-template-columns:minmax(0,1fr);gap:16px;min-height:0}
  /* the money-flow picture keeps its 760-pixel minimum and scrolls inside its card */
  .sk-ch{overflow-x:auto}
  .seg.set-seg,.seg.set-seg.s3{display:flex;flex-wrap:wrap;align-self:stretch}
  .seg.set-seg button{flex:1 1 96px}
  .main select{max-width:100%}
  /* the client's Plan Summary: two figures to a row, the pictures one under the other */
  .pr-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pr-two{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:900px){
  body{font-size:15px}
  .navbtn{display:inline-flex;align-items:center;gap:6px;order:-1}
  /* the header scrolls away with the page and wraps, so it never takes a third of a phone's screen */
  .top{position:relative}
  .top .wrap{gap:8px;justify-content:flex-start;flex-wrap:wrap}
  .top .brand{flex:1 1 200px;min-width:0}
  .brand b{font-size:15px}
  .hbtn,.hbtn + .hbtn{margin-left:0}
  .top .live{flex:1 1 100%;justify-content:flex-start;flex-wrap:wrap;row-gap:4px}
  /* one column; the side column slides in over the page from the Menu button */
  .shell,.shell.coach-on{grid-template-columns:minmax(0,1fr);gap:14px}
  .side{position:fixed;top:0;left:0;bottom:0;width:min(300px,86vw);max-height:none;border-radius:0 14px 14px 0;
    transform:translateX(-105%);visibility:hidden;transition:transform .2s ease,visibility 0s linear .2s;z-index:60;
    padding-top:calc(12px + env(safe-area-inset-top,0px));box-shadow:0 0 32px rgba(18,11,51,.4)}
  html.nav-open .side{transform:none;visibility:visible;transition:transform .2s ease}
  html.nav-open body{overflow:hidden}
  .navscrim{position:fixed;inset:0;background:rgba(18,11,51,.5);z-index:55}
  .shell .tabs button{padding-block:6px;font-size:14.5px}
  .sres{width:100%}
  /* the guided setup covers the page instead of sitting beside it */
  .coach{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;border-radius:0;z-index:30}
  .card{padding:14px}
  /* the headline: the big number over the words */
  .verdict{grid-template-columns:minmax(0,1fr);gap:14px}
  .vlab{max-width:none}
  /* item rows on the data tabs: the name, then the amount, then the years */
  .ir-main{grid-template-columns:22px minmax(0,1fr);grid-template-areas:"ic t" ". amt" ". per"}
  .ir-nm{white-space:normal}
  .atiles,.atiles#insTiles,.atiles#ckTiles,#ivTiles,.st-ratios{grid-template-columns:repeat(2,minmax(0,1fr))}
  .set-grid{grid-template-columns:minmax(0,1fr)}
  .ui-big{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}
  .ck-due{white-space:normal;flex-wrap:wrap}
  /* the two wide tables that sit straight in a card scroll inside it */
  #insBridge,#hhCard,#tp_med .tl-tw[data-x]{overflow-x:auto}
  .pr-hero{padding:20px}
  .pr-hero h1{font-size:24px}
  .pr-v{font-size:28px}
  .pr-tile.ring{padding-right:18px;display:flex;flex-direction:column}
  .pr-ringw{position:static;transform:none;margin-top:10px;order:9}
  .pr-bar{grid-template-columns:minmax(0,110px) minmax(0,1fr) 48px;gap:8px}
}
@media (max-width:900px) and (prefers-reduced-motion:reduce){.side,html.nav-open .side{transition:none}}
html[data-motion="reduce"] .side{transition:none}
/* Keyboard shortcuts (version 132): the list, and the hint while a g waits for its letter */
.kydlg{width:min(560px,100%)}
.ky-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.ky-hd h2{margin:0}
.ky-h{margin:16px 0 2px;font-size:15px}
.ky-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.ky-list li{display:flex;align-items:center;gap:6px;font-size:13.5px}
.ky-list li span{margin-left:auto;color:var(--ink2);text-align:right}
.ky-list i{font-style:normal;color:var(--muted);font-size:12px}
.ky-go{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 22px}
.ky-go li span{margin-left:8px;text-align:left}
.kydlg kbd,.ky-note kbd{display:inline-block;min-width:1.6em;text-align:center;font-family:var(--mono);font-size:12px;padding:1px 6px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;background:var(--surface2);color:var(--ink)}
.ky-note{margin:10px 0 0;font-size:12.5px;color:var(--muted);line-height:1.5}
.ky-note code{font-family:var(--mono);font-size:12px;color:var(--ink2)}
.ky-hint{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:70;background:var(--ink);color:var(--surface);font-size:13px;padding:7px 12px;border-radius:8px;box-shadow:0 8px 24px rgba(18,11,51,.3)}
.ky-hint[hidden]{display:none}
@media (max-width:560px){.ky-go{grid-template-columns:minmax(0,1fr)}}
/* The stress test on the Plan tab (version 133) */
.vstress{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:10px 0 0;font-size:13px;color:#D7D4F0}
.vstress label{font-weight:700;color:#fff}
.vstress select{font:inherit;font-size:13px;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);border-radius:7px;padding:4px 8px;max-width:100%}
.vstress select option{color:var(--ink);background:var(--surface)}
.vstress select:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}
.vstress.on select{border-color:#FFC45C;background:rgba(255,196,92,.18)}
.vs-note{flex:1 1 100%;margin:0;font-size:12.5px;color:#FFD58A;line-height:1.45}
.vs-note[hidden]{display:none}
.stress-tag{display:inline-flex;align-items:center;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;color:#120B33;background:#FFC45C;border-radius:5px;padding:2px 7px}
.stress-tag[hidden]{display:none}
/* Security tools (version 134): the passphrase dialog, the fingerprint line and the network list */
.pwdlg{width:min(480px,100%)}
.pw-f{display:flex;flex-direction:column;gap:4px;margin-top:10px}
.pw-f[hidden]{display:none}
.pw-f label{font-weight:700;font-size:13.5px}
.pw-f input{font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--ink)}
.pw-f input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.set-fp{margin:8px 0 0;font-size:12.5px;color:var(--ink2);line-height:1.5}
.set-fp[hidden]{display:none}
.set-fp code,.cf-body .fp{font-family:var(--mono);font-size:12px;color:var(--ink);overflow-wrap:anywhere;word-break:break-word}
#setNet code{font-family:var(--mono);font-size:12.5px}
#setNet tr.sec-data td{color:var(--crit);font-weight:700}
/* The first visit's welcome strip (version 135) */
.welcome{display:flex;align-items:center;gap:14px 24px;flex-wrap:wrap;border-left:4px solid var(--accent);margin-bottom:16px}
.welcome[hidden]{display:none}
.wl-tx{flex:1 1 420px;min-width:0}
.wl-tx h2{margin:0 0 4px;font-size:17px}
.wl-tx p{margin:0;font-size:13.5px;color:var(--ink2);line-height:1.5}
.wl-acts{display:flex;gap:8px;flex-wrap:wrap}
/* The Monthly Money Check (version 139) */
.mc-f{max-width:520px;margin-top:6px}
.mc-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:18px 28px;margin-top:10px;align-items:start}
.mc-cols h3{margin:0 0 6px;font-size:15px}
.mc-tbl th{text-align:left;font-weight:500;color:var(--ink2);padding:5px 0;border-bottom:1px solid var(--line2)}
.mc-tbl td{text-align:right}
.mc-tbl tr.mc-sub th,.mc-tbl tr.mc-sub td{font-weight:800;color:var(--ink)}
.mc-tbl tr.mc-ok th,.mc-tbl tr.mc-ok td{font-weight:800;color:var(--good);border-top:2px solid var(--line)}
.mc-tbl tr.mc-bad th,.mc-tbl tr.mc-bad td{font-weight:800;color:var(--crit);border-top:2px solid var(--line)}
.mc-bars{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}
.mc-bars li{display:grid;grid-template-columns:44px minmax(0,1fr) 84px;gap:8px;align-items:center;font-size:12.5px}
.mc-y{font-family:var(--mono);color:var(--muted)}
.mc-b{height:10px;background:var(--line2);border-radius:5px;overflow:hidden}
.mc-b i{display:block;height:100%;border-radius:5px;background:var(--good)}
.mc-bars li.neg .mc-b i{background:var(--crit)}
.mc-bars b{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}
.mc-bars li.neg b{color:var(--crit)}
.mc-warn b{color:var(--crit)}
.mc-plan{margin-bottom:16px;padding:12px 16px;border-radius:12px;border:1px solid var(--crit);border-left-width:4px;background:var(--surface);font-size:13.5px;line-height:1.5}
.mc-plan[hidden]{display:none}
.mc-plan b{color:var(--crit)}
.mc-plan span{color:var(--ink2)}
@media (max-width:900px){.mc-cols{grid-template-columns:minmax(0,1fr)}}
/* What to Do First (version 140) */
.wf-f{max-width:520px;margin-top:6px}
.wf-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.wf-list li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:start;padding:10px 12px;border:1px solid var(--line2);border-radius:10px}
.wf-list b{font-size:14.5px}
.wf-list p{margin:3px 0 0;font-size:13.5px;color:var(--ink2);line-height:1.45}
.wf-list small{display:block;margin-top:4px;font-size:12px;color:var(--muted)}
.wf-list small a{color:var(--accent-ink)}
.wf-tag{display:inline-block;text-align:center;font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;font-weight:700;padding:3px 6px;border-radius:5px;border:1px solid var(--line);color:var(--muted)}
.wf-done .wf-tag{color:var(--good);border-color:var(--good)}
.wf-now{border-color:var(--accent)!important;border-width:2px!important}
.wf-now .wf-tag{background:var(--accent);border-color:var(--accent);color:var(--on-brand,#fff)}
.wf-check .wf-tag{color:var(--warn);border-color:var(--warn)}
.wf-done b,.wf-done p{color:var(--muted)}
.wf-bar{display:block;height:8px;margin-top:8px;background:var(--line2);border-radius:4px;overflow:hidden;max-width:360px}
.wf-bar i{display:block;height:100%;background:var(--good);border-radius:4px}
.wf-when{display:block;margin-top:4px;font-size:12.5px;color:var(--ink2)}
/* Credits for Low Earners (232-mod-credits.js, version 141) */
#tp_cred .tl-two{grid-template-columns:minmax(0,1fr)}
#tp_cred .tl-tw{max-height:none}
#tp_cred .tl-tw table.gv-tbl{min-width:0;width:100%}
#tp_cred .tl-tw .gv-tbl th:first-child{width:auto;min-width:220px}
#tp_cred .tl-tw tr.hl th{background:var(--accent-softer)}
#tp_cred .gv-tbl td{text-align:right;white-space:nowrap}
#tp_cred .gv-more td{text-align:left;white-space:normal}
/* Trump Accounts (232-mod-trump.js, version 143) */
#tp_trump .tl-two{grid-template-columns:minmax(0,1fr)}
#tp_trump .tl-tw{max-height:none}
#tp_trump .tl-tw table.gv-tbl{min-width:0;width:100%}
#tp_trump .tl-tw .gv-tbl th:first-child{width:auto;min-width:180px}
/* Indexed Universal Life Check (232-mod-iul.js, version 144) */
#tp_iul .tl-two{grid-template-columns:minmax(0,1fr)}
#tp_iul .tl-tw{max-height:none}
#tp_iul .tl-tw table.gv-tbl{min-width:0;width:100%}
#tp_iul .gv-tbl td{text-align:right;white-space:nowrap}
#tp_iul .gv-more td{text-align:left;white-space:normal}
#tp_iul .tl-tw .gv-tbl th:first-child{width:auto;min-width:200px}
/* ---------- Guided Setup sliders (version 147) ---------- */
.ob-fs{display:flex;flex-direction:column;gap:3px;min-width:0;justify-content:flex-end}
.ob-fs .ob-rng{margin:0;height:20px}
.ob-fs .ob-h{margin-top:0}
.ob-two .ob-fs,.ob-three .ob-fs,.ob-two:has(.ob-fs)>.af,.ob-three:has(.ob-fs)>.af{justify-content:flex-start}
/* ---------- ETF Analyzer (version 149) ---------- */
.etf-mx{border-collapse:separate;border-spacing:4px;margin:4px 0 8px;font-variant-numeric:tabular-nums}
.etf-mx th{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--ink2);padding:2px 6px;text-align:center}
.etf-mx tbody th{text-align:right}
.etf-mx td{min-width:74px;height:54px;border-radius:8px;text-align:center;vertical-align:middle;padding:4px 6px}
.etf-mx td b{display:block;font-size:17px;line-height:1.1}
.etf-mx td small{display:block;font-size:12px;opacity:.85}
.etf-mx .etf-self{background:var(--surface2);color:var(--muted)}
.etf-hi{background:var(--crit-bg);color:var(--ink)}
.etf-mid{background:var(--warn-bg);color:var(--ink)}
.etf-lo{background:var(--good-bg);color:var(--ink)}
.etf-k{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.etf-tbl th[scope=row] small{display:block;font-weight:400;color:var(--muted);font-size:12px;line-height:1.35}
.etf-tbl td{vertical-align:top}
.etf-risk{margin:0;padding-left:16px;min-width:260px}
.etf-risk li{margin:0 0 4px;line-height:1.4}
.etf-two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:900px){.etf-two{grid-template-columns:1fr}.etf-mx td{min-width:58px}}
.etf-sum th,.etf-sum td{border-top:1.5px solid var(--line);font-weight:600}
.etf-rk{margin-bottom:14px}
.etf-rk th[scope=row]{width:110px;vertical-align:top}
.etf-rk th[scope=row] small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.etf-rk .etf-risk{min-width:0}
.etf-tbl th[scope=row]{min-width:180px}
.etf-rk th[scope=row]{width:170px}
/* ---------- Equity Pay (version 154) ---------- */
.eq-one{fill:var(--accent);opacity:.85}
.eq-idx{fill:var(--good);opacity:.85}
.eq-one-w{stroke:var(--accent);stroke-width:2}
.eq-idx-w{stroke:var(--good);stroke-width:2}
.eq-med{stroke:var(--ink);stroke-width:2.5}
.eq-k{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.eq-k.eq-one{background:var(--accent)}
.eq-k.eq-idx{background:var(--good)}
.eq-tbl th[scope=row]{width:64%}
.eq-tbl th[scope=row] small{display:block;font-weight:400;color:var(--muted);font-size:12px;line-height:1.35}
.eq-tbl td{text-align:right;white-space:nowrap}
/* Key Dates (version 158) */
.kddlg{width:min(680px,100%)}
.kd-gs{border:0;margin:8px 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px}
.kd-gs legend{font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:4px;padding:0}
#kdGroups{display:flex;flex-wrap:wrap;gap:6px 18px}
.kd-g{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;cursor:pointer}
.kd-n{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:10px;padding:0 6px;font-variant-numeric:tabular-nums}
.kd-list{max-height:min(46vh,420px);overflow:auto;border:1px solid var(--line);border-radius:10px;padding:0 10px}
.kd-list:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.kd-tbl{width:100%;table-layout:fixed}
.kd-tbl th{white-space:normal;vertical-align:top;font-weight:600;font-variant-numeric:tabular-nums;width:34%;padding-right:14px}
.kd-tbl td b{display:block;font-weight:600}
.kd-tbl td small{display:block;color:var(--ink2);font-size:12px;margin-top:2px}
.kd-ft{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;flex-wrap:wrap}
.kd-count{font-size:13px;color:var(--ink2)}
.kd-msg:empty{display:none}
.kd-src{margin-top:8px}
@media (max-width:560px){.kd-tbl th{width:40%}}
/* The pay a lifestyle needs (version 162) */
.need-top{display:flex;flex-wrap:wrap;gap:10px 32px;margin-bottom:12px}
.need-top>div{display:flex;flex-direction:column}
.need-top .k{font-size:12px;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.need-top b{font-size:22px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.need-top .ok b{color:var(--good)}
.need-top .short b{color:var(--crit)}
.need-top small{font-size:12.5px;color:var(--muted)}
.need-tbl td{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.need-tbl tr.hl th,.need-tbl tr.hl td{border-top:2px solid var(--line)}
.need-503020{margin-top:10px}
/* Sample households on the Settings tab (version 163), grouped by age with tags to filter by (version 442) */
.smp-bar{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 4px}
.smp-chip{padding:4px 10px;font-size:13px}
.smp-n{font-family:var(--mono);font-size:12px;opacity:.75;margin-left:1px}
.smp-shown{margin:4px 0 0}
.smp-grp{margin-top:16px}
.smp-gh{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;margin:0 0 8px}
.smp-gh>h3{margin:0;font-size:15px}
.smp-ga{font-size:13px;color:var(--muted)}
.smp-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px}
.smp{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface);min-width:0}
.smp[hidden],.smp-grp[hidden]{display:none}
.smp-hd h4{margin:0;font-size:15.5px}
.smp-tag{display:block;margin-top:2px;font-size:12px;font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.smp-facts{margin:8px 0 0;display:flex;flex-wrap:wrap;gap:2px 0;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.smp-facts span{white-space:nowrap}
.smp-facts span:not(:last-child)::after{content:"\00b7";margin:0 7px;color:var(--muted)}
.smp-tags{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px}
.smp-tags li{font-size:12px;line-height:1.4;padding:1px 8px;border-radius:999px;background:var(--accent-softer);color:var(--accent-ink)}
.smp-shows{margin:8px 0 0;font-size:13px;line-height:1.5;color:var(--ink2)}
.smp-sl{font-weight:700;color:var(--ink);margin-right:2px}
.smp-more{margin-top:6px}
.smp-more>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent-ink)}
.smp-more>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.smp-d{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink2)}
.smp-ft{margin-top:auto;padding-top:10px}
.smp-src{margin-top:14px}
/* The Planner Setup's reality check (version 164) */
.ob-grid{display:grid;grid-template-columns:1fr;gap:10px}
.pr-count{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.pr-count span{font-size:12.5px;font-weight:700;border-radius:999px;padding:3px 10px;border:1px solid var(--line)}
.pr-count .pr-fix{color:var(--crit);border-color:var(--crit)}
.pr-count .pr-watch{color:var(--warn);border-color:var(--warn)}
.pr-count .pr-ok{color:var(--good);border-color:var(--good)}
.pr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pr-list li{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:8px 10px}
.pr-list li.pr-fix{border-left-color:var(--crit)}
.pr-list li.pr-watch{border-left-color:var(--warn)}
.pr-list li.pr-ok,.pr-list li.pr-info{border-left-color:var(--good)}
.pr-lv{font-size:12px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);min-width:44px;padding-top:2px}
.pr-list b{display:block;font-size:13.5px}
.pr-list span:not(.pr-lv){display:block;font-size:12.5px;color:var(--ink2);margin-top:2px}
.pr-list .linkbtn{font-size:12.5px;margin-top:4px}
.pr-h{margin:16px 0 6px;font-size:15px}
.pr-sum th{font-weight:600;width:48%}
/* the fourth view button left the header no room for the run's progress line: while a run goes, the line takes the
   label's place instead of widening the header, which wrapped it to two rows and moved the page under the pointer */
.live[data-busy="1"] .busy-note:not(:empty)+span{display:none}
/* Capabilities: every feature, ranked (version 165) */
.cap-uh{font-size:15px;margin:14px 0 6px}
.cap-uses{margin:0 0 14px;padding-left:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:4px 24px;font-size:13.5px;color:var(--ink2)}
.cap-uses b{color:var(--ink)}
.cap-rank{width:100%}
.cap-rank td,.cap-rank th{vertical-align:top}
.cap-rank .cap-rk{font-family:var(--mono);font-weight:700;color:var(--accent);width:1%;text-align:right;padding-right:12px}
.cap-rank tbody th{font-weight:700;min-width:170px}
.cap-rank td:last-child{color:var(--muted);white-space:nowrap}
@media (max-width:700px){.cap-rank td:last-child{white-space:normal}.cap-rank tbody th{min-width:0}}
/* The tax cow, an easter egg in the Enterprise view (version 166) */
.cow-egg{display:none;width:9px;height:9px;border-radius:50%;border:0;padding:0;margin:28px 4px 4px auto;background:var(--muted);opacity:.14;cursor:pointer}
html[data-mode="full"] .cow-egg{display:block}
.cow-egg:hover,.cow-egg:focus-visible{opacity:.7}
.cowdlg{width:min(1000px,100%)}
.cow-wrap{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:760px){.cow-wrap{grid-template-columns:1fr}}
.cow{width:100%;height:auto;display:block}
.cow-butcher{fill:#cdc6e4}
.cow-butcher .cap{fill:#fff;stroke:#8a82a8;stroke-width:2}
.cow-butcher .be{fill:#3a3552}
.cow-butcher .bb{fill:none;stroke:#3a3552;stroke-width:3;stroke-linecap:round}
.cow-butcher .apron{fill:var(--surface)}
.cow-butcher .apron-t{font:700 9px var(--mono);fill:#5a5470;letter-spacing:.06em}
.cow-butcher .bm{fill:none;stroke:#5a5470;stroke-width:5;stroke-linecap:round}
.cow-butcher .arm{fill:none;stroke:#cdc6e4;stroke-width:18;stroke-linecap:round}
.cow-butcher .blade{fill:#8a8fa3;stroke:#5c6175;stroke-width:2}
.cow-legs rect{fill:#f4efe6;stroke:#3a2f2a;stroke-width:2}
.cow-legs .tail{fill:none;stroke:#3a2f2a;stroke-width:5;stroke-linecap:round}
.cow-legs .tuft{fill:#3a2f2a}
.cow-hooves rect{fill:#3a2f2a}
.cow-body{fill:#f4efe6}
.cow-outline{fill:none;stroke:#3a2f2a;stroke-width:3;pointer-events:none}
.cow-cut{cursor:pointer}
.cow-cut polygon{fill:#f7d9d4;stroke:#b0584d;stroke-width:1.5;stroke-dasharray:5 3}
.cow-cut:hover polygon,.cow-cut.on polygon{fill:#ec9f93}
.cow-cut:focus{outline:none}
.cow-cut:focus-visible polygon,.cow-cut:focus-visible rect{stroke:#231a17;stroke-width:3;stroke-dasharray:none}
.cow-shank rect{fill:#f7d9d4;stroke:#b0584d;stroke-width:1.5}
.cow-shank:hover rect,.cow-shank.on rect{fill:#ec9f93}
.cow-l{font:700 12px var(--sans);fill:#3a2f2a;pointer-events:none}
.cow-v{font:700 13px var(--mono);fill:#7a2b22;pointer-events:none}
.cow-head .face{fill:#f4efe6;stroke:#3a2f2a;stroke-width:3}
.cow-head .snout{fill:#f2b8b0;stroke:#3a2f2a;stroke-width:2}
.cow-head .nos{fill:#7a4a44}
.cow-head .eye{fill:#fff;stroke:#3a2f2a;stroke-width:2.5}
.cow-head .pupil{fill:#231a17}
.cow-head .glint{fill:#fff}
.cow-head .brow{fill:none;stroke:#3a2f2a;stroke-width:4;stroke-linecap:round}
.cow-head .mouth{fill:none;stroke:#3a2f2a;stroke-width:2.5;stroke-linecap:round}
.cow-head .sweat{fill:#9ad3f0;stroke:#4a90b8;stroke-width:1.5}
.cow-head .ear{fill:#f4efe6;stroke:#3a2f2a;stroke-width:2.5}
.cow-head .horn{fill:none;stroke:#cdbb9a;stroke-width:7;stroke-linecap:round}
.cow-info h3{margin:0 0 4px;font-size:16px}
.cow-big{font-size:26px;font-weight:800;margin:4px 0;font-variant-numeric:tabular-nums}
.cow-big small{font-size:13px;font-weight:500;color:var(--muted)}
@media (prefers-reduced-motion:no-preference){.cow-head .pupil{animation:cowLook 5s ease-in-out infinite}}
@keyframes cowLook{0%,80%,100%{transform:translate(0,0)}85%{transform:translate(-2px,1px)}92%{transform:translate(2px,1px)}}
/* the Advisor Checklist (version 167) */
.tp-adv>.card+.card{margin-top:16px}
.adv-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:14px 20px;margin-top:14px;align-items:start}
.adv-who{border:0;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
.adv-who legend,.adv-goals>span{font-size:12px;font-weight:600;color:var(--ink2);margin-bottom:5px;padding:0}
.adv-who .hint{grid-column:1/-1;margin:0}
.adv-top input,.adv-top textarea,.adv-ans input,.adv-q{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;font-family:inherit;font-size:13.5px;min-width:0;width:100%}
.adv-top input,.adv-ans input{height:36px;padding:0 9px}
.adv-top textarea{padding:8px 10px;line-height:1.45;resize:vertical;min-height:70px}
.adv-goals{display:flex;flex-direction:column;min-width:0}
.adv-top input:focus-visible,.adv-top textarea:focus-visible,.adv-ans input:focus-visible,.adv-q:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.adv-opts{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:12px}
.adv-opts label{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer}
.adv-opts input{margin:0;accent-color:var(--accent)}
.adv-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:14px}
.adv-bar .hint{margin:0}
.adv-bar .hint:empty{display:none}
.adv-sec{margin-top:18px}
.adv-h{margin:0;font-size:15px;font-weight:800;padding-bottom:5px;border-bottom:1px solid var(--line2)}
.adv-sub{margin:6px 0 0;font-size:12.5px;color:var(--muted)}
.adv-ul{list-style:none;margin:0 0 8px;padding:0}
.adv-it{display:flex;gap:10px;align-items:flex-start;padding:10px 4px}
.adv-it+.adv-it{border-top:1px solid var(--line2)}
.adv-on{flex:none;width:17px;height:17px;margin:9px 0 0;accent-color:var(--accent);cursor:pointer}
.adv-b{flex:1 1 auto;min-width:0}
.adv-q{display:block;padding:7px 9px;line-height:1.45;resize:none;overflow:hidden;font-weight:600;background:transparent;border-color:transparent}
.adv-q:hover{border-color:var(--line)}
.adv-q:focus-visible{background:var(--surface2)}
.adv-it.own .adv-q{border-color:var(--line);background:var(--surface2)}
.adv-why{margin:2px 0 0;padding:0 10px;font-size:12.5px;color:var(--ink2);line-height:1.45;max-width:86ch}
.adv-why a{color:var(--accent-ink)}
.adv-why a.adv-src{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:4px;padding:0 5px;white-space:nowrap}
.adv-why a.adv-src:hover{color:var(--accent-ink);border-color:var(--accent)}
.adv-fee{color:var(--accent-ink);font-weight:600}
.adv-ans{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:8px 0 0;padding:0 10px}
.adv-ans label{display:flex;flex-direction:column;gap:3px;min-width:0}
.adv-ans label>span{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adv-x{flex:none;display:grid;place-items:center;width:30px;height:30px;margin-top:3px;border:1px solid transparent;border-radius:8px;background:none;color:var(--muted);cursor:pointer}
.adv-x svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.adv-x:hover{color:var(--crit);border-color:var(--line)}
.adv-x:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.adv-it.off .adv-q,.adv-it.off .adv-why,.adv-it.off .adv-ans{opacity:.5}
.adv-it.off .adv-q{text-decoration:line-through;text-decoration-thickness:1px}
.adv-add{margin-top:2px}
#advSrc{margin-top:16px}
@media (max-width:820px){.adv-top{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.adv-who{grid-template-columns:minmax(0,1fr)}.adv-it{gap:6px}.adv-why,.adv-ans{padding:0 4px}}
/* Home Affordability (version 199): the side-by-side table keeps its row names on one line, and wraps on a phone */
#tp_haf .tl-tw .gv-tbl tbody th{white-space:nowrap}
@media (max-width:560px){#tp_haf .tl-tw .gv-tbl tbody th{white-space:normal}}
/* license badges (version 181): Enterprise and Planner views only */
.lic{float:right;position:relative;margin:-4px 0 6px 12px;z-index:5}
.lic>summary{list-style:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);border-radius:999px;padding:3px 9px 3px 7px;background:var(--surface2);color:var(--ink2);font-size:12px;font-weight:700;line-height:1.3}
.lic>summary::-webkit-details-marker{display:none}
.lic>summary svg{width:15px;height:15px;fill:none;stroke:var(--accent);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.lic>summary span+span::before{content:"·";margin-right:5px;color:var(--muted)}
.lic>summary:hover{border-color:var(--accent);color:var(--ink)}
.lic>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lic[open]>summary{border-color:var(--accent);background:var(--accent-softer)}
.lic-pop{position:absolute;right:0;top:calc(100% + 6px);width:min(380px,calc(100vw - 48px));background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:12px 14px;font-size:13px;line-height:1.45;color:var(--ink2);text-align:left}
.lic-h{margin:0 0 6px;font-weight:700;color:var(--ink)}
.lic-i+.lic-i{border-top:1px solid var(--line2);margin-top:8px;padding-top:8px}
.lic-i b{color:var(--ink)}
.lic-i p{margin:3px 0 0}
.lic-s a,.lic-pop a{color:var(--accent-ink)}
.lic-s{font-size:12.5px}
.lic-f{margin:10px 0 0;font-size:12.5px;color:var(--muted)}
.ahead>.lic{margin:4px 0 0 12px}
.gdcard>.lic{margin:0 0 6px 12px}
html:not([data-mode="full"]):not([data-mode="planner"]) .lic{display:none}
/* Company Stock: Roll It Over or Take the NUA? (version 184): room for the row names of the side-by-side table */
#tp_nua .tl-tw .gv-tbl tbody th{min-width:10.5em}
/* Mortgage: Refinance or Pay It Down? (version 183): the side-by-side table keeps its row names on one line */
#tp_rf .tl-tw .gv-tbl tbody th{white-space:nowrap}
/* Lessons (version 189): the course map, a lesson, its "Try it" and its quick check */
.atiles#lnTiles{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}
.ln-units{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}
.ln-unit h2{margin-bottom:6px}
.ln-list{list-style:none;margin:0;padding:0}
.ln-it{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.ln-it:first-child{border-top:0}
.ln-n{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface2);color:var(--ink2);font-weight:800;font-size:13px}
.ln-it.done .ln-n{background:var(--good-bg,#e3f3ea);color:var(--good)}
.ln-tx{display:flex;flex-direction:column;min-width:0}
.ln-tx b{font-size:14px;color:var(--ink)}
.ln-tx span{font-size:12.5px;color:var(--muted)}
.ln-it.soon .ln-tx b{color:var(--ink2)}
.ln-soon{font-size:12px;font-weight:700;color:var(--muted);padding:4px 8px;border:1px dashed var(--line);border-radius:8px}
.ln-foot{margin-top:16px}
.ln-pdfs{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:16px;align-items:start}
.ln-pdfrow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin:10px 0 6px}
.ln-name{display:flex;flex-direction:column;gap:4px;flex:1 1 220px;max-width:360px}
.ln-name input{width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px}
.ln-name input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.ln-les{max-width:960px}
.ln-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:12px}
.ln-crumb{font-size:12.5px;color:var(--muted)}
.ln-les h2{font-size:24px;margin:0 0 12px}
.ln-les h3{margin:22px 0 8px}
.ln-goals ul,.ln-keep ul{margin:6px 0 0;padding-left:20px;line-height:1.6}
.ln-body p{font-size:15px;line-height:1.65;max-width:72ch;margin:10px 0;color:var(--ink)}
.ln-eg,.ln-term{margin:14px 0;padding:10px 14px;border-radius:10px;max-width:72ch}
.ln-eg{background:var(--surface2);border-left:3px solid var(--accent)}
.ln-term{background:var(--warn-bg);border-left:3px solid var(--warn,#c9920a)}
.ln-eg p,.ln-term p{margin:4px 0 0}
.ln-tag{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.ln-w{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:18px;margin-top:10px}
.ln-wf{display:flex;flex-direction:column;gap:10px}
.ln-sl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center}
.ln-sl .lab{grid-column:1/-1}
.ln-sl input[type=range]{width:100%;accent-color:var(--accent)}
.ln-sl output{font-weight:800;font-variant-numeric:tabular-nums;min-width:74px;text-align:right}
.ln-wf .btn{align-self:flex-start}
.ln-wt{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}
.ln-wt .kpi .v{font-size:19px}
.ln-bar{display:flex;height:34px;border-radius:8px;overflow:hidden;background:var(--surface2);margin:14px 0 6px}
.ln-bar i{display:block;height:100%}
.ln-xl{margin:2px 0 0;text-align:center;font-size:12px;color:var(--muted)}
.ln-les h2:focus{outline:none}
.ln-q{margin:12px 0;padding:10px 14px;border:1px solid var(--line);border-radius:10px}
.ln-q.ok{border-color:var(--good);background:var(--good-bg,#e3f3ea)}
.ln-q.no{border-color:var(--crit);background:var(--crit-bg,#fadddA)}
.ln-qt{font-weight:700;margin:0 0 6px;color:var(--ink)}
.ln-a{display:flex;gap:8px;align-items:flex-start;padding:4px 0;cursor:pointer}
.ln-a input{margin-top:3px}
.ln-why{margin:6px 0 0;font-size:13.5px;color:var(--ink2)}
.ln-qgo{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px}
.ln-score{margin:0;font-weight:700;color:var(--ink)}
.ln-src{margin-top:18px}
.ln-nav{display:flex;justify-content:space-between;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
@media (max-width:900px){.ln-w{grid-template-columns:minmax(0,1fr)}.ln-wt{grid-template-columns:minmax(0,1fr)}.atiles#lnTiles{grid-template-columns:minmax(0,1fr)}.ln-units{grid-template-columns:minmax(0,1fr)}}
/* the Tools tab in the Learn view: the student tools, unless Show All Tools is pressed (version 196) */
.tl-hbtn{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.tl-learn{margin-top:6px}
html:not([data-mode="learn"]) #tlAll,html:not([data-mode="learn"]) .tl-learn{display:none}
/* the Easy view: its 17 tools only (version 290) */
.tl-easy{margin-top:6px}
html:not([data-mode="easy"]) .tl-easy{display:none}
html[data-mode="easy"] #tlPick .chip:not([data-ez]),html[data-mode="easy"] #tlPick .tl-grp:not(:has(.chip[data-ez])){display:none}
html[data-mode="learn"]:not(.tl-all) #tlPick .chip:not([data-st]),html[data-mode="learn"]:not(.tl-all) #tlPick .tl-grp:not(:has(.chip[data-st])){display:none}
/* the Learn view: the planner's own controls out of sight */
html[data-mode="learn"] #obBtn,html[data-mode="learn"] #undoBtn,html[data-mode="learn"] #plansBtn,html[data-mode="learn"] .top .live,html[data-mode="learn"] #brandSub,html[data-mode="learn"] .side .resets{display:none !important}
.ln-top{position:sticky;top:calc(var(--hh,56px) + 6px + env(safe-area-inset-top,0px));z-index:3;background:var(--surface);padding:6px 0;margin-top:-6px}
.ln-back{display:inline-flex;align-items:center;gap:6px}
.ln-back svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ln-nav{align-items:center}
@media (max-width:520px){.ln-nav{flex-wrap:wrap}.ln-nav>*{flex:1 1 auto}}
.ln-les .chart svg{max-width:100%;height:auto}
/* Three futures (version 214): the Plan tab's portfolio card */
:root{--fx-pre:#5B3FD1;--fx-free:#0A93BA;--fx-tax:#231557;--fx-one:#5B3FD1}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--fx-pre:#9B80F2;--fx-free:#2CC4E8;--fx-tax:#CFC8F5;--fx-one:#9B80F2}}
:root[data-theme="dark"]{--fx-pre:#9B80F2;--fx-free:#2CC4E8;--fx-tax:#CFC8F5;--fx-one:#9B80F2}
.fx-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.fx-seg[hidden]{display:none}
.fx-seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--surface2)}
.fx-seg button{border:0;background:none;color:var(--ink2);font:600 12.5px/1 var(--sans);padding:7px 12px;border-radius:999px;cursor:pointer}
.fx-seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(35,21,87,.15)}
.fx-sw{width:10px;height:10px;border-radius:3px;display:inline-block}
.fx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin-top:8px}
.fx-p{display:flex;flex-direction:column;gap:6px;min-width:0;border:1px solid var(--line);border-radius:10px;padding:12px 14px 14px;background:var(--surface)}
.fx-eye{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2)}
.fx-eye i{width:8px;height:8px;border-radius:50%;background:currentColor}
.fx-hard .fx-eye{color:var(--crit)} .fx-good .fx-eye{color:var(--good)}
.fx-t{margin:0;font-size:17px;font-weight:800;letter-spacing:-.005em;color:var(--ink)}
.fx-r{margin:0;font-size:12.5px;color:var(--muted)}
.fx-c{min-height:190px}
.fx-c svg{display:block;max-width:100%}
.fx-c .fx-ret{stroke:var(--ink2);stroke-width:1.2;stroke-dasharray:3 3;opacity:.7}
.fx-c .fx-rt{font-size:12px;fill:var(--ink2)}
.fx-c .fx-out{stroke:var(--crit);stroke-width:3;stroke-dasharray:6 4}
.fx-dl{margin:4px 0 0;display:grid}
.fx-dl div{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line2);font-size:13px}
.fx-dl dt{color:var(--ink2)} .fx-dl dd{margin:0;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
/* a card shown large (version 353): the button at the top right, the others out of the way, a taller chart and year by year */
.fx-zoom{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.fx-zoom svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.fx-p{position:relative}
.fx-zoom-i{position:absolute;top:8px;right:8px;margin:0;width:32px;height:32px;justify-content:center;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink2);cursor:pointer}
.fx-grid:not(.fx-one) .fx-top{padding-right:38px}
.fx-zoom-i:hover{border-color:var(--brand);color:var(--brand)}
.fx-grid.fx-one{grid-template-columns:1fr}
.fx-big .fx-c{min-height:260px}
.fx-big .fx-dl{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));column-gap:28px}
.fx-yh{margin:10px 0 2px;font-size:14px;color:var(--ink)}
.fx-yy{max-height:340px;overflow:auto;border:1px solid var(--line2);border-radius:8px}
.fx-yy table{margin:0}
.fx-yy thead th{position:sticky;top:0;background:var(--surface);z-index:1}
.fx-yy td,.fx-yy th{font-variant-numeric:tabular-nums}
.fx-yy tr.sp-yr-cut td{color:var(--ink)} .fx-yy tr.sp-yr-cut th{box-shadow:inset 3px 0 0 var(--tx-niit)}   /* a cut, on the spending card's table (version 362) */
.fx-yy tr.fx-yr-ret th::after{content:" (retire)";font-weight:400;color:var(--muted);font-size:12px}
.fx-yy tr.fx-yr-out td{color:var(--crit)}
.fx-note{margin:auto 0 0;padding:8px 10px;border-radius:8px;font-size:12.5px;line-height:1.45;background:var(--surface2);color:var(--ink2)}
.fx-hard .fx-note{background:var(--crit-bg);color:var(--ink)} .fx-good .fx-note{background:var(--good-bg);color:var(--ink)}
/* Where the Money Sits Over Time, stacked (version 216) */
.sits-a{stroke:var(--surface);stroke-width:.6;stroke-linejoin:round}
#ch4 .fx-ret{stroke:var(--ink2);stroke-width:1.2;stroke-dasharray:3 3;opacity:.7}
/* the worst and best 5, 10 or 15 percent (version 217) */
.fx-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px;min-height:28px}   /* the same height with or without a selector, so the three charts line up */
.fx-pick{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--surface2);font-size:12px}
.fx-pick button{border:0;background:none;color:var(--ink2);font:600 12px/1 var(--sans);padding:5px 6px;border-radius:999px;cursor:pointer;font-variant-numeric:tabular-nums}
.fx-pick button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(35,21,87,.15)}
.fx-hard .fx-pick button[aria-pressed="true"]{color:var(--crit)} .fx-good .fx-pick button[aria-pressed="true"]{color:var(--good)}
/* the market model, from the card (version 218) */
.fx-mrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:8px 0 2px}
.fx-mkt{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--surface2);font-size:12px;max-width:100%;flex-wrap:wrap}
.fx-mkt button{border:0;background:none;color:var(--ink2);font:600 12.5px/1 var(--sans);padding:7px 11px;border-radius:999px;cursor:pointer}
.fx-mkt button[aria-pressed="true"]{background:var(--brand);color:var(--on-brand)}
/* the three models side by side (version 219) */
.fx-cmp[hidden]{display:none}
.fx-cmp{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;padding:8px 12px;border-radius:8px;background:var(--surface2);font-size:13px}
.fx-cmp-l{color:var(--muted);font-weight:600;font-size:12px}
.fx-cmp-i{display:inline-flex;align-items:baseline;gap:6px;color:var(--ink2)}
.fx-cmp-i b{color:var(--ink)} .fx-cmp-i em{font-style:normal;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.fx-cmp-i small{font-size:12px;color:var(--muted)}
.fx-cmp-i.on b::after{content:" (in use)";font-weight:600;color:var(--muted);font-size:12px}
/* Worst, Best and Markets are labels, not buttons (version 220): plain text beside the group, no pill, a quieter colour */
.fx-pickw,.fx-mktw{display:inline-flex;align-items:center;gap:6px;max-width:100%}
.fx-mktw{flex-wrap:wrap}
.fx-lbl{font-size:12px;font-weight:500;font-style:italic;color:var(--muted);background:none;border:0;padding:0;white-space:nowrap}
/* the spending rule, from the card (version 222) */
/* version 229: the three controls in one row, each with its small label above it, and Compare All Three at the end */
.fx-ctl{align-items:flex-end;gap:8px 18px;margin:10px 0 4px}
.fx-ctl .fx-mktw{flex-direction:column;align-items:flex-start;gap:3px;flex-wrap:nowrap}
.fx-ctl .fx-mkt button{padding:6px 10px}
.fx-ctl .fx-sel{padding:5px 10px}
.fx-ctl #fxCmpGo{margin-left:auto}
.fx-sel{font:600 12.5px/1.2 var(--sans);color:var(--ink);background:var(--surface2);border:1px solid var(--line);border-radius:999px;padding:6px 12px;max-width:100%;min-width:0;cursor:pointer}
/* what each future's headline shows on the spending card (version 274): Enterprise and Planner only */
.sp-show{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:2px 0 8px}
.sp-lbl{font-size:12.5px;font-weight:700;color:var(--ink2)}
/* the technical report is for finding bugs: Enterprise and Planner views only (version 279) */
html:not([data-mode="full"]):not([data-mode="planner"]) #dlTech,html:not([data-mode="full"]):not([data-mode="planner"]) #dlTechCsv{display:none}
html:not([data-mode="full"]):not([data-mode="planner"]) #spShowW,html:not([data-mode="full"]):not([data-mode="planner"]) #spRank{display:none}
.sp-rank{margin:-2px 0 8px}
/* taxes over the retirement years (version 224): the cards reuse the portfolio card's .fx-* styles; what is new is the
   strip of cells under each chart (the tax on the next $1,000, in four shades), the link from a row and the way back */
:root{--tx-niit:#C77700;--tx-aft:#B7B1CF;--cl-0:#EEEDF2;--cl-1:#D4C9F8;--cl-2:#A28AF0;--cl-3:#6242D6;--cl-4:#C0304F}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--tx-niit:#F2B44B;--tx-aft:#5E587A;--cl-0:#24212F;--cl-1:#3E3470;--cl-2:#6852C4;--cl-3:#A68CF5;--cl-4:#F0708A}}
:root[data-theme="dark"]{--tx-niit:#F2B44B;--tx-aft:#5E587A;--cl-0:#24212F;--cl-1:#3E3470;--cl-2:#6852C4;--cl-3:#A68CF5;--cl-4:#F0708A}
.dsh-card[hidden]{display:none}
.dsh-card .fx-c{min-height:222px}
.dsh-card h2[tabindex]:focus:not(:focus-visible),#fxH:focus:not(:focus-visible){outline:none}
.fx-back{margin-left:auto}
.fx-go{color:inherit;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:1px;text-underline-offset:3px}
.fx-go:hover,.fx-go:focus-visible{color:var(--brand)}
.fx-c .cl-j{stroke:var(--ink);stroke-width:1.5}
.fx-c .cl-l{font-size:12px}
.cl-lg{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.cl-lg b{font-weight:600;color:var(--ink2)}
.fx-wait{margin:8px 0;color:var(--muted);font-size:13px}
.fx-p .fx-top{align-content:flex-start}   /* when fxEven makes a head taller, its line stays at the top */
/* the spending card as three futures (version 230): dashed lines at the first year's spending and the floor */
.fx-c .sp-ref{stroke:var(--ink2);stroke-width:1.1;stroke-dasharray:4 3;opacity:.75}
.fx-c .sp-rl{font-size:12px;fill:var(--ink2);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}
.sw.sp-dash{width:16px;height:0;border-top:2px dashed var(--ink2);border-radius:0;background:none;display:inline-block;vertical-align:middle}
.sw.sp-cutsw{background:var(--cl-0);box-shadow:inset 0 0 0 1.5px var(--ink)}   /* the outlined cell of a cut (version 231) */
/* Taxes and Penalties Each Year as three futures (version 282): the typical year of every future, as a line */
.fx-c .tp-typ{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:5 3;stroke-linejoin:round}   /* not the investment tax's color, now a band on the same chart (version 444) */
.sw.tp-typsw{width:16px;height:0;border-top:3px dashed var(--ink);border-radius:0;background:none;display:inline-block;vertical-align:middle}
/* while a dashboard works out its futures, room kept for them on a wide screen, so the page below does not jump (version 282) */
@media (min-width:900px){.dsh-card .fx-grid > .fx-wait{min-height:560px}}
/* the spending card's Retire line, a slider (version 285), and the working years before it */
.fx-c .dsh-work{fill:var(--line2);opacity:.55}
.fx-c .dsh-wl{font-size:12px;fill:var(--muted)}
.fx-c .dsh-sl{cursor:ew-resize;outline:none;touch-action:none}
.fx-c .dsh-sl-hit{fill:transparent;touch-action:none}
.fx-c .dsh-sl .dsh-sl-l{stroke:var(--brand);stroke-width:1.6;opacity:1}
.fx-c .dsh-sl-k{fill:var(--brand);stroke:var(--surface);stroke-width:1.5}
.fx-c .dsh-sl .dsh-sl-t{fill:var(--brand);font-weight:600}
.fx-c .dsh-sl:focus-visible .dsh-sl-k,.fx-c .dsh-sl.on .dsh-sl-k{stroke:var(--ink);stroke-width:2.5}
.fx-c .dsh-sl.on .dsh-sl-l,.fx-c .dsh-sl:focus-visible .dsh-sl-l{stroke-dasharray:none}
/* the first-year and floor lines, sliders up and down (version 286) */
.fx-c .dsh-rl{cursor:ns-resize;outline:none;touch-action:none}
.fx-c .dsh-rl-hit{fill:transparent;touch-action:none}
.fx-c .dsh-rl-k{fill:var(--ink2);stroke:var(--surface);stroke-width:1.5}
.fx-c .dsh-rl:hover .sp-ref,.fx-c .dsh-rl:focus-visible .sp-ref,.fx-c .dsh-rl.on .sp-ref{stroke:var(--brand);opacity:1;stroke-width:1.6}
.fx-c .dsh-rl:focus-visible .dsh-rl-k,.fx-c .dsh-rl.on .dsh-rl-k{fill:var(--brand);stroke:var(--ink);stroke-width:2}
.fx-c .dsh-rl.on .sp-rl,.fx-c .dsh-rl:focus-visible .sp-rl{fill:var(--brand);font-weight:600}
/* one future, year by year (version 233) */
.fy-sum{margin:8px 0 4px;font-size:13px;line-height:1.5;color:var(--ink2)}
.fx-c.fy-c{min-height:222px}
.fx-c .fy-inc{fill:none;stroke:var(--good);stroke-width:2.4;stroke-linejoin:round}
.sw.fy-incsw{width:16px;height:0;border-top:3px solid var(--good);border-radius:0;background:none;display:inline-block;vertical-align:middle}
.fy-tw{overflow-x:auto;margin-top:10px;border:1px solid var(--line);border-radius:10px;max-height:420px;overflow-y:auto}
.fy-tbl{border-collapse:collapse;width:100%;font-size:12.5px;font-variant-numeric:tabular-nums}
.fy-tbl th,.fy-tbl td{padding:5px 9px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line2)}
.fy-tbl thead th{position:sticky;top:0;background:var(--surface2);color:var(--ink2);font-weight:600;font-size:12px}
.fy-tbl tbody th{text-align:left;font-weight:600;color:var(--ink)}
.fy-tbl tr.fy-out td,.fy-tbl tr.fy-out th{color:var(--muted)}
/* version 236: on a screen wide enough for two columns of charts (1,600 pixels and up), a card with three futures takes
   the whole width, as Cash Flow and Overview do, so its charts are larger; the fans and single charts keep two columns */
@media (min-width:1600px){.charts > #fxCard,.charts > #spCard,.charts > .dsh-card{grid-column:1 / -1}}
/* the Easy view (version 237): no market, rule or age choices on the portfolio card, a line saying what it runs on */
.fx-easy{display:none;margin:8px 0 4px;font-size:13px;line-height:1.5;color:var(--ink2)}
[data-mode="easy"] .fx-easy{display:block}
[data-mode="easy"] #fxCard .fx-ctl{display:none}

/* a first estimate on screen while the full run goes on (version 370) */
#results[data-est="1"] .kpis, #results[data-est="1"] .fx-grid, #results[data-est="1"] .dsh-grid{ opacity:.72; transition:opacity .2s }

/* the one tax card (version 444): the switch and Back to the Portfolio side by side */
.fx-hr{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* Year by Year (version 444): a future's table or its chart */
#fyBody[data-v=table] .fy-sum,#fyBody[data-v=table] .fy-c{display:none}
#fyBody[data-v=chart] .fy-tw,#fyBody[data-v=chart] .fy-tn{display:none}
#fyLegend[hidden]{display:none}
.fy-row{align-items:center;gap:8px 14px}
.fy-row .msg{margin:0}
/* Portfolio Analysis on the Accounts tab (version 287): a mosaic of the asset classes and a table beside it */
:root{--pa-cash:#4A67C2;--pa-ibd:#74DCD5;--pa-ubd:#12AFC8;--pa-ist:#F2BE1A;--pa-ust:#EA7125;--pa-alt:#D63B77;--pa-unc:#D5D5DB;--pa-unc-t:#17142B}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--pa-unc:#5A5868;--pa-unc-t:#FFFFFF}}
:root[data-theme="dark"]{--pa-unc:#5A5868;--pa-unc-t:#FFFFFF}
.pa-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start;margin-top:12px}
/* version 291: in the main column under Your Accounts, the mosaic and the table stack while the card is narrower than 820 pixels */
.aum-t{border-collapse:collapse;margin:6px 0 10px}.aum-t td,.aum-t th{padding:4px 8px 4px 0;text-align:left;font-size:14px;font-weight:400}
.aum-t{width:auto}.aum-t .numbox{width:auto}.aum-t .aum-up{width:11ch!important;max-width:none}.aum-t .aum-r{width:6ch!important;max-width:none}
.aum-row select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:13.5px;min-width:0}
.aum-row{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin:6px 0}
.aum-sum{margin-top:10px;font-size:14px}
@media (max-width:480px){ .aum-t td,.aum-t th{padding-right:4px} .aum-t .aum-up{width:9ch!important} .aum-t .aum-r{width:5ch!important} }   /* the levels fit a phone (version 309) */
.am-cmp{margin:6px 0 10px}
@media (min-width:1100px){ #amGrid{grid-template-columns:repeat(3,minmax(0,1fr))} }   /* three side by side, as on the Plan tab, in the Expenses tab's narrower column */
html[data-mode="easy"] #amCard,html[data-mode="client"] #amCard,html[data-mode="learn"] #amCard{display:none}   /* the Enterprise and Planner views only (version 310) */
#paCard{container-type:inline-size}
@container (max-width:820px){.pa-body{grid-template-columns:minmax(0,1fr)}.pa-map{height:240px}}
@media (max-width:820px){.pa-body{grid-template-columns:minmax(0,1fr)}}
.pa-map{display:flex;height:300px;gap:2px;border-radius:6px;overflow:hidden;background:var(--surface)}
.pa-col{display:flex;flex-direction:column;gap:2px;min-width:5px}
.pa-b{min-height:5px;display:flex;align-items:flex-start;padding:8px;overflow:hidden}
.pa-b span{font-size:12px;line-height:1.3;font-weight:600;color:#17142B}
.pa-b span b{display:block;font-size:15px}
.pa-cash span,.pa-alt span{color:#FFFFFF}
.pa-unc span{color:var(--pa-unc-t)}
.pa-cash{background:var(--pa-cash)} .pa-ibd{background:var(--pa-ibd)} .pa-ubd{background:var(--pa-ubd)} .pa-ist{background:var(--pa-ist)}
.pa-ust{background:var(--pa-ust)} .pa-alt{background:var(--pa-alt)} .pa-unc{background:var(--pa-unc)}
.pa-sw{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:9px;vertical-align:-1px;flex:none}
.pa-tbl{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.pa-tbl th,.pa-tbl td{padding:7px 8px;border-bottom:1px dotted var(--line);text-align:left}
.pa-tbl thead th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink2);font-weight:600;border-bottom:1px solid var(--line);vertical-align:bottom}
.pa-tbl .n{text-align:right;white-space:nowrap}
.pa-tbl tbody th{font-weight:500;color:var(--ink)}
.pa-tbl tfoot th,.pa-tbl tfoot td{font-weight:600;border-bottom:none}
.pa-scroll{overflow-x:auto}
.pa-tbl thead th.n{white-space:normal}
.pa-ctl [hidden]{display:none !important}
/* the target allocation (version 288) */
.pa-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:12px}
.pa-ctl .fx-lbl{margin-right:8px}
.pa-show{display:inline-flex;align-items:center;margin-left:auto}
.pa-in input{width:4.2em;text-align:right}
.pa-tbl td.pa-off{color:var(--crit);font-weight:600}
.pa-tbl td.pa-na{color:var(--muted);font-size:12.5px}
.pa-tbl.pa-t{font-size:13.5px}
.pa-tbl.pa-t th,.pa-tbl.pa-t td{padding:6px 6px}
/* by account and tax kind (version 289) */
#paAccW{margin-top:12px}
.pa-tw{overflow-x:auto;margin-top:8px;border:1px solid var(--line);border-radius:10px}
.pa-tbl.pa-acc,.pa-tbl.pa-loc{font-size:13px}
.pa-acc th,.pa-acc td,.pa-loc th,.pa-loc td{padding:6px 9px;white-space:nowrap}
.pa-acc thead th,.pa-loc thead th{font-size:11.5px;text-transform:none;letter-spacing:0;font-weight:600}
.pa-acc thead th .pa-sw{width:10px;height:10px;margin-right:5px}
.pa-acc tr.pa-g th,.pa-acc tr.pa-g td{background:var(--surface2);font-weight:600}
.pa-acc .pa-an{padding-left:22px;font-weight:400}
.pa-h3{font-size:15px;margin:18px 0 6px}
/* not in the Easy view, nor the rows' detail for it */


html[data-mode="easy"] #paCard,html[data-mode="easy"] .ac-pa{display:none !important}
/* Fees (version 444): the funds, the advisory fee and its cost, in one card on the Plan Settings tab */
.fee-sec+.fee-sec{border-top:1px solid var(--line2);margin-top:14px;padding-top:12px}
.fee-h{margin:0 0 4px;font-size:15px}
#amCard .fx-head{margin-bottom:2px}
html[data-mode="easy"] #ivFees+.fee-sec{border-top:0;margin-top:0;padding-top:0}   /* the fund fees are set on the Assumptions tab, not in Easy */
/* ---------- Retirement Analysis (version 304) ---------- */
.ra-duo{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ra-side{border:1px solid var(--line);border-radius:12px;padding:14px 16px 12px;background:var(--surface)}
.ra-side h2{margin:0 0 6px;text-align:center;font-size:18px}
.ra-pair{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}
.ra-ring{width:170px;height:170px;flex:0 0 auto}
.ra-rt{fill:none;stroke:var(--line);stroke-width:13}
.ra-rv{fill:none;stroke-width:13;stroke-linecap:round;transition:stroke-dasharray .4s}
.ra-rp{font:700 34px var(--sans);fill:var(--ink);text-anchor:middle}
.ra-rs{font:12px var(--sans);fill:var(--muted);text-anchor:middle}
.ra-ring.busy .ra-rp{fill:var(--muted)}
.ra-bw{display:flex;flex-direction:column;align-items:center}
.ra-bl{font-family:var(--mono);font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.ra-bar{width:170px;height:190px}
.ra-gl{stroke:var(--line);stroke-width:1}
.ra-ax{font:12px var(--sans);fill:var(--muted);text-anchor:end}
.ra-bv{fill:var(--good);opacity:.85}
.ra-bt{font:700 12px var(--sans);fill:#fff;text-anchor:middle}
.ra-note{margin:6px 0 0;text-align:center;font-size:13px;color:var(--muted)}
.ra-duo[hidden],#raConf[hidden],#raCmp[hidden]{display:none}   /* a view not chosen stays hidden, grid or not */
.ra-tabs{margin-bottom:14px}
.ra-gauge{width:240px;height:152px;display:block;margin:0 auto}
.ra-gt{fill:none;stroke:var(--line);stroke-width:16}
.ra-gz{fill:none;stroke:var(--good);stroke-width:16;opacity:.55}
.ra-gn2{stroke:var(--ink);stroke-width:3;stroke-linecap:round}
.ra-gc{fill:var(--ink)}
.ra-gv{font:700 26px var(--sans);fill:var(--ink);text-anchor:middle}
.ra-gw{text-align:center;font-weight:700;font-size:14px;margin-top:-4px}
.ra-gw.ok{color:var(--good)}.ra-gw.lo{color:var(--crit)}.ra-gw.hi{color:var(--warn)}
.ra-zone{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;font-size:14px}
.ra-zone .numbox{width:86px;flex:none;box-sizing:border-box}
.ra-zone .numbox input{width:100%;min-width:0;text-align:right}   /* the box's own width, not the 88px of an input elsewhere, which ran past it (version 363) */
.ra-zone .hint{flex:1 1 100%;margin:2px 0 0}
.ra-fan{min-height:230px}
.ra-ct td{text-align:right}
.ra-ct td.up{color:var(--good);font-weight:700}.ra-ct td.dn{color:var(--crit);font-weight:700}
#raSav[hidden],#raDet[hidden]{display:none}
.ra-h3{margin:16px 0 4px;font-size:16px}
.ra-ans{margin:10px 0 0;font-size:15px}
.ra-dw{max-height:520px;overflow:auto}
.ra-dt td.ra-w{color:var(--muted);text-align:center}
.ra-bar2{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.ra-dol{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:13px;color:var(--muted)}
.ra-list{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.ra-list ol{margin:0 0 8px;padding-left:22px}
.ra-list li{margin:3px 0}
.ra-cols{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
.ra-col .ra-grp:first-child{margin-top:0}
.ra-grp{margin-top:12px}
.ra-gh{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(90px,1fr) 120px 100px;gap:12px;align-items:end;border-bottom:1px solid var(--line);padding-bottom:6px}
.ra-gh h3{margin:0;font-size:15px}
.ra-gn{margin:6px 0 2px}
.ra-gh span{font-size:13px;color:var(--muted)}
.ra-gh span:first-of-type{grid-column:3}
.ra-row{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(90px,1fr) 120px 100px;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line2, var(--line))}
.ra-lab{font-size:14px;color:var(--ink)}
.ra-row .numbox input{text-align:right}
.ra-cur{font-size:14px;color:var(--muted);text-align:right}
.ra-srow .ra-se{grid-column:2 / span 2;width:100%}
.ra-row.on .ra-lab{font-weight:700}
.ra-srow.on .ra-se{box-shadow:0 0 0 2px var(--s1) inset}
.ra-row.on .numbox{box-shadow:0 0 0 2px var(--s1) inset;border-radius:8px}
@media (max-width:1180px){ .ra-cols{grid-template-columns:1fr} .ra-col + .ra-col .ra-grp:first-child{margin-top:12px} }
@media (max-width:760px){
  .ra-duo{grid-template-columns:1fr}
  .ra-gh{grid-template-columns:1fr 110px 90px}
  .ra-gh h3{grid-column:1 / -1}
  .ra-row{grid-template-columns:1fr 110px 90px}
  .ra-lab{grid-column:1 / -1}
  .ra-sl{grid-column:1}
  .ra-srow .ra-se{grid-column:1 / span 2}
}
/* Life-Cycle Monte Carlo (version 360): the life as a ribbon of phases, a card per phase with its own colour and
   icon, the ring for the money that lasted, and the four illustrated steps */
.lc-ed{ margin:4px 0 16px; padding-bottom:16px; border-bottom:1px solid var(--line2); }
.lc-edh .hint{ margin:2px 0 10px; }
.lc-rib{ display:flex; gap:3px; border-radius:999px; overflow:hidden; min-height:46px; margin-bottom:12px; background:var(--line2); }
.lc-seg{ display:flex; align-items:center; gap:8px; min-width:72px; padding:6px 14px 6px 8px; background:var(--surface2); background:color-mix(in srgb, var(--lc) 14%, var(--surface)); border-bottom:3px solid var(--lc); }
.lc-ic{ width:28px; height:28px; flex:none; border-radius:50%; display:grid; place-items:center; color:#fff; background:var(--lc); }
.lc-ic svg{ width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.lc-seg-t{ display:flex; flex-direction:column; min-width:0; font:12px/1.3 var(--sans); color:var(--muted); }
.lc-seg-t b{ font:600 13px/1.3 var(--sans); color:var(--ink); }
.lc-seg-t b, .lc-seg-t span{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lc-cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; }
.lc-card{ border:1px solid var(--line); border-top:5px solid var(--lc); border-radius:16px; background:var(--surface); padding:10px 12px 12px; min-width:0; box-shadow:0 1px 0 var(--line2); }
.lc-card-h{ display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.lc-num{ flex:none; width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font:700 12px/1 var(--sans); color:var(--lc); border:1.5px solid var(--lc); }
.lc-name{ flex:1; min-width:0; font:600 15px/1.3 var(--sans); color:var(--ink); background:transparent; border:1px solid transparent; border-radius:8px; padding:4px 6px; }
.lc-name:hover, .lc-name:focus{ border-color:var(--line); background:var(--surface2); }
.lc-x{ flex:none; width:28px; height:28px; border-radius:50%; border:1px solid var(--line); background:var(--surface); color:var(--muted); font:600 16px/1 var(--sans); cursor:pointer; }
.lc-x:hover{ color:var(--s3); border-color:var(--s3); }
.lc-card-b{ display:grid; gap:9px; }
.lc-f{ display:flex; flex-direction:column; gap:3px; min-width:0; font:12px/1.3 var(--sans); color:var(--muted); }
.lc-f > span:first-child{ font-weight:600; color:var(--ink); }
.lc-f select{ width:100%; min-width:0; border:1px solid var(--line); background:var(--surface2); color:var(--ink); border-radius:8px; padding:7px 9px; font-size:13.5px; }
.lc-f select:focus{ outline:0; border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-softer); }
.lc-f .numbox{ width:100%; padding:4px 10px; }
.lc-f .numbox input{ width:100%; min-width:0; color:var(--ink); }
.lc-f input[aria-invalid="true"]{ outline:2px solid var(--s3); }
.lc-amt{ display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:8px; }
.lc-amt[hidden]{ display:none; }
.lc-chk{ grid-column:1 / -1; display:flex; align-items:center; gap:6px; font:13px/1.3 var(--sans); color:var(--ink); }
.lc-mixrow{ display:flex; align-items:center; gap:8px; font:600 12px/1.3 var(--sans); color:var(--ink); }
.lc-mix{ flex:1; display:flex; height:12px; border-radius:999px; overflow:hidden; background:var(--line2); }
.lc-mix i{ display:block; height:100%; }
.lc-w{ display:grid; gap:5px; }
.lc-wf{ flex-direction:row; align-items:center; justify-content:space-between; gap:8px; }
.lc-wf > span:first-child{ white-space:nowrap; }
.lc-f.lc-wf .numbox{ width:96px; flex:none; padding:2px 10px; }
.lc-dot{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:4px; vertical-align:-1px; }
.lc-sum{ margin:0; font:12px/1.3 var(--sans); color:var(--warn); }
.lc-sum:empty{ display:none; }
.lc-add{ min-height:140px; border:2px dashed var(--line); border-radius:16px; background:transparent; color:var(--muted); font:600 14px/1.3 var(--sans); cursor:pointer; }
.lc-add span{ display:block; font-size:26px; line-height:1; margin-bottom:4px; }
.lc-add:hover, .lc-add:focus-visible{ border-color:var(--s2); color:var(--s2); }
.lc-more{ margin-top:12px; border:1px solid var(--line); border-radius:12px; padding:8px 12px; background:var(--surface2); }
.lc-more summary{ cursor:pointer; font:600 13px/1.5 var(--sans); color:var(--ink); }
.lc-more-f{ margin-top:10px; }
.lc-hero{ display:flex; align-items:center; gap:14px; padding:10px 14px; border-radius:16px; background:var(--surface2); margin:6px 0 10px; }
.lc-hero svg{ flex:none; }
.lc-ring-bg{ fill:none; stroke:var(--line); stroke-width:9; }
.lc-ring{ fill:none; stroke:var(--s4); stroke-width:9; stroke-linecap:round; }
.lc-ring-t{ font:700 18px/1 var(--sans); fill:var(--ink); }
.lc-hero-k{ font:600 12px/1.3 var(--sans); color:var(--muted); }
.lc-hero-v{ font:700 20px/1.25 var(--sans); color:var(--ink); }
.lc-hero-s{ font:13px/1.45 var(--sans); color:var(--muted); margin-top:2px; }
.lc-tbl th[scope="row"]{ min-width:130px; }
.lc-tn{ display:block; font-weight:600; padding-left:8px; border-left:3px solid var(--lc, var(--line)); }
.lc-tw{ display:block; font:12px/1.3 var(--sans); color:var(--muted); padding-left:11px; }
.lc-steps{ display:grid; gap:16px; margin-bottom:14px; }
.lc-step{ display:grid; grid-template-columns:36px minmax(0,1fr); gap:12px; }
.lc-step-n{ width:32px; height:32px; border-radius:50%; display:grid; place-items:center; font:700 15px/1 var(--sans); color:var(--s2); border:2px solid var(--s2); background:var(--surface); }
.lc-step-b{ min-width:0; }
.lc-step-b h3{ margin:4px 0; font:600 15px/1.3 var(--sans); color:var(--ink); }
.lc-step-b p{ margin:0 0 8px; font:14px/1.55 var(--sans); color:var(--ink); max-width:72ch; }
.lc-ill{ display:block; max-width:none; }
.lc-up{ fill:var(--s4); }
.lc-dn{ fill:var(--s3); }
.lc-blk{ fill:var(--lc); fill-opacity:.22; stroke:var(--lc); stroke-width:1.5; }
.lc-blk-t{ font:600 12px/1 var(--sans); fill:var(--ink); }
@media (max-width:700px){
  .lc-rib{ flex-direction:column; border-radius:14px; }
  .lc-seg{ flex:none !important; }
}
/* the Monte Carlo Mix Finder (version 338): the investments and the pairs as two small tables around the fields */
#tp_mco .tl-form{ grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
.mco-tab{ grid-column:1/-1; display:grid; gap:6px; border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:var(--surface2); }
.mco-hd,.mco-row{ display:grid; grid-template-columns:minmax(150px,1.6fr) repeat(7,minmax(58px,1fr)); gap:6px 8px; align-items:center; }
.mco-hd{ font:600 12px/1.3 var(--sans); color:var(--muted); }
.mco-hd .mco-span{ grid-column:span 3; }
.mco-pairs .mco-hd,.mco-pairs .mco-row{ grid-template-columns:minmax(220px,2fr) repeat(2,minmax(80px,1fr)); }
.mco-cash{ grid-template-columns:minmax(150px,1.6fr) repeat(7,minmax(58px,1fr)); }
.mco-cash .mco-cell:nth-of-type(1){ grid-column:3; }
.mco-rn{ font:600 13px/1.3 var(--sans); color:var(--ink); }
.mco-cell{ margin:0; }
.mco-cell > span:first-child{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.mco-cell .numbox{ padding:3px 6px; }
.mco-row[hidden]{ display:none; }
@media (max-width:900px){ .mco-hd,.mco-pairs .mco-hd{ display:none; } .mco-row,.mco-pairs .mco-row,.mco-cash{ grid-template-columns:repeat(2,minmax(0,1fr)); } .mco-rn{ grid-column:1/-1; } .mco-tab{ padding:10px; } .mco-cell > span:first-child{ position:static; width:auto; height:auto; clip:auto; white-space:normal; } }
/* the Planner Guide (version 335): the guide's stories, one disclosure each, and the guide's pictures in the app's colours */
#viewUguide{ --f1:var(--s1); --f2:var(--good); --f3:var(--warn); --f4:var(--crit); --f5:var(--s2); --fi:var(--on-s); --ftrack:var(--line2); }
.ug-bar{ display:flex; flex-wrap:wrap; gap:10px 12px; align-items:center; }
.ug-seg{ display:flex; flex-wrap:wrap; gap:6px; }
.ug-seg button{ font:500 13px/1 var(--sans); color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:999px; padding:8px 13px; cursor:pointer; display:inline-flex; align-items:center; gap:7px; }
.ug-seg button[aria-pressed="true"]{ background:var(--ink); color:var(--bg); border-color:var(--ink); }
.ug-seg .n{ font-variant-numeric:tabular-nums; opacity:.7; font-size:12px; }
.ug-q{ flex:1 1 220px; display:flex; }
.ug-q input{ width:100%; font:14px/1.2 var(--sans); color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:9px 11px; }
.ug-sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.ug-count{ width:100%; margin:0; }
.ug-list{ display:grid; gap:10px; margin-top:12px; }
.ug-st{ background:var(--surface); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); }
.ug-st > summary{ list-style:none; cursor:pointer; display:grid; grid-template-columns:34px minmax(0,1fr); gap:4px 10px; padding:14px 16px; align-items:start; }
.ug-st > summary::-webkit-details-marker{ display:none; }
.ug-st > summary:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; border-radius:12px; }
.ug-n{ font:600 20px/1.2 var(--sans); color:var(--muted); font-variant-numeric:tabular-nums; grid-row:span 2; }
.ug-tt{ font:600 16px/1.35 var(--sans); color:var(--ink); }
.ug-tags{ display:flex; flex-wrap:wrap; gap:6px 12px; align-items:center; font-size:12px; color:var(--muted); }
.ug-topic,.ug-pic{ font:500 12px/1 var(--sans); padding:4px 8px; border-radius:999px; background:var(--surface2); color:var(--ink2); }
.ug-pic{ background:var(--accent-softer); }
.ug-lvl{ display:inline-flex; align-items:center; gap:6px; font:600 12px/1 var(--sans); }
.ug-l1{ color:var(--good); } .ug-l2{ color:var(--warn); } .ug-l3{ color:var(--crit); }
.ug-bars{ display:inline-grid; grid-template-columns:repeat(3,4px); gap:2px; align-items:end; height:12px; }
.ug-bars i{ display:block; width:4px; border-radius:1px; background:currentColor; opacity:.25; }
.ug-bars i:nth-child(1){ height:6px; } .ug-bars i:nth-child(2){ height:9px; } .ug-bars i:nth-child(3){ height:12px; }
.ug-bars i.on{ opacity:1; }
.ug-seg .ug-bars{ color:var(--accent); }
.ug-body{ display:grid; gap:14px; padding:0 16px 18px 60px; max-width:900px; }
@media (max-width:640px){ .ug-body{ padding-left:16px; } }
.ug-sit{ margin:0; font-size:15px; line-height:1.6; }
.ug-qq{ margin:0; padding:11px 14px; border-radius:8px; background:var(--accent-softer); font-weight:600; font-size:14px; }
.ug-qq b{ display:block; font:600 12px/1 var(--sans); letter-spacing:.06em; text-transform:uppercase; color:var(--accent-ink); margin-bottom:6px; }
.ug-h{ font:600 12px/1.3 var(--sans); letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:0 0 6px; }
.ug-steps,.ug-walk{ margin:0; padding-left:22px; display:grid; gap:7px; font-size:14px; }
.ug-walk .ug-wh{ display:block; }
.ug-walk p{ margin:2px 0 0; }
.ug-look{ margin:0; padding-left:20px; display:grid; gap:5px; font-size:14px; }
.ug-pro{ border-left:3px solid var(--accent); padding:2px 0 2px 12px; font-size:14px; }
.ug-pro p{ margin:0; }
.ug-bring{ font-size:13px; color:var(--ink2); }
.ug-bring p{ margin:0; }
.ug-nav{ display:inline; font:600 13px/1.5 var(--sans); color:var(--ink); background:var(--surface2); border:1px solid var(--line); border-radius:6px; padding:1px 6px; -webkit-box-decoration-break:clone; box-decoration-break:clone; }
button.ug-go{ cursor:pointer; color:var(--accent-ink); text-align:left; }
button.ug-go:hover{ border-color:var(--accent); }
.ug-off{ color:var(--muted); border-style:dashed; cursor:help; }
.ug-btn{ font:600 13px/1.5 var(--sans); color:var(--accent-ink); border:1px solid var(--accent); border-radius:6px; padding:0 6px; white-space:nowrap; }
.ug-fig{ margin:0; padding:12px 14px 10px; background:var(--bg); border:1px solid var(--line); border-radius:10px; }
.ug-art svg{ display:block; width:100%; height:auto; overflow:visible; }
.ug-art .ug-p + .ug-p{ margin-top:14px; }
.ug-fh{ font:600 13px/1.35 var(--sans); color:var(--muted); margin:0 0 6px; }
.ug-lg{ display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12.5px; color:var(--ink2); margin-top:6px; }
.ug-lg i{ display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:6px; vertical-align:-1px; }
.ug-fig figcaption{ font-size:13px; line-height:1.5; color:var(--ink2); margin-top:8px; }
/* Give Your Vest a Job (version 351): the vests' four jobs as a bar and four cards */
.vj-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:10px; }
.vj-job{ border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:var(--surface2); min-width:0; }
.vj-h{ display:flex; align-items:center; gap:8px; font:600 13px/1.3 var(--sans); color:var(--ink); }
.vj-v{ font:700 18px/1.25 var(--sans); color:var(--ink); margin-top:6px; }
.vj-p{ font:12px/1.4 var(--sans); color:var(--muted); margin-top:2px; }
.vj-ic{ width:24px; height:24px; flex:none; border-radius:7px; display:grid; place-items:center; color:#fff; }
.vj-ic svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.vj-due-bg{ fill:var(--surface); }
.vj-due-ln{ stroke:var(--s1); stroke-width:3; }
.vj-lg-due{ display:inline-block; width:16px; height:9px; margin-right:6px; vertical-align:middle; border-radius:2px; background:repeating-linear-gradient(45deg,var(--s1) 0 2px,var(--surface) 2px 5px); border:1px solid var(--s1); }
.vj-tbl tr.vj-past td{ color:var(--muted); }
@media (max-width:700px){ .vj-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
/* the Easy view's tools in plain words (version 339): a picture and three short lines under the title, in Easy only */
.tz{ display:grid; grid-template-columns:minmax(200px,260px) minmax(0,1fr); gap:10px 18px; align-items:center; margin:12px 0 4px; padding:12px 14px; border-radius:12px; background:var(--surface2); border:1px solid var(--line2); }
.tz-pic svg{ display:block; width:100%; height:auto; overflow:visible; }
.tz-txt{ display:grid; gap:6px; font-size:14px; line-height:1.5; color:var(--ink); }
.tz-txt p{ margin:0; }
.tz-txt b{ color:var(--accent-ink); }
.tz-w{ display:flex; flex-wrap:wrap; gap:4px 12px; align-items:center; }
.tz-term{ white-space:nowrap; font-weight:600; }
@media (max-width:720px){ .tz{ grid-template-columns:minmax(0,1fr); } .tz-pic{ max-width:320px; } }
/* The Easy view's look (versions 343 to 345): the purple brand, simplified, for people new to planning. Everything here
   sits under html[data-mode="easy"], so the other views keep their look; colours come from the theme tokens, so it
   follows the device's light or dark setting like the rest of the page. */
:root{ --ez-grid:rgba(35,21,87,.04); --ez-ring:rgba(10,203,245,.55); }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --ez-grid:rgba(10,203,245,.05); } }
:root[data-theme="dark"]{ --ez-grid:rgba(10,203,245,.05); }
/* step 1 (version 343): the frame. A faint grid behind the page, like squared paper, for the IT feel; a roomier menu,
   with the five tabs to fill in numbered in the order to fill them; rounder cards; bigger buttons and a clearer focus. */
html[data-mode="easy"] body{ background-image:linear-gradient(var(--ez-grid) 1px, transparent 1px), linear-gradient(90deg, var(--ez-grid) 1px, transparent 1px); background-size:28px 28px; background-attachment:fixed; }
html[data-mode="easy"] .shell .tabs button{ padding-block:7px; font-size:14.5px; line-height:1.3; gap:10px; border-radius:8px; white-space:nowrap; }
html[data-mode="easy"] .shell .tabs .ti{ width:17px; height:17px; }
html[data-mode="easy"] .navgrp{ padding:10px 10px 3px; font-size:12px; }
html[data-mode="easy"] :is(#tabPeople,#tabInc,#tabExp,#tabAcct,#tabPset)::after{ margin-left:auto; flex:none; width:20px; height:20px; border-radius:50%; display:grid; place-items:center; font:600 12px/1 var(--mono); border:1px solid rgba(255,255,255,.4); color:rgba(255,255,255,.9); }
html[data-mode="easy"] #tabPeople::after{ content:"1" / ""; }
html[data-mode="easy"] #tabInc::after{ content:"2" / ""; }
html[data-mode="easy"] #tabExp::after{ content:"3" / ""; }
html[data-mode="easy"] #tabAcct::after{ content:"4" / ""; }
html[data-mode="easy"] #tabPset::after{ content:"5" / ""; }
html[data-mode="easy"] .tabs button[aria-selected="true"]::after{ border-color:rgba(18,11,51,.55); color:#120B33; }
html[data-mode="easy"] .card{ border-radius:16px; }
html[data-mode="easy"] .btn{ min-height:36px; }
html[data-mode="easy"] :is(a,button,input,select,textarea,summary):focus-visible{ outline:3px solid var(--ez-ring); outline-offset:2px; }
/* step 2 (version 344): the Plan tab. The risk scale thicker, its words in plain type and the band you are in lit;
   a numbered bar under the headline to jump to each card. */
.ez-jump{ display:none; }
html[data-mode="easy"] .scale i{ height:12px; border-radius:4px; opacity:.3; }
html[data-mode="easy"] .scale i.on{ opacity:1; box-shadow:0 0 0 2px rgba(255,255,255,.75); }
html[data-mode="easy"] .scale-l{ font:500 12.5px/1.4 var(--sans); color:#DCD8F7; margin-top:5px; }
html[data-mode="easy"] .ez-jump:not(:empty){ display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; padding:12px 14px; background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); }
html[data-mode="easy"] .ez-jl{ font:600 12px/1 var(--mono); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-right:4px; }
html[data-mode="easy"] .ez-jb{ display:inline-flex; align-items:center; gap:8px; min-height:36px; padding:6px 12px 6px 8px; border-radius:999px; border:1px solid var(--line); background:var(--surface2); color:var(--ink); font:600 13.5px/1.2 var(--sans); cursor:pointer; }
html[data-mode="easy"] .ez-jb:hover{ border-color:var(--accent); }
html[data-mode="easy"] .ez-jb small{ display:grid; place-items:center; min-width:26px; height:22px; padding:0 4px; border-radius:999px; background:var(--brand); color:var(--on-brand); font:600 12px/1 var(--mono); }
/* step 3 (version 345): the tabs to fill in. Each ends with the step it is and a button to the next; Plan Settings
   uses the full width for its one group of settings, and leaves the six named portfolio mixes to the other views. */
.ez-next{ display:none; }
html[data-mode="easy"] .ez-next{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; margin-top:18px; padding:14px 18px; border-radius:16px; background:var(--accent-softer); border:1px solid var(--accent-soft); }
html[data-mode="easy"] .ez-next p{ margin:0; font-size:15px; color:var(--ink); }
html[data-mode="easy"] .ez-next b{ font-family:var(--mono); font-size:13px; letter-spacing:.04em; color:var(--accent-ink); margin-right:4px; }
html[data-mode="easy"] .ez-next .btn{ min-height:40px; padding-inline:18px; }
html[data-mode="easy"] .psgroups{ grid-template-columns:minmax(0,1fr); }
html[data-mode="easy"] #portCard{ display:none; }
/* The Easy view's first screen (version 373): three numbers, one next step, and the rest of the Plan tab behind Show
   More Detail. Easy only; the other views never show the card and always show the rest. */
#ezCalm{ display:none; }
html[data-mode="easy"] #ezCalm{ display:block; }
#ezCalm h2{ margin-top:0; }
html[data-mode="easy"][data-ezmore="0"] #ezCalm ~ *{ display:none !important; }
.ezc-nums{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; margin-top:12px; }
.ezc-n{ border:1px solid var(--line); border-radius:12px; padding:12px 14px; min-width:0; }
.ezc-n b{ display:block; font-size:26px; line-height:1.2; margin:4px 0 2px; overflow-wrap:anywhere; }
.ezc-k{ display:block; font-weight:600; font-size:14px; }
.ezc-s{ display:block; font-size:13px; color:var(--muted); }
.ezc-next{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; margin-top:16px; }
.ezc-next p{ margin:0; flex:1 1 280px; font-size:15px; }
.ezc-more{ margin:14px 0 0; }
@media (max-width:640px){ .ezc-nums{ grid-template-columns:minmax(0, 1fr); } }
/* Finding your way (version 374): Start Here under the search box, pinned and recent in the search box and above the
   tools, and the way back from a tool. */
.nfocus{ display:flex; align-items:center; gap:8px; margin:8px 2px 4px; }
.nfocus label{ font:600 12px/1.2 var(--mono); letter-spacing:.06em; text-transform:uppercase; color:#C9C3EE; white-space:nowrap; }
.nfocus select{ flex:1; min-width:0; font-size:13px; padding:4px 6px; border-radius:8px; }
html[data-mode="client"] .nfocus, html[data-mode="learn"] .nfocus{ display:none; }
#tlPick button[data-off]{ display:none !important; }
#tlPick .tl-grp[hidden]{ display:none !important; }
.tl-focus{ margin:0 0 10px; font-size:14px; }
.tl-quick{ display:flex; flex-direction:column; gap:6px; margin:0 0 12px; }
.nq-row{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; }
.nq-l{ font:600 12px/1 var(--mono); letter-spacing:.06em; text-transform:uppercase; color:var(--muted); min-width:64px; }
.tl-crumb{ margin:0 0 8px; font-size:14px; }
.tl-crumb[hidden]{ display:none; }
.sq-nav{ padding:4px 8px 8px; }
.sq-nav[hidden]{ display:none; }
.sq-nav .nq-h{ font:600 12px/1 var(--mono); letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:8px 4px 4px; }
.sq-nav ul{ list-style:none; margin:0; padding:0; }
.sq-nav li{ display:flex; align-items:center; gap:4px; }
.sq-nav .nq-go{ flex:1; text-align:left; display:flex; justify-content:space-between; gap:8px; padding:5px 6px; border-radius:6px; background:none; border:0; color:inherit; font:inherit; font-size:14px; cursor:pointer; }
.sq-nav .nq-go small{ color:var(--muted); font-size:12px; }
.sq-nav .nq-go:hover, .sq-nav .nq-go:focus-visible{ background:var(--hover, rgba(127,127,127,.12)); }
.sq-nav .nq-pin{ background:none; border:0; color:inherit; font-size:16px; line-height:1; padding:4px 6px; cursor:pointer; border-radius:6px; }
.sq-nav .nq-pin[aria-pressed="true"]{ color:#E0A100; }
/* The glossary at the end of the Planner Guide, and recent searches in the search box (version 375). */
.gl-list{ display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:4px 28px; margin:12px 0 0; }
.gl-row{ padding:8px 6px; border-bottom:1px solid var(--line2); border-radius:6px; }
.gl-row dt{ font-weight:700; margin:0 0 2px; }
.gl-row dd{ margin:0; font-size:14.5px; line-height:1.5; }
.gl-row dt:focus{ outline:none; }
.sq-nav .nq-sq{ display:flex; flex-wrap:wrap; gap:6px; padding:2px 4px 4px; }
.sq-nav .nq-clr{ float:right; font-size:12px; text-transform:none; letter-spacing:0; }
@media (max-width:640px){ .gl-list{ grid-template-columns:minmax(0, 1fr); } }
/* Home (version 376): the tiles a returning user sees first. */
.hm-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(270px, 1fr)); gap:16px; }
.hm-tile{ display:flex; flex-direction:column; gap:4px; margin:0; }
.hm-tile h2{ margin:0 0 4px; font-size:16px; }
.hm-v{ font:700 30px/1.15 var(--sans); color:var(--ink); }
.hm-up .hm-v{ color:var(--good, #15803D); }
.hm-down .hm-v{ color:var(--warn, #B45309); }
.hm-s{ margin:0; font-size:14px; line-height:1.45; color:var(--ink2); }
.hm-go{ margin-top:auto; align-self:flex-start; padding-top:8px; font-size:14px; }
.hm-spark{ width:100%; max-width:260px; height:46px; color:var(--s1, #6D28D9); margin-top:4px; }
.hm-bar{ height:10px; border-radius:5px; background:var(--line2); overflow:hidden; margin-top:6px; }
.hm-bar i{ display:block; height:100%; background:var(--s1, #6D28D9); border-radius:5px; }
.hm-bar.over i{ background:var(--warn, #B45309); }
.hm-steps{ margin:4px 0 0; padding-left:20px; font-size:14px; line-height:1.5; }
.hm-steps b{ font-weight:700; margin-right:4px; }
.hm-pick{ margin-bottom:16px; }
.hm-list{ list-style:none; margin:8px 0; padding:0; display:flex; flex-direction:column; gap:6px; max-width:520px; }
.bk-nag{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 20px; border-left:4px solid var(--warn); }
.bk-nag h2{ margin:0 0 4px; font-size:17px; }
.bk-nag p{ margin:0; max-width:640px; }
.bk-nag[hidden]{ display:none; }
.hm-list li{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:6px 8px; border:1px solid var(--line2); border-radius:8px; }
.hm-mv{ display:flex; gap:6px; }
/* New charts (version 377): the chance of lasting year by year, spending by group, where it went, and day by day. */
.prv-seg{ margin:4px 0 10px; }
.prv-share{ margin-top:12px; }
.prv-h{ font-size:14px; margin:0 0 6px; }
.prv-bar{ display:flex; height:16px; border-radius:6px; overflow:hidden; background:var(--line2); }
.prv-bar i{ display:block; height:100%; }
.prv-lg b{ margin-left:3px; }
.prv-calw{ overflow-x:auto; margin-top:6px; }
.prv-cal text{ font-size:12px; }
.prv-d{ stroke:none; }
.prv-l0{ fill:var(--line2); }
.prv-l1{ fill:var(--s2); fill-opacity:.28; }
.prv-l2{ fill:var(--s2); fill-opacity:.5; }
.prv-l3{ fill:var(--s2); fill-opacity:.75; }
.prv-l4{ fill:var(--s2); fill-opacity:1; }
.prv-key{ align-items:center; gap:4px; font-size:12px; }
.prv-sq{ display:inline-block; width:12px; height:12px; border-radius:2px; background:var(--s2); }
.prv-sq.prv-l0{ background:var(--line2); }
.prv-sq.prv-l1{ opacity:.28; } .prv-sq.prv-l2{ opacity:.5; } .prv-sq.prv-l3{ opacity:.75; }
/* Month by month: envelopes (version 379). */
.env-top{ display:flex; flex-wrap:wrap; gap:16px; align-items:flex-end; }
.env-pay{ min-width:220px; }
.env-sum{ border:1px solid var(--line); border-radius:12px; padding:10px 14px; min-width:200px; }
.env-sum .k{ display:block; font-weight:600; font-size:13px; }
.env-sum b{ display:block; font-size:24px; line-height:1.2; }
.env-sum small{ font-size:12.5px; color:var(--muted); }
.env-sum.ok b{ color:var(--good); } .env-sum.over b{ color:var(--crit); } .env-sum.left b{ color:var(--warn); }
.env-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:8px; margin-top:10px; }
.env-e{ position:relative; border:1px solid var(--line2); border-radius:10px; padding:8px 10px 12px; display:flex; justify-content:space-between; gap:8px; font-size:14px; overflow:hidden; }
.env-e i{ position:absolute; left:0; bottom:0; height:4px; background:var(--s1); }
.env-h{ font-size:15px; margin:18px 0 4px; }
.env-sk{ list-style:none; margin:6px 0; padding:0; display:flex; flex-direction:column; gap:6px; }
.env-sk li{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; font-size:14px; }
.env-sk small{ color:var(--muted); font-size:12.5px; }
.env-z{ font-size:13.5px; color:var(--ink2); }
.env-neg{ color:var(--crit); font-weight:600; }
/* Bills and subscriptions (version 380). */
.bl-list{ list-style:none; margin:8px 0; padding:0; display:flex; flex-direction:column; gap:6px; }
.bl-list li{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.bl-list input[data-blk="name"]{ width:170px; } .bl-list input[data-blk="amt"]{ width:96px; text-align:right; }
.bl-found{ list-style:none; margin:6px 0; padding:0; display:flex; flex-direction:column; gap:6px; }
.bl-found li{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; font-size:14px; border:1px solid var(--line2); border-radius:8px; padding:6px 10px; }
.bl-cal{ width:100%; border-collapse:collapse; table-layout:fixed; min-width:640px; }
.bl-cal th{ font-size:12px; font-weight:600; color:var(--muted); padding:4px; text-align:left; }
.bl-cal td{ vertical-align:top; height:64px; border:1px solid var(--line2); padding:3px 4px; font-size:12px; }
.bl-cal td.bl-x{ background:transparent; border-color:transparent; }
.bl-cal td.bl-today{ outline:2px solid var(--s1); outline-offset:-2px; }
.bl-d{ display:block; font-weight:700; font-size:12px; color:var(--ink2); }
.bl-b{ display:block; font-size:12px; line-height:1.3; margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bl-cash{ display:flex; flex-wrap:wrap; gap:12px; margin:6px 0 10px; }
.bl-cash .field{ min-width:160px; }
.bl-cash .field, .env-pay{ display:flex; flex-direction:column; gap:4px; }
.bl-cash .field input{ width:160px; }
/* Fixes from the WCAG 2.2 AA check (version 385, wcag.js): text contrast of at least 4.5 to 1 (3 to 1 for large
   text), and targets of at least 24 by 24 pixels where they are not inside a line of text. */
:root{ --accent-ink:#066A8C; }   /* links on a tinted note, light theme; the dark themes set their own */
.navgrp{ color:#D2CDF2; }
.ytl-rel{ color:var(--ink2); }
.mm-half>h2{ color:var(--ink); border-left:4px solid var(--q); padding-left:6px; }
.mm-side.R .mm-half>h2{ border-left:0; border-right:4px solid var(--q); padding:0 6px 0 0; }
.tlsh b{ color:var(--ink); }
.tlcol>header{ color:var(--on-s); }
.ivtbl tr.emp th[scope=row]{ color:var(--ink); box-shadow:inset 3px 0 0 var(--cf-emp); padding-left:8px; }
.an-rk{ color:var(--ink2); }
.fp-card{ opacity:1; }   /* version 427: the cards were at .78, 3.4 to 1 */
.rq-tag{ color:var(--on-s); }
.ir-ud{ flex-direction:row; gap:2px; }
.ir-ud .ib{ width:24px; height:24px; }
.ir-ud.ir-ud-sp{ width:50px; height:24px; }   /* the empty place keeps the columns in line on every list (version 391) */
.ug-nav{ min-height:24px; }
.env-sk select{ min-height:26px; }
.pres-acts{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; justify-content:flex-end; margin:0 0 12px; }   /* version 387 */
.es-note{ margin:6px 4px 0; font-size:12px; line-height:1.4; color:#D2CDF2; }   /* version 386 */
.lang-row{ margin-top:14px; display:flex; flex-direction:column; gap:6px; max-width:320px; }
html[lang=es][data-mode=easy] .shell .tabs button{ white-space:normal; }
/* reflow (WCAG 1.4.10): a line chart drawn at one width shrinks with its card until it is drawn again */
#lyChart svg, #blChart svg, #prChart svg{ max-width:100%; height:auto; }
/* The whole menu fits a 900-pixel-high window again (version 390): Home (version 376) and Start Here (version 374) each
   took a row. Below 940 pixels the Start Here row, the group names and the rows are a little tighter, and Retirement
   Analysis fits on one line. */
@media (max-height:940px){
  .nfocus{margin:1px 2px 0}
  .nfocus select{padding:2px 6px;font-size:12.5px}
  .navgrp{padding:3px 10px 0;line-height:1.15}
  .shell .tabs button{line-height:1.15;padding-inline:8px;gap:8px;padding-block:1px}   /* 1.5 since version 398: Goals; 1 since version 426: Withdrawals; line height 1.15 since version 450: Share This Plan */
  .shell .tabs .ti{width:15px;height:15px}   /* since version 450 */
  #tabRa span{letter-spacing:-.015em}
}
@media (max-height:895px){   /* 800 until version 449 */
  .navgrp{padding-top:0;line-height:1.05}   /* 0 since version 426: Withdrawals; 1.05 since version 427: the names are 12 pixels */
  .shell .tabs button{line-height:1.05;padding-block:1px}   /* 1.05 since version 450: Share This Plan */
  .shell .tabs .ti{width:14px;height:14px}   /* 15 since version 398: Goals; 14 since version 450 */
  html[data-mode="easy"] .shell .tabs button{padding-block:6px}   /* since version 450 */
  .sbox input{padding-block:2px}
  .side{gap:4px;padding-block:8px}
  .sscroll{gap:4px}
}
/* Your Accounts in groups (version 393; 153-mod-acgrp.js) */
.acg+.acg{margin-top:16px}
.acg-h{display:flex;align-items:center;gap:12px;padding:2px 4px 0}
.acg-t{margin:0;flex:1 1 auto;min-width:0;font-size:15px;line-height:1.2}
.acg-tg{display:inline-flex;align-items:center;gap:9px;min-height:32px;padding:4px 6px 4px 2px;background:none;border:0;border-radius:8px;font:inherit;font-weight:700;color:var(--ink);cursor:pointer;text-align:left}
.acg-tg:hover{background:var(--surface2)}
.acg-tg:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.acg-ic{width:22px;height:22px;flex:none}
.acg-chev{width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin:-3px 0 0 4px;transition:transform .15s}
.acg.shut .acg-chev{transform:rotate(-45deg);margin-top:0}
.acg-n{font-size:12.5px;color:var(--muted);white-space:nowrap}
.acg-amt{font-family:var(--mono);font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:96px;text-align:right}
.acg-bar{height:4px;margin:6px 4px 10px;border-radius:2px;background:var(--line);overflow:hidden}
.acg-bar i{display:block;height:100%;border-radius:2px}
.acg.shut .acg-bar{margin-bottom:2px}
.acg-b[hidden]{display:none}
.acadd{flex-direction:column;align-items:stretch;gap:8px}
.acadd-g{position:relative;display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-left:178px;min-height:30px}
.acadd-l{position:absolute;left:0;top:9px;width:170px;font:600 12px/1.2 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
html[data-mode="easy"] .acadd{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}
html[data-mode="easy"] .acadd-g{display:contents}
html[data-mode="easy"] .ac-full{display:none !important}
html:not([data-mode="easy"]) .ac-ez{display:none !important}
@media (max-width:700px){ .acadd-g{padding-left:0} .acadd-l{position:static;width:100%} .acg-h{flex-wrap:wrap;row-gap:0} .acg-t{flex-basis:100%} .acg-n{padding-left:33px} .acg-amt{min-width:0;margin-left:auto} }

/* the order in each stage (version 430) */
.ac-stage .ac-st{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:6px 0}
.ac-stage .ac-st label{font-size:13.5px;color:var(--ink2)}
.ac-stage .ac-st select{min-width:min(260px,100%);border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font:inherit;font-size:13.5px;max-width:100%}

/* the harvest in the 0% bracket and the local tax (version 431) */
.ac-harv{display:flex;align-items:center;gap:8px;margin:12px 0 0;font-size:13.5px;color:var(--ink2);cursor:pointer}
.ac-harv input{width:16px;height:16px;margin:0;accent-color:var(--brand)}
#stLocB{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font:inherit;font-size:13.5px;max-width:100%}
/* What else you own, what you owe, and Net Worth Today (version 395; 155-mod-acnet.js) */
.ax-neg{color:var(--crit)}
.acg.acg-l1{margin-top:26px;padding-top:14px;border-top:1px dashed var(--line)}
.acx .ax-facts{margin:2px 0 8px}
.nw-big b{display:block;font:700 30px/1.15 var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}
.nw-big b.ax-neg{color:var(--crit)}
.nw-big span{display:block;margin-top:3px;font-size:12.5px;color:var(--muted)}
.nw-bars{display:grid;grid-template-columns:40px minmax(0,1fr);gap:6px 8px;align-items:center;margin:14px 0 10px}
.nw-bl{font:600 12px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.nw-bar{display:flex;height:14px;border-radius:4px;overflow:hidden;background:var(--surface2)}
.nw-bar i{display:block;height:100%;min-width:2px}
.nw-bar i+i{border-left:1px solid var(--surface)}
.nw-tbl{width:100%;border-collapse:collapse;font-size:13.5px;table-layout:fixed}
.nw-tbl td.n{width:8.2em}
.nw-tbl th{text-align:left;font-weight:500;padding:5px 8px 5px 0;color:var(--ink2)}
.nw-tbl td.n{text-align:right;padding:5px 0;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.nw-tbl .nw-sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:-1px}
.nw-tot th,.nw-tot td{font-weight:700;color:var(--ink);border-top:1px solid var(--line)}
.nw-tot th{padding-bottom:10px}
.nw-net th,.nw-net td{font-weight:700;font-size:15px;color:var(--ink);border-top:2px solid var(--ink);padding-top:9px}
.nw-net td.ax-neg{color:var(--crit)}
html[data-mode="easy"] #nwCard{display:none}
/* Net Worth Over Time (version 396; 156-mod-nwhist.js) */
.nwh-chart{margin:8px 0 4px;min-height:200px}
.nwh-chart svg{display:block;max-width:100%;height:auto}
.nwh-chart .ax{font-size:12px}
.nwh-chart .nwh-zero{stroke:var(--ink2);stroke-width:1.4}
.nwh-chart .nwh-nowl{font-weight:700;fill:var(--ink2)}
.nwh-chart .nwh-now rect{opacity:.88}
.nwh-line{stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.nwh-dot{fill:var(--surface);stroke:var(--ink);stroke-width:2}
.nwh-lg{margin-top:6px}
.nwh-ln{display:inline-block;width:18px;height:0;border-top:2px solid var(--ink);vertical-align:middle;margin-right:6px}
.nwh-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.nwh-tbl th,.nwh-tbl td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left}
.nwh-tbl .n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
html[data-mode="easy"] #nwhCard,html[data-mode="easy"] #nwhPtr{display:none}
/* Goals (version 398; 214-mod-goals.js) */
.gol-row{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:10px 12px 12px}
.gol-row+.gol-row{margin-top:10px}
.gol-main{display:grid;grid-template-columns:40px minmax(0,1fr) auto 14px;gap:4px 12px;align-items:center;width:100%;padding:2px 0;background:none;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:8px}
.gol-main:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.gol-pic{width:40px;height:40px}
.gol-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.gol-nm{font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gol-sub{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:12.5px;color:var(--muted)}
.gol-badge{display:inline-block;font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);white-space:nowrap}
.gol-r{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right}
.gol-amt{font-family:var(--mono);font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}
.gol-of{font-size:12.5px;color:var(--muted);white-space:nowrap}
.gol-chev{width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin-top:-4px;transition:transform .15s}
.gol-row.open .gol-chev{transform:rotate(-135deg);margin-top:4px}
.gol-bar{height:8px;margin:10px 0 0 52px;border-radius:4px;background:var(--line);overflow:hidden}
.gol-bar[data-none]{opacity:.5}
.gol-bar i{display:block;height:100%;border-radius:4px;min-width:0}
.gol-det{margin:12px 0 0 52px}
.gol-det[hidden]{display:none}
.gol-det .af input[type=text],.gol-det .af select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:7px 9px;font-size:13.5px;min-width:0;height:36px;box-sizing:border-box}
.gol-acts{margin-top:10px}
#golAdd{flex-direction:column;align-items:stretch;gap:8px}
.gol-ptr p{margin:0 0 10px}
@media (max-width:700px){
  .gol-main{grid-template-columns:40px minmax(0,1fr) 14px;grid-template-areas:"p t c" "p r c"}
  .gol-main .gol-pic{grid-area:p} .gol-t{grid-area:t} .gol-r{grid-area:r;align-items:flex-start;text-align:left} .gol-chev{grid-area:c}
  .gol-bar,.gol-det{margin-left:0}
}
/* Savings goals (version 399; 215-mod-golsave.js) */
.gol-date{display:flex;gap:6px}
.gol-date select{flex:1 1 auto;min-width:0}
.gol-date input{width:76px;flex:none}
.gol-det .af .numbox{display:flex;align-items:center;height:36px;box-sizing:border-box;border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:0 9px}
.gol-det .af .numbox input{border:0;background:transparent;height:auto;padding:0;flex:1 1 auto;min-width:0}
.gol-det .af input:disabled{opacity:.75}
.gol-addg+.gol-addg{margin-top:2px}
/* Goal suggestions (version 400; 216-mod-golsug.js) */
.gol-sug{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.gol-sug li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:start}
.gol-sug h3{margin:0 0 3px;font-size:14.5px}
.gol-sug p{margin:0;font-size:13px;color:var(--ink2);line-height:1.45}
.gol-sug-b{display:flex;gap:10px;align-items:center;margin-top:8px;flex-wrap:wrap}
.gol-sug .linkbtn{font-size:13px;min-height:24px}
/* How a savings goal grows (version 401; 217-mod-golproj.js) */
.gol-proj{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.gol-ph{margin:0 0 8px;font-size:14px}
.gol-pt{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.gol-pk{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface2);display:flex;flex-direction:column;gap:2px;min-width:0}
.gol-pk .k{font:600 12px/1.2 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.gol-pk b{font-family:var(--mono);font-size:16px;font-variant-numeric:tabular-nums}
.gol-pk .s{font-size:12px;color:var(--muted)}
.gol-pk1{background:var(--accent);border-color:var(--accent);--pk-ink:#fff}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .gol-pk1{--pk-ink:#120B33} }
:root[data-theme="dark"] .gol-pk1{--pk-ink:#120B33}
.gol-pk1 .k,.gol-pk1 b,.gol-pk1 .s{color:var(--pk-ink)}
.gol-chart{margin-top:10px}
.gol-chart svg{display:block;max-width:100%;height:auto}
.gol-chart .ax{font-size:12px}
.gol-area{fill:var(--accent);fill-opacity:.1}
.gol-bal{fill:none;stroke:var(--accent);stroke-width:2.4;stroke-linejoin:round}
.gol-real{fill:none;stroke:var(--good);stroke-width:2;stroke-linejoin:round}
.gol-put{fill:none;stroke:var(--muted);stroke-width:1.8;stroke-dasharray:6 4}
.gol-tgt{stroke:var(--warn);stroke-width:1.6;stroke-dasharray:2 3}
.gol-tgtl{fill:var(--warn);font-weight:700}
.gol-plg{margin-top:6px}
.gol-lk{display:inline-block;width:18px;height:0;vertical-align:middle;margin-right:6px;border-top:2px solid}
.gol-lb{border-color:var(--accent);border-top-width:3px}.gol-lr{border-color:var(--good)}.gol-lp{border-color:var(--muted);border-top-style:dashed}.gol-lt{border-color:var(--warn);border-top-style:dotted}
@media (max-width:700px){ .gol-pt{grid-template-columns:repeat(2,minmax(0,1fr))} }
/* The chance of lasting, year by year, as bars (version 402): the part that ran out before, the part that runs out that
   year, and the strip's lighter green for the scale's second step */
:root{--ly-new:var(--crit);--ly-prev:color-mix(in srgb, var(--crit) 42%, var(--surface));--ly-low:#74BD94}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--ly-low:#3C8F67}}
:root[data-theme="dark"]{--ly-low:#3C8F67}
#lyCard .fx-p{margin-top:8px}
#lyCard .ly-none{min-height:120px;display:flex;align-items:center;justify-content:center;text-align:center}
.ly-warn .fx-eye{color:var(--warn)} .ly-warn .fx-note{background:var(--warn-bg);color:var(--ink)}
#lyCard .fx-eye{font-size:12px}
/* the chance of lasting's details (version 403): the button for each year, and the years when some run out */
#lyCard .ly-yb{margin-top:6px}
#lyCard .fx-yy tr.ly-yr-out td:nth-child(3){color:var(--crit);font-weight:700}
#lyCard .fx-dl dd{white-space:nowrap}
@media (max-width:520px){#lyCard .fx-dl dd{white-space:normal}}
/* Home's tiles with a picture each (version 405), in the drawing style of the menu's icons: above the title, so a
   title keeps its whole width and the figures of a row stay level */
.hm-hd{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:0 0 4px}
.hm-tile .hm-hd h2{margin:0}
.hm-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--accent-softer);color:var(--accent-ink)}
.hm-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.hm-up .hm-ic{background:var(--good-bg);color:var(--good)}
.hm-down .hm-ic{background:var(--warn-bg);color:var(--warn)}
.hm-list .hm-ic{width:24px;height:24px;border-radius:7px;display:inline-grid;vertical-align:middle;margin-right:6px}
.hm-list .hm-ic svg{width:15px;height:15px}
/* Add a Pet on the budget card (version 406) */
.pet-form{margin:12px 0 4px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface2)}
.pet-form[hidden]{display:none}
.pet-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px 14px}
.pet-h{margin:8px 0 0}
.pet-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.bud-addrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* Treasury notes in a bonds account (version 407) */
.tsy{display:flex;flex-direction:column;gap:8px}
.tsy-sum{margin:0;font-size:13.5px;color:var(--ink2);line-height:1.45}
.tsy-lad{display:grid;gap:4px;max-width:520px}
.tsy-ly{display:grid;grid-template-columns:3.2em 1fr 6.6em;align-items:center;gap:8px;font-size:13px;font-variant-numeric:tabular-nums}
.tsy-yr{color:var(--ink2);font-weight:600}
.tsy-bar{height:10px;border-radius:5px;background:var(--line2);overflow:hidden}
.tsy-bar i{display:block;height:100%;border-radius:5px;background:var(--g-tax)}
.tsy-v{text-align:right;font-weight:700}
.tsy-list{display:grid;gap:8px}
.tsy-n{margin:0;border:1px solid var(--line);border-radius:10px;padding:8px 12px 10px;min-width:0}
.tsy-n legend{padding:0 6px;font-size:13px;font-weight:700;color:var(--ink)}
.tsy-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 12px;margin-bottom:8px}
.tsy-g input[type=date]{min-width:0;width:100%}
.tsy-acts{display:flex;flex-wrap:wrap;gap:8px}
.tsy-paste{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.tsy-paste[hidden]{display:none}
.tsy-paste textarea{width:100%;font:13px/1.4 var(--mono);min-height:96px}
@media (max-width:560px){.af .pair.acbal{flex-wrap:wrap}}   /* a narrow screen: the slider goes under the box */
/* the spending card's lines (version 410): the switch for health care beside the choice of headline */
.sp-hcin{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);cursor:pointer}
.sp-hcin[hidden]{display:none}
.sp-hcin input{width:16px;height:16px;margin:0;accent-color:var(--brand)}
/* a column's title over its figures (version 411): where the figures sit to the right, so does the title */
.ra-ct thead th{text-align:right}
.ra-ct thead tr:first-child th:first-child{text-align:left}
.ra-ct thead th[scope=colgroup]{text-align:center}
.eq-tbl thead th[scope=col]:not(:first-child){text-align:right}
#tp_iul .gv-tbl thead th[scope=col]:not(:first-child){text-align:right}
.rq-ans td:last-child{text-align:right}
/* every spending rule on the plan (version 412) */
.rlc{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.rlc h3{margin:0 0 4px;font-size:17px}
.rl-tbl td{text-align:right;white-space:nowrap}
.rl-tbl thead th{text-align:right}
.rl-tbl thead th:first-child{text-align:left}
.rl-tbl tbody th{white-space:normal;min-width:190px}
.rl-tbl td.rl-best{font-weight:700;color:var(--ink)}
.rl-tbl tr.rl-mine th,.rl-tbl tr.rl-mine td{background:var(--surface2)}
.rl-you{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--brand);color:#fff;font-size:12px;font-weight:700;vertical-align:1px}
.rl-stale{color:var(--crit);font-weight:600}
.rl-stale[hidden]{display:none}
.rl-tbl small{display:block;font-size:12px;color:var(--muted)}
.rl-tbl td.rl-act span{display:inline-flex;gap:6px}
.rlc .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* the spending card: the middle future a little wider than the hard and the strong one (version 413) */
#spGrid.sp-mid{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr)}
/* floors over the years, in the middle future made larger (version 414) */
.sp-fl,.sp-aca{margin:12px 0 4px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface2)}
.sp-fl-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sp-fl-hd h4{margin:0;font-size:15px}
.sp-fl .hint,.sp-aca .hint{margin:6px 0 8px}   /* the marketplace box looks the same (version 428) */
.sp-fl-rows{display:grid;gap:8px}
.sp-fl-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.sp-fl-row .af{display:flex;flex-direction:column;gap:3px;margin:0}
.sp-fl-row .sp-fl-y{width:7ch}
.sp-fl-row .sp-fl-v{width:11ch;text-align:right}
.sp-fl-row input[readonly]{background:transparent;border-color:transparent;color:var(--ink2)}
.sp-fl-n{font-size:12.5px;color:var(--muted);padding-bottom:8px}
/* Find Realistic Spending on What You Could Spend Each Year (version 435) */
.sp-find{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px 14px;margin:6px 0 10px}
.sp-find > .btn{flex:none}
.sp-find .hint{margin:0;flex:1 1 320px;max-width:880px}
.sp-find .sp-find-msg{flex-basis:100%;color:var(--ink);font-weight:600}
.sp-find .sp-find-msg:empty{display:none}
/* What If (version 416) */
.wicard{margin-top:16px}
.wi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:10px}
.wi-t{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:var(--surface);display:flex;flex-direction:column;gap:8px;min-width:0}
.wi-hd{display:flex;align-items:center;gap:10px}
.wi-hd h3{margin:0;font-size:16px}
.wi-ic{flex:none;width:34px;height:34px;border-radius:10px;background:var(--surface2);display:grid;place-items:center}
.wi-ic svg{width:20px;height:20px;fill:none;stroke:var(--brand);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.wi-d{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink2)}
.wi-f{display:flex;flex-wrap:wrap;gap:8px 10px}
.wi-f .af{display:flex;flex-direction:column;gap:3px;margin:0;min-width:0}
.wi-f input,.wi-f select{width:9ch;font-size:14px}
.wi-f select{width:auto;max-width:14ch}
.wi-in{display:inline-flex;align-items:center;gap:3px}
.wi-in i{font-style:normal;font-size:13px;color:var(--muted)}
.wi-src{margin:0;font-size:12px;line-height:1.4;color:var(--muted)}
.wi-src a{color:inherit}
.wi-act{display:flex;gap:8px;flex-wrap:wrap}
.wi-res:empty{display:none}
.wi-res p{margin:0 0 6px;font-size:13px;line-height:1.45}
.wi-err{color:var(--crit)}
.wi-run{color:var(--muted)}
.wi-dl{margin:0;display:grid;gap:4px}
.wi-dl div{display:flex;justify-content:space-between;gap:10px;font-size:13px;border-top:1px solid var(--line);padding-top:4px}
.wi-dl dt{color:var(--ink2)}
.wi-dl dd{margin:0;font-weight:700;white-space:nowrap}
.wi-dl dd.dn{color:var(--crit)}
.wi-dl dd.up{color:var(--good)}
.wi-note{margin-top:12px}
.wicard .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* The Same Plan, Other Assumptions (version 436) */
.oc-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:10px}
.oc-row{border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0;display:flex;flex-direction:column}
.oc-row.oc-big{border:2px solid var(--warn);padding:11px 13px}
.oc-k{font-weight:600;font-size:14px}
.oc-v{font-size:26px;font-weight:700;line-height:1.2;margin-top:6px}
.oc-l{font-size:13px;color:var(--muted)}
.oc-d{font-size:13px;margin-top:6px}
.oc-flag{display:block;font-weight:700;margin-top:2px}
.oc-s{font-size:13px;color:var(--muted);margin:6px 0 0}
.oc-row .btn{align-self:flex-start;margin-top:10px}
.oc-msg:empty{display:none}
/* What If, in groups (version 417) */
.wi-seg{margin:6px 0 2px;flex-wrap:wrap;max-width:100%}
.wi-seg button{white-space:nowrap}
@media (max-width:560px){.wi-seg{display:flex;width:100%}.wi-seg button{flex:1 1 auto;font-size:12.5px;padding:6px 8px}}
/* Your Retirement Paycheck (version 437) */
.pay-big{display:flex;align-items:baseline;gap:8px;margin-top:6px}
.pay-big b{font-size:34px;line-height:1.1}
.pay-big span{font-size:16px;color:var(--muted)}
.pay-l1{margin:6px 0 0;font-size:14px}
.pay-trig{margin-top:10px}
.pay-trig p{margin:4px 0;font-size:14px}
.pay-ask{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:12px}
.pay-ask[hidden]{display:none}
.pay-askl{font-weight:600;font-size:14px}
.pay-ask .numbox{max-width:180px}
.pay-ask .hint{flex-basis:100%;margin:0;font-size:14px;color:var(--ink)}
.pay-ask .hint:empty{display:none}
.pay-h3{margin:16px 0 8px;font-size:15px}
.pay-cuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.pay-t{border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-width:0}
.pay-tk{display:block;font-weight:600;font-size:13px}
.pay-t b{display:block;font-size:22px;margin:4px 0 2px}
.pay-ts{display:block;font-size:12px;color:var(--muted)}
.ezc-pay{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:12px}
.ezc-pay b{display:block;font-size:26px;line-height:1.2;margin:4px 0 2px}
.ezc-pay .ezc-k{display:block;font-weight:600;font-size:14px}
.ezc-pay .ezc-s{display:block;font-size:13px;color:var(--muted)}
/* the spending rules on a timeline (version 418) */
.rl-tbl td.rl-pick{text-align:center}
.rl-ck{display:inline-flex;align-items:center;gap:6px;cursor:pointer;min-height:24px;min-width:24px;justify-content:center}
.rl-ck input{width:16px;height:16px;margin:0;accent-color:var(--brand)}
.rl-n{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;color:#fff;font-size:12px;font-weight:700}
.rl-tlbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.rl-tlbar[hidden],.rl-tl[hidden]{display:none}
.rl-tlbar .hint{margin:0}
.rl-tl{margin-top:10px}
.rl-tl .fx-seg{margin-bottom:8px}
/* taxes this year, a guess (version 419) */
.ir1 .ir-taxb{flex:none;align-self:center}
.ir1 .ir-taxb[aria-expanded="true"]{color:var(--brand);background:var(--surface2)}
.ir-taxg{margin:0 12px 10px 46px}
.ir-taxg[hidden]{display:none}
.itx{border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--surface2)}
.itx h4{margin:0 0 6px;font-size:14px}
.itx dl{margin:0;display:grid;gap:3px}
.itx dl div{display:flex;justify-content:space-between;gap:12px;font-size:13.5px}
.itx dt{color:var(--ink2)}
.itx dd{margin:0;font-weight:600;white-space:nowrap}
.itx .itx-tot{border-top:1px solid var(--line);padding-top:3px;font-weight:700}
.itx .hint{margin:8px 0 0}
@media (max-width:560px){.ir-taxg{margin-left:12px}}
/* wide: the button sits over the end of the row's years column and takes no room of its own, so the amounts and the
   names line up with every other list's (version 423) */
@media (min-width:901px){
  .ir1 .ir-taxb{margin-left:-36px;position:relative}
  .ir1:has(button.ir-taxb) .ir-per{padding-right:30px}
}
/* sorting a list (version 420) */
.lsort{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px}
.lsort-l{font-size:12.5px;font-weight:700;color:var(--ink2);margin-right:2px}
.lsort .lsort-m{margin:0 0 0 4px}
.lsort .lsort-m:empty{display:none}
/* the state's tax rules on Your Accounts wrap on a phone (Texas's line ran 60 pixels past the screen) */
#acState .st-rules{width:100%}
#acState .st-rules td{white-space:normal;overflow-wrap:anywhere;vertical-align:top}
/* the Withdrawals tab (version 426) */
#viewWd .wdhd{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
#viewWd .wdhd h2{margin:0}
#viewWd .seg.wd-seg{display:inline-grid;grid-template-columns:auto auto}
#viewWd .wdbig{display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 12px}
#viewWd .wdbig>div{flex:1 1 160px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface2)}
#viewWd .wdbig span{display:block;font-size:12.5px;color:var(--muted)}
#viewWd .wdbig b{display:block;font-size:22px;color:var(--ink);margin-top:2px}
#viewWd .wdbar{position:relative;height:16px;border-radius:8px;overflow:hidden;background:var(--line2);margin:6px 0 6px}
#viewWd .wdbar span{position:absolute;top:0;bottom:0}
#viewWd .wdleg{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink2);margin-bottom:10px}
#viewWd .wdleg i,#viewWd .wddot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
#viewWd .wdtbl{margin:10px 0}
#viewWd .wdtbl tr.wdg th{font-weight:700}
#viewWd .wdtbl tr.wda th{padding-left:26px;font-weight:400;color:var(--ink2)}
#viewWd .wdtbl tr.wdt th,#viewWd .wdtbl tr.wdt td{border-top:2px solid var(--line)}
#viewWd .wdtbl tr.wdnow th,#viewWd .wdtbl tr.wdnow td{background:var(--accent-softer)}
#viewWd .wdtbl tr.wdover td{color:var(--crit)}
#viewWd .wdtbl td.wdbetter{color:var(--good);font-weight:700}
#viewWd .wdtbl td.wdworse{color:var(--crit);font-weight:700}
#viewWd .wdtag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:9px;background:var(--accent-soft);color:var(--ink);font-size:12px;font-weight:600}
#viewWd .wduse{max-width:460px}
#viewWd .wdnotes{margin:10px 0 0;padding-left:18px;font-size:13.5px;line-height:1.55;color:var(--ink2)}
#viewWd .wdnotes li{margin:4px 0}
#viewWd #wdWhyBody p{font-size:14px;line-height:1.55;margin:8px 0}
#viewWd #wdAca .seg{margin-top:6px}
#viewWd .wdone{font-size:15px;line-height:1.55;padding:12px 14px;border-left:4px solid var(--s2);background:var(--surface2);border-radius:0 10px 10px 0;margin:12px 0}
#viewWd .wdsteps{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:12px 0}
#viewWd .wdstep{position:relative;padding:12px 12px 10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
#viewWd .wdstep b{position:absolute;top:10px;right:12px;font-size:20px;color:var(--muted)}
#viewWd .wdstep p{margin:6px 0 0;font-size:13.5px;line-height:1.5}
#viewWd .wdico svg{width:30px;height:30px;fill:none;stroke:var(--s2);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#viewWd .wdpro{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
#viewWd .wdpro p{margin:0;padding:10px 12px;border-radius:10px;font-size:13.5px;line-height:1.5}
#viewWd .wdpro p:first-child{background:var(--good-bg)}
#viewWd .wdpro p:last-child{background:var(--warn-bg)}
#viewWd .wdladw{margin:14px 0 4px;max-width:720px}
#viewWd .wdlad{width:100%;height:auto;display:block}
#viewWd .wdlad text{fill:var(--ink);font-size:13px}
#viewWd .wdlad .wdlz{font-weight:700}
#viewWd .wdlad .wdlz2,#viewWd .wdlad .wdax,#viewWd .wdlad .wdlt,#viewWd .wdlad .wdlp2{fill:var(--ink2);font-size:12px}
#viewWd .wdlad .wdlp{font-weight:700}
#viewWd .wdlad .wdtick{stroke:var(--ink2);stroke-width:1.2}
#viewWd .wdlad .wdpin{stroke:var(--ink);stroke-width:1.6;stroke-dasharray:4 3}
#viewWd .wdlad .wdpind{fill:var(--surface);stroke:var(--ink);stroke-width:2.4}
#viewWd .wdlad .wdgrid{stroke:var(--line);stroke-width:1}
#viewWd .wdlad .wdcurve{fill:none;stroke:var(--s2);stroke-width:2.6}
#viewWd .wdif{max-width:620px}
#viewWd #wdRuleWhy h3{font-size:15px;margin:16px 0 6px}
#viewWd #wdRuleWhy p{font-size:14px;line-height:1.55;margin:6px 0}
#viewWd .wdtbl .wddue{text-align:left}

/* a year's tax return (version 431) */
.wd-tx-ctl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wd-ty{display:flex;align-items:center;gap:8px}
.wd-ty select{border:1px solid var(--line);background:var(--surface2);color:var(--ink);border-radius:8px;padding:0 9px;height:36px;font:inherit;font-size:13.5px}
.wd-tx th[scope=row]{font-weight:400}
.wd-tx .wd-tx-h th{font-weight:700;padding-top:12px}
.wd-tx .wd-tx-t th,.wd-tx .wd-tx-t td{font-weight:700;border-top:1px solid var(--line)}

/* the first card's year and future (version 433), and the spending rule on its own card */
#viewWd .seg.wd-seg.wd-seg3{grid-template-columns:auto auto auto}
#wdNext .wd-tx-ctl{justify-content:flex-end}
#wdRule .wdhd{margin-bottom:6px}
#wdRule .wd-rule-ctl{display:flex;flex-direction:column;align-items:flex-start;gap:3px}
#wdRule .wd-rule-ctl .fx-sel{padding:5px 10px}
/* Quick Start and What We Assumed (version 438) */
.qsdlg{width:min(560px,100%)}
.qsdlg h2{margin-bottom:12px}
.qs-step{margin:0 0 4px;font-size:13px;font-weight:600;color:var(--muted)}
.qs-intro{margin:0;font-size:14px;line-height:1.5;color:var(--ink2)}
.qs-body{display:flex;flex-direction:column;gap:12px}
.qs-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 12px;align-items:end}
.qs-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.qs-l{font-weight:700;font-size:13.5px;color:var(--ink)}
.qs-f select,.qs-txt{font:inherit;font-size:14px;height:36px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--ink);min-width:0;width:100%;box-sizing:border-box}
.qs-f select:focus,.qs-txt:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.qs-f .numbox{display:flex;width:100%;height:36px;box-sizing:border-box;padding:0 9px;border-radius:8px}
.qs-f .numbox input{flex:1 1 auto;width:auto;min-width:0;font-size:14px}
.qs-hint{font-size:12.5px;line-height:1.45;color:var(--muted)}
p.qs-hint{margin:0}
.qs-err{margin:10px 0 0}
.qs-err:empty{display:none}
.qs-btns{margin-top:16px}
.qs-btns [hidden]{display:none}
.qs-card[hidden]{display:none}
.qs-list{margin:10px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.5}
.qs-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
#qsH:focus{outline:none}
#qsH:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
/* Share by Link, Copy for Your AI (version 439) */
.lkdlg,.aidlg{width:min(600px,100%)}
.lk-out,.ai-txt{display:block;width:100%;box-sizing:border-box;margin-top:10px;font-family:var(--mono);font-size:12px;line-height:1.45;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--ink);resize:vertical;overflow-wrap:anywhere}
.lk-out:focus,.ai-txt:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-softer)}
.lk-out[hidden],.lkdlg [hidden]{display:none}
.ai-txt{min-height:220px}
.lk-h3{margin:18px 0 4px;font-size:15px;padding-top:14px;border-top:1px solid var(--line)}
.lk-msg:empty,.lk-err:empty{display:none}
.lk-msg,.lk-err{margin:8px 0 0;font-size:13.5px}
.lkdlg .switch,.aidlg .switch{margin-top:6px}
.lk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 14px;padding:12px 16px;border:2px solid var(--warn);border-radius:12px;background:var(--surface)}
.lk-bar[hidden]{display:none}
.lk-bt{margin:0;flex:1 1 320px;font-size:14px;line-height:1.5}
.lk-bt:focus{outline:none}
.lk-acts{display:flex;flex-wrap:wrap;gap:8px}
.lk-bm{flex-basis:100%;margin:0;font-size:13px}
.lk-bm:empty{display:none}
/* If Work Stopped: How Long the Money Lasts (version 447) */
.jl-in{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 14px;margin:12px 0 16px}
.jl-in .af{margin:0}.jl-in .wi-in{display:flex}.jl-in .wi-in input{flex:1;min-width:0}
.jl-fix{margin:6px 0 0;font-weight:600;color:var(--ink)}
.jl-ans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 12px}@media (max-width:560px){.jl-ans{grid-template-columns:1fr}}
.jl-ans .tl-ans{margin:0}.jl-ans .tl-ans .v{font-size:clamp(20px,2.4vw,25px)}
.jl-note{margin:14px 0 8px}
.jl-lg{margin-top:4px}
#jlChart svg .jl-bad{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:6 4}
#jlChart svg .jl-mk{stroke:var(--crit);stroke-width:1.2;stroke-dasharray:4 3}
#jlChart svg .jl-mt{fill:var(--ink2)}
.jl-h{font-size:16px;margin:18px 0 8px}
.jl-steps{margin:0 0 8px;padding-left:22px}.jl-steps li{margin:0 0 6px;color:var(--ink2)}.jl-steps li b{color:var(--ink)}
.jl-tips{margin:8px 0 0;padding-left:20px;color:var(--ink2)}.jl-tips li{margin:0 0 6px}
.jl-more{margin:12px 0 0}.jl-more .tbl-scroll{overflow-x:auto;max-width:100%}.jl-more summary{cursor:pointer;font-weight:700}
.jl-more .gv-tbl{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}.jl-more .gv-tbl th,.jl-more .gv-tbl td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right}.jl-more .gv-tbl th[scope=row],.jl-more .gv-tbl thead th:first-child{text-align:left}
.jl-ret{margin-top:6px;border-top:1px solid var(--line);padding-top:4px}
#jlRet p{margin:8px 0 0}
/* Share This Plan in the menu (version 450): under the two start-over buttons, in their shape, but cyan and filled a
   little, with a share mark, so it reads as a different kind of button: it changes nothing. */
.shell .sharebtn{display:flex;align-items:center;justify-content:center;gap:6px;align-self:stretch;margin:2px 0 0;flex:none;font:inherit;font-size:12.5px;font-weight:700;white-space:normal;line-height:1.25;padding:7px 6px;border:1px solid rgba(10,203,245,.6);border-radius:9px;background:rgba(10,203,245,.14);color:#FFFFFF;cursor:pointer}
.shell .sharebtn svg{flex:none;width:14px;height:14px;color:#0ACBF5}
.shell .sharebtn:hover{border-color:#0ACBF5;background:rgba(10,203,245,.26)}
.shell .sharebtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-height:940px){ .shell .sharebtn{padding-block:4px} }
@media (max-height:895px){ .shell .sharebtn{padding-block:2px;font-size:12px;margin-top:0} .shell .sharebtn svg{width:13px;height:13px} }
/* Client: the start-over buttons go, sharing stays */
html[data-mode="client"] .shell #reset,html[data-mode="client"] .shell #blankBtn{display:none !important}
/* the share window's first part has no rule above it */
.lk-h3.lk-h3a{margin-top:6px;padding-top:0;border-top:0}
/* The Plan in One Picture (version 451): the portfolio of one future and, under it on the same ages, each retirement
   year's costs stacked by what pays. The band colours were checked as a set (lightness, chroma, colour-blind and
   normal-vision separation, contrast) on each theme's card surface; the dark ones are their own steps, not a flip. */
:root{--op-pen:#0A8FC2;--op-ss1:#7048C2;--op-ss2:#C2477A;--op-pay:#2A78D6;--op-oth:#0F8F84;--op-port:#B8860B}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--op-pen:#0FA3B8;--op-ss1:#8577E6;--op-ss2:#D55181;--op-pay:#3987E5;--op-oth:#199E70;--op-port:#C98500}}
:root[data-theme="dark"]{--op-pen:#0FA3B8;--op-ss1:#8577E6;--op-ss2:#D55181;--op-pay:#3987E5;--op-oth:#199E70;--op-port:#C98500}
html[data-mode="easy"] #opCard,html[data-mode="learn"] #opCard{display:none !important}
.op-rank{margin:0 0 8px;font-size:13px;color:var(--ink2)}
.op-c{position:relative;margin-top:4px}
.op-svg{display:block;overflow:visible}
.op-pt{font:700 13px var(--sans);fill:var(--ink)}
.op-work{fill:var(--surface2)}
.op-wt{fill:var(--muted)}
.op-gap{fill:none;stroke:var(--surface);stroke-width:2}
.op-bl{font:600 12px var(--sans);pointer-events:none}
.op-wash{fill:var(--op-port);opacity:.1;pointer-events:none}
.op-line{fill:none;stroke:var(--op-port);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}
.op-dot{fill:var(--op-port);stroke:var(--surface);stroke-width:2;pointer-events:none}
.op-dot.op-out{fill:var(--crit)}
.op-ml{font:600 12px var(--sans);fill:var(--ink);pointer-events:none}
.op-hit{fill:transparent;outline:none;cursor:crosshair}
.op-hit:focus-visible{stroke:var(--accent);stroke-width:2}
.op-xh,.op-hd{pointer-events:none}
.op-sl{cursor:ew-resize;outline:none;touch-action:none}
.op-sl-hit{fill:transparent;touch-action:none}
.op-sl-l{stroke:var(--brand);stroke-width:1.6;stroke-dasharray:3 3}
.op-sl-k{fill:var(--brand);stroke:var(--surface);stroke-width:1.5}
.op-sl-t{fill:var(--brand);font-weight:600}
.op-sl:focus-visible .op-sl-k,.op-sl.on .op-sl-k{stroke:var(--ink);stroke-width:2.5}
.op-sl.on .op-sl-l,.op-sl:focus-visible .op-sl-l{stroke-dasharray:none}
.op-tip{min-width:230px}
.op-tip .op-th{margin:7px 0 2px;font-size:12px;color:var(--muted)}
.op-tip .op-tt{margin-top:3px;border-top:1px solid var(--line2);padding-top:3px}
.op-tip .op-tn{margin-top:5px;font-size:12px;color:var(--ink2);max-width:270px}
.op-tk{display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.lgrow .op-swl{height:3px;background:var(--op-port);border-radius:2px}
.op-wait{margin:24px 0}
.op-dl{margin-top:10px}
.op-more{margin-top:10px}
.op-more summary{cursor:pointer;font-weight:600;font-size:13.5px;color:var(--ink)}
.op-more .tw{max-height:420px;overflow:auto;margin-top:8px}
.pr-op .op-card{margin:16px 0}   /* in the Client view's Plan Summary */
@media (min-width:1600px){.charts > #opCard{grid-column:1 / -1}}   /* the whole width when the charts run in two columns (version 452) */
@media print{.op-sl-k,.op-more{display:none}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
/* Settings, Motion: Always reduce does what the device setting does */
:root[data-motion="reduce"] *{transition:none!important}
:root[data-motion="reduce"] #brandSub::after,:root[data-motion="reduce"] .live[data-busy="1"] #livePill::before{animation:none}
:root[data-motion="reduce"] .srch-hit{animation:none;outline:3px solid var(--accent);outline-offset:3px}
:root[data-motion="reduce"] .ob-hl{animation:none;outline:3px solid var(--cyan);outline-offset:3px}
