:root{
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
  --bg:#eceee8;--panel:#fbfcf9;--ink:#16323a;--ink2:#5b6b6e;--rule:#cfd5cc;--field:#f4f6f1;
  --amort:#2f6f73;--juros:#e0a43a;--enc:#9aa7a3;--other:#16323a;--pos:#2f6f73;--focus:#2f6f73;--err:#b0412a;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f1c20;--panel:#152a30;--ink:#e8ede6;--ink2:#9fb0ae;--rule:#284249;--field:#10242a;
  --amort:#6fb3b0;--juros:#e9b44c;--enc:#5e7479;--other:#e8ede6;--pos:#6fb3b0;--focus:#6fb3b0;--err:#f19276}}
:root[data-theme="dark"]{
  --bg:#0f1c20;--panel:#152a30;--ink:#e8ede6;--ink2:#9fb0ae;--rule:#284249;--field:#10242a;
  --amort:#6fb3b0;--juros:#e9b44c;--enc:#5e7479;--other:#e8ede6;--pos:#6fb3b0;--focus:#6fb3b0;--err:#f19276}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:15px;line-height:1.5;font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.wrap{max-width:1180px;margin:0 auto;padding:20px 20px 48px}
header.top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:18px}
header.top h1{margin:0;font-size:1.25rem;font-weight:800;letter-spacing:-.01em}
header.top .sub{color:var(--ink2);font-size:.85rem}
.grid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:880px){.grid{grid-template-columns:minmax(0,1fr)}}
.panel{background:var(--panel);border:1px solid var(--rule);border-radius:10px;padding:18px;min-width:0}
.inputs{position:sticky;top:calc(env(safe-area-inset-top,0px) + 12px)}
@media (max-width:880px){.inputs{position:static}}
.inputs h2,.out h2{font-size:.95rem;font-weight:700;margin:0 0 12px}
.inputs h2:not(:first-child){margin-top:22px;padding-top:16px;border-top:1px solid var(--rule)}
.f{margin-bottom:12px}
.f label{display:flex;justify-content:space-between;gap:8px;font-size:.82rem;color:var(--ink2);margin-bottom:4px}
.f label em{font-style:normal;color:var(--ink)}
.box{display:flex;align-items:stretch;border:1px solid var(--rule);border-radius:7px;background:var(--field);overflow:hidden}
.box:focus-within{border-color:var(--focus)}
.box .pre{display:flex;align-items:center;padding:0 0 0 10px;color:var(--ink2);font-size:.9rem}
.box input{flex:1;min-width:0;border:0;background:transparent;padding:9px 10px;font-size:1rem;outline:none;text-align:right}
.seg{display:inline-flex;border-left:1px solid var(--rule)}
.seg button{border:0;background:transparent;padding:0 10px;font-size:.8rem;color:var(--ink2);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--panel)}
input[type=range]{width:100%;margin:8px 0 0;accent-color:var(--amort)}
.sys{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.sys button{border:0;background:var(--field);padding:10px 8px;cursor:pointer;text-align:left}
.sys button+button{border-left:1px solid var(--rule)}
.sys button b{display:block;font-size:.95rem}
.sys button span{display:block;font-size:.75rem;color:var(--ink2)}
.sys button[aria-pressed="true"]{background:var(--ink);color:var(--panel)}
.sys button[aria-pressed="true"] span{color:inherit;opacity:.75}
.hint{font-size:.76rem;color:var(--ink2);margin:4px 0 0}
details.more summary{cursor:pointer;font-size:.88rem;font-weight:600;list-style:none;display:flex;justify-content:space-between}
details.more summary::-webkit-details-marker{display:none}
details.more summary::after{content:"+";color:var(--ink2)}
details.more[open] summary::after{content:"−"}
details.more .inner{margin-top:12px}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}

