:root {
  color-scheme: light;
  --ink: #172033;
  --muted: #687087;
  --line: #dde2ee;
  --surface: #ffffff;
  --canvas: #f6f7fb;
  --green: #3730a3;
  --green-2: #4f46e5;
  --mint: #eef2ff;
  --lime: #c4b5fd;
  --danger: #c43f52;
  --shadow: 0 14px 42px rgba(37, 46, 90, 0.07);
  --radius: 10px;
  --input-bg: #fbfcff;
  --surface-soft: #f4f5fb;
  --sidebar-width: 290px;
  --layout-transition: 320ms cubic-bezier(.22, 1, .36, 1);
  --font-mono: "Geist Mono", "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --font-sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 8% 8%, rgba(79,70,229,.08), transparent 27rem),
    radial-gradient(circle at 95% 30%, rgba(124,58,237,.055), transparent 32rem),
    var(--canvas);
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.5;
  transition: color .25s ease, background-color .25s ease;
}
button, input, select { font: inherit; }
button { color: inherit; }

.topbar {
  height: 76px;
  padding: 0 max(28px, calc((100vw - 1440px) / 2));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: rgba(255,255,255,.94);
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  z-index: 20;
  backdrop-filter: blur(12px);
  transition: padding-left var(--layout-transition), padding-right var(--layout-transition), color .25s ease, background-color .25s ease;
}
.brand { display: flex; align-items: center; gap: 12px; color: inherit; text-decoration: none; }
.brand strong { display: block; font-family: var(--font-mono); font-size: 22px; letter-spacing: -.7px; line-height: 1; }
.brand small { color: var(--muted); font-size: 11px; letter-spacing: .02em; }
.brand-mark { width: 32px; height: 32px; display: flex; align-items: end; gap: 3px; padding: 6px; border-radius: 9px; background: var(--green); transform: rotate(-4deg); }
.brand-mark span { display:block; width: 5px; border-radius: 4px; background: var(--lime); }
.brand-mark span:nth-child(1) { height: 9px; }.brand-mark span:nth-child(2) { height: 15px; }.brand-mark span:nth-child(3) { height: 20px; }
.top-actions, .export-actions { display: flex; align-items: center; gap: 10px; }
.button { border: 1px solid transparent; border-radius: 10px; min-height: 42px; padding: 0 17px; cursor: pointer; font-weight: 700; font-size: 13px; transition: .18s ease; display: inline-flex; align-items: center; justify-content: center; gap: 9px; }
.button:hover { transform: translateY(-1px); }
.button.primary { background: var(--green); color: white; box-shadow: 0 7px 18px rgba(23,77,59,.18); }
.button.primary:hover { background: #103e30; }
.button.secondary { background: var(--mint); color: var(--green); }
.button.ghost { background: white; border-color: var(--line); }
.button.is-loading .button-label { opacity: .5; }
.spinner { display: none; width: 15px; height: 15px; border: 2px solid rgba(255,255,255,.45); border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite; }
.is-loading .spinner { display: block; }
@keyframes spin { to { transform: rotate(360deg); } }

main { width:100%;max-width:1440px;margin:0 auto;padding:0 28px 80px;transform:translateX(0);transition:width var(--layout-transition),transform var(--layout-transition); }
.hero { padding: 70px 2px 50px; display: flex; align-items: end; justify-content: space-between; gap: 70px; }
.eyebrow, .step { margin: 0 0 8px; color: var(--green-2); text-transform: uppercase; letter-spacing: .14em; font-weight: 800; font-size: 11px; }
.hero h1 { font-family: var(--font-mono); font-size: clamp(34px, 4.2vw, 56px); line-height: 1.04; font-weight: 650; letter-spacing: -2.2px; margin: 0; }
.hero-copy { max-width: 620px; color: var(--muted); font-size: 17px; margin: 24px 0 0; }
.hero-note { max-width: 355px; border-top: 1px solid #b8c5be; padding: 17px 0 3px; display: flex; gap: 12px; color: var(--muted); font-size: 13px; }
.hero-note p { margin: 0; }.note-icon { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; border: 1px solid #9baba3; display:grid; place-items:center; font-family: var(--font-mono); font-style: italic; color: var(--green); }

.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.assumptions-panel { padding: 34px; }
.section-heading { display: flex; justify-content: space-between; gap: 30px; align-items: start; padding-bottom: 28px; border-bottom: 1px solid var(--line); }
.section-heading.outside { border: 0; padding: 0; align-items: end; }
.section-heading h2 { font-family: var(--font-mono); font-weight: 650; letter-spacing: -1px; font-size: 27px; line-height: 1.15; margin: 0; }
.section-heading p:not(.step) { color: var(--muted); margin: 8px 0 0; }
.section-status { background: var(--mint); color: var(--green); padding: 7px 12px; border-radius: 99px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.field-grid { display:grid;grid-template-columns:repeat(6,1fr);gap:18px;align-items:stretch; }
.general-grid { padding: 28px 0; border-bottom: 1px solid var(--line); }
.general-grid .wide { grid-column: span 2; }
.finance-grid { padding-top: 18px; }.spouse-grid { padding: 18px; margin-top: 12px; border-radius: 14px; background: #f7f9f7; }
.field { min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:flex-end;gap:7px; }
.field > span:first-child { color: #4d5b55; font-size: 12px; font-weight: 750; }
.field input, .field select, .type-select { width: 100%; height: 44px; padding: 0 12px; color: var(--ink); background: #fbfcfb; border: 1px solid #ccd6d0; border-radius: 9px; outline: none; transition: .15s ease; }
.field input:focus, .field select:focus, .type-select:focus { background: white; border-color: var(--green-2); box-shadow: 0 0 0 3px rgba(38,116,90,.1); }
.field input:invalid { border-color: #cf7777; }
.money-input, .input-suffix, .rate-input { display: flex; height: 44px; border: 1px solid #ccd6d0; border-radius: 9px; overflow: hidden; background: #fbfcfb; }
.money-input:focus-within, .input-suffix:focus-within, .rate-input:focus-within { border-color: var(--green-2); box-shadow: 0 0 0 3px rgba(38,116,90,.1); background: white; }
.money-input input, .input-suffix input, .rate-input input, .rate-input select { border: 0; box-shadow: none !important; background: transparent; height: 42px; border-radius: 0; min-width: 0; }
.money-input b, .input-suffix b, .rate-input b { display:flex; align-items:center; padding: 0 0 0 12px; color:#748079; font-size:12px; white-space:nowrap; }
.input-suffix b { padding: 0 12px 0 3px; }.rate-input b { padding: 0 3px 0 0; }.rate-input select { width: 64px; padding: 0 5px; border-left: 1px solid var(--line); }
.hint { display:inline-grid; place-items:center; width:16px; height:16px; border:1px solid #aab6b0; border-radius:50%; font-size:10px; font-style:normal; cursor:help; }
.subsection-title { padding-top: 27px; display:flex; align-items:center; justify-content:space-between; gap:25px; }
.subsection-title > div { display:flex; gap:10px; align-items:center; }.subsection-title h3, .event-heading h3, .chart-heading h3, .ledger-heading h3 { margin:0; font-size:16px; }.subsection-title p, .event-heading p, .chart-heading p, .ledger-heading p { margin:2px 0 0; color:var(--muted); font-size:12px; }
.mini-icon { width:29px;height:29px;border-radius:8px;background:var(--mint);color:var(--green);display:grid;place-items:center;font-size:10px;font-weight:800; }

.switch-row { display:flex; align-items:center; gap:12px; cursor:pointer; }
.switch-row > span:last-child strong, .switch-row > span:last-child small { display:block; }.switch-row small { color:var(--muted); font-size:11px; }
.compact-switch { margin-top: 24px; padding-top: 22px; border-top:1px solid var(--line); }
.switch { position:relative; width:40px; height:23px; flex:none; }.switch input { opacity:0; position:absolute; }.switch i { position:absolute; inset:0; background:#cbd3cf; border-radius:99px; transition:.2s; }.switch i::after { content:""; position:absolute; width:17px;height:17px;background:white;border-radius:50%;top:3px;left:3px;box-shadow:0 1px 4px #718078;transition:.2s; }.switch input:checked + i { background:var(--green-2); }.switch input:checked + i::after { transform:translateX(17px); }
.event-columns { display:grid; grid-template-columns:1fr 1fr; gap:28px; border-top:1px solid var(--line); margin-top:27px; padding-top:27px; }
.event-block { min-width:0; }.event-heading { display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:13px; }
.mini-button { border:1px solid #bdcbc4; background:white; color:var(--green); border-radius:8px; padding:7px 10px; font-size:11px; font-weight:750; cursor:pointer; white-space:nowrap; }
.event-list { display:flex;flex-direction:column;gap:8px; }.event-row { display:grid;grid-template-columns:minmax(80px,1fr) 105px 70px 30px;gap:7px;align-items:center; }.event-row input { width:100%;height:36px;border:1px solid #d5ddd9;border-radius:7px;padding:0 8px;font-size:12px; }.event-repeat { display:flex;align-items:center;gap:4px;font-size:10px;color:var(--muted); }.event-repeat input { width:auto;height:auto; }.remove-event,.icon-button { border:0;background:transparent;cursor:pointer;color:#8c9892;font-size:21px; }.empty-note { margin:8px 0 0; color:#97a09c;font-size:12px;font-style:italic; }
.is-hidden { display:none !important; }

.scenarios-section { margin-top: 68px; }
.scenario-strip { display:flex; align-items:stretch; gap:18px; overflow-x:auto; padding:25px 2px 30px; scroll-snap-type:x proximity; }
.scenario-card { flex:0 0 420px; background:white; border:1px solid var(--line); border-top:4px solid var(--scenario-color); border-radius:17px; box-shadow:0 10px 32px rgba(25,51,42,.06); overflow:hidden; scroll-snap-align:start; }
.scenario-header { padding:20px 20px 16px; border-bottom:1px solid var(--line); background:linear-gradient(180deg, color-mix(in srgb, var(--scenario-color) 7%, white), white); }
.scenario-number { display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:800; }.scenario-header-actions { display:flex;gap:3px; }.scenario-header-actions button { width:29px;height:29px;border:0;background:transparent;border-radius:7px;color:var(--muted);cursor:pointer;font-size:15px; }.scenario-header-actions button:hover { background:rgba(0,0,0,.05);color:var(--ink); }
.scenario-name { width:100%;border:0;background:transparent;font-family:var(--font-mono);font-size:21px;font-weight:650;letter-spacing:-.7px;padding:2px 0 10px;outline:none;color:var(--ink); }
.type-select { background:white;height:41px;font-size:12px;font-weight:700; }
.scenario-body { padding:20px; }.scenario-body .field-grid { grid-template-columns:1fr 1fr;gap:14px; }.scenario-body .span-2 { grid-column:span 2; }
.scenario-subtitle { grid-column:span 2; display:flex;align-items:center;justify-content:space-between;padding-top:17px;margin-top:3px;border-top:1px solid var(--line); }.scenario-subtitle h4 { margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.08em; }.computed-value { grid-column:span 2;background:#eef6f1;border-radius:10px;padding:12px 13px;display:flex;justify-content:space-between;gap:12px; }.computed-value span { color:var(--muted);font-size:11px; }.computed-value strong { color:var(--green); }
.conditional-box { grid-column:span 2;padding:15px;background:#f6f8f6;border-radius:12px; }.conditional-box .field-grid { gap:12px; }.conditional-box .switch-row { margin-bottom:13px; }
.balloons { grid-column:span 2; }.balloon-row { display:grid;grid-template-columns:1fr 1fr 30px;gap:7px;margin-top:7px; }.balloon-row input { width:100%;height:37px;border:1px solid #d0dad4;border-radius:7px;padding:0 8px; }
.loan-box { margin-top:19px;border-top:1px solid var(--line);padding-top:17px; }.loan-fields { padding-top:14px; }.scenario-help { grid-column:span 2;font-size:11px;color:var(--muted);line-height:1.45;margin:-3px 0 0; }
.add-scenario-card { flex:0 0 112px;min-height:430px;border:1px dashed #9eaea6;border-radius:17px;background:rgba(255,255,255,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--green);cursor:pointer;opacity:.62;transition:.2s; }.add-scenario-card:hover { opacity:1;background:white;border-color:var(--green-2);box-shadow:var(--shadow); }.add-scenario-card span { width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--mint);font-size:25px; }.add-scenario-card strong { font-size:11px; }.add-scenario-card small { color:var(--muted);font-size:9px; }

.results-section { margin-top:70px;scroll-margin-top:95px; }.results-heading { margin-bottom:24px; }.summary-cards { display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:18px; }.summary-card { background:white;border:1px solid var(--line);border-left:4px solid var(--scenario-color);border-radius:14px;padding:20px; }.summary-card > span { color:var(--muted);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.09em;font-weight:800; }.summary-card h3 { margin:5px 0 15px;font-family:var(--font-mono);font-size:18px;font-weight:650;letter-spacing:-.5px; }.summary-value small { display:block;color:var(--muted);font-size:11px; }.summary-value strong { font-family:var(--font-mono);font-size:22px;letter-spacing:-.7px; }.summary-metrics { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px;padding-top:14px;border-top:1px solid var(--line);align-items:stretch; }.summary-metrics > div { min-width:0;display:flex;flex-direction:column; }.summary-metrics span { display:block;color:var(--muted);font-family:var(--font-mono);font-size:9px;text-transform:uppercase; }.summary-metrics b { margin-top:auto;font-family:var(--font-mono);font-size:12px; }
.chart-panel,.ledger-panel { padding:25px;margin-top:18px;box-shadow:none; }.chart-heading,.ledger-heading { display:flex;justify-content:space-between;align-items:start;gap:25px;margin-bottom:20px; }.chart-legend { display:flex;flex-wrap:wrap;gap:13px;justify-content:flex-end; }.legend-item { display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700; }.legend-dot { width:9px;height:9px;border-radius:50%; }.chart { width:100%;min-height:370px;overflow:hidden; }.chart svg { width:100%;height:auto;display:block; }.chart text { font-family:inherit;fill:#7b8881;font-size:11px; }.chart .grid { stroke:#e6ebe8;stroke-width:1; }.chart .axis { stroke:#a8b4ae;stroke-width:1; }.chart .line { fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round; }.chart .event-marker { stroke:white;stroke-width:2; }.scenario-filter { min-width:220px; }.table-wrap { overflow:auto;max-height:620px;border:1px solid var(--line);border-radius:11px; }.ledger-panel table { width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap; }.ledger-panel th { position:sticky;top:0;background:#f4f7f5;color:#65726b;text-transform:uppercase;letter-spacing:.07em;font-size:9px;text-align:right;padding:11px 12px;border-bottom:1px solid var(--line);z-index:1; }.ledger-panel th:first-child,.ledger-panel th:last-child { text-align:left; }.ledger-panel td { padding:10px 12px;border-bottom:1px solid #edf0ee;text-align:right; }.ledger-panel td:first-child,.ledger-panel td:last-child { text-align:left; }.ledger-panel tr:hover td { background:#f9fbfa; }.event-pill { display:inline-block;border-radius:99px;padding:3px 7px;background:var(--mint);color:var(--green);font-size:9px;margin-right:3px; }.negative { color:var(--danger);font-weight:700; }.disclaimer { text-align:center;color:var(--muted);font-size:11px;margin:23px 0; }

dialog { width:min(720px,calc(100% - 30px));max-height:80vh;border:0;border-radius:18px;padding:0;box-shadow:0 30px 90px rgba(10,30,23,.35); }.dialog-heading { position:sticky;top:0;background:white;display:flex;align-items:start;justify-content:space-between;padding:24px;border-bottom:1px solid var(--line);z-index:2; }.dialog-heading h2 { font-family:Georgia,serif;margin:0;font-weight:500; }.dialog-heading .eyebrow { margin-bottom:3px; }dialog::backdrop { background:rgba(13,31,25,.52);backdrop-filter:blur(3px); }.history-list { padding:10px 24px 24px; }.history-item { display:flex;justify-content:space-between;align-items:center;gap:15px;padding:15px 0;border-bottom:1px solid var(--line); }.history-item h3 { margin:0;font-size:14px; }.history-item p { margin:3px 0 0;color:var(--muted);font-size:11px; }.history-item-actions { display:flex;gap:7px; }.history-empty { color:var(--muted);text-align:center;padding:45px 0; }.toast { position:fixed;right:22px;bottom:22px;z-index:50;max-width:420px;padding:13px 17px;border-radius:10px;background:var(--ink);color:white;box-shadow:0 14px 35px rgba(0,0,0,.22);font-size:12px;font-weight:650;opacity:0;pointer-events:none;transform:translateY(10px);transition:.2s; }.toast.show { opacity:1;transform:translateY(0); }.toast.error { background:#8e3030; }

@media (max-width: 1050px) {
  .field-grid { grid-template-columns:repeat(3,1fr); }.general-grid .wide { grid-column:span 1; }.event-columns { grid-template-columns:1fr; }.hero { gap:30px; }.hero-note { max-width:300px; }.scenario-card { flex-basis:390px; }
}
@media (max-width: 720px) {
  .topbar { height:auto;padding:12px 16px;align-items:center; }.brand small { display:none; }.top-actions .ghost,.top-actions .secondary { padding:0 10px;font-size:0; }.top-actions .ghost::after { content:"Histórico";font-size:11px; }.top-actions .secondary::after { content:"Salvar";font-size:11px; }.top-actions .primary { padding:0 12px; }.button-label { font-size:0; }.button-label::after { content:"Simular";font-size:12px; }
  main { padding:0 15px 50px; }.hero { padding:45px 2px 35px;display:block; }.hero h1 { letter-spacing:-1.8px; }.hero-note { margin-top:30px;max-width:none; }.assumptions-panel { padding:22px 16px; }.section-heading { gap:14px; }.section-heading h2 { font-size:26px; }.section-status { display:none; }.field-grid { grid-template-columns:1fr 1fr; }.general-grid .wide { grid-column:span 2; }.finance-grid .field:last-child { grid-column:auto; }.subsection-title { align-items:start; }.subsection-title p { display:none; }.event-row { grid-template-columns:1fr 90px 30px; }.event-repeat { grid-column:1 / span 2; }.scenario-card { flex-basis:calc(100vw - 42px); }.scenario-strip { margin-right:-15px; }.add-scenario-card { flex-basis:75px; }.results-heading { display:block; }.export-actions { margin-top:15px; }.chart-panel,.ledger-panel { padding:17px 12px; }.chart-heading { display:block; }.chart-legend { justify-content:start;margin-top:12px; }.ledger-heading { display:block; }.scenario-filter { margin-top:13px; }.summary-cards { grid-template-columns:1fr; }
}

html[data-theme="dark"] {
  color-scheme: dark;
  --ink: #eef0ff;
  --muted: #a6acc3;
  --line: #303653;
  --surface: #171a2b;
  --canvas: #0d1020;
  --green: #c4b5fd;
  --green-2: #818cf8;
  --mint: #28264b;
  --lime: #a5b4fc;
  --danger: #ff9292;
  --shadow: 0 18px 52px rgba(0, 0, 0, .28);
  --input-bg: #111426;
  --surface-soft: #1d2035;
}

.topbar { background: color-mix(in srgb, var(--surface) 94%, transparent); }
.button.ghost,
.scenario-card,
.summary-card,
.mini-button,
.type-select,
dialog,
.dialog-heading { background: var(--surface); }
.field input,
.field select,
.money-input,
.input-suffix,
.rate-input,
.event-row input,
.balloon-row input { background: var(--input-bg); color: var(--ink); }
.spouse-grid,
.conditional-box,
.ledger-panel th { background: var(--surface-soft); }
.computed-value { background: color-mix(in srgb, var(--mint) 72%, var(--surface)); }
.scenario-header { background: linear-gradient(180deg, color-mix(in srgb, var(--scenario-color) 12%, var(--surface)), var(--surface)); }
.add-scenario-card { background: color-mix(in srgb, var(--surface) 42%, transparent); }
.add-scenario-card:hover { background: var(--surface); }
.ledger-panel tr:hover td { background: color-mix(in srgb, var(--mint) 28%, transparent); }
.chart text,
.sankey text { fill: var(--muted); }
.chart .grid { stroke: var(--line); }
.theme-button { min-width: 92px; }
.theme-icon { font-size: 17px; line-height: 1; transform: rotate(-25deg); transition: transform .3s ease; }
html[data-theme="dark"] .theme-icon { transform: rotate(155deg); }

.panel,
.scenario-card,
.summary-card,
.add-scenario-card,
dialog { border-radius: 12px; }
.scenario-card { animation: card-in .32s ease both; }
.summary-card { animation: card-in .38s ease both; }
@keyframes card-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.sankey-panel { padding: 25px; margin-top: 18px; box-shadow: none; }
.sankey { min-height: 360px; overflow-x: auto; }
.sankey svg { display: block; width: 100%; min-width: 760px; height: auto; }
.sankey .flow { fill: none; opacity: .42; transition: opacity .18s ease; }
.sankey .flow:hover { opacity: .72; }
.sankey .node { stroke: color-mix(in srgb, var(--ink) 14%, transparent); stroke-width: 1; }
.sankey .node-label { font-size: 11px; font-weight: 750; fill: var(--ink); }
.sankey .node-value { font-size: 10px; fill: var(--muted); }

@media (max-width: 720px) {
  .theme-button { min-width: 42px; }
  .theme-label { display: none; }
  .top-actions .theme-button::after { content: none; }
  .sankey-panel { padding: 17px 12px; }
}

.spouse-grid .spouse-events { grid-column: 1 / -1; width: 100%; }
.event-row select { width: 100%; height: 36px; border: 1px solid #d5ddd9; border-radius: 7px; padding: 0 7px; font-size: 12px; background: var(--input-bg); color: var(--ink); }
html[data-theme="dark"] input[type="date"],
html[data-theme="dark"] input[type="month"] { color-scheme: dark; }
@media (max-width: 720px) {
  .spouse-grid .spouse-events { grid-column: 1 / -1; }
}

@media (max-width: 720px) {
  .event-row { grid-template-columns: minmax(100px, 1fr) 86px 70px 28px; }
  .event-repeat { grid-column: 1 / span 3; }
}

/* Refinement layer: blue/indigo identity, accessible controls and results. */
:focus-visible { outline: 3px solid color-mix(in srgb, var(--green-2) 42%, transparent); outline-offset: 2px; }
.button.primary { background: linear-gradient(135deg, #2563eb, #4f46e5 58%, #7c3aed); box-shadow: 0 7px 18px rgba(79,70,229,.2); }
.button.primary:hover { background: linear-gradient(135deg, #1d4ed8, #4338ca 58%, #6d28d9); }
.button.secondary { background: var(--mint); color: var(--green); }
.field > span:first-child { color: color-mix(in srgb, var(--ink) 78%, var(--muted)); }
.field input:focus, .field select:focus, .type-select:focus,
.money-input:focus-within, .input-suffix:focus-within, .rate-input:focus-within {
  border-color: var(--green-2); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green-2) 14%, transparent); background: var(--surface);
}
.scenario-card { overflow: visible; box-shadow: 0 10px 30px rgba(50,55,100,.06); }
.scenario-header { border-radius: 8px 8px 0 0; }
.type-picker { position: relative; z-index: 8; }
.type-select { display:flex; align-items:center; justify-content:space-between; cursor:pointer; text-align:left; }
.type-options { position:absolute; z-index:30; left:0; right:0; top:calc(100% + 5px); padding:5px; background:var(--surface); border:1px solid var(--line); border-radius:8px; box-shadow:0 16px 35px rgba(29,34,70,.16); }
.type-options[hidden] { display:none; }
.type-options button { display:block; width:100%; border:0; border-radius:6px; padding:10px; background:transparent; color:var(--ink); text-align:left; cursor:pointer; font-size:12px; }
.type-options button:hover, .type-options button:focus-visible { background:var(--mint); outline:none; }
.type-options button[aria-selected="true"] { color:var(--green); font-weight:800; }
.compact-money { height:36px; min-width:0; }
.compact-money input { height:34px !important; width:100%; padding:0 7px !important; font-size:12px; }
.compact-money b { padding-left:8px; font-size:10px; }
.balloon-row .compact-money { width:100%; }

.results-assumptions { display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; margin-bottom:14px; padding:13px 16px; border:1px solid var(--line); border-radius:8px; background:var(--surface-soft); color:var(--muted); font-size:12px; }
.results-assumptions strong { color:var(--ink); margin-right:5px; }
.comparison-highlights { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:18px; }
.comparison-card { min-width:0; padding:17px 18px; border:1px solid var(--line); border-radius:9px; background:var(--surface); }
.comparison-card span, .comparison-card small, .comparison-card em { display:block; }
.comparison-card span { color:var(--muted); text-transform:uppercase; letter-spacing:.08em; font-size:9px; font-weight:800; }
.comparison-card strong { display:block; margin:5px 0 1px; font-size:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.comparison-card small { color:var(--green-2); font-weight:800; }
.comparison-card em { margin-top:5px; color:var(--muted); font-size:9px; font-style:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.metrics-section { margin-top:18px; }
.summary-value small + small { margin-top:3px; }
.feasibility-warning, .feasibility-ok { margin:13px 0 0; padding:9px 10px; border-radius:7px; font-size:10px; }
.feasibility-warning { background:color-mix(in srgb, var(--danger) 10%, transparent); color:var(--danger); }
.feasibility-warning strong, .feasibility-warning span { display:block; }
.feasibility-ok { background:color-mix(in srgb, var(--green-2) 9%, transparent); color:var(--green); font-weight:750; }

.chart-panel { position:relative; }
.chart { position:relative; min-height:400px; overflow:visible; touch-action:pan-y; }
.chart svg { min-height:320px; }
.chart .line { pointer-events:none; }
.chart-hitbox { pointer-events:all; cursor:crosshair; }
.chart .event-marker { cursor:pointer; stroke:var(--surface); stroke-width:2; transition:r .15s ease, filter .15s ease; pointer-events:all; }
.chart .event-marker:hover, .chart .event-marker:focus { r:7; filter:drop-shadow(0 2px 3px rgba(0,0,0,.2)); outline:none; }
.chart-crosshair { stroke:var(--green-2); stroke-width:1; stroke-dasharray:4 4; opacity:0; pointer-events:none; }
.chart-crosshair.is-visible { opacity:.65; }
.chart-tooltip { position:absolute; z-index:15; top:42px; width:min(340px,calc(100% - 24px)); transform:translateX(-50%); padding:13px; border:1px solid var(--line); border-radius:8px; background:color-mix(in srgb, var(--surface) 96%, transparent); box-shadow:0 15px 38px rgba(20,24,55,.17); backdrop-filter:blur(8px); pointer-events:none; font-size:11px; }
.chart-tooltip > strong { display:block; margin-bottom:8px; }
.chart-tooltip ul { margin:0 0 8px; padding-left:17px; color:var(--green); }
.tooltip-scenarios { display:grid; gap:7px; }
.tooltip-scenarios section { border-left:3px solid var(--scenario-color); padding-left:8px; }
.tooltip-scenarios section > b { display:block; margin-bottom:2px; }
.tooltip-scenarios span { display:flex; justify-content:space-between; gap:12px; color:var(--muted); }
.tooltip-scenarios span strong { color:var(--ink); }
.reconciliation { margin-top:13px; padding-top:11px; border-top:1px solid var(--line); font-size:10px; }
.reconciliation summary { color:var(--green); cursor:pointer; font-weight:800; }
.reconciliation p { margin:7px 0 2px; color:var(--muted); line-height:1.45; }
.reconciliation small { color:var(--muted); }
.export-panel { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:18px; padding:20px; border:1px solid var(--line); border-radius:9px; background:var(--surface); }
.export-panel h3 { margin:0; font-size:15px; }.export-panel p { margin:3px 0 0; color:var(--muted); font-size:11px; }

html[data-theme="dark"] body { background:radial-gradient(circle at 10% 4%, rgba(79,70,229,.14), transparent 30rem),radial-gradient(circle at 90% 28%, rgba(124,58,237,.1), transparent 34rem),var(--canvas); }
html[data-theme="dark"] .type-options { box-shadow:0 16px 38px rgba(0,0,0,.34); }
.spouse-grid, .conditional-box { background:var(--surface-soft); }
.computed-value { background:color-mix(in srgb, var(--mint) 78%, var(--surface)); }
.chart .grid, .chart .axis, .chart text { pointer-events:none; }

@media (max-width: 820px) {
  .comparison-highlights { grid-template-columns:1fr; }
  .export-panel { align-items:flex-start; flex-direction:column; }
  .chart-tooltip { top:52px; }
}
@media (max-width: 520px) {
  .field-grid { grid-template-columns:1fr; }
  .general-grid .wide, .scenario-body .span-2 { grid-column:span 1; }
  .scenario-card { flex-basis:calc(100vw - 30px); }
  .top-actions { gap:5px; }
  .top-actions .button { min-height:38px; }
  .results-assumptions { display:grid; gap:5px; }
  .chart { min-height:330px; overflow-x:auto; }
  .chart svg { min-width:700px; }
  .chart-tooltip { position:sticky; left:12px !important; transform:none; width:calc(100vw - 62px); top:8px; }
  .export-actions { width:100%; flex-wrap:wrap; }
  .export-actions .button { flex:1; }
}

/* Local workspace navigation. */
.top-brand-group { display:flex; align-items:center; gap:11px; }
.sidebar-toggle { width:38px; height:38px; display:grid; place-items:center; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--ink); cursor:pointer; font-family:var(--font-mono); font-size:17px; }
.top-save-status { max-width:180px; color:var(--muted); font-family:var(--font-mono); font-size:9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.top-save-status.is-saving { color:var(--green-2); }
.analysis-sidebar { position:fixed;z-index:40;inset:0 auto 0 0;width:var(--sidebar-width);display:flex;flex-direction:column;padding:20px 16px 14px;background:var(--surface);border-right:1px solid var(--line);box-shadow:12px 0 36px rgba(25,30,70,.12);transform:translateX(-102%);transition:transform var(--layout-transition); }
.sidebar-open .analysis-sidebar { transform:translateX(0); }
.sidebar-header { display:flex; align-items:start; justify-content:space-between; gap:15px; padding:2px 3px 19px; }
.sidebar-header h2 { margin:0; font-family:var(--font-mono); font-size:22px; letter-spacing:-.8px; }
.sidebar-header .eyebrow { margin-bottom:3px; }
.new-analysis-button { width:100%; min-height:40px; font-family:var(--font-mono); }
.sidebar-section-heading { display:flex; align-items:center; justify-content:space-between; margin:25px 5px 9px; color:var(--muted); font-family:var(--font-mono); font-size:10px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.sidebar-section-heading small { display:grid; place-items:center; min-width:22px; height:20px; padding:0 5px; border-radius:6px; background:var(--mint); color:var(--green); }
.analysis-sidebar .history-list { min-height:0; flex:1; overflow-y:auto; padding:0; }
.analysis-sidebar .history-item { position:relative; display:flex; align-items:center; gap:4px; padding:4px; border:1px solid transparent; border-radius:8px; }
.analysis-sidebar .history-item + .history-item { margin-top:3px; }
.analysis-sidebar .history-item:hover { background:var(--surface-soft); }
.analysis-sidebar .history-item.is-active { background:var(--mint); border-color:color-mix(in srgb,var(--green-2) 18%,var(--line)); }
.history-open { min-width:0; flex:1; padding:8px; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.history-open strong, .history-open small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.history-open strong { font-family:var(--font-mono); font-size:11px; }
.history-open small { margin-top:3px; color:var(--muted); font-size:9px; }
.analysis-sidebar .history-item-actions { display:flex; gap:1px; opacity:0; transition:opacity .15s ease; }
.analysis-sidebar .history-item:hover .history-item-actions, .analysis-sidebar .history-item:focus-within .history-item-actions, .analysis-sidebar .history-item.is-active .history-item-actions { opacity:1; }
.analysis-sidebar .history-item-actions button { width:25px; height:27px; padding:0; border:0; border-radius:5px; background:transparent; color:var(--muted); cursor:pointer; font-family:var(--font-mono); }
.analysis-sidebar .history-item-actions button:hover { background:var(--surface); color:var(--ink); }
.analysis-sidebar .history-empty { padding:30px 10px; font-size:11px; }
.sidebar-footer { display:flex; align-items:center; gap:8px; min-height:36px; padding:10px 5px 0; border-top:1px solid var(--line); color:var(--muted); font-family:var(--font-mono); font-size:9px; }
.local-indicator { width:7px; height:7px; border-radius:50%; background:#22c55e; box-shadow:0 0 0 3px rgba(34,197,94,.1); }
.sidebar-footer.is-saving .local-indicator { background:var(--green-2); animation:pulse 1s ease infinite; }
.sidebar-footer button { margin-left:auto;padding:3px 7px;border:0;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer;font:inherit; }
.sidebar-footer button:hover { background:var(--surface-soft);color:var(--ink); }
@keyframes pulse { 50% { opacity:.4; } }
.sidebar-backdrop { display:none; }

/* Technical typography and tabular financial data. */
.eyebrow, .step, .section-status, .field > span:first-child, .subsection-title h3,
.event-heading h3, .chart-heading h3, .ledger-heading h3, .scenario-subtitle h4,
.computed-value, .comparison-card, .results-assumptions strong, .export-panel h3,
.ledger-panel th, .legend-item, .type-select, .type-options button { font-family:var(--font-mono); }
input, select, .summary-value, .summary-metrics, .computed-value, .chart text,
.sankey text, .ledger-panel td, .results-assumptions, .comparison-card small {
  font-variant-numeric: tabular-nums lining-nums;
}
.summary-value > strong { display:block; }
.summary-value > small { margin-top:4px; color:color-mix(in srgb,var(--muted) 86%,transparent); }

@media (min-width: 1101px) {
  .sidebar-open main {
    width:calc(100% - var(--sidebar-width));
    transform:translateX(calc(var(--sidebar-width) / 2));
  }
  .sidebar-open .topbar {
    padding-left:calc(var(--sidebar-width) + max(28px, calc((100vw - var(--sidebar-width) - 1440px) / 2)));
    padding-right:max(28px, calc((100vw - var(--sidebar-width) - 1440px) / 2));
  }
}

@media (max-width: 1100px) {
  .sidebar-backdrop { position:fixed; z-index:35; inset:0; display:block; background:rgba(8,10,28,.5); backdrop-filter:blur(2px); }
  .sidebar-backdrop[hidden] { display:none; }
  .analysis-sidebar { width:min(88vw,320px); }
  .top-save-status { display:none; }
}

@media (prefers-reduced-motion: reduce) {
  main, .topbar, .analysis-sidebar { transition-duration:.01ms; }
}

/* Account shell, brand assets and module navigation. */
.brand-logo { width:42px;height:42px;display:block;overflow:hidden;border-radius:9px;box-shadow:0 6px 18px rgba(37,99,235,.14); }
.brand-logo img { width:100%;height:100%;object-fit:contain;display:block; }
.auth-screen { position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 22% 18%,rgba(38,196,255,.18),transparent 30rem),radial-gradient(circle at 78% 22%,rgba(124,58,237,.17),transparent 34rem),var(--canvas); }
.auth-card { width:min(510px,100%);padding:42px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 30px 90px rgba(31,42,105,.18);text-align:center;backdrop-filter:blur(14px); }
.auth-brand { width:150px;height:150px;margin:0 auto 24px;border-radius:24px;overflow:hidden;box-shadow:0 20px 50px rgba(79,70,229,.16); }
.auth-brand img { width:100%;height:100%;object-fit:contain;display:block; }
.auth-card h1 { margin:8px 0 16px;font-family:var(--font-mono);font-size:clamp(27px,5vw,40px);line-height:1.08;letter-spacing:-1.7px; }
.auth-card > p:not(.eyebrow):not(.auth-message) { margin:0 auto 26px;max-width:420px;color:var(--muted); }
.google-signin { min-height:44px;display:flex;justify-content:center; }
.auth-divider { display:flex;align-items:center;gap:12px;width:300px;max-width:100%;margin:15px auto;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.12em; }
.auth-divider::before,.auth-divider::after { content:"";height:1px;flex:1;background:var(--line); }
.guest-button { width:300px;max-width:100%;min-height:44px;margin:0 auto;border:1px solid var(--line);background:var(--surface);color:var(--ink); }
.guest-button:hover { border-color:var(--green-2);color:var(--green-2); }
.guest-button:disabled { opacity:.6;cursor:wait; }
.auth-card .guest-note { margin:13px auto 0 !important;max-width:360px !important;color:var(--muted);font-size:10px;line-height:1.55; }
.auth-message { margin:13px 0 0;color:var(--muted);font-size:11px; }
.auth-message.error { color:var(--danger); }
.auth-pending .topbar,.auth-pending .analysis-sidebar,.auth-pending main { visibility:hidden; }
.is-authenticated .auth-screen { display:none; }

.module-tabs { display:flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft); }
.module-tab { min-height:34px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-family:var(--font-mono);font-size:10px;font-weight:750;transition:.18s ease; }
.module-tab:hover { color:var(--ink); }
.module-tab.is-active { background:var(--surface);color:var(--green);box-shadow:0 3px 12px rgba(36,46,100,.08); }
.user-menu { min-width:42px;height:42px;display:flex;align-items:center;gap:8px;padding:4px 9px 4px 4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;color:var(--ink); }
.user-menu img { width:32px;height:32px;border-radius:7px;background:var(--mint);object-fit:cover; }
.user-menu img.is-logo-fallback { padding:3px;background:transparent;object-fit:contain; }
.user-menu span { max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:750; }

/* Gaussian AHP product comparator. */
.product-panel { padding:34px; }
.product-title-field { width:min(540px,100%);margin:28px 0; }
.product-editor-heading { display:flex;align-items:end;justify-content:space-between;gap:20px;margin:28px 0 13px;padding-top:25px;border-top:1px solid var(--line); }
.product-editor-heading:first-of-type { margin-top:0; }
.product-editor-heading h3 { margin:0;font-family:var(--font-mono);font-size:17px; }
.product-editor-heading .step { margin-bottom:3px; }
.criteria-editor { display:grid;gap:8px; }
.criterion-row { display:grid;grid-template-columns:minmax(180px,1fr) 155px 180px 38px;gap:8px;align-items:center;padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft); }
.criterion-row input,.criterion-row select,.product-matrix input { width:100%;height:39px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:var(--input-bg);color:var(--ink);outline:none; }
.criterion-row input:focus,.criterion-row select:focus,.product-matrix input:focus { border-color:var(--green-2);box-shadow:0 0 0 3px color-mix(in srgb,var(--green-2) 14%,transparent); }
.matrix-remove { width:34px;height:34px;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:20px; }
.matrix-remove:hover { background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger); }
.product-matrix-wrap { overflow:auto;border:1px solid var(--line);border-radius:10px; }
.product-matrix { width:100%;min-width:660px;border-collapse:collapse; }
.product-matrix th { padding:11px;background:var(--surface-soft);border-bottom:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);font-size:9px;letter-spacing:.07em;text-align:left;text-transform:uppercase; }
.product-matrix th small { display:block;margin-top:2px;color:var(--green-2);font-size:8px;text-transform:none; }
.product-matrix td { min-width:140px;padding:9px;border-bottom:1px solid var(--line); }
.product-matrix tr:last-child td { border-bottom:0; }
.product-matrix td:first-child { min-width:190px; }
.product-matrix td:last-child { min-width:48px;width:48px;text-align:center; }
.product-result-grid { display:grid;grid-template-columns:1fr 1fr;gap:18px; }
.product-result-panel { padding:24px;box-shadow:none; }
.product-winner { margin-bottom:18px;padding:24px;border:1px solid color-mix(in srgb,#7c3aed 25%,var(--line));border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,#22c8f6 10%,var(--surface)),color-mix(in srgb,#7c3aed 11%,var(--surface))); }
.product-winner span,.product-winner strong,.product-winner small { display:block; }
.product-winner span { color:var(--green-2);font-family:var(--font-mono);font-size:9px;font-weight:850;letter-spacing:.1em;text-transform:uppercase; }
.product-winner strong { margin:3px 0;font-family:var(--font-mono);font-size:25px; }
.product-winner small { color:var(--muted); }
.ranking-list,.weights-list { display:grid;gap:12px; }
.ranking-row { display:grid;grid-template-columns:32px minmax(120px,1fr) minmax(100px,2fr) 68px;align-items:center;gap:10px; }
.ranking-position { display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--mint);color:var(--green);font-family:var(--font-mono);font-weight:850; }
.result-bar { height:9px;overflow:hidden;border-radius:99px;background:var(--surface-soft); }
.result-bar i { display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#22c8f6,#2563eb 55%,#7c3aed); }
.ranking-row > strong:last-child,.weight-heading strong { text-align:right;font-family:var(--font-mono);font-size:11px; }
.weight-row { display:grid;gap:6px; }
.weight-heading { display:flex;justify-content:space-between;gap:15px; }
.weight-heading span { color:var(--muted);font-size:11px; }
.product-warning { margin:12px 0 0;color:var(--muted);font-size:11px; }

@media (max-width: 1180px) {
  .module-tabs { position:fixed;left:50%;bottom:15px;z-index:30;transform:translateX(-50%);box-shadow:0 12px 35px rgba(18,25,70,.18); }
  main { padding-bottom:105px; }
  .user-menu span { display:none; }
}
@media (max-width: 760px) {
  .auth-card { padding:28px 20px; }
  .auth-brand { width:112px;height:112px; }
  .criterion-row { grid-template-columns:1fr 38px; }
  .criterion-row select { grid-column:span 1; }
  .product-result-grid { grid-template-columns:1fr; }
  .product-panel { padding:22px 15px; }
  .module-tabs { width:calc(100% - 24px); }
  .module-tab { flex:1;padding:0 7px; }
  .user-menu { display:none; }
}

/* Compra de imóvel: fluxo visual baseado na nova experiência em três etapas. */
:root { --brand-gradient:linear-gradient(90deg,#2563eb,#4f46e5,#8b5cf6,#9333ea); }
.grad-text {
  background:var(--brand-gradient);
  background-clip:text;
  -webkit-background-clip:text;
  color:transparent;
  -webkit-text-fill-color:transparent;
}
.button.primary {
  background:var(--brand-gradient);
  box-shadow:0 9px 22px rgba(79,70,229,.22);
}
.button.primary:hover { background:var(--brand-gradient);filter:brightness(1.08); }
.button:disabled { cursor:wait;opacity:.66;transform:none; }
#property-module { width:100%;max-width:1180px;margin:0 auto; }
.property-intro { padding:78px 2px 32px; }
.property-intro-copy { max-width:850px; }
.property-intro h1 {
  max-width:850px;
  margin:0;
  font-family:var(--font-mono);
  font-size:clamp(31px,4.1vw,52px);
  font-weight:800;
  letter-spacing:-1.8px;
  line-height:1.12;
}
.property-intro .hero-copy { max-width:680px;margin-top:20px;font-size:15px;line-height:1.7; }
.property-steps { display:flex;flex-wrap:wrap;gap:10px;margin-top:34px; }
.property-step-pill {
  display:flex;
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:10px 18px;
  border:1px solid var(--line);
  border-radius:11px;
  background:var(--surface);
  color:var(--muted);
  cursor:pointer;
  font-family:var(--font-mono);
  font-size:12px;
  transition:border-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease;
}
.property-step-pill:hover { border-color:#8b5cf6;color:var(--ink);transform:translateY(-2px); }
.property-step-pill span {
  background:var(--brand-gradient);
  background-clip:text;
  -webkit-background-clip:text;
  color:transparent;
  -webkit-text-fill-color:transparent;
  font-size:10px;
  font-weight:850;
  letter-spacing:.12em;
}
.property-step-pill.is-active { border-color:#8b5cf6;color:var(--ink);font-weight:800;box-shadow:var(--shadow); }
.property-step-pill.is-active span { background:none;color:#8b5cf6;-webkit-text-fill-color:#8b5cf6; }
.property-step-pill.is-done span { background:none;color:#6366f1;-webkit-text-fill-color:#6366f1; }
.property-step-panel { display:none;scroll-margin-top:105px; }
.property-step-panel.is-active { display:block;animation:property-panel-in .34s ease both; }
@keyframes property-panel-in { from { opacity:0;transform:translateY(12px); } to { opacity:1;transform:none; } }
.property-section-head { max-width:800px;margin:0 0 32px; }
.property-section-head h2 {
  margin:0;
  font-family:var(--font-mono);
  font-size:clamp(26px,3.3vw,38px);
  font-weight:800;
  letter-spacing:-1.2px;
  line-height:1.2;
}
.property-section-head > div > p:last-child { max-width:690px;margin:12px 0 0;color:var(--muted);font-size:13px; }
.compact-heading { padding-bottom:22px; }
.compact-heading h2 { font-size:22px; }
.panel-tag {
  display:inline-block;
  padding:5px 11px;
  border-radius:6px;
  background:var(--brand-gradient);
  color:#fff;
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.scenario-toolbar { display:flex;align-items:center;justify-content:space-between;gap:16px; }
#property-module .scenarios-section { margin-top:0; }
#property-module .scenario-strip { padding-top:18px; }
#property-module .scenario-card { flex-basis:390px;border-radius:16px; }
.property-step-nav { display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;margin:34px 0 64px; }
.property-step-nav-end { justify-content:flex-end; }
.property-step-nav .button { min-width:165px; }
#results.property-step-panel { margin-top:0;padding-top:0; }
#results .results-heading { margin-bottom:28px; }

/* O miolo analítico mantém o contraste de terminal do layout fornecido. */
#results .chart-panel,
#results .sankey-panel,
#results .ledger-panel { background:#090c19;border-color:#202744;color:#e9eaf6;box-shadow:0 18px 48px rgba(8,10,20,.18); }
#results .chart-heading p,
#results .ledger-heading p,
#results .legend-item { color:#9ba3c4; }
#results .chart text { fill:#858eae; }
#results .chart .grid { stroke:#242b45; }
#results .chart .axis { stroke:#626b8d; }
#results .chart .event-marker { stroke:#090c19; }
#results .chart-tooltip { background:rgba(17,22,42,.97);border-color:#303858;color:#eef0ff; }
#results .chart-tooltip .tooltip-scenarios span { color:#a6acc3; }
#results .chart-tooltip .tooltip-scenarios span strong { color:#eef0ff; }
#results .sankey .node-label { fill:#e9eaf6; }
#results .sankey .node-value { fill:#9ba3c4; }
#results .sankey .node { stroke:rgba(255,255,255,.18); }
#results .scenario-filter > span:first-child { color:#9ba3c4; }
#results .scenario-filter select { background:#11162a;border-color:#303858;color:#eef0ff; }
#results .table-wrap { border-color:#252d4c; }
#results .ledger-panel th { background:#11162a;border-color:#303858;color:#9ba3c4; }
#results .ledger-panel td { border-color:#1d243e;color:#d9dcef; }
#results .ledger-panel tr:hover td { background:#11162a; }
#results .event-pill { background:#24204a;color:#c4b5fd; }

@media (max-width: 720px) {
  .property-intro { padding:48px 2px 28px; }
  .property-intro h1 { font-size:clamp(29px,9vw,42px);letter-spacing:-1.3px; }
  .property-steps { display:grid;grid-template-columns:1fr; }
  .property-step-pill { justify-content:flex-start; }
  .property-section-head { margin-bottom:24px; }
  .property-step-nav { margin-bottom:38px; }
  .property-step-nav .button { flex:1;min-width:0; }
  #property-module .scenario-card { flex-basis:calc(100vw - 42px); }
}

/* Resultado de imóveis — composição fiel ao terminal de compra_imovel.html. */
.res-top { display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:26px; }
.result-chips { display:flex;gap:8px;flex-wrap:wrap; }
.result-chip { padding:7px 13px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);font-family:var(--font-mono);font-size:11px; }
.result-chip b { color:#8b5cf6; }
.result-export-actions { display:flex;gap:10px;flex-wrap:wrap; }
.result-export-button { display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);cursor:pointer;font-family:var(--font-mono);font-size:12px;font-weight:650;transition:.2s ease; }
.result-export-button:hover { border-color:#8b5cf6;color:#8b5cf6;transform:translateY(-2px); }
.result-export-button span { padding:2px 6px;border-radius:5px;background:var(--brand-gradient);color:#fff;font-size:9px;font-weight:850;letter-spacing:.1em; }

.result-summary-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px; }
.result-summary-card { position:relative;overflow:hidden;padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--surface);transition:transform .25s ease,box-shadow .25s ease; }
.result-summary-card::before { content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--scenario-color); }
.result-summary-card:hover { transform:translateY(-4px);box-shadow:var(--shadow); }
.result-summary-seal { min-height:23px;color:#16a34a;font-family:var(--font-mono);font-size:9px;font-weight:800;letter-spacing:.1em;text-align:right;text-transform:uppercase; }
.result-summary-seal:not(:empty) { width:max-content;margin-left:auto;padding:3px 8px;border:1px solid rgba(22,163,74,.3);border-radius:999px;background:rgba(22,163,74,.07); }
.result-summary-type { display:inline-block;padding:4px 10px;border-radius:6px;background:var(--brand-gradient);color:#fff;font-family:var(--font-mono);font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase; }
.result-summary-card h3 { margin:12px 0 0;font-family:var(--font-mono);font-size:15px;font-weight:800; }
.result-summary-value { margin-top:10px;font-family:var(--font-mono);font-size:clamp(22px,2.4vw,28px);font-weight:850;letter-spacing:-.7px;line-height:1.25; }
.result-summary-caption { margin-top:2px;color:var(--muted);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase; }
.result-summary-real { margin-top:6px;color:var(--muted);font-size:11px; }
.result-summary-rows { margin-top:16px;padding-top:12px;border-top:1px dashed var(--line); }
.result-summary-row { display:flex;align-items:baseline;padding:4.5px 0;color:var(--muted);font-size:11.5px; }
.result-summary-row > span:first-child { flex:none; }
.result-summary-row > i { flex:1;margin:0 9px;border-bottom:1px dotted var(--line);transform:translateY(-3px); }
.result-summary-row > b { flex:none;color:var(--ink);font-weight:750; }
.result-warn { color:#d97706; }.result-ok { color:#16a34a; }
html[data-theme="dark"] .result-summary-seal { color:#4ade80; }
html[data-theme="dark"] .result-warn { color:#fbbf24; }
html[data-theme="dark"] .result-ok { color:#4ade80; }

.term-block { margin-bottom:30px; }
.result-terminal { overflow:hidden;border:1px solid #1e2438;border-radius:15px;background:#0b0e1a;color:#c9d3e3;box-shadow:0 30px 80px rgba(2,6,23,.22),0 0 0 1px rgba(99,102,241,.07); }
.result-terminal-bar { display:flex;align-items:center;gap:8px;min-height:46px;padding:10px 16px;border-bottom:1px solid #1e2438;background:#0e1220;flex-wrap:wrap; }
.terminal-dot { width:11px;height:11px;border-radius:50%;flex:none; }
.terminal-dot-red { background:#ff5f57; }.terminal-dot-yellow { background:#febc2e; }.terminal-dot-green { background:#28c840; }
.result-terminal-title { margin:0 auto 0 10px;color:#5b657d;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em; }
.result-terminal-body { padding:18px 20px 20px;font-family:var(--font-mono);font-size:12px; }
.result-tabs { display:flex;flex-wrap:wrap;gap:6px; }
.result-tab { padding:6px 13px;border:1px solid #262e4a;border-radius:999px;background:transparent;color:#8fa0bd;cursor:pointer;font-family:var(--font-mono);font-size:11px;transition:.2s ease; }
.result-tab:hover { border-color:#8b5cf6;color:#e6edf3; }
.result-tab.is-active { border-color:transparent;background:var(--brand-gradient);color:#fff;font-weight:700; }
.result-chart-legend { display:flex;flex-wrap:wrap;gap:16px;margin-bottom:12px;color:#8fa0bd;font-size:10.5px; }
.result-chart-legend span { display:inline-flex;align-items:center;gap:7px; }
.result-chart-legend i { display:inline-block;width:16px;height:4px;border-radius:2px; }
.result-chart-legend .result-diamond { width:8px;height:8px;border-radius:1px;background:#c4b5fd;transform:rotate(45deg); }
.result-chart-box { position:relative;min-height:390px;overflow:hidden;touch-action:pan-y; }
.result-chart-box svg,.result-sankey svg,.result-monte-carlo svg { display:block;width:100%;height:auto;font-family:var(--font-mono); }
.result-chart-box text,.result-monte-carlo text { fill:#5f6b8a;font-size:10px; }
.result-grid-line { stroke:rgba(148,163,184,.12);stroke-width:1; }
.result-series-line { fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;pointer-events:none; }
.result-payoff-line { stroke:rgba(148,163,184,.3);stroke-width:1;stroke-dasharray:3 4; }
.result-end-label { font-size:10.5px !important;font-weight:750; }
.result-chart-hitbox { cursor:crosshair;pointer-events:all; }
.result-crosshair { stroke:rgba(196,181,253,.45);stroke-width:1;opacity:0;pointer-events:none; }
.result-crosshair.is-visible { opacity:1; }
.result-chart-tip { position:absolute;top:36px;z-index:5;min-width:180px;padding:9px 12px;border:1px solid #262e4a;border-radius:9px;background:#0e1220;color:#c9d3e3;font-size:11px;line-height:1.7;opacity:0;pointer-events:none;transition:opacity .15s ease;box-shadow:0 18px 42px rgba(0,0,0,.25); }
.result-chart-tip.is-visible { opacity:1; }
.result-chart-tip b { color:#e6edf3; }.result-chart-tip > span { color:#5f6b8a; }
.result-chart-tip div { display:flex;align-items:center;gap:7px; }
.result-chart-tip div i { width:8px;height:8px;border-radius:50%;flex:none; }
.result-chart-tip div strong { margin-left:auto;color:#79c0ff; }
.result-chart-tip em { display:block;color:#4ade80;font-style:normal; }

.result-sankey { min-height:340px;overflow-x:auto; }
.result-sankey svg { min-width:760px; }
.result-sankey-flow { transition:fill-opacity .2s ease; }
.result-sankey-label { fill:#cbd5e1;font-size:10.5px; }
.result-sankey-value { fill:#79c0ff;font-size:9.5px; }
.result-empty { display:grid;min-height:180px;place-items:center;margin:0;color:#5f6b8a; }

.result-monte-carlo { overflow-x:auto; }
.result-monte-carlo svg { min-width:720px; }
.result-median-line { fill:none;stroke:#a5b4fc;stroke-width:2.2;stroke-linejoin:round; }
.result-deterministic-line { fill:none;stroke:#79c0ff;stroke-width:1.6;stroke-dasharray:4 4; }
.result-histogram { margin-top:14px; }
.result-chart-caption { margin:12px 0 0;color:#5f6b8a;font-size:10.5px;line-height:1.7; }
.monte-carlo-summary { display:flex;flex-wrap:wrap;gap:10px;margin-top:14px; }
.monte-carlo-summary span { padding:6px 13px;border:1px solid #2a3350;border-radius:999px;background:#11162a;color:#8fa0bd;font-size:10.5px; }
.monte-carlo-summary b { color:#c4b5fd; }

.ledger-terminal-body { padding:12px; }
.event-only-toggle { display:inline-flex;align-items:center;gap:10px;margin:3px 4px 14px;color:#8fa0bd;cursor:pointer;font-size:11px;user-select:none; }
.event-only-toggle input { position:absolute;width:1px;height:1px;opacity:0; }
.event-toggle-track { position:relative;width:38px;height:21px;border:1px solid #2a3350;border-radius:999px;background:#1a2138;transition:.2s ease; }
.event-toggle-track::after { content:"";position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#8fa0bd;transition:.2s ease; }
.event-only-toggle input:checked + .event-toggle-track { border-color:transparent;background:var(--brand-gradient); }
.event-only-toggle input:checked + .event-toggle-track::after { transform:translateX(17px);background:#fff; }
.event-only-toggle input:focus-visible + .event-toggle-track { outline:2px solid #8b5cf6;outline-offset:2px; }
.monthly-table-scroll { max-height:480px;overflow:auto;border-radius:10px; }
.monthly-table { width:100%;min-width:700px;border-collapse:collapse;font-size:11.5px; }
.monthly-table th { position:sticky;top:0;z-index:2;padding:11px 13px;border-bottom:1px solid #1e2438;background:#0e1220;color:#8fa0bd;font-size:9.5px;font-weight:650;letter-spacing:.14em;text-align:right;text-transform:uppercase; }
.monthly-table th:first-child,.monthly-table th:last-child,.monthly-table td:first-child,.monthly-table td:last-child { text-align:left; }
.monthly-table td { padding:7px 13px;border-bottom:1px solid #161d33;color:#c9d3e3;text-align:right;white-space:nowrap; }
.monthly-table td:last-child { min-width:220px;max-width:360px;color:#8fa0bd;white-space:normal; }
.monthly-table tbody tr:hover td { background:rgba(139,92,246,.06); }
.monthly-table tr.has-event td:first-child { color:#c4b5fd; }
.monthly-table .negative { color:#f87171; }
.monthly-event { display:inline-block;margin:2px 4px 2px 0;padding:2px 7px;border:1px solid #2a3350;border-radius:999px;color:#8fa0bd;font-size:9.5px; }
.monthly-event.is-highlight { border-color:#8b5cf6;color:#c4b5fd; }
.monthly-event.is-negative { border-color:rgba(248,113,113,.45);color:#f87171; }
.ledger-count { margin:12px 4px 0;color:#5f6b8a;font-size:10.5px; }

@media (max-width:720px) {
  .result-export-actions { width:100%; }
  .result-export-button { flex:1; }
  .result-summary-grid { grid-template-columns:1fr; }
  .result-terminal-body { padding:14px 10px 16px; }
  .result-terminal-title { width:calc(100% - 72px);margin-right:0; }
  .result-tabs { width:100%;padding-top:4px; }
  .result-chart-box { min-height:315px;overflow-x:auto; }
  .result-chart-box svg { min-width:760px; }
  .result-chart-tip { position:sticky;left:8px !important;top:8px;width:260px; }
}

/* Comparador de produtos — fluxo visual do protótipo, ligado ao motor real. */
.product-app-intro { padding:68px 2px 42px; }
.product-app-intro h1 { margin:0;font-family:var(--font-mono);font-size:clamp(36px,4.6vw,58px);font-weight:800;letter-spacing:-2.5px;line-height:1.08; }
.product-app-intro .hero-copy { max-width:780px;margin-top:20px;font-size:15px;line-height:1.72; }
.product-steps { display:flex;gap:10px;margin-top:32px; }
.product-step-pill { min-height:44px;padding:10px 18px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--muted);cursor:pointer;font-family:var(--font-mono);font-size:12px;transition:.2s ease; }
.product-step-pill:hover { border-color:#8b5cf6;color:var(--ink);transform:translateY(-2px); }
.product-step-pill span { color:#8b5cf6;font-size:10px;font-weight:850;letter-spacing:.12em; }
.product-step-pill.is-active { border-color:#8b5cf6;color:var(--ink);font-weight:800;box-shadow:var(--shadow); }
.product-step-pill.is-done span { color:#6366f1; }
.product-step-panel { display:none;scroll-margin-top:104px; }
.product-step-panel.is-active { display:block;animation:property-panel-in .34s ease both; }
.product-section-head { max-width:850px;margin-bottom:28px; }
.product-section-head h2 { margin:0;font-family:var(--font-mono);font-size:clamp(27px,3.4vw,40px);font-weight:800;letter-spacing:-1.4px;line-height:1.17; }
.product-section-head > p:last-child { max-width:760px;margin:13px 0 0;color:var(--muted);font-size:13px;line-height:1.7; }
.product-analysis-panel,.product-panel { position:relative;margin-bottom:20px;padding:32px;overflow:visible; }
.product-analysis-panel .panel-tag,.product-panel>.panel-tag { position:absolute;top:0;left:32px;transform:translateY(-50%); }
.product-analysis-grid { display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1fr);gap:22px;align-items:end; }
.product-title-field { width:auto;margin:0; }
.product-method-static { min-height:44px;padding:0 13px;display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft);color:var(--muted);font-family:var(--font-mono);font-size:10px; }
.product-method-static i { width:7px;height:7px;border-radius:50%;background:var(--brand-gradient);box-shadow:0 0 0 4px rgba(139,92,246,.1); }
.product-editor-heading { margin:8px 0 15px;padding-top:0;border-top:0;align-items:center; }
.product-editor-heading h3 { font-size:16px; }
.product-editor-heading p { margin:4px 0 0;color:var(--muted);font-size:11px; }
.criteria-editor { display:grid;gap:9px; }
.criterion-row { grid-template-columns:minmax(180px,1fr) minmax(145px,.65fr) minmax(190px,.8fr) 38px;padding:9px;border-color:var(--line);border-radius:10px; }
.criterion-row input,.criterion-row select,.product-matrix input { border-color:var(--line);background:var(--input-bg);font-family:var(--font-mono);font-size:11px; }
.criterion-row input:focus,.criterion-row select:focus,.product-matrix input:focus { border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.1); }
.product-matrix-panel { padding-bottom:25px; }
.product-matrix-wrap { border-radius:11px; }
.product-matrix { min-width:760px; }
.product-matrix th { padding:12px 11px;color:var(--muted);font-size:8.5px;letter-spacing:.1em; }
.product-matrix th small { color:#8b5cf6;font-size:8px; }
.product-matrix td { padding:9px; }
.product-matrix tbody tr:hover { background:color-mix(in srgb,var(--surface-soft) 68%,transparent); }
.product-matrix input.is-best-value { border-bottom-color:#8b5cf6;box-shadow:inset 0 -2px #8b5cf6; }
.product-matrix-hint { margin:12px 0 0;color:var(--muted);font-family:var(--font-mono);font-size:9.5px; }
.product-step-nav { display:flex;justify-content:space-between;gap:14px;margin:30px 0 64px; }
.product-step-nav .button { min-width:170px; }
.product-method-flow { margin:0 0 25px;padding:13px 16px;display:flex;align-items:center;justify-content:center;gap:12px;overflow:auto;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--muted);font-family:var(--font-mono);font-size:9.5px;white-space:nowrap; }
.product-method-flow b { color:#8b5cf6;font-size:14px; }.product-method-flow .is-final { padding:4px 10px;border-radius:999px;background:var(--brand-gradient);color:#fff;font-weight:750; }
.product-result-top { margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap; }
.product-winner { position:relative;margin-bottom:22px;padding:24px 28px;border-color:transparent;border-radius:15px;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--brand-gradient) border-box;box-shadow:var(--shadow); }
.product-winner::after { content:"melhor escolha";position:absolute;right:20px;top:18px;padding:4px 9px;border-radius:999px;background:var(--brand-gradient);color:#fff;font-family:var(--font-mono);font-size:8px;font-weight:800;letter-spacing:.1em;text-transform:uppercase; }
.product-winner span { color:#8b5cf6; }.product-winner strong { padding-right:120px;font-size:clamp(22px,3vw,31px); }.product-winner small { font-family:var(--font-mono);font-size:10px; }
.product-result-terminal { margin-bottom:24px; }
.product-result-terminal .result-terminal-body { padding:20px; }
.ranking-list { gap:9px; }
.ranking-row { grid-template-columns:44px minmax(140px,1fr) minmax(150px,2fr) 82px;min-height:62px;padding:8px 13px;border:1px solid #1e2944;border-radius:10px;background:#0e1323; }
.ranking-row:first-child { border-color:#7c3aed;background:linear-gradient(90deg,rgba(37,99,235,.1),rgba(139,92,246,.12));box-shadow:0 0 28px rgba(124,58,237,.09); }
.ranking-position { width:34px;height:34px;background:#171d35;color:#c4b5fd;font-size:12px; }
.ranking-row:first-child .ranking-position { background:var(--brand-gradient);color:#fff; }
.ranking-row>strong { color:#e9eaf6;font-size:12px; }.ranking-row>strong:last-child { color:#c4b5fd;font-size:12px; }
.result-bar { background:#1a2138; }.result-bar i { background:var(--brand-gradient); }
.weights-list { gap:14px; }.weight-row { grid-template-columns:minmax(150px,.75fr) minmax(160px,1fr);align-items:center;gap:18px; }.weight-heading span { color:#b5bed2;font-size:11px; }.weight-heading strong { color:#c4b5fd;font-size:11px; }
.product-normalized { overflow:auto; }.product-normalized table { width:100%;min-width:680px;border-collapse:separate;border-spacing:4px;font-family:var(--font-mono); }.product-normalized th { padding:8px;color:#7e8aa9;font-size:8.5px;text-align:center;text-transform:uppercase; }.product-normalized th:first-child,.product-normalized td:first-child { text-align:left; }.product-normalized td { padding:8px;border-radius:6px;color:#dfe4f2;font-size:10px;text-align:center; }.product-normalized td:first-child { color:#b9c1d5;font-weight:700; }.normalized-cell { display:block;padding:8px 6px;border:1px solid rgba(139,92,246,var(--heat));border-radius:6px;background:rgba(139,92,246,calc(var(--heat) * .28)); }.normalized-best { color:#fff!important;box-shadow:inset 0 0 0 1px #a78bfa; }
.product-radar { min-height:360px;overflow:auto; }.product-radar svg { display:block;width:min(620px,100%);min-width:520px;margin:auto;overflow:visible;font-family:var(--font-mono); }.product-radar .radar-grid { fill:none;stroke:#252e4b;stroke-width:1; }.product-radar .radar-axis { stroke:#303a5a;stroke-width:1; }.product-radar text { fill:#7e8aa9;font-size:9px; }.product-radar .radar-shape { fill-opacity:.08;stroke-width:2; }.product-radar-legend { margin-bottom:14px;display:flex;justify-content:center;gap:14px;flex-wrap:wrap;color:#8fa0bd;font-family:var(--font-mono);font-size:9px; }.product-radar-legend span { display:flex;align-items:center;gap:6px; }.product-radar-legend i { width:8px;height:8px;border-radius:50%; }
@media(max-width:760px){.product-app-intro{padding-top:48px}.product-app-intro h1{font-size:clamp(31px,10vw,44px);letter-spacing:-1.7px}.product-steps{display:grid}.product-analysis-grid{grid-template-columns:1fr}.product-analysis-panel,.product-panel{padding:26px 15px}.product-analysis-panel .panel-tag,.product-panel>.panel-tag{left:15px}.criterion-row{grid-template-columns:1fr 38px}.criterion-row select{grid-column:span 1}.product-method-flow{justify-content:flex-start}.product-result-top .result-export-actions{width:100%}.product-result-top .result-export-button{flex:1}.ranking-row{grid-template-columns:36px minmax(100px,1fr) 65px}.ranking-row .result-bar{display:none}.weight-row{grid-template-columns:1fr}.product-winner strong{padding-right:0}.product-winner::after{position:static;display:inline-block;margin-top:12px}.product-radar{min-height:300px}}
