
/* build: replacements for inline style="" attributes (CSP style-src 'self') */
.w60{width:60%}.w37{width:37%}.s-ctr{text-align:center;margin:.4rem 0 0}.c-emd{color:var(--emd)}.p-tight{margin:.2rem 0}
legend.q h1{font:inherit;margin:0}
.rform form,.hh{display:grid;gap:.5rem}.rform h2,.rres h2,.hh h2{font:600 1.15rem 'Space Grotesk',sans-serif;margin:0 0 .5rem}.rres .big{margin:.2rem 0}.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin:.6rem 0}.rgrid div{background:#F3F8F4;border-radius:12px;padding:.7rem}.rgrid dt{font-size:.875rem;color:var(--muted)}.rgrid dd{margin:0;font:700 1.15rem 'Space Grotesk',sans-serif;color:var(--emd)}.rgrid small{display:block;font:400 .875rem Inter,sans-serif}.rres .bad{color:#9F1239}.row2f{display:flex;gap:.6rem}.row2f input{flex:1;min-width:0}.row2f .btn{width:auto;padding:0 1.2rem}.plist{list-style:none;margin:.25rem 0 0;padding:0}.plist li{background:none!important;box-shadow:none!important;border-radius:0!important;margin:0!important;border-left:0!important;border-right:0!important;border-bottom:0!important;padding:.6rem 0!important;display:flex;align-items:center;gap:.75rem;padding:.6rem 0;border-top:1px solid var(--line)}.plist li:first-child{border-top:0}.plist .t{flex:1;min-width:0}.plist .t b{display:block}.plist .t small{color:var(--muted);font-size:.875rem}.plist .btn{width:auto;padding:0 1rem;flex:none}.plist .bic{width:40px;height:40px;border-radius:50%;background:var(--peach);color:var(--cut);display:grid;place-items:center;flex:none}.rform .btn.ghost,.hh .btn.ghost{justify-content:center;text-align:center}.card.rform,.card.rres,.card.hh,.card.tool{margin-bottom:.75rem}.tool h2{font:600 1.15rem 'Space Grotesk',sans-serif;margin:0 0 .5rem}.tf{display:grid;gap:.5rem}.tres:empty{display:none}.tres{margin-top:.75rem;border-top:1px solid var(--line);padding-top:.75rem}.tres .big{margin:.2rem 0}.tres .bad,.tres .neg dd{color:#9F1239}.rgrid.r3{grid-template-columns:repeat(3,1fr)}.txf{border:1px solid var(--line);border-radius:12px;padding:.75rem;margin:0;display:grid;gap:.5rem;min-width:0}.txf legend{font-weight:600;padding:0 .25rem}.th3{font:600 1rem Inter,sans-serif;margin:.5rem 0 .25rem}.dlist{list-style:none;margin:0;padding:0;font-size:.875rem}.dlist li{display:flex;justify-content:space-between;padding:.2rem 0;border-bottom:1px solid var(--line)}.dlist .om{justify-content:center;color:var(--muted)}.warnbox{background:#FFF1F2;border:1px solid #FDA4AF;border-radius:12px;padding:.75rem;color:#9F1239}.swf{border:0;margin:0;padding:0;display:grid;gap:.6rem}.swo{display:flex;align-items:center;gap:.75rem;min-height:60px;cursor:pointer;margin:0}.swo input{width:22px;height:22px;margin:0;flex:none;accent-color:var(--emd)}.swo:has(input:checked){border-color:var(--emd);box-shadow:0 0 0 1px var(--emd)}.swo:has(input:focus-visible){outline:3px solid #047857;outline-offset:2px}.swo .sum2{display:block;font-size:.875rem;color:var(--muted)}.swl{margin:.75rem 0;display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.swl a{display:inline-flex;align-items:center;min-height:44px}#sw-form>.btn{margin-top:.5rem}legend.q h1:focus{outline:none}legend.q h1:focus-visible{outline:3px solid #047857;outline-offset:2px}
button.lk{background:none;border:0;padding:0;font:inherit;cursor:pointer}
button.btn.sec{font:600 1rem Inter,sans-serif}
/* team rule 44px targets (Dakota, Oct 14): same 44px pitch as the mock */
nav.side{row-gap:0!important}nav.side .brand+a{margin-top:2.4px}nav.side a,nav.side .sobtn{min-height:44px!important}
.mgoals ul+p a{display:inline-flex;align-items:center;min-height:44px;margin:-12px 0;vertical-align:middle}

/* Dakota (Oct 14): + leaves the tab bar as a floating Add button; five tabs in equal columns across the full width */
nav.tabs{grid-template-columns:none!important;grid-auto-flow:column!important;grid-auto-columns:minmax(0,1fr)!important;column-gap:0!important;padding-left:0!important;padding-right:0!important;justify-items:stretch!important}
nav.tabs>a{justify-self:stretch;width:auto;margin:0}
a.fab{position:fixed;right:1rem;bottom:calc(4.8rem + env(safe-area-inset-bottom));z-index:3;width:3.1rem;height:3.1rem;min-width:44px;min-height:44px;box-sizing:border-box;border-radius:50%;background:linear-gradient(rgba(4,120,87,.4),rgba(4,120,87,.4)),#FDF6F0;border:2px solid var(--emd);color:var(--emd);display:grid;place-items:center;box-shadow:0 4px 12px rgba(31,77,58,.22);text-decoration:none}
a.fab .i,a.fab svg{width:1.5rem;height:1.5rem;color:var(--emd);stroke:currentColor}
a.fab[aria-current]{box-shadow:0 0 0 3px #F8D9C0,0 4px 12px rgba(31,77,58,.22)}
html{scroll-padding-bottom:10rem!important}
@media (max-width:63.99em){main{padding-bottom:4.75rem!important}}

@media (min-width:64em){a.fab{right:1.5rem;bottom:1.5rem}main{padding-bottom:6rem!important}}

/* FAB v2 (Oct 14): see-through 40% green + backdrop blur; cream halo outside the #1F4D3A outline; dark plus on small cream disc */
a.fab{background:radial-gradient(circle closest-side,#FDF6F0 0,#FDF6F0 calc(100% - .62rem),rgba(253,246,240,0) calc(100% - .6rem)),rgba(4,120,87,.4)!important;-webkit-backdrop-filter:blur(6px) saturate(1.2);backdrop-filter:blur(6px) saturate(1.2);border:2px solid #1F4D3A!important;box-shadow:0 0 0 2px #FDF6F0,0 4px 12px rgba(31,77,58,.22)!important}
a.fab .i,a.fab svg{width:1.25rem!important;height:1.25rem!important;color:#1F4D3A!important;stroke:#1F4D3A!important;stroke-width:2.75}
a.fab[aria-current]{box-shadow:0 0 0 2px #FDF6F0,0 0 0 5px #F8D9C0,0 4px 12px rgba(31,77,58,.22)!important}
a.fab:focus-visible{outline:3px solid #047857;outline-offset:4px}

/* fab4 (Oct 14): FAB fixed at spec spot; main keeps bottom padding + a right gutter so no control sits under it */
@media (max-width:63.99em){main{padding-bottom:calc(4.8rem + 3.1rem + 1.5rem + env(safe-area-inset-bottom))!important}}
@media (max-width:63.99em){main .btn:not(.card .btn,dialog .btn,.sheet .btn),main .swl:not(.card .swl){max-width:calc(100% - 1rem)}}
@media (min-width:64em){main{padding-bottom:calc(1.5rem + 3.1rem + 1.5rem)!important;padding-right:calc(3.1rem + 2.25rem)!important}}

/* fab5 row grid removed in fab6b (Dakota picked the k3 single-line row) */
/* names wrap at spaces only */
.rows .t b,.big,.fa,.sum .v{overflow-wrap:normal!important;word-break:normal!important;hyphens:manual}
/* focus never hidden behind FAB + tab bar (WCAG 2.4.11) */
html{scroll-padding-bottom:140px!important}
@media (min-width:64em){html{scroll-padding-bottom:100px!important}}

/* fab5b (Dakota: more see-through): no cream disc, hairline halo; thicker dark plus with a thin light outline */
a.fab{background:rgba(4,120,87,.4)!important;box-shadow:0 0 0 1.5px #FDF6F0,0 4px 12px rgba(31,77,58,.22)!important}
a.fab[aria-current]{box-shadow:0 0 0 1.5px #FDF6F0,0 0 0 4.5px #F8D9C0,0 4px 12px rgba(31,77,58,.22)!important}
a.fab .i,a.fab svg{width:1.5rem!important;height:1.5rem!important;stroke-width:3.25!important;filter:drop-shadow(0 0 1px #FDF6F0) drop-shadow(0 0 .8px #FDF6F0) drop-shadow(0 0 .5px #FDF6F0)}

/* fab6 (Oct 14), overlap option B: on phone the in-card buttons/inputs/links that sat under the FAB on first load go auto-width or end before the FAB column (44px targets kept) */
@media (max-width:63.99em){
 #r-sug,#r-demo,#h-demo{width:auto!important;justify-self:start!important;padding:0 1.2rem}
 .addbar>.btn[data-open="dlg-income"]{width:auto!important}
 #tools-home-rate{width:calc(6ch + 2.4rem)!important;max-width:100%;box-sizing:border-box}
 .ph>.va{margin-right:2.5rem}
 .hh li>[data-rm]{margin-right:2.5rem}
 p.swl{padding-right:2.5rem}
 main .card>h2{max-width:calc(100% - 2.5rem)}
}
/* fab6 alt + rows-stack layouts removed in fab6b (Dakota picked k3 single line) */

/* fab6b (Oct 14): no text under the FAB on first load (phone): right-aligned values end before the FAB column */
@media (max-width:63.99em){
 .mgoals li .pc,.gline>b{margin-right:2.5rem}
}
/* short phones only: the current Knowledge card's list ends before the FAB column (844-tall layout = approved k4, untouched) */
@media (max-width:63.99em) and (max-height:43.75em){.kcard.current .kul{padding-right:2.5rem}}
/* fab6b ONLY row layout (Dakota, Oct 14): true k3 single line: icon, name, amount right-aligned, menu dots on the same line.
   Row content ends before the FAB column (li right padding). Wrap order (Design Reviewer): name + sub-line wrap first (at spaces only);
   amount + dots are one unbreakable unit (dots sit in the amount's right padding); only if the unit still can't fit it drops below, right-aligned. Never truncates. */
@media (max-width:63.99em){
 #bill-list li,#asset-list li,#debt-list li{display:flex!important;flex-wrap:wrap!important;align-items:center!important;column-gap:.6rem!important;row-gap:.15rem!important;padding-right:calc(1rem + 2.7rem)!important}
 #bill-list li>.bic,#asset-list li>.bic,#debt-list li>.bic{flex:none;display:grid!important}
 #bill-list li>.t,#asset-list li>.t,#debt-list li>.t{flex:1 1 0!important;min-width:min-content!important}
 #bill-list li>.amt,#asset-list li>.amt,#debt-list li>.amt{flex:none;margin-left:auto!important;text-align:right!important;white-space:nowrap!important;padding-right:calc(44px + .25rem)!important}
 #bill-list li>.acts2,#asset-list li>.acts2,#debt-list li>.acts2{flex:none;margin:0 0 0 calc(-44px - .6rem)!important;width:44px}
}
/* 200% zoom / very narrow: no FAB gutter room; amount + dots stay one line by dropping the gutter, still never truncated */
@media (max-width:15em){#bill-list li,#asset-list li,#debt-list li{padding-left:.6rem!important;padding-right:.6rem!important}#bill-list li>.amt,#asset-list li>.amt,#debt-list li>.amt{padding-right:calc(44px + .4rem)!important;white-space:normal!important;flex:0 1 auto!important;min-width:min-content;max-width:100%;box-sizing:border-box}}

/* fab3: retirement progress + example tag */
.extag{display:inline-block;font:600 .875rem Inter,sans-serif;background:#FBE9DA;color:#7A4F24;border-radius:999px;padding:.1rem .6rem;margin-left:.4rem;vertical-align:middle}
.rprog{margin:0 0 .75rem}.rbar{height:.9rem;border-radius:999px;background:#EADFD3;border:1px solid #8C7A6B;overflow:hidden}.rfill{display:block;height:100%;width:0;background:#1F4D3A;border-radius:999px}.rptxt{margin:.35rem 0 0;font-weight:600}
#r-demo{margin:.25rem 0 .75rem}
#ret-form .g2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}#ret-form .g2 label{min-height:2.6em;display:flex;align-items:flex-end}

/* knowledge-r4b topics (mocks/knowledge-r4/SPEC.md) */
.kul{margin:0;padding-left:1.1rem;font-size:.9375rem;line-height:1.45;color:#2B1D14}.kul li{margin:.2rem 0}
.ktopics2{display:grid;gap:.75rem}
.ktop summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:44px;cursor:pointer;list-style:none;font:700 1.15rem/1.3 "Space Grotesk",sans-serif;color:#2B1D14;border-radius:.6rem}
.ktop summary::-webkit-details-marker{display:none}
.ktop summary:focus{outline:none}.ktop summary:focus-visible{outline:3px solid #047857;outline-offset:2px}
.kchev{width:22px;height:22px;flex:none;transition:transform .15s}
.ktop:not([open]) .kchev{transform:none}.ktop[open] .kchev{transform:rotate(90deg)}
.kcaps{text-transform:uppercase}
@media (prefers-reduced-motion:reduce){.kchev{transition:none}}
.ktb{padding-top:.25rem}
.ktb h3,.ktb h4{font-family:"Space Grotesk",sans-serif;color:#1F4D3A;margin:.9rem 0 .25rem}
.ktb h3{font-size:1.05rem;font-weight:700}.ktb h4{font-size:.9375rem;font-weight:700}
.ktb p{margin:.25rem 0;font-size:.9375rem;line-height:1.5;color:#2B1D14}
.ktb .kul{margin:.25rem 0}.ktb ul.kul{list-style:circle}