/* ---------- resultado ---------- */
.out{display:grid;gap:20px;min-width:0}
.lead{padding:22px 22px 18px}
.lead .say{font-size:clamp(1.15rem,2.4vw,1.55rem);line-height:1.35;font-weight:500;margin:0;max-width:34em;letter-spacing:-.005em}
.lead .say strong{font-weight:800}
.lead .say .j{color:var(--juros)}
[data-theme] .lead .say .j{}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:18px;border-top:1px solid var(--rule)}
.facts div{padding:12px 12px 0 0}
.facts div+div{padding-left:12px;border-left:1px solid var(--rule)}
.facts dt{font-size:.76rem;color:var(--ink2)}
.facts dd{margin:2px 0 0;font-weight:700;font-size:1.02rem}
@media (max-width:640px){.facts{grid-template-columns:1fr 1fr}.facts div:nth-child(3){padding-left:0;border-left:0}.facts div:nth-child(n+3){border-top:1px solid var(--rule);margin-top:10px}}
.warn{margin:14px 0 0;font-size:.85rem;color:var(--ink2)}

.chart{padding:18px 14px 12px}
.chart .head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;padding:0 6px 8px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.78rem;color:var(--ink2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.legend i.dash{height:0;border-top:2px dashed var(--other);border-radius:0;width:14px;vertical-align:3px}
#chart{position:relative;touch-action:pan-y}
#chart svg{display:block;width:100%;height:auto}
.tip{position:absolute;top:6px;pointer-events:none;background:var(--panel);border:1px solid var(--rule);border-radius:7px;padding:8px 10px;font-size:.78rem;line-height:1.45;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.08)}
.tip b{display:block;margin-bottom:2px}
.tip span{display:flex;justify-content:space-between;gap:14px}

.cmp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;padding:0;overflow:hidden}
.cmp>div{padding:16px 18px}
.cmp>div+div{border-left:1px solid var(--rule)}
.cmp h3{margin:0 0 8px;font-size:.95rem;display:flex;justify-content:space-between;align-items:baseline}
.cmp h3 small{font-weight:500;font-size:.75rem;color:var(--ink2)}
.cmp .on{background:var(--field)}
.cmp dl{margin:0;display:grid;gap:4px}
.cmp dl div{display:flex;justify-content:space-between;gap:10px;font-size:.88rem}
.cmp dt{color:var(--ink2)}.cmp dd{margin:0;font-weight:600}
.cmp .verdict{grid-column:1/-1;border-left:0!important;border-top:1px solid var(--rule);font-size:.88rem;padding:12px 18px}
@media (max-width:520px){.cmp{grid-template-columns:1fr}.cmp>div+div{border-left:0;border-top:1px solid var(--rule)}}

.tbl .head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.tbl .head h2{margin:0}
.tbl .acts{display:flex;gap:8px;align-items:center}
.pill{display:inline-flex;border:1px solid var(--rule);border-radius:7px;overflow:hidden}
.pill button{border:0;background:transparent;padding:6px 11px;font-size:.8rem;cursor:pointer;color:var(--ink2)}
.pill button[aria-pressed="true"]{background:var(--ink);color:var(--panel)}
.btn{border:1px solid var(--rule);background:transparent;border-radius:7px;padding:6px 11px;font-size:.8rem;cursor:pointer}
.btn:hover{border-color:var(--ink2)}
.scroll{overflow:auto;max-height:520px;border:1px solid var(--rule);border-radius:8px}
table{border-collapse:collapse;width:100%;font-size:.84rem;min-width:620px}
th,td{padding:7px 10px;text-align:right;white-space:nowrap}
th:first-child,td:first-child{text-align:left}
thead th{position:sticky;top:0;background:var(--panel);font-weight:600;color:var(--ink2);border-bottom:1px solid var(--rule);font-size:.76rem}
tbody tr:nth-child(even){background:var(--field)}
td.a{color:var(--amort)}td.j{color:var(--juros)}
tfoot td{font-weight:700;border-top:1px solid var(--rule);position:sticky;bottom:0;background:var(--panel)}
footer{margin-top:22px;font-size:.78rem;color:var(--ink2);max-width:60em}
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 18px);transform:translateX(-50%);background:var(--ink);color:var(--panel);padding:9px 14px;border-radius:8px;font-size:.85rem}
[hidden]{display:none!important}
@media (prefers-reduced-motion:no-preference){.lead .say{transition:opacity .15s}}

