:root{--bg1:#050712;--bg2:#071b2a;--card:rgba(255,255,255,.06);--card2:rgba(255,255,255,.09);--stroke:rgba(255,255,255,.12);--text:rgba(255,255,255,.92);--muted:rgba(255,255,255,.62);--shadow:0 16px 45px rgba(0,0,0,.35);--r:18px;--brand:linear-gradient(90deg,rgba(92,221,170,.95),rgba(104,174,255,.95));}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:radial-gradient(900px 500px at 15% 10%,rgba(43,186,139,.22),transparent 60%),radial-gradient(900px 600px at 70% 35%,rgba(0,197,255,.15),transparent 60%),linear-gradient(180deg,var(--bg1),var(--bg2));}
.app{max-width:1320px;margin:0 auto;padding:28px 22px 50px}.top-nav{position:sticky;top:0;z-index:20;display:flex;gap:8px;align-items:center;padding:12px 22px;background:rgba(5,7,18,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--stroke)}.top-nav a,.nav-button{color:var(--muted);text-decoration:none;padding:10px 14px;border-radius:12px;border:0;background:transparent;font:inherit;cursor:pointer}.top-nav a.active,.top-nav a:hover,.nav-button:hover{color:var(--text);background:rgba(255,255,255,.07)}.nav-button{margin-left:auto}.header{margin-bottom:18px}.header-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.title{font-size:clamp(32px,4vw,54px);line-height:1.05;margin:0 0 8px}.subtitle{color:var(--muted);font-size:13px}.user-chip{padding:10px 14px;border:1px solid var(--stroke);border-radius:999px;color:var(--muted)}
.card{border-radius:var(--r);background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--stroke);box-shadow:var(--shadow);backdrop-filter:blur(10px)}.control{padding:14px}.control label,label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}input,select{width:100%;height:42px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(10,14,25,.55);color:var(--text);padding:0 12px;outline:none}input:focus,select:focus{border-color:rgba(92,221,170,.45);box-shadow:0 0 0 3px rgba(92,221,170,.12)}.btn{height:44px;border-radius:14px;border:0;cursor:pointer;font-weight:700;padding:0 18px}.btn.primary{background:var(--brand);color:#071018}.btn.secondary{background:rgba(255,255,255,.1);color:var(--text);border:1px solid var(--stroke)}.btn:disabled{opacity:.6;cursor:not-allowed}.link-button{display:inline-flex;align-items:center;text-decoration:none}.filters .grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.col-3{grid-column:span 3}.actions-inline{display:flex;flex-direction:column;justify-content:flex-end}.kpis-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}.kpi{padding:16px}.kpi-label{color:var(--muted);font-size:12px;margin-bottom:6px}.kpi-value{font-size:28px;font-weight:800}.section-title{margin:22px 0 14px;font-size:24px}.section-head{display:flex;align-items:center;justify-content:space-between}.table-wrap{padding:10px;overflow:auto}table{width:100%;border-collapse:collapse;min-width:850px}th{text-align:left;font-size:12px;color:var(--muted);padding:12px;border-bottom:1px solid rgba(255,255,255,.1)}td{font-size:13px;padding:12px;border-bottom:1px solid rgba(255,255,255,.07)}tbody tr:hover{background:rgba(255,255,255,.04)}.right{text-align:right}.details-status,.status{margin-top:12px;color:var(--muted);font-size:13px}.status.error{color:#ff9a9a}
.chart-card{padding:18px}.chart-card.full{width:100%}.bar-chart{display:flex;flex-direction:column;gap:10px}.bar-row{display:grid;grid-template-columns:minmax(140px,1fr) 5fr 120px;gap:12px;align-items:center}.bar-label{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:12px;background:rgba(255,255,255,.08);border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--brand);border-radius:inherit}.bar-value{text-align:right;font-size:12px}.chart-empty{padding:20px;color:var(--muted)}
.login-page{display:grid;place-items:center;min-height:100vh}.login-shell{width:min(420px,calc(100% - 32px))}.login-card{padding:28px}.login-card h1{margin:12px 0 6px}.login-card p{margin:0 0 24px;color:var(--muted)}.login-card form{display:grid;gap:12px}.login-card .btn{margin-top:8px}.brand-mark{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--brand);color:#071018;font-weight:900;font-size:20px}
.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.62)}.modal-card{position:relative;width:min(900px,100%);max-height:90vh;overflow:auto;padding:20px}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h2{margin:0 0 14px}.icon-button{border:0;background:transparent;color:var(--text);font-size:30px;cursor:pointer}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.form-status{grid-column:1/-1}
@media(max-width:900px){.col-3{grid-column:span 6}.kpis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.header-row{align-items:flex-start;flex-direction:column}.bar-row{grid-template-columns:120px 1fr 100px}}
@media(max-width:620px){.app{padding:20px 14px 40px}.top-nav{padding:10px}.col-3{grid-column:1/-1}.kpis-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-actions{grid-column:1}.bar-row{grid-template-columns:1fr}.bar-value{text-align:left}.user-chip{display:none}}

