*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17343a;background:#f4f7f6}button,input,select,textarea{font:inherit}.hidden{display:none!important}:root{--ink:#17343a;--muted:#6d8185;--line:#dce7e5;--teal:#1d6f6a;--teal-dark:#155550;--paper:#fff;--soft:#eef5f3;--green:#39836a;--red:#b54f59;--gold:#a27322;--purple:#775fa8;--blue:#3c6f91;--shadow:0 16px 42px rgba(21,55,61,.08)}body{min-width:320px}.auth-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);background:#fff}.auth-visual{padding:clamp(42px,7vw,100px);background:linear-gradient(145deg,#173a42,#1f5e5d);color:#fff;display:flex;flex-direction:column;justify-content:center}.brand-mark{width:64px;height:64px;border-radius:20px;background:#fff;color:#1d6f6a;display:grid;place-items:center;font-size:30px;font-weight:900;box-shadow:0 12px 28px rgba(0,0,0,.14);margin-bottom:30px}.brand-mark.small{width:40px;height:40px;border-radius:13px;font-size:20px;margin:0;box-shadow:none}.eyebrow{display:block;font-size:10px;font-weight:900;letter-spacing:.12em;color:#5e777a}.eyebrow.light{color:#b9d4d0}.auth-visual h1{font-size:clamp(38px,5.4vw,72px);line-height:1.02;max-width:760px;margin:12px 0 20px;letter-spacing:-.04em}.auth-visual p{max-width:620px;color:#d7e5e3;font-size:17px;line-height:1.65}.auth-cycle{margin-top:34px;padding:16px 18px;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:rgba(255,255,255,.07);display:grid;gap:4px;max-width:520px}.auth-cycle strong{font-size:13px;letter-spacing:.06em}.auth-cycle span{font-size:11px;color:#c8dcda}.auth-card{display:flex;flex-direction:column;justify-content:center;padding:clamp(36px,7vw,90px);max-width:620px;width:100%;margin:auto}.auth-card h2{font-size:30px;margin:8px 0 8px}.auth-card p{color:var(--muted);line-height:1.6;margin:0 0 24px}.form-stack{display:grid;gap:14px}.form-stack label,.form-grid label{display:grid;gap:6px;font-size:11px;font-weight:800;color:#405b60}.form-stack input,.form-stack select,.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #ccdcd9;border-radius:11px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}.form-stack input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#55a19a;box-shadow:0 0 0 3px rgba(45,126,119,.1)}.btn{border:0;border-radius:11px;padding:10px 14px;font-weight:850;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px}.btn.primary{background:var(--teal);color:#fff}.btn.primary:hover{background:var(--teal-dark)}.btn.secondary{background:#eef5f3;color:#285d5a;border:1px solid #d2e2df}.btn.ghost{background:#fff;color:#526c70;border:1px solid #dce7e5}.btn.danger{background:#fff1f2;color:#a93945;border:1px solid #efccd1}.btn.sm{padding:7px 10px;min-height:32px;font-size:10px}.form-error{margin-top:14px;padding:10px 12px;border-radius:10px;background:#fff0f1;color:#a83c48;font-size:11px;font-weight:700}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:#173a42;color:#fff;padding:20px 14px;display:flex;flex-direction:column;z-index:20}.sidebar-head{display:flex;align-items:center;gap:11px;padding:0 7px 20px}.sidebar-head>div:last-child{display:grid}.sidebar-head strong{font-size:15px}.sidebar-head span{font-size:10px;color:#a9c4c1}.sidebar nav{display:grid;gap:5px;overflow:auto;padding-right:3px}.nav-btn{border:0;background:transparent;color:#c8d9d7;border-radius:10px;padding:10px 11px;display:flex;align-items:center;gap:11px;text-align:left;cursor:pointer;font-weight:720;font-size:12px}.nav-btn:hover{background:rgba(255,255,255,.06);color:#fff}.nav-btn.active{background:#fff;color:#173a42}.nav-icon{width:22px;text-align:center;font-size:15px}.sidebar-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding:14px 5px 0;display:grid;gap:10px}.user-mini{display:flex;align-items:center;gap:9px}.user-mini>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e1efec;color:#1d6f6a;font-weight:900}.user-mini div{display:grid;min-width:0}.user-mini strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-mini small{font-size:9px;color:#9eb7b4}.nav-logout{border:0;background:transparent;color:#9eb7b4;text-align:left;padding:6px 0;cursor:pointer;font-size:10px}.main{padding:22px clamp(16px,2.5vw,38px) 46px;min-width:0}.topbar{width:min(100%,1500px);margin:0 auto 18px;display:flex;align-items:center;gap:14px;justify-content:space-between}.topbar h1{margin:4px 0 0;font-size:29px;line-height:1.1}.topbar-right{display:flex;align-items:center;gap:9px}.period-select{display:grid;gap:3px}.period-select span{font-size:8px;text-transform:uppercase;font-weight:900;letter-spacing:.08em;color:#72878a}.period-select select{min-width:185px;border:1px solid #d1e0dd;border-radius:10px;background:#fff;padding:9px 10px;font-weight:800;color:#29474c}.icon-action,.mobile-menu{width:40px;height:40px;border-radius:11px;border:1px solid #d3e1df;background:#fff;color:#2d6762;font-size:19px;cursor:pointer}.mobile-menu{display:none}.main #content{width:min(100%,1500px);margin:auto}.cycle-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;margin-bottom:12px;border:1px solid #cfe0dc;border-radius:14px;background:linear-gradient(135deg,#f6fbfa,#edf6f3)}.cycle-banner strong{font-size:12px}.cycle-banner span{font-size:10px;color:#688085}.cycle-badge{padding:6px 9px;border-radius:999px;background:#fff;border:1px solid #cfe0dc;font-size:9px!important;font-weight:900!important;color:#2d6762!important;white-space:nowrap}.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:10px;margin-bottom:12px}.kpi{background:#fff;border:1px solid var(--line);border-radius:15px;padding:15px;min-height:104px;display:flex;flex-direction:column;justify-content:center}.kpi .label{font-size:9px;color:#6b8084;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.kpi .value{font-size:25px;font-weight:900;letter-spacing:-.03em;margin:8px 0 3px}.kpi small{font-size:9px;color:#89999c}.kpi.negative .value{color:var(--red)}.kpi.positive .value{color:var(--green)}.kpi.purple .value{color:var(--purple)}.kpi.gold .value{color:var(--gold)}.grid-2{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:12px;margin-bottom:12px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 7px 20px rgba(20,58,64,.025);overflow:hidden}.panel-head{padding:15px 16px;border-bottom:1px solid #e7efed;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.panel-head h2{font-size:15px;margin:0}.panel-head p{font-size:10px;color:var(--muted);margin:4px 0 0;line-height:1.45}.panel-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.panel-body{padding:15px 16px}.list{display:grid}.list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #edf2f1}.list-row:last-child{border-bottom:0}.list-main{display:grid;gap:2px;min-width:0}.list-main strong{font-size:11px;overflow-wrap:anywhere}.list-main span{font-size:9px;color:var(--muted)}.amount{text-align:right;font-weight:900;font-size:12px}.amount small{display:block;font-size:8px;color:var(--muted);font-weight:700;margin-top:2px}.status{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.status.open{background:#fff2dc;color:#8a5c12}.status.paid,.status.received{background:#e9f6ef;color:#2f765e}.status.expected,.status.pending{background:#eef2f6;color:#60717a}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:760px}.table th{padding:9px 11px;background:#f6f9f8;color:#6c8084;text-align:left;font-size:8px;letter-spacing:.06em}.table td{padding:10px 11px;border-top:1px solid #edf2f1;font-size:10px;vertical-align:middle}.table td strong{font-size:10.5px}.actions{display:flex;gap:5px;justify-content:flex-end}.mini{border:1px solid #d8e5e2;background:#fff;color:#526e71;border-radius:8px;padding:6px 8px;font-size:9px;font-weight:800;cursor:pointer}.mini.danger{color:#aa414b;border-color:#edd0d4;background:#fff8f8}.progress{height:7px;border-radius:999px;background:#edf2f1;overflow:hidden}.progress>span{display:block;height:100%;background:#4b8d7d;border-radius:inherit}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.summary-box{padding:10px;border-radius:11px;background:#f7faf9}.summary-box span{display:block;font-size:8px;color:#738588;text-transform:uppercase;font-weight:900}.summary-box strong{display:block;font-size:15px;margin-top:4px}.nice-hero{background:linear-gradient(135deg,#faf8ff,#f1edfb);border-color:#ddd5ee}.nice-hero .big{font-size:34px;font-weight:900;color:#665293;margin:6px 0}.nice-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:8px;margin-top:12px}.nice-flow .step{padding:10px;border-radius:11px;background:#fff;border:1px solid #e3ddf0;text-align:center}.nice-flow .step span{display:block;font-size:8px;color:#8879a8;text-transform:uppercase;font-weight:900}.nice-flow .step strong{font-size:16px}.nice-flow .arrow{color:#9788b5;font-weight:900}.resale-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.product-card{border:1px solid var(--line);border-radius:13px;padding:12px;background:#fff}.product-card h3{font-size:12px;margin:0 0 4px}.product-card p{font-size:9px;color:var(--muted);margin:0 0 10px}.product-metrics{display:grid;grid-template-columns:1fr 1fr;gap:7px}.product-metrics div{padding:8px;background:#f7faf9;border-radius:9px}.product-metrics span{display:block;font-size:8px;color:#74878a}.product-metrics strong{font-size:11px}.empty{padding:28px;text-align:center;color:#718487}.empty strong{display:block;color:#405e63;font-size:12px;margin-bottom:4px}.goal-card{padding:14px;border:1px solid var(--line);border-radius:13px;background:#fff}.goal-head{display:flex;justify-content:space-between;gap:10px}.goal-head strong{font-size:11px}.goal-head span{font-size:9px;color:var(--muted)}.goal-card .progress{margin:10px 0 6px}.report-bars{display:grid;gap:9px}.report-row{display:grid;grid-template-columns:150px minmax(0,1fr) 90px;align-items:center;gap:8px;font-size:9px}.bar{height:9px;border-radius:999px;background:#edf2f1;overflow:hidden}.bar i{display:block;height:100%;background:#4c8b80;border-radius:inherit}.modal-card{border:1px solid #dbe7e5;padding:0;border-radius:18px;width:min(720px,calc(100vw - 24px));max-height:min(90vh,820px);overflow:auto;background:#fff;color:var(--ink);box-shadow:0 30px 90px rgba(20,50,56,.28)}dialog.app-modal{border:0;padding:0;background:transparent;max-width:none;max-height:none;overflow:visible;color:inherit}dialog.app-modal[open]{display:block}dialog::backdrop{background:rgba(20,42,47,.46);backdrop-filter:blur(3px)}.modal-body{background:#fff;border-radius:0 0 18px 18px}.modal-card .form-grid{background:#fff}.modal-card input,.modal-card select,.modal-card textarea{background:#fff!important;color:var(--ink)!important}.modal-card .form-actions{position:sticky;bottom:0;margin:4px -18px -17px;padding:13px 18px;background:rgba(255,255,255,.97);border-top:1px solid #e5eeec;z-index:2}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;padding:17px 18px;border-bottom:1px solid var(--line)}.modal-head h2{font-size:19px;margin:4px 0 0}.close-btn{border:0;background:#eef4f3;color:#5c7477;width:34px;height:34px;border-radius:9px;font-size:20px;cursor:pointer}.form-grid{padding:17px 18px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .span-2{grid-column:1/-1}.form-grid textarea{min-height:80px;resize:vertical}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.checkbox{display:flex!important;grid-auto-flow:column;justify-content:flex-start!important;align-items:center;gap:7px!important}.checkbox input{width:auto!important}.helper{font-size:8px;color:#87989a;font-weight:600}.inline-note{padding:10px 12px;background:#f5f9f8;border:1px solid #dbe8e6;border-radius:10px;font-size:9px;color:#607579}.filter-row{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.filter-chip{border:1px solid #d8e5e2;background:#fff;border-radius:999px;padding:7px 10px;font-size:9px;font-weight:800;color:#5c7477;cursor:pointer}.filter-chip.active{background:#173a42;color:#fff;border-color:#173a42}.mobile-only{display:none}@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.resale-grid{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr 1fr}}@media(max-width:780px){.app-shell{display:block}.sidebar{position:fixed;left:-270px;width:250px;transition:left .2s ease;box-shadow:20px 0 50px rgba(12,34,39,.18)}.sidebar.open{left:0}.main{padding:12px 10px 28px}.mobile-menu{display:block}.topbar{align-items:center;flex-wrap:wrap}.topbar>div:nth-child(2){flex:1}.topbar h1{font-size:22px}.topbar-right{width:100%;justify-content:space-between}.period-select{flex:1}.period-select select{width:100%;min-width:0}.kpi-grid{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr}.resale-grid{grid-template-columns:1fr}.cycle-banner{align-items:flex-start;flex-direction:column}.nice-flow{grid-template-columns:1fr}.nice-flow .arrow{transform:rotate(90deg);text-align:center}.form-grid{grid-template-columns:1fr}.form-grid .span-2,.form-actions{grid-column:auto}.table{min-width:680px}.report-row{grid-template-columns:90px 1fr 75px}.auth-screen{grid-template-columns:1fr}.auth-visual{min-height:42vh;padding:34px 24px}.auth-visual h1{font-size:38px}.auth-card{padding:30px 22px}.mobile-only{display:block}}@media(max-width:430px){.kpi-grid{grid-template-columns:1fr 1fr;gap:7px}.kpi{padding:11px;min-height:92px}.kpi .value{font-size:21px}.topbar-right{gap:6px}.icon-action{width:38px}.panel-head{flex-direction:column}.panel-actions{width:100%}.panel-actions .btn{flex:1}.summary-strip{grid-template-columns:1fr}.auth-visual p{font-size:14px}}
/* v0.1.1 — edição/conferência */
.data-origin-note{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:#f2f6f5;color:#6e8285;font-size:8px;font-weight:800;margin-top:3px}.edit-note{padding:10px 12px;margin:12px 16px 0;border:1px solid #dce8e6;border-radius:10px;background:#f8fbfa;font-size:9px;color:#60777a}.save-state{opacity:.68;pointer-events:none}.modal-card .form-error-inline{grid-column:1/-1;padding:9px 10px;border-radius:9px;background:#fff1f2;color:#a43f49;font-size:9px;font-weight:750}.table .actions{white-space:nowrap}
/* v0.1.2 — meses automáticos, parcelas mensais e pagamentos parciais */
.status.partial{background:#fff4dc;color:#8a5c12}.status.anticipated{background:#edf0fb;color:#5e5a98}.status.settled{background:#e6f5f0;color:#24735b}.mini.pay{background:#eef8f5;color:#246f5c;border-color:#cce6de}.mini.settle{background:#f5f1fb;color:#6d5598;border-color:#ded3ee}.installment-table td{vertical-align:top}.installment-table .actions{flex-wrap:wrap}.payment-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.payment-summary>div{padding:9px;border-radius:10px;background:#f7faf9}.payment-summary span{display:block;font-size:8px;color:#75898c;text-transform:uppercase;font-weight:900}.payment-summary strong{display:block;margin-top:3px;font-size:12px}@media(max-width:780px){.payment-summary{grid-template-columns:1fr}.installment-table{min-width:980px}}


/* v0.1.3 — projeção mensal correta e painel unificado */
.projection-note{display:flex;justify-content:space-between;gap:22px;align-items:center;margin:0 0 14px;padding:16px 18px;border:1px solid #cfe3e0;border-radius:16px;background:linear-gradient(135deg,#f4faf9,#fff);box-shadow:0 8px 24px rgba(17,67,71,.04)}
.projection-note>div:first-child{display:grid;gap:4px;max-width:650px}.projection-note strong{font-size:13px}.projection-note span{font-size:11px;line-height:1.5;color:var(--muted)}
.projection-formula{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.projection-formula span{padding:7px 9px;border-radius:10px;background:#fff;border:1px solid var(--border);font-weight:700;color:var(--ink)}.projection-formula b{color:var(--muted)}.projection-formula strong{font-size:16px;white-space:nowrap}.positive-text{color:#1f8058}.negative-text{color:#b83d49}.secondary-kpis{margin-top:12px}
@media(max-width:820px){.projection-note{align-items:flex-start;flex-direction:column}.projection-formula{justify-content:flex-start}.projection-formula span{font-size:10px}}

/* v0.1.4 — projeção mensal com parcelas futuras e destaque da sobra */
.kpi.forecast{background:linear-gradient(135deg,#164f59,#1d716b);border-color:#164f59;box-shadow:0 10px 28px rgba(22,79,89,.18)}
.kpi.forecast .label,.kpi.forecast small{color:#d5ebe8}.kpi.forecast .value{color:#fff}
.kpi.forecast.forecast-negative{background:linear-gradient(135deg,#8f3944,#b34e59);border-color:#8f3944;box-shadow:0 10px 28px rgba(143,57,68,.18)}
.panel-total{min-width:150px;padding:8px 10px;border-radius:11px;background:#f3f8f7;border:1px solid #d9e8e5;display:grid;gap:2px;text-align:right}
.panel-total span{font-size:8px;color:#6d8185;text-transform:uppercase;font-weight:900;letter-spacing:.05em}.panel-total strong{font-size:16px;color:#214f50}.panel-total small{font-size:8px;color:#7d8f92;font-weight:700}
.panel-total.installment-total{background:#f7f5fb;border-color:#e2dcee}.panel-total.installment-total strong{color:#665293}
@media(max-width:780px){.panel-total{width:100%;text-align:left}.panel-head .panel-actions{width:100%;align-items:stretch}.panel-head .panel-actions .btn{flex:1}}

/* v0.1.5 — proteção contra tela branca e correção do painel */
.render-error{margin-top:18px;padding:20px;border:1px solid #efc8ce;border-radius:16px;background:#fff5f6;display:flex;flex-direction:column;gap:8px;color:#8f3944}.render-error strong{font-size:16px}.render-error span{font-size:11px;color:#835a60}.render-error .btn{align-self:flex-start;margin-top:4px}