/* ---------- conta e Pro ---------- */
header.top .top-r{display:flex;align-items:baseline;gap:14px;min-width:0}
@media (max-width:480px){header.top .top-r:has(.acct:not(:empty)) .sub{display:none}}
.acct{display:flex;align-items:baseline;gap:10px;font-size:.85rem;white-space:nowrap}
.link{border:0;background:transparent;padding:0;font:inherit;color:var(--ink);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.link.soft{color:var(--ink2);font-weight:500}
.pro-badge{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:2px 6px;border-radius:5px;background:var(--juros);color:#16323a;vertical-align:1px}
.btn-primary{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:7px;background:var(--ink);color:var(--panel);padding:9px 14px;font-weight:700;font-size:.9rem;cursor:pointer;text-decoration:none}
.btn-primary[aria-disabled="true"]{opacity:.55;cursor:default}
.locked{margin-top:14px;padding:12px 12px 14px;border:1px dashed var(--rule);border-radius:8px}
.locked h3{margin:0;font-size:.88rem;display:flex;gap:8px;align-items:baseline}
.locked .acts{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:.85rem}
dialog.dlg{border:1px solid var(--rule);border-radius:12px;background:var(--panel);color:var(--ink);padding:22px 20px 20px;width:min(400px,calc(100vw - 32px))}
dialog.dlg::backdrop{background:rgba(10,20,24,.5)}
dialog.dlg h2{margin:0 28px 6px 0;font-size:1.1rem}
dialog.dlg label{display:block;font-size:.82rem;color:var(--ink2);margin:12px 0 4px}
dialog.dlg .box input{text-align:left}
dialog.dlg #login-code{letter-spacing:.3em;font-weight:700}
dialog.dlg .btn-primary{width:100%;margin-top:14px}
.dlg-x{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:1.5rem;line-height:1;color:var(--ink2);cursor:pointer;padding:4px 8px}
.dlg-msg{font-size:.86rem;margin:12px 0 0}
.dlg-msg.err{color:var(--err)}
.dlg-foot{font-size:.82rem;color:var(--ink2);margin:14px 0 0;display:flex;gap:6px 14px;flex-wrap:wrap}

/* ---------- painéis dos módulos (caminhos) ---------- */
#mod-out{display:grid;gap:20px;min-width:0}
#mod-out:empty{display:none}
.paths h2{margin:0 0 6px;font-size:.95rem;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.paths .intro{margin:0 0 14px;font-size:.92rem;max-width:44em}
.path-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:16px}
.path{border:1px solid var(--rule);border-radius:8px;padding:10px 12px 12px;background:var(--field);min-width:0}
.path.win{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.path h3{margin:0;font-size:.8rem;font-weight:600;color:var(--ink2);display:flex;gap:7px;align-items:center}
.path h3 i{flex:none;width:10px;height:10px;border-radius:2px}
.path .v{display:block;font-size:1.3rem;font-weight:800;margin:4px 0 2px;letter-spacing:-.01em}
.path .tag{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--pos);margin-bottom:4px}
.path p{margin:4px 0 0;font-size:.78rem;color:var(--ink2)}
.path p.alerta{color:var(--err)}
.path-chart .legend{margin:0 0 6px}
.path-chart svg{display:block;width:100%;height:auto}
.legend i.ln{height:0;border-top:2px solid;border-radius:0;width:14px;vertical-align:3px}
.legend i.ln.dash{border-top-style:dashed}
.path-notes{margin-top:6px}
.path-notes p{margin:10px 0 0;font-size:.88rem;max-width:48em}
.path-notes p.hint{font-size:.76rem}
.paths .locked{margin-top:16px}