/* Dashboard V2 — melhorias incrementais sem alterar login e lançamentos */
.filters .filter-col{grid-column:span 2}.filters .filter-action-col{grid-column:span 4}.table-empty{text-align:center;color:var(--muted);padding:28px}.details-status[role="status"]{min-height:20px}
@media(max-width:1000px){.filters .filter-col{grid-column:span 6}.filters .filter-action-col{grid-column:span 6}}
@media(max-width:620px){.filters .filter-col,.filters .filter-action-col{grid-column:1/-1}}

/* Lançamentos V3 — CRUD completo no frontend */
.lanc-filter-search{grid-column:span 3}.lanc-filter-col{grid-column:span 2}.lanc-filter-actions{grid-column:span 1}.button-row{display:flex;gap:8px}.button-row .btn{flex:1;padding:0 12px}.lancamentos-head{gap:16px}.list-summary{color:var(--muted);font-size:13px;text-align:right}.lancamentos-table{min-width:1180px}.table-actions{display:flex;gap:7px;white-space:nowrap}.table-action{border:1px solid var(--stroke);border-radius:10px;background:rgba(255,255,255,.07);color:var(--text);padding:7px 10px;cursor:pointer;font:inherit;font-size:12px}.table-action:hover{background:rgba(255,255,255,.13)}.table-action.delete{color:#ffaaaa}.status-badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700}.status-badge.paid{background:rgba(92,221,170,.14);color:#8cf1c8;border:1px solid rgba(92,221,170,.22)}.status-badge.pending{background:rgba(255,189,93,.13);color:#ffd18c;border:1px solid rgba(255,189,93,.22)}.hidden-field{display:none}.btn.danger{background:linear-gradient(90deg,#ff7474,#ff9b72);color:#210909}.confirm-card{width:min(520px,100%)}.confirm-text{color:var(--muted);line-height:1.6;margin:6px 0 18px}.confirm-actions{grid-column:auto}.modal-card .control{padding:0}.modal-card input,.modal-card select{background:rgba(5,9,18,.72)}
@media(max-width:1100px){.lanc-filter-search{grid-column:span 6}.lanc-filter-col{grid-column:span 3}.lanc-filter-actions{grid-column:span 3}}
@media(max-width:760px){.lanc-filter-search,.lanc-filter-col,.lanc-filter-actions{grid-column:1/-1}.button-row{width:100%}.lancamentos-head{align-items:flex-start;flex-direction:column}.list-summary{text-align:left}}

/* Parcelamentos V4 — módulo isolado, sem alterar os fluxos existentes */
.parcel-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.parcel-filter-search{grid-column:span 4}.parcel-filter-col{grid-column:span 2}.parcel-filter-actions{grid-column:span 2}.parcelamentos-head{gap:16px}.parcelamentos-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.parcel-card{padding:18px;display:flex;flex-direction:column;gap:18px}.parcel-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.parcel-card h3{margin:3px 0 5px;font-size:20px}.parcel-id{font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.parcel-subtitle{font-size:12px;color:var(--muted)}.parcel-status{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.parcel-status.ativo{color:#8cf1c8;background:rgba(92,221,170,.14);border:1px solid rgba(92,221,170,.24)}.parcel-status.quitado{color:#9dc8ff;background:rgba(104,174,255,.14);border:1px solid rgba(104,174,255,.24)}.parcel-status.cancelado{color:#ffaaaa;background:rgba(255,116,116,.12);border:1px solid rgba(255,116,116,.24)}.parcel-progress-wrap{display:grid;gap:8px}.parcel-progress-label{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.parcel-progress-label strong{color:var(--text)}.parcel-progress-track{height:10px;background:rgba(255,255,255,.08);border-radius:999px;overflow:hidden}.parcel-progress-fill{height:100%;background:var(--brand);border-radius:inherit}.parcel-info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.parcel-info-item{padding:10px 11px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);border-radius:12px;min-width:0}.parcel-info-label{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.parcel-info-value{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.parcel-card-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding-top:2px}.parcel-observacao{font-size:12px;color:var(--muted);line-height:1.5;max-width:65%}.parcel-empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}textarea{width:100%;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(5,9,18,.72);color:var(--text);padding:11px 12px;outline:none;resize:vertical;font:inherit}textarea:focus{border-color:rgba(92,221,170,.45);box-shadow:0 0 0 3px rgba(92,221,170,.12)}.form-span-2{grid-column:1/-1}.field-hint{font-weight:400;color:var(--muted)}.edit-notice,.cancel-warning{padding:12px 14px;border-radius:12px;background:rgba(104,174,255,.08);border:1px solid rgba(104,174,255,.16);color:#b8d8ff;font-size:12px;line-height:1.5}.cancel-warning{margin:8px 0 18px;background:rgba(255,189,93,.08);border-color:rgba(255,189,93,.18);color:#ffd59c}
@media(max-width:1050px){.parcel-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.parcelamentos-grid{grid-template-columns:1fr}.parcel-filter-search{grid-column:span 6}.parcel-filter-col{grid-column:span 3}.parcel-filter-actions{grid-column:span 3}}
@media(max-width:700px){.parcel-kpis{grid-template-columns:1fr}.parcel-filter-search,.parcel-filter-col,.parcel-filter-actions{grid-column:1/-1}.parcel-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.parcel-card-footer{align-items:flex-start;flex-direction:column}.parcel-observacao{max-width:100%}.form-span-2{grid-column:1}}
@media(max-width:460px){.parcel-info-grid{grid-template-columns:1fr}}

/* Planejamento V5 — projeção e simulador isolados, sem alterar os módulos existentes */
.planning-note{padding:14px 16px;display:flex;gap:10px;align-items:flex-start;margin-bottom:14px;border-color:rgba(255,189,93,.18);background:rgba(255,189,93,.065)}.planning-note strong{white-space:nowrap;color:#ffd59c}.planning-note span{color:var(--muted);font-size:12px;line-height:1.5}.planning-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.planning-layout{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(420px,1.2fr);gap:16px;margin-top:16px}.simulator-card,.planning-chart-card{padding:18px}.compact-head{align-items:flex-start}.simulator-title{margin:0 0 4px}.compact-select{width:auto;min-width:130px}.simulator-form{display:grid;gap:12px;margin-top:18px}.simulator-form .control{padding:0}.simulation-result{margin-top:16px;display:grid;gap:12px}.decision-card{padding:14px;border-radius:14px;display:grid;gap:5px}.decision-card strong{font-size:15px}.decision-card span{font-size:12px;line-height:1.5}.decision-card.good{background:rgba(92,221,170,.1);border:1px solid rgba(92,221,170,.22);color:#9af2cf}.decision-card.warning{background:rgba(255,189,93,.1);border:1px solid rgba(255,189,93,.22);color:#ffd59c}.simulation-mini-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.simulation-mini-grid div{padding:11px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);border-radius:12px}.simulation-mini-grid span{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.simulation-mini-grid strong{font-size:14px}.planning-bars{display:grid;gap:10px;margin-top:18px}.planning-bar-row{display:grid;grid-template-columns:72px 1fr 110px;gap:10px;align-items:center}.planning-bar-label,.planning-bar-value{font-size:11px;color:var(--muted)}.planning-bar-value{text-align:right}.planning-bar-track{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}.planning-bar-fill{height:100%;border-radius:inherit;background:var(--brand)}.planning-table{min-width:980px}.planning-saldo.negative{color:#ffaaaa;font-weight:800}.planning-saldo.positive{color:#9af2cf;font-weight:800}.planning-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}.planning-status.positive{color:#8cf1c8;background:rgba(92,221,170,.14);border:1px solid rgba(92,221,170,.22)}.planning-status.negative{color:#ffb0a8;background:rgba(255,116,116,.12);border:1px solid rgba(255,116,116,.22)}
@media(max-width:1050px){.planning-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.planning-layout{grid-template-columns:1fr}}
@media(max-width:650px){.planning-note{flex-direction:column}.planning-note strong{white-space:normal}.planning-kpis{grid-template-columns:1fr}.simulation-mini-grid{grid-template-columns:1fr}.planning-bar-row{grid-template-columns:62px 1fr}.planning-bar-value{grid-column:2;text-align:left}.compact-head{gap:10px;align-items:flex-start;flex-direction:column}.compact-select{width:100%}}
