:root{
  --bg:#f3f5f3; --surface:#fbfcfb; --surface-2:#eef1ee; --line:#dde2dd;
  --ink:#161a17; --ink-2:#464e48; --ink-3:#727b74;
  --accent:#227e5d; --accent-soft:#227e5d1a;
  --pos:#227e5d; --neg:#b0553c; --warn:#a9782a; --amber:#b07e23; --info:#3e6f9e;
  --grid:#e7ebe7;
  --num:"SF Mono",ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0e120f; --surface:#151a16; --surface-2:#1b211c; --line:#28312a;
  --ink:#eaf0ea; --ink-2:#aebab0; --ink-3:#7d8a80;
  --accent:#3fb389; --accent-soft:#3fb38922;
  --pos:#3fb389; --neg:#d67a5c; --warn:#d6a845; --amber:#b58a34; --info:#6ba9d6; --grid:#232b25;
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.5;font-size:15px;-webkit-font-smoothing:antialiased}
.num{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.wrap{max-width:1120px;margin:0 auto;padding:22px 18px 90px}
h1{font-size:22px;font-weight:680;letter-spacing:-.02em;margin:0}
.eyebrow{font-family:var(--num);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:600}
.sub{color:var(--ink-2);font-size:13px;margin-top:2px}
header.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:16px}
.brand{display:flex;gap:12px;align-items:center}
.mark{width:34px;height:34px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:var(--num);font-weight:700;font-size:15px;flex:none}
.src{display:flex;flex-direction:column;gap:7px;align-items:flex-end}
.srcline{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:6px}
.status-dot{width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
.status-dot.ok{background:var(--pos)} .status-dot.err{background:var(--neg)}
button{font-family:var(--sans);cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:9px;padding:7px 13px;font-size:13px;font-weight:560;transition:.12s}
button:hover{border-color:var(--accent)} button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
button.primary:hover{filter:brightness(1.06)}
button.ghost{background:transparent}
button:disabled{opacity:.5;cursor:not-allowed}
.monthbar{display:flex;flex-direction:column;gap:7px;margin:16px 0 4px}
.frow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.flabel{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);font-weight:600;width:34px;flex:none}
.fchip{padding:4px 11px;font-size:12.5px;border-radius:20px;font-family:var(--num);font-weight:560;color:var(--ink-2);background:var(--surface-2);border:1px solid transparent}
.fchip:hover{border-color:var(--accent)}
.fchip.active{background:var(--accent);color:#fff}
.rec-alert{margin-top:14px;padding:16px 17px;border:1px solid var(--warn);border-radius:13px;background:#a9782a14}
.rec-alert-h{font-size:14.5px;font-weight:640;color:var(--ink)}
.rec-alert-h .num{color:var(--warn)}
.rec-alert-sub{font-size:12.5px;color:var(--ink-2);margin-top:3px}
.fsel{font-family:var(--sans);font-size:13px;font-weight:540;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:6px 30px 6px 12px;cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center}
.fsel:hover{border-color:var(--accent)} .fsel:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.fsel:disabled{opacity:.45;cursor:default}
.tabs{display:flex;gap:4px;margin-bottom:6px;border-bottom:1px solid var(--line)}
.tab{border:none;background:transparent;border-radius:0;border-bottom:2px solid transparent;color:var(--ink-3);font-size:14px;font-weight:560;padding:9px 14px;margin-bottom:-1px}
.tab:hover{color:var(--ink);border-color:transparent}
.tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.lancfilters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:16px 0 4px}
.lancfilters input[type=text]{font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:7px 12px;min-width:180px;flex:1}
.lancfilters input[type=text]:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer;user-select:none}
.lancsum{margin-top:10px;font-size:13px;color:var(--ink-2)}
.lancsum b{color:var(--ink)}
#lanctable td,#rectable td,#lanctable th,#rectable th{padding:8px 12px}
#lanctable tr:hover td,#rectable tr:hover td{background:var(--surface-2)}
.val-neg{color:var(--neg);text-align:right;font-family:var(--num);font-variant-numeric:tabular-nums;white-space:nowrap}
.val-pos{color:var(--pos);text-align:right;font-family:var(--num);font-variant-numeric:tabular-nums;white-space:nowrap}
.badge{display:inline-block;font-size:10.5px;font-weight:600;padding:1.5px 7px;border-radius:20px;font-family:var(--num);margin-left:5px}
.badge.plan{background:var(--accent-soft);color:var(--accent)}
.badge.fixo{background:#a9782a1f;color:var(--warn)}
.freqbar{display:inline-block;height:6px;border-radius:3px;background:var(--accent);vertical-align:middle;margin-right:7px}
section{margin-top:26px}
.sec-h{display:flex;align-items:baseline;gap:10px;margin-bottom:13px;flex-wrap:wrap}
.sec-h h2{font-size:16px;font-weight:640;margin:0;letter-spacing:-.01em}
.sec-h .note{color:var(--ink-3);font-size:12.5px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:17px}
.grid-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:14px 15px;display:flex;flex-direction:column;gap:3px}
.kpi .lab{font-size:11.5px;color:var(--ink-3);font-weight:500}
.kpi .val{font-size:24px;font-weight:660}
.kpi .foot{font-size:11px;color:var(--ink-2)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.bars{display:flex;flex-direction:column;gap:8px}
.barrow{display:grid;grid-template-columns:130px 1fr auto;align-items:center;gap:10px}
.barrow .lb{font-size:12px;color:var(--ink-2);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.track{height:19px;background:var(--surface-2);border-radius:5px;overflow:hidden}
.fill{height:100%;border-radius:5px;background:var(--accent)}
.barrow .vv{font-size:12px;color:var(--ink);min-width:66px;text-align:right}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line)}
td{padding:7px 8px;border-bottom:1px solid var(--line);color:var(--ink-2)}
td.d{color:var(--ink);font-weight:500} td.r{text-align:right;color:var(--ink)}
tr:last-child td{border-bottom:none}
.mut{color:var(--ink-3)}
.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.dot{width:10px;height:10px;border-radius:3px;flex:none}
.chart-wrap{overflow-x:auto}
.insight{display:flex;gap:12px;padding:14px 15px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.insight+.insight{margin-top:10px}
.ic{width:29px;height:29px;border-radius:8px;flex:none;display:grid;place-items:center;font-family:var(--num);font-weight:700;font-size:13px;color:#fff}
.insight h3{margin:0 0 3px;font-size:14px;font-weight:620}
.insight p{margin:0;font-size:13px;color:var(--ink-2)}
.insight .lever{margin-top:5px;font-size:12px;color:var(--accent);font-weight:600}
.empty{max-width:520px;margin:60px auto;text-align:center}
.empty .mark{margin:0 auto 18px;width:52px;height:52px;font-size:20px;border-radius:14px}
.empty h2{font-size:20px;margin:0 0 8px}
.empty p{color:var(--ink-2);font-size:14px;margin:0 0 22px}
.empty .actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.hint{font-size:12px;color:var(--ink-3);margin-top:16px}
.callout{padding:11px 13px;background:var(--accent-soft);border-radius:10px;font-size:12.5px;color:var(--ink-2);margin-top:12px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-size:13px;box-shadow:0 6px 24px #0004;opacity:0;transition:.2s;pointer-events:none;z-index:50}
.toast.show{opacity:1}
.foot-note{margin-top:32px;padding-top:15px;border-top:1px solid var(--line);color:var(--ink-3);font-size:12px}
.hidden{display:none!important}
.gate{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:20px}
.gate-box{max-width:340px;width:100%;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:32px 28px}
.gate-box .mark{margin:0 auto 16px;width:48px;height:48px;font-size:22px;border-radius:13px;background:var(--surface-2);color:var(--ink)}
.gate-box h2{font-size:19px;margin:0 0 6px}
.gate-box p{color:var(--ink-2);font-size:13.5px;margin:0 0 18px}
.gate-box input{width:100%;font-size:15px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);margin-bottom:11px}
.gate-box input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.gate-box button{width:100%;padding:11px}
.gate-err{color:var(--neg);font-size:12.5px;margin-top:11px;min-height:16px}
@media(max-width:760px){.grid-kpi{grid-template-columns:1fr 1fr}.two{grid-template-columns:1fr}.barrow{grid-template-columns:100px 1fr auto}.src{align-items:flex-start}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
