/* PV Gestão r08 — padrão visual interno de aplicativo de energia, mantendo azul-marinho, marfim e amarelo solar. */
#appView.r8{
 --r8-bg:#081932;--r8-bg-deep:#061430;--r8-card:#0e2446;--r8-card-2:#132e54;--r8-raise:#17365f;
 --r8-line:#a8bbdc24;--r8-line-2:#a8bbdc3d;--r8-ivory:#f7f0d6;--r8-text:#e9e6da;--r8-muted:#b0bed3;--r8-soft:#8fa2bf;
 --r8-yellow:#f4df35;--r8-gold:#e8c14f;--r8-ok:#63d9a8;--r8-warn:#f4c95c;--r8-bad:#ff8193;--r8-info:#7fb4ff;
 --r8-radius:14px;--r8-radius-sm:10px;--r8-serif:Georgia,'Times New Roman',serif;
 font-size:14px;
}
/* ---------- Casca: menu lateral ---------- */
#appView.r8 .sidebar-nav{gap:2px;padding:14px 12px 18px}
#appView.r8 .r8-nav-group{margin:16px 12px 6px;color:#8fa2bf;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
#appView.r8 .r8-nav-group[hidden]{display:none}
#appView.r8 .nav-item{gap:12px;min-height:44px;padding:8px 10px;font-size:13.5px;font-weight:600;border-radius:10px;color:#c3cfe2}
#appView.r8 .nav-item>span{width:32px;height:32px;flex:none;border-radius:9px;border:1px solid #8aa5cd2b;background:#ffffff05;display:grid;place-items:center}
#appView.r8 .r8-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}
#appView.r8 .nav-item.active{background:linear-gradient(90deg,#f4df351f,#f4df3505);border-color:#f4df3533;box-shadow:inset 3px 0 var(--r8-yellow);color:#fff7d6}
#appView.r8 .nav-item.active>span{background:var(--r8-yellow);border-color:var(--r8-yellow);color:#0a1f45}
#appView.r8 .logout-btn{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;border-radius:10px}
#appView.r8 .logout-btn .r8-icon svg{width:16px;height:16px}
#appView.r8 .plant-mini b{font-size:12.5px}#appView.r8 .plant-mini small{font-size:11px}
/* ---------- Casca: cabeçalho e conteúdo ---------- */
#appView.r8 .app-header{height:72px}
#appView.r8 .breadcrumbs{font-size:11.5px}
#appView.r8 .app-header h2{font:400 19px/1.2 var(--r8-serif);letter-spacing:-.01em;color:var(--r8-ivory)}
#appView.r8 .user-chip b{font-size:12.5px}#appView.r8 .user-chip small{font-size:11px}
#appView.r8 .sync-pill{font-size:11px}
#appView.r8 .dashboard-content{max-width:1520px;padding:28px 32px 40px}
#appView.r8 .demo-banner{border-radius:10px;padding:10px 14px}
#appView.r8 .section-head h1{font-size:clamp(28px,2.6vw,38px)}
#appView.r8 .section-head p,#appView.r8 .panel-head p{font-size:10.5px}
#appView.r8 .panel{border-radius:var(--r8-radius);padding:20px}
#appView.r8 .panel-head{margin-bottom:14px}
#appView.r8 .panel-head h3{font-size:16px;font-weight:700}
#appView.r8 .kpi-card{border-radius:var(--r8-radius);padding:18px 20px;min-height:104px}
#appView.r8 .kpi-card span{font-size:12.5px}
#appView.r8 .kpi-card strong{font-size:26px}
#appView.r8 .kpi-card strong small{font-size:12px}
#appView.r8 .kpi-card em{font-size:12px}
#appView.r8 .finance-note{border-radius:10px}
#appView.r8 :is(.data-row,.table-row,.pipeline-row){font-size:12.5px}
#appView.r8 :is(.data-row,.table-row,.pipeline-row).head,#appView.r8 .pipeline-head{font-size:10.5px}
#appView.r8 .pipeline-row small{font-size:11px}
#appView.r8 .status-chip{font-size:11px;padding:4px 10px;font-weight:700}
#appView.r8 .btn-small-app{font-size:12.5px;border-radius:9px;padding:9px 14px}
#appView.r8 .back-link{font-size:13px;color:var(--r8-gold)}
#appView.r8 .registration-step{font-size:11px}
#appView.r8 .legend{font-size:11px}
#appView.r8 .muted-label{font-size:11.5px}
/* ---------- Componentes compartilhados r8 ---------- */
#appView .r8-page{display:grid;gap:18px;min-width:0}
#appView .r8-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px 20px}
#appView .r8-eyebrow{margin:0;color:#decf79;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
#appView .r8-title{margin:6px 0 0;font:400 clamp(28px,2.6vw,38px)/1.12 var(--r8-serif);letter-spacing:-.03em;color:var(--r8-ivory)}
#appView .r8-sub{margin:8px 0 0;color:var(--r8-muted);font-size:14px;line-height:1.55;max-width:760px}
#appView .r8-card{min-width:0;border:1px solid var(--r8-line-2);border-radius:var(--r8-radius);background:linear-gradient(150deg,#112b50,#0c2141);box-shadow:0 12px 32px #020b1a26;padding:20px}
#appView .r8-card-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 16px;margin-bottom:14px}
#appView .r8-card-head h3{margin:4px 0 0;font-size:16px;color:var(--r8-ivory)}
#appView .r8-card-head p{margin:0;color:#decf79;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
#appView .r8-card-head small{display:block;margin-top:4px;color:var(--r8-soft);font-size:12px;line-height:1.5}
#appView .r8-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
#appView .r8-kpi{min-width:0;border:1px solid var(--r8-line-2);border-radius:var(--r8-radius);background:linear-gradient(150deg,#112b50,#0c2141);padding:16px 18px;display:grid;gap:6px;align-content:start}
#appView .r8-kpi>span{color:var(--r8-muted);font-size:12.5px;line-height:1.35}
#appView .r8-kpi>strong{color:var(--r8-ivory);font-size:24px;line-height:1.15;letter-spacing:-.01em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#appView .r8-kpi>strong small{font-size:12px;color:var(--r8-muted);font-weight:600;margin-left:3px}
#appView .r8-kpi>em{font-style:normal;color:var(--r8-soft);font-size:12px;line-height:1.4}
#appView .r8-kpi.accent{border-color:#f4df3555;background:linear-gradient(150deg,#1a3558,#0f2748)}
#appView .r8-kpi.accent>strong{color:var(--r8-yellow)}
#appView .r8-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
#appView .r8-grid-3{display:grid;grid-template-columns:1.35fr 1fr;gap:18px}
:is(#appView,.r8-dialog) .r8-chip{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:700;line-height:1.3;color:var(--r8-muted);background:#ffffff0d;border:1px solid transparent}
:is(#appView,.r8-dialog) .r8-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
:is(#appView,.r8-dialog) .r8-chip.ok{color:var(--r8-ok);background:#63d9a814;border-color:#63d9a82e}
:is(#appView,.r8-dialog) .r8-chip.warn{color:var(--r8-warn);background:#f4c95c14;border-color:#f4c95c2e}
:is(#appView,.r8-dialog) .r8-chip.bad{color:var(--r8-bad);background:#ff819314;border-color:#ff81932e}
:is(#appView,.r8-dialog) .r8-chip.info{color:var(--r8-info);background:#7fb4ff14;border-color:#7fb4ff2e}
:is(#appView,.r8-dialog) .r8-chip.sim{color:#0a1f45;background:var(--r8-gold);border-color:var(--r8-gold)}
:is(#appView,.r8-dialog) .r8-chip.sim:before{display:none}
#appView .r8-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;border-radius:10px;border:1px solid #8d9ab34d;background:#142e51;color:var(--r8-ivory);font-size:13px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}
#appView .r8-btn:hover:not(:disabled){border-color:#f4df3580;background:#183760}
#appView .r8-btn.primary{background:var(--r8-yellow);border-color:var(--r8-yellow);color:#0a1f45}
#appView .r8-btn.primary:hover:not(:disabled){background:#fff06b;border-color:#fff06b}
#appView .r8-btn.quiet{background:transparent;border-color:transparent;color:var(--r8-gold);padding:0 8px}
#appView .r8-btn.danger{color:#ffb3bf;border-color:#ff819355}
#appView .r8-btn.small{min-height:36px;padding:0 12px;font-size:12.5px}
#appView .r8-btn .r8-icon svg{width:16px;height:16px}
#appView .r8-seg{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border:1px solid var(--r8-line-2);border-radius:12px;background:#081a37}
#appView .r8-seg button{min-height:34px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--r8-muted);font-size:12.5px;font-weight:700;cursor:pointer}
#appView .r8-seg button.active{background:var(--r8-yellow);color:#0a1f45}
#appView .r8-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
#appView .r8-toolbar input[type=search],#appView .r8-toolbar select{min-height:40px;padding:0 12px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:var(--r8-ivory);font-size:13px}
#appView .r8-toolbar input[type=search]{flex:1 1 220px;min-width:0}
#appView .r8-empty{padding:26px 18px;border:1px dashed var(--r8-line-2);border-radius:12px;text-align:center;color:var(--r8-muted);font-size:13.5px;line-height:1.6}
#appView .r8-empty p{margin:0}
#appView .r8-note{margin:0;color:var(--r8-soft);font-size:12.5px;line-height:1.6}
#appView .r8-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px 18px;margin:0}
#appView .r8-dl>div{min-width:0}
#appView .r8-dl dt{color:var(--r8-soft);font-size:11.5px;letter-spacing:.04em}
#appView .r8-dl dd{margin:4px 0 0;color:var(--r8-ivory);font-size:14px;font-weight:600;overflow-wrap:anywhere}
/* Tabela responsiva: vira cartões no celular (cada célula recebe data-label). */
#appView .r8-table{width:100%;min-width:0;border-collapse:collapse;font-size:13px}
#appView .r8-table th{padding:10px 12px;border-bottom:1px solid var(--r8-line-2);color:var(--r8-soft);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-align:left;white-space:nowrap}
#appView .r8-table td{padding:12px;border-bottom:1px solid var(--r8-line);color:var(--r8-text);vertical-align:middle}
#appView .r8-table tr:last-child td{border-bottom:0}
#appView .r8-table td.num,#appView .r8-table th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
#appView .r8-table td b{color:var(--r8-ivory);font-weight:700}
#appView .r8-table td small{display:block;color:var(--r8-soft);font-size:11.5px;margin-top:2px}
#appView .r8-table tbody tr:hover td{background:#ffffff05}
#appView .r8-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
#appView .r8-bar{height:8px;border-radius:999px;background:#ffffff10;overflow:hidden}
#appView .r8-bar>i{display:block;height:100%;border-radius:inherit;background:var(--r8-yellow)}
#appView .r8-chart{display:block;width:100%;height:auto}
#appView .r8-chart text{fill:#a9b8cf;font:11px Inter,system-ui,sans-serif}
#appView .r8-chart .grid{stroke:#a8bbdc1f;stroke-width:1}
#appView .r8-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;color:var(--r8-muted);font-size:12px}
#appView .r8-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
/* Diálogos */
.r8-dialog{width:min(620px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #a8bbdc3d;border-radius:16px;background:#0e2446;color:#f7f0d6;padding:0;box-shadow:0 30px 80px #0009}
.r8-dialog::backdrop{background:#020a18b3;backdrop-filter:blur(4px)}
.r8-dialog .r8-dialog-body{padding:22px 22px 18px}
.r8-dialog h2{margin:0;font:400 26px/1.15 Georgia,serif}
.r8-dialog p{color:#b0bed3;line-height:1.6;font-size:14px}
.r8-dialog .r8-dialog-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:14px 22px 20px;border-top:1px solid #a8bbdc24}
.r8-dialog .r8-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 16px;border-radius:10px;border:1px solid #8d9ab34d;background:#142e51;color:#f7f0d6;font:700 13px Inter,system-ui,sans-serif;cursor:pointer}
.r8-dialog .r8-btn.primary{background:#f4df35;border-color:#f4df35;color:#0a1f45}
.r8-dialog table{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:12px}
.r8-dialog td{padding:9px 4px;border-bottom:1px solid #a8bbdc24;color:#e9e6da}
.r8-dialog td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.r8-dialog tr.total td{color:#f4df35;font-weight:800;border-bottom:0;font-size:15px}
.r8-dialog .r8-copy{display:flex;gap:8px;margin-top:12px}
.r8-dialog .r8-copy input{flex:1;min-width:0;min-height:42px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:#f7f0d6;padding:0 12px;font-size:13px}
.r8-dialog label{display:grid;gap:6px;margin-top:12px;color:#b0bed3;font-size:13px}
.r8-dialog .r8-checks{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px}
.r8-dialog .r8-checks label{display:flex;align-items:center;gap:8px;margin:0;color:#e9e6da}
.r8-dialog{--r8-muted:#b0bed3;--r8-gold:#e8c14f;--r8-ok:#63d9a8;--r8-warn:#f4c95c;--r8-bad:#ff8193;--r8-info:#7fb4ff}
/* ---------- Área do assinante (cliente final) ---------- */
#appView:not([data-role="customer"]) .sa-root{display:none}
#appView[data-role="customer"] .sa-host>:not(.sa-root){display:none!important}
#appView .sa-hero{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,1fr);gap:18px}
#appView .sa-bill{position:relative;overflow:hidden;min-width:0;border-radius:18px;padding:24px 24px 20px;border:1px solid #f4df3540;background:radial-gradient(120% 140% at 100% 0,#23467a 0,#12305a 42%,#0c2141 100%);box-shadow:0 18px 40px #020b1a40}
#appView .sa-bill:after{content:"";position:absolute;right:-70px;top:-70px;width:230px;height:230px;border-radius:50%;border:1px solid #f4df3526;box-shadow:0 0 0 30px #f4df3506,0 0 0 31px #f4df3514;pointer-events:none}
#appView .sa-bill>*{position:relative;z-index:1}
#appView .sa-bill.late{border-color:#ff819366}
#appView .sa-bill.paid{border-color:#63d9a855}
#appView .sa-bill-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
#appView .sa-amount{display:block;margin-top:14px;font:400 clamp(40px,5vw,58px)/1 var(--r8-serif);letter-spacing:-.03em;color:var(--r8-ivory);font-variant-numeric:tabular-nums}
#appView .sa-due{margin:10px 0 0;color:var(--r8-muted);font-size:14px}
#appView .sa-bill.late .sa-due{color:#ffb3bf}
#appView .sa-bill-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
#appView .sa-bill-mini{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:20px 0 0;padding-top:16px;border-top:1px solid #a8bbdc2e}
#appView .sa-bill-mini dt{color:var(--r8-soft);font-size:11.5px;line-height:1.35}
#appView .sa-bill-mini dd{margin:4px 0 0;color:var(--r8-ivory);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
#appView .sa-bill-mini dd.good{color:var(--r8-ok)}
#appView .sa-save{display:grid;align-content:start;gap:6px;min-width:0;border-radius:18px;padding:24px;border:1px solid #f4df35;background:linear-gradient(160deg,#f6e44a 0,#e8c14f 100%);color:#0a1f45;box-shadow:0 18px 40px #020b1a40}
#appView .sa-save .r8-eyebrow{color:#0a1f45c7}
#appView .sa-save strong{font:400 clamp(32px,3.6vw,46px)/1.05 var(--r8-serif);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
#appView .sa-save em{font-style:normal;font-size:13px;color:#0a1f45c7}
#appView .sa-save p{margin:4px 0 0;font-size:13.5px;color:#0a1f45e0}
#appView .sa-ring{--p:20;position:relative;display:grid;place-content:center;justify-items:center;width:108px;height:108px;margin:12px 0 4px;border-radius:50%;background:conic-gradient(#0a1f45 calc(var(--p)*1%),#0a1f4524 0)}
#appView .sa-ring:before{content:"";position:absolute;inset:10px;border-radius:50%;background:#f0d64b}
#appView .sa-ring b,#appView .sa-ring small{position:relative}
#appView .sa-ring b{font:400 26px/1 var(--r8-serif)}
#appView .sa-ring small{font-size:11px;font-weight:700}
#appView .sa-subhead{margin:22px 0 12px;color:var(--r8-muted);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
#appView .sa-journey{list-style:none;margin:4px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
#appView .sa-journey li{position:relative;display:grid;gap:8px;justify-items:start;color:var(--r8-soft);font-size:12.5px;line-height:1.35}
#appView .sa-journey li i{position:relative;z-index:1;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1.5px solid #a8bbdc55;background:#081a37}
#appView .sa-journey li:not(:last-child):after{content:"";position:absolute;left:34px;right:4px;top:13px;height:2px;border-radius:2px;background:#a8bbdc2e}
#appView .sa-journey li.done{color:var(--r8-ivory)}
#appView .sa-journey li.done i{background:var(--r8-yellow);border-color:var(--r8-yellow)}
#appView .sa-journey li.done i:after{content:"";width:9px;height:5px;margin-top:-2px;border-left:2px solid #0a1f45;border-bottom:2px solid #0a1f45;transform:rotate(-45deg)}
#appView .sa-journey li.done:not(:last-child):after{background:#f4df3599}
#appView .sa-journey li.current i{box-shadow:0 0 0 5px #f4df3526}
#appView .sa-journey li.current span{font-weight:700}
#appView .sa-welcome .r8-card-head small{max-width:680px;font-size:13px}
#appView .sa-help .r8-card-head{margin:0;align-items:center}
#appView .sa-pay-note{margin-top:14px}
#appView .sa-profile{margin:0}
/* ---------- Barra inferior (celular) ---------- */
.r8-tabbar{display:none}
@media(max-width:760px){
 #appView.r8.r8-has-tabbar .dashboard-content{padding-bottom:calc(96px + env(safe-area-inset-bottom))!important}
 #appView.r8 .r8-tabbar:not([hidden]){position:fixed;z-index:45;left:0;right:0;bottom:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#0a1d3cf2;backdrop-filter:blur(14px);border-top:1px solid #a8bbdc2e;box-shadow:0 -10px 30px #0006}
 #appView.r8 .r8-tabbar button{display:grid;justify-items:center;gap:4px;min-height:54px;padding:6px 2px;border:0;border-radius:12px;background:transparent;color:#b6c5dd;font-size:11px;cursor:pointer}
 #appView.r8 .r8-tabbar button b{font-weight:700;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
 #appView.r8 .r8-tabbar button .r8-icon{display:grid;place-items:center;width:40px;height:28px;border-radius:999px}
 #appView.r8 .r8-tabbar button.active{color:#fff7d6}
 #appView.r8 .r8-tabbar button.active .r8-icon{background:var(--r8-yellow);color:#0a1f45}
 #appView.r8 .r8-tabbar .r8-icon svg{width:20px;height:20px}
 body:has(#appView.r8:not(.hidden)) .pvai-fab{bottom:calc(84px + env(safe-area-inset-bottom))!important}
 #appView.r8 .dashboard-content{padding:20px 16px 28px}
 #appView .r8-grid-2,#appView .r8-grid-3{grid-template-columns:minmax(0,1fr)}
 #appView .r8-card{padding:16px}
 #appView .r8-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 #appView .r8-kpi{padding:14px}
 #appView .r8-kpi>strong{font-size:20px}
 #appView .r8-chart text{font-size:17px}
 #appView .r8-table.stack thead{display:none}
 #appView .r8-table.stack,#appView .r8-table.stack tbody,#appView .r8-table.stack tr,#appView .r8-table.stack td{display:block;width:100%}
 #appView .r8-table.stack tr{padding:12px 0;border-bottom:1px solid var(--r8-line)}
 #appView .r8-table.stack tr:last-child{border-bottom:0}
 #appView .r8-table.stack td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:5px 0;border:0;text-align:right}
 #appView .r8-table.stack td:before{content:attr(data-label);color:var(--r8-soft);font-size:11.5px;text-align:left;flex:none}
 #appView .r8-table.stack td.lead{display:block;text-align:left;padding-bottom:6px}
 #appView .r8-table.stack td.lead:before{display:none}
 #appView .r8-table.stack td.num{text-align:right}
 #appView .r8-table.stack .r8-actions{justify-content:flex-end}
 #appView .r8-table.stack td.actions{display:block}
 #appView .r8-table.stack td.actions:before{display:none}
 #appView .sa-hero{grid-template-columns:minmax(0,1fr)}
 #appView .sa-bill{padding:20px 18px 18px}
 #appView .sa-bill-actions .r8-btn{flex:1 1 140px}
 #appView .sa-bill-mini{gap:10px}
 #appView .sa-bill-mini dd{font-size:14px}
 #appView .sa-save{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:14px;padding:20px 18px}
 #appView .sa-save>:not(.sa-ring){grid-column:1}
 #appView .sa-save .sa-ring{grid-column:2;grid-row:1/span 4;width:92px;height:92px;margin:0}
 #appView .sa-journey{grid-template-columns:minmax(0,1fr);gap:0}
 #appView .sa-journey li{grid-template-columns:28px minmax(0,1fr);align-items:center;gap:12px;padding:6px 0}
 #appView .sa-journey li:not(:last-child):after{left:13px;right:auto;top:34px;bottom:-6px;width:2px;height:auto}
 #appView .sa-help .r8-card-head .r8-btn{width:100%}
}
@media(max-width:340px){#appView .r8-kpis{grid-template-columns:minmax(0,1fr)}}
/* ---------- Painel da carteira ---------- */
#appView .pf-root{gap:18px}
#appView .pf-field{display:grid;gap:4px;color:var(--r8-soft);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
#appView .pf-field input,#appView .pf-field select{min-height:40px;padding:0 12px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:var(--r8-ivory);font-size:13px;text-transform:none;letter-spacing:0;max-width:260px}
#appView .pf-sim{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;border:1px solid #e8c14f55;border-radius:12px;background:#e8c14f12;color:#e9dca0;font-size:13px;line-height:1.5}
#appView .pf-bad{color:var(--r8-bad)!important}
#appView .pf-muted{color:var(--r8-soft);font-size:12px}
#appView .pf-hint{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:10px 14px;border:1px solid var(--r8-line-2);border-radius:12px;background:#ffffff06}
#appView .pf-search{margin-bottom:10px}
#appView .r8-seg button small{margin-left:4px;opacity:.75;font-weight:600}
/* Funil "Jornada da UC" no padrão r8 (componente gestao-uc-journey.js, também usado no Financeiro). */
#appView.r8 #ucJourney{background:linear-gradient(150deg,#112b50,#0c2141);border-color:var(--r8-line-2);border-radius:var(--r8-radius);box-shadow:0 12px 32px #020b1a26}
#appView .pf-journey-wrap #ucJourney{margin:0}
#appView .pf-journey-wrap:empty{display:none}
@media(max-width:760px){#appView .pf-field{flex:1 1 140px}#appView .pf-field input,#appView .pf-field select{max-width:none;width:100%}#appView .r8-head>.r8-toolbar{width:100%}}
/* ---------- Acessos e senhas ---------- */
.r8-dialog .ac-plants{max-height:220px;overflow:auto;padding:10px;border:1px solid #a8bbdc24;border-radius:10px;background:#081a37}
.r8-dialog .ac-plants label[hidden]{display:none}
.r8-dialog input:not([type=checkbox]){min-height:42px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:#f7f0d6;padding:0 12px;font-size:14px}
#appView .ac-root .r8-toolbar select{max-width:260px}
#appView .r8-seg button{white-space:nowrap}
/* ---------- Cotas dos investidores ---------- */
#appView .iq-card[hidden]{display:none}
#appView .iq-card{margin-bottom:18px}
#appView .iq-body{display:grid;gap:14px}
#appView .iq-quota{display:inline-flex;gap:4px;margin:2px 6px 2px 0;padding:3px 8px;border-radius:999px;background:#ffffff0d;font-size:12px;white-space:nowrap}
#appView .iq-quota b{color:var(--r8-yellow)}
#appView .iq-issues{color:var(--r8-soft);font-size:12.5px}#appView .iq-issues summary{cursor:pointer;color:var(--r8-gold)}
.r8-dialog .iq-row{display:grid;grid-template-columns:minmax(0,1fr) 96px 120px auto;gap:8px;align-items:center;margin-top:10px}
.r8-dialog .iq-row small{grid-column:1/-1;color:#8fa2bf;font-size:12px;min-height:14px}
.r8-dialog select{min-height:42px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:#f7f0d6;padding:0 10px;font-size:14px;min-width:0}
@media(max-width:560px){.r8-dialog .iq-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.r8-dialog .iq-row select{grid-column:1/-1}}
/* Telas com filtro de usina próprio: o seletor legado do cabeçalho não se aplica a elas. */
#appView.r8:is([data-section="portfolio"],[data-section="access"]) #plantSelectorWrap{display:none}
#appView #plantSelectorWrap{display:none!important}
/* A autenticação do Gestão suporta sessão persistente; a opção não existia na interface antiga. */
.login-modal .gestao-remember{display:flex;align-items:center;gap:9px;margin:-2px 0 14px;color:#9fb4c4;font-size:12px;cursor:pointer}
.login-modal .gestao-remember input{width:17px;height:17px;margin:0;padding:0;accent-color:var(--teal);flex:none}
.login-modal .gestao-remember span{line-height:1.35}
/* Sino de notificações do cabeçalho: era fixo ("2") e não tinha notificações reais por trás. */
#appView .header-tools .icon-btn{display:none!important}
/* Acessos e senhas: descrição da função (cargo) da aba ativa. */
#appView .ac-role{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:14px 22px;align-items:start;padding:14px 18px;border:1px solid var(--r8-line-2);border-radius:var(--r8-radius);background:#ffffff06}
#appView .ac-role b{color:var(--r8-ivory);font-size:14px}
#appView .ac-role p{margin:4px 0 0;color:var(--r8-muted);font-size:13px;line-height:1.55}
#appView .ac-role-screens{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#appView .ac-role-screens span{width:100%;color:var(--r8-soft);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
#appView .ac-role-screens i{font-style:normal;padding:3px 9px;border-radius:999px;background:#f4df3514;border:1px solid #f4df3530;color:#efe4a8;font-size:12px}
@media(max-width:760px){#appView .ac-role{grid-template-columns:minmax(0,1fr)}}
/* Seletor de usina na aba Geração. */
#appView .gen-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
#appView .gen-plant select{min-width:220px}
@media(max-width:600px){#appView .gen-tools{width:100%}#appView .gen-plant{flex:1 1 180px}#appView .gen-plant select{min-width:0;width:100%}}
/* Visão geral e Geração com dados reais: sem filtro de período fictício nem faixa de "protótipo". */
#appView [data-panel="overview"] .section-head .date-filter{display:none}
#appView.r8:is([data-section="overview"],[data-section="generation"],[data-section="monitoring"],[data-section="signatures"]) .demo-banner{display:none}
/* Cartões reais de faturamento e faturas também para o dono de usina (o painel antigo ocultava os demonstrativos). */
#appView[data-owner-scope="true"] [data-panel="overview"] .owner-legacy .dashboard-grid.three .compact-panel.ov-real:not([hidden]){display:block!important}
#appView [data-panel="overview"] .compact-panel.ov-real[hidden]{display:none!important}
/* Visão operacional do cliente (gestão de dados): campos avançados da conta manual. */
.r8-dialog details.co-adv{margin-top:12px;padding:10px 12px;border:1px solid #a8bbdc24;border-radius:10px}
.r8-dialog details.co-adv summary{cursor:pointer;color:#e8c14f;font-weight:700;font-size:13px}
.r8-dialog details.co-adv[open]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
.r8-dialog details.co-adv[open] summary{grid-column:1/-1}
@media(max-width:560px){.r8-dialog details.co-adv[open]{grid-template-columns:minmax(0,1fr)}}
#appView .co-root{margin:16px 0}
/* Rateio da usina. */
#appView .al-root{margin:16px 0}
#appView .al-table input{min-height:38px;padding:0 10px;border:1px solid #7288ad66;border-radius:8px;background:#081a37;color:var(--r8-ivory);width:100%;max-width:220px}
#appView .al-table td.num input{max-width:120px;text-align:right}
#appView .al-form .al-reason{flex:1 1 240px}#appView .al-form .al-reason input{max-width:none;width:100%}
#appView .al-buttons{justify-content:flex-start;margin:14px 0}
#appView .al-kpis{margin-top:6px}
#appView .mc-root{margin:16px 0}
/* Histórico de reclamações. */
#appView .tk-root{margin:16px 0}#appView .tk-root .r8-seg{margin-bottom:12px}
.tk-timeline{list-style:none;margin:8px 0 12px;padding:0 0 0 14px;border-left:2px solid #a8bbdc33;display:grid;gap:10px}
.tk-timeline li{position:relative;color:#e9e6da;font-size:13px;line-height:1.5}
.tk-timeline li:before{content:"";position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:#e8c14f}
.tk-timeline li.internal{color:#b0bed3}.tk-timeline li.internal:before{background:#5d7aa8}
.r8-dialog textarea{width:100%;min-height:80px;border:1px solid #7288ad66;border-radius:10px;background:#081a37;color:#f7f0d6;padding:10px 12px;font:14px Inter,system-ui,sans-serif;resize:vertical}
/* Pagamentos Asaas (seção 20) */
.py-root .r8-seg{margin:14px 0 6px}
.py-json{max-height:48vh;overflow:auto;margin:10px 0 0;padding:12px;border:1px solid var(--r8-line);border-radius:10px;background:var(--r8-bg-2,#f6f4ec);font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;word-break:break-word}
.py-root td small,.co-root td small{display:block}
#appView .co-file-status,.r8-dialog .co-file-status{margin:-4px 0 10px;font-size:12px;color:var(--r8-soft)}.co-file-status.ok{color:#7fd6a4}.co-file-status.bad{color:#ff9a8a}
[data-ocr="true"]{border-color:#f1c94f!important}
.r8-dialog input[type="file"]{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.r8-dialog .co-file-status{margin:-4px 0 10px;font-size:12px;color:var(--r8-soft,#9fb0c8)}
/* Saúde do sistema e webhooks (seções 29 e 45) */
#appView .ops-root{margin:0 0 18px}#appView .ops-sub{margin:18px 0 8px;font-size:14px;letter-spacing:.02em;color:var(--r8-text)}
#appView .ops-subhead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}#appView .ops-subhead .ops-sub{margin-bottom:8px}
.r8-dialog .ops-types{max-height:38vh;overflow:auto;margin:8px 0 0;padding:8px 10px;border:1px solid var(--r8-line,#24406b);border-radius:10px}
.r8-dialog .ops-types legend{font-size:12px;color:var(--r8-soft,#9fb0c8);padding:0 4px}
.r8-dialog .ops-check{display:flex!important;align-items:flex-start;gap:8px;margin:6px 0;font-size:12.5px}.r8-dialog .ops-check input{width:auto;margin-top:2px}
#appView .r8-kpi.warn strong{color:#f4c46a}
/* Contratos do vendedor com aprovação do desconto */
#appView .sc-root{margin:0 0 18px}#appView .sc-root .r8-seg{margin:12px 0 8px}#appView .sc-root td small{display:block}
/* UC geradora no cadastro */
.unit-generator{display:flex;flex-direction:column;gap:2px;justify-content:center;align-items:flex-start;text-align:left}.unit-generator span{display:flex;align-items:center;gap:8px;font-weight:600}.unit-generator input{width:auto!important;min-height:0!important}.unit-generator small{opacity:.75;font-weight:400}
.consumer-unit label.unit-generator{align-items:flex-start!important;justify-items:start!important;justify-content:start!important;align-content:center!important;text-align:left!important}.consumer-unit label.unit-generator span{justify-content:flex-start!important;width:100%}
/* Seção 22: resumo do cliente e ações rápidas */
#appView .co-quick{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 14px}
#appView .co-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 20px;margin-top:14px}
#appView .co-facts div{display:flex;flex-direction:column;gap:3px;min-width:0}#appView .co-facts span{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--r8-soft)}#appView .co-facts b{font-weight:600;overflow-wrap:anywhere}#appView .co-facts small{display:block;font-weight:400;color:var(--r8-soft)}
#appView .co-facts em.r8-chip{font-style:normal;font-size:10px;padding:1px 6px}
.r8-dialog .co-sim-res{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:12px}.r8-dialog .co-sim-res div{display:flex;flex-direction:column;gap:3px;padding:12px;border:1px solid rgba(247,240,214,.18);border-radius:12px}.r8-dialog .co-sim-res div.accent{border-color:#f4df35}.r8-dialog .co-sim-res span{font-size:11px;letter-spacing:.06em;text-transform:uppercase;opacity:.75}.r8-dialog .co-sim-res b{font-size:20px}.r8-dialog .co-sim-res small{opacity:.7}
/* Adapters: P50 do PV O&M no rateio */
#appView .al-form .al-p50{align-self:flex-end;white-space:nowrap}
/* Bloco 036–050: busca de clientes, etiquetas e UC detalhada */
#appView .co-search{position:relative;margin:0 0 16px}#appView .co-search input{width:100%;box-sizing:border-box}
#appView .co-search-results{display:flex;flex-direction:column;gap:4px;margin-top:6px}#appView .co-search-results button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;border:1px solid var(--r8-line);border-radius:10px;background:var(--r8-bg-2,#10284a);color:var(--r8-text);cursor:pointer}#appView .co-search-results button:hover{border-color:#f4df35}#appView .co-search-results small{color:var(--r8-soft)}#appView .co-search-empty{margin:6px 2px;color:var(--r8-soft);font-size:13px}
#appView .co-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.r8-dialog .co-dlg-sub{margin:16px 0 6px;font-size:15px}
.r8-dialog .co-check{display:flex!important;align-items:center;gap:8px}.r8-dialog .co-check input{width:auto!important;min-height:0!important}
/* Assinatura pelo site: contrato em quadro, rubrica e trilha. */
#appView .sg-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}
#appView .sg-chips .sg-count{flex-basis:100%;color:var(--r8-muted)}
#appView .sg-settings label{display:block;width:100%;max-width:520px;margin-top:10px}#appView .sg-settings select,#appView .sg-settings input{display:block;width:100%;box-sizing:border-box;margin-top:4px}
.r8-dialog .sg-doc{display:block;width:100%;height:46vh;min-height:280px;border:1px solid #8d9ab34d;border-radius:10px;background:#fff;margin:8px 0 12px}
.r8-dialog .sg-hash{word-break:break-all;font-size:11px}
.r8-dialog .sg-pad{position:relative;max-width:600px;border:1px dashed #8d9ab3;border-radius:10px;background:#fff;margin-top:8px}
.r8-dialog .sg-pad canvas{display:block;width:100%;height:170px;touch-action:none;border-radius:10px}
.r8-dialog .sg-pad span{position:absolute;left:12px;bottom:8px;color:#7b8a94;font-size:12px;pointer-events:none}
.r8-dialog .sg-agree,.r8-dialog .sc-check{display:flex!important;align-items:flex-start;gap:8px;margin-top:12px}.r8-dialog .sg-agree input,.r8-dialog .sc-check input{width:auto!important;min-height:0!important;margin-top:3px}
.r8-dialog .sc-wit{border:1px solid #8d9ab34d;border-radius:10px;padding:8px 12px;margin:12px 0 0}.r8-dialog .sc-wit legend{padding:0 6px;font-size:13px;font-weight:700}
.r8-dialog .sc-events ul{margin:6px 0 0;padding-left:18px;font-size:12px;max-height:180px;overflow:auto}
