:root{--bg:#f4f6fa;--card:#fff;--ink:#1d2433;--muted:#6b7385;--pri:#e8380d;--pri2:#fdebe5;--ok:#16a34a;--warn:#d97706;--err:#dc2626;--line:#e5e8ef;--r:14px}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:15px}
header{background:#0b1d3a;color:#fff;padding:14px 20px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:1000}
header .brand{font-weight:700;font-size:17px;display:flex;gap:8px;align-items:center}header .who{margin-left:auto;font-size:13px;opacity:.85;text-align:right}
header button{background:transparent;border:1px solid #ffffff55;color:#fff;border-radius:8px;padding:6px 12px;cursor:pointer}
main{max-width:1200px;margin:0 auto;padding:20px}
.card{background:var(--card);border-radius:var(--r);box-shadow:0 1px 3px #0000000d,0 1px 12px #00000008;padding:18px;margin-bottom:18px}
h2{font-size:16px;margin:0 0 12px}h1{font-size:20px;margin:0 0 4px}.muted{color:var(--muted);font-size:13px}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end}
label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px}
input,select{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:9px;font-size:14px;background:#fff}
.btn{background:var(--pri);color:#fff;border:0;border-radius:9px;padding:10px 14px;font-weight:600;cursor:pointer;font-size:14px;text-decoration:none;display:inline-block;text-align:center}
.btn.sec{background:var(--pri2);color:var(--pri)}.btn.sm{padding:6px 10px;font-size:13px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--card);border-radius:var(--r);padding:16px;box-shadow:0 1px 3px #0000000d}.kpi .v{font-size:22px;font-weight:700;margin-top:6px}.kpi .l{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.kpi.accent{background:linear-gradient(135deg,#ff2a0a,#ff6a1a);color:#fff}.kpi.accent .l{color:#ffe3d9}
.grid2{display:grid;grid-template-columns:2fr 1fr;gap:18px}@media(max-width:860px){.grid2{grid-template-columns:1fr}}
.tbl{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{font-size:12px;color:var(--muted);font-weight:600;background:#fafbfd;position:sticky;top:0}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
tfoot td{font-weight:700;background:#fafbfd}.tag{display:inline-block;padding:2px 8px;border-radius:99px;font-size:12px;background:var(--pri2);color:var(--pri)}
.tag.arla{background:#e7f8ef;color:#15803d}.tag.ok{background:#e7f8ef;color:var(--ok)}.tag.err{background:#fde8e8;color:var(--err)}.tag.warn{background:#fff4e0;color:var(--warn)}
.chart{width:100%;height:220px}.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-top:6px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.prodlist div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.prodlist div:last-child{border:0}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#0b1d3a,#7a1d12)}
.login{width:100%;max-width:380px}.login h1{margin-bottom:4px}.login form>div{margin-bottom:12px}.err{color:var(--err);font-size:13px;min-height:18px}
.tabs{display:flex;gap:6px;margin:12px 0 16px;background:#f0f2f7;padding:4px;border-radius:10px}.tabs button{flex:1;border:0;background:transparent;padding:8px;border-radius:8px;cursor:pointer;font-weight:600;color:var(--muted)}.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px #0001}
.drop{border:2px dashed #b9c6e0;border-radius:var(--r);padding:28px;text-align:center;background:#f8faff;cursor:pointer}.drop.over{background:var(--pri2);border-color:var(--pri)}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
@media(max-width:600px){main{padding:12px}.kpi .v{font-size:19px}header .who span.doc{display:none}}
.nav{display:flex;gap:4px;background:#fff;border-bottom:1px solid var(--line);padding:0 20px;overflow-x:auto}
.nav a{padding:12px 14px;color:var(--muted);text-decoration:none;font-weight:600;font-size:14px;border-bottom:3px solid transparent;white-space:nowrap}
.nav a.on{color:var(--pri);border-bottom-color:var(--pri)}
.empty{text-align:center;padding:40px 18px}.empty b{display:block;margin:8px 0 4px;font-size:16px}
.only-narrow{display:none}@media(max-width:700px){.only-wide{display:none}.only-narrow{display:block}}
.pop table{border-collapse:collapse;margin:6px 0;width:100%}.pop td{padding:3px 4px;border-bottom:1px solid #eee;font-size:13px}.pop td.n{text-align:right}
.leaflet-popup-content{margin:12px 14px;font-family:inherit}
.btn.danger{background:#fde8e8;color:var(--err)}
.grid-input{width:92px;text-align:right;padding:6px 8px}.grid-input.changed{border-color:var(--warn);background:#fff8eb}

.logo{width:36px;height:36px;border-radius:8px;flex:none;display:block}header .brand{gap:10px}
.login-brand{display:flex;align-items:center;gap:12px}.login-brand .logo{width:44px;height:44px;border-radius:10px}
@media(max-width:600px){.logo{width:32px;height:32px}}
.bar{height:14px;background:#eef0f4;border-radius:99px;overflow:hidden;margin-top:10px}.bar-in{height:100%;border-radius:99px}.bar-in.ok{background:var(--ok)}.bar-in.warn{background:var(--warn)}.bar-in.err{background:var(--err)}
.due{border-left:4px solid var(--pri)}.due.late{border-left-color:var(--err)}.due.late *{color:var(--err)}
.red{color:var(--err)!important}tr.late-row td{color:var(--err)}tr.click{cursor:pointer}tr.click:hover td{background:#fff6f2}
tr.zero td{color:#9aa1b1}tr.zero td b{color:var(--muted)}
.fd-modal{position:fixed;inset:0;background:#0b1d3acc;z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto}
.fd-box{background:#fff;border-radius:var(--r);padding:20px;width:100%;max-width:1280px;box-shadow:0 10px 40px #0005}
.fd-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px}.fd-actions{display:flex;gap:6px;flex-wrap:wrap}
.fd-tbl{max-height:60vh}.fd-tbl table{font-size:12.5px}.fd-tbl td,.fd-tbl th{padding:6px 8px}tr.sub td{background:#fafbfd;font-weight:600;color:var(--muted);font-size:12px}
body.fd-open{overflow:hidden}tr.fat{cursor:pointer}tr.fat:hover td{background:#fff6f2}
@media(max-width:700px){.fd-modal{padding:0}.fd-box{border-radius:0;min-height:100vh;padding:14px}.fd-tbl{max-height:none}}
@media print{body>*:not(#fdModal){display:none!important}.fd-modal{position:static;background:none;padding:0;overflow:visible}.fd-box{box-shadow:none;max-width:none;padding:0}.no-print{display:none!important}.fd-tbl{max-height:none;overflow:visible}.fd-tbl table{font-size:9.5px}.kpi.accent{background:none;color:#000;border:1px solid #ccc}.kpi.accent .l{color:#555}body.fd-open{overflow:visible}}
.fd-posto{margin-top:14px}.fd-posto-h{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:8px 10px;background:#0b1d3a;color:#fff;border-radius:8px 8px 0 0}.fd-posto-h .muted{color:#c9d3e6}.fd-posto-h b{color:#fff}
.fd-posto .fd-tbl{max-height:none}.fd-geral{display:flex;justify-content:space-between;gap:10px;margin-top:14px;padding:12px 14px;border-radius:8px;background:linear-gradient(135deg,#ff2a0a,#ff6a1a);color:#fff;font-weight:700;font-size:16px}
@media print{.fd-posto{break-inside:auto}.fd-posto-h{background:#eee!important;color:#000}.fd-posto-h .muted,.fd-posto-h b{color:#000}.fd-geral{background:none;color:#000;border:1px solid #999}}
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--pri);background:#fff6f2}
th.sortable .sort-ic{display:inline-block;margin-left:4px;font-size:10px;opacity:.3}th.sortable:hover .sort-ic{opacity:.7}th.sorted{color:var(--pri)}th.sorted .sort-ic{opacity:1}
.pl-cards{display:none}@media(max-width:700px){.pl-cards{display:grid;gap:10px}}
.pl-card{border:1px solid var(--line,#e6e9f0);border-radius:10px;padding:10px 12px}.pl-card.click{cursor:pointer}.pl-card.zero{opacity:.65}
.pl-card-h{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:6px}.pl-card-n{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:4px}.pl-card-n div{display:flex;flex-direction:column}.pl-card-n b{font-size:15px}
/* Bandeiras dos postos (mapa / preços) */
.band-pin{background:none;border:0}
.band-pin-b{position:relative;width:38px;height:38px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#fff;box-shadow:0 2px 6px #0006;border:2px solid #fff;display:flex;align-items:center;justify-content:center;margin-top:1px}
.band-pin-b img{transform:rotate(45deg);width:26px;height:26px;object-fit:contain;border-radius:4px}
.leaflet-marker-icon.band-pin:hover .band-pin-b{box-shadow:0 3px 10px #0008}
.band-row{display:flex;align-items:center;gap:8px}.band-logo{width:28px;height:28px;object-fit:contain;flex:none;border-radius:6px;background:#fff;border:1px solid #eef0f4;padding:2px}.band-logo.sm{width:24px;height:24px}
.band-legend{background:#fff;padding:8px 10px;border-radius:8px;box-shadow:0 1px 6px #0003;font-size:12px;line-height:1.5}.band-legend b{display:block;margin-bottom:2px}.band-legend div{display:flex;align-items:center;gap:6px}.band-legend img{width:18px;height:18px;object-fit:contain}
@media(max-width:600px){.band-legend{font-size:11px;padding:6px 8px}.band-legend img{width:15px;height:15px}}
/* Logo do cliente no cabeçalho (fundo próprio preservado, cantos arredondados) */
header .client-logo{margin-left:auto;height:30px;width:auto;max-width:120px;object-fit:contain;border-radius:6px;display:block;box-shadow:0 0 0 1px #ffffff22}
header .client-logo:not([hidden]) + .who{margin-left:0}
@media(max-width:600px){header .client-logo{height:26px;max-width:80px}}
.cli-cell{display:flex;align-items:center;gap:8px}.cli-logo-adm{height:28px;width:auto;max-width:90px;object-fit:contain;border-radius:5px;background:#000}
.af-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid #eef0f4;border-radius:10px;cursor:pointer;margin-top:8px}.af-row:hover{background:#fff6f2;border-color:#ffd9cc}
.af-v{font-size:20px;font-weight:700;white-space:nowrap}.af-v .muted{font-size:12px;font-weight:400}.kpi.click{cursor:pointer}.kpi.click:hover{box-shadow:0 0 0 2px #ffd9cc}

/* =====================================================================
   PREVIEW — identidade visual Caxuxa (cores extraídas do logo)
   logo: #FF0401 (topo) · #FE1D02 (meio) · #FE5931 (claro)
   ===================================================================== */
:root{--brand:#f01a02;--brand-d:#c41200;--brand-l:#ff5931;--brand-50:#fff1ee;--brand-100:#ffdcd4;
  --pri:var(--brand);--pri2:var(--brand-50);--bg:#f5f6f8;--ink:#1c2230;--muted:#6b7280;--line:#eceef2;--r:16px;
  --ok:#16a34a;--ok-50:#e8f7ee;--info:#2563eb;--info-50:#e8f0ff;--warn:#d99a06;--warn-50:#fff6dc;--err:#dc2626;--err-50:#fde9e9}
body{font-family:"Inter","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;display:flex;flex-direction:column;min-height:100vh}
main{flex:1;width:100%}
/* cabeçalho */
header{background:linear-gradient(100deg,var(--brand-d),var(--brand) 55%,#ff3a12);padding:12px 24px;box-shadow:0 2px 10px #c4120033}
header::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:4px;background:linear-gradient(90deg,var(--brand-l),#ffb199 50%,var(--brand-l))}
header .brand{font-size:19px;letter-spacing:.01em;gap:12px}
header .logo{width:48px;height:48px;border-radius:12px;background:#fff;padding:3px;box-shadow:0 2px 8px #0002}
header .who{opacity:1}header .who b{font-size:14px}header .who .doc{opacity:.85}
header .client-logo{height:44px;max-width:150px;border-radius:10px;box-shadow:0 2px 8px #0003,0 0 0 2px #ffffff55}
header button{border-color:#ffffffaa;font-weight:600}header button:hover{background:#ffffff22}
.nav{padding:0 24px;margin-top:4px;box-shadow:0 1px 0 var(--line)}.nav a{padding:14px 16px}.nav a:hover{color:var(--ink)}
/* botões */
.btn{background:var(--brand);border-radius:10px;box-shadow:0 1px 2px #c4120033;transition:background .15s}.btn:hover{background:var(--brand-d)}
.btn.sec{background:#fff;color:var(--brand-d);box-shadow:inset 0 0 0 1px var(--brand-100)}.btn.sec:hover{background:var(--brand-50)}
input:focus,select:focus{outline:0;border-color:var(--brand-l);box-shadow:0 0 0 3px var(--brand-50)}
.card{border:1px solid var(--line);box-shadow:0 1px 2px #0000000a;padding:20px}
h2{font-size:15px;font-weight:700;color:#2a3140}
/* KPI */
.kpis{gap:16px}.kpi{border:1px solid var(--line);box-shadow:0 1px 2px #0000000a;padding:18px;display:flex;flex-direction:column;position:relative}
.kpi .v{font-size:24px;letter-spacing:-.01em}.kpi .l{font-weight:600}
.kpi.accent{background:linear-gradient(135deg,var(--brand-d),var(--brand) 60%,var(--brand-l));border:0}
.dash{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.dash .kpi{flex-direction:row;gap:14px;align-items:flex-start}.dash .kpi .ic{flex:none;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--brand-50);color:var(--brand)}
.dash .kpi .ic svg{width:24px;height:24px}.dash .kpi.accent .ic{background:#ffffff2e;color:#fff}.dash .kpi .bx{min-width:0}.dash .kpi .v{margin-top:4px;white-space:nowrap}
.dash .kpi .s{font-size:12px;color:var(--muted);margin-top:4px}.dash .kpi.accent .s{color:#ffe1d8}
.dash .kpi.click{cursor:pointer}.dash .kpi.click:hover{border-color:var(--brand-100)}
.minibar{height:6px;background:#ffffff40;border-radius:99px;margin-top:8px;overflow:hidden}.minibar i{display:block;height:100%;border-radius:99px;background:#fff}
@media(max-width:1100px){.dash{grid-template-columns:repeat(2,1fr)}}
/* gráficos */
.grid-ch{display:grid;grid-template-columns:3fr 2fr;gap:18px}@media(max-width:900px){.grid-ch{grid-template-columns:1fr}}
.ch-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.ch-h h2{margin:0}
.seg{display:inline-flex;background:#f1f2f5;border-radius:9px;padding:3px}.seg button{border:0;background:none;padding:5px 10px;border-radius:7px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px #0002}
.wk svg{width:100%;height:auto;display:block}.wk .bar-r{fill:var(--brand);transition:opacity .15s}.wk .bar-r:hover{opacity:.8}.wk .bar-a{fill:#22c55e}
.donut{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.donut svg{width:170px;height:170px;flex:none}
.donut ul{list-style:none;margin:0;padding:0;flex:1;min-width:170px}.donut li{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}.donut li:last-child{border:0}
.donut li i{width:10px;height:10px;border-radius:3px;flex:none}.donut li span{flex:1}.donut li b{white-space:nowrap}.donut li em{font-style:normal;color:var(--muted);font-size:12px;min-width:38px;text-align:right}
/* barra de crédito */
.bar{height:12px;background:#eef0f3}.bar-in.ok{background:linear-gradient(90deg,#22c55e,#16a34a)}.bar-in.warn{background:linear-gradient(90deg,#facc15,#eab308)}.bar-in.err{background:linear-gradient(90deg,#f87171,#dc2626)}
.bar-leg{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:4px}
/* pílulas de status */
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 11px 3px 9px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.ok{background:var(--ok-50);color:#15803d}.pill.info{background:var(--info-50);color:var(--info)}.pill.err{background:var(--err-50);color:var(--err)}.pill.warn{background:var(--warn-50);color:#a16207}
/* tabelas mais leves */
table{font-size:13.5px}th,td{padding:11px 12px;border-bottom:1px solid #f0f1f4}th{background:#fff;color:#7a8190;text-transform:uppercase;font-size:11px;letter-spacing:.05em;border-bottom:1px solid var(--line)}
tbody tr:nth-child(even) td{background:#fafbfc}tbody tr:hover td{background:var(--brand-50)}tfoot td{background:#f6f7f9;border-top:2px solid var(--line)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
.tag{font-weight:600}
/* rodapé */
.site-foot{margin-top:24px;padding:18px 24px;border-top:1px solid var(--line);background:#fff;color:var(--muted);font-size:12.5px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}
.site-foot b{color:var(--ink)}.site-foot .dot{width:8px;height:8px;border-radius:50%;background:var(--brand);display:inline-block;margin-right:6px}
/* login */
.login-wrap{background:radial-gradient(1200px 600px at 10% -10%,#ff6a3d 0%,transparent 60%),radial-gradient(900px 500px at 110% 110%,#8f0d00 0%,transparent 55%),linear-gradient(135deg,var(--brand-d),var(--brand) 55%,var(--brand-l));position:relative;overflow:hidden;flex-direction:column;gap:18px}
.login-wrap::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-35deg,#ffffff0a 0 2px,transparent 2px 26px);pointer-events:none}
.login{position:relative;max-width:400px;padding:30px 28px;border:0;box-shadow:0 20px 60px #6b0a0055;border-radius:20px}
.login-brand{flex-direction:column;text-align:center;gap:10px;font-size:22px}.login-brand .logo{width:72px;height:72px;border-radius:18px;box-shadow:0 6px 18px #f01a0240}
.login>.muted{text-align:center}.login .btn{padding:12px;font-size:15px;margin-top:4px}
.login-foot{position:relative;color:#ffe6df;font-size:12.5px;text-align:center}
/* mobile */
@media(max-width:600px){
  header{padding:10px 12px;gap:10px}header .logo{width:40px;height:40px;border-radius:10px}header .brand span{font-size:15px;line-height:1.15}
  header .who{display:none}header .client-logo{height:36px;max-width:90px}header button{padding:6px 10px}
  .nav{padding:0 6px}.nav a{padding:12px 10px;font-size:13px}
  .dash{grid-template-columns:1fr 1fr;gap:10px}.dash .kpi{flex-direction:column;gap:8px;padding:14px}.dash .kpi .ic{width:36px;height:36px;border-radius:10px}.dash .kpi .ic svg{width:20px;height:20px}.dash .kpi .v{font-size:18px}
  .card{padding:14px;border-radius:14px}.filters{grid-template-columns:1fr 1fr}.filters .row{grid-column:1/-1}.filters .row .btn{flex:1}
  th,td{padding:9px 8px}.donut svg{width:140px;height:140px;margin:0 auto}.site-foot{justify-content:center;text-align:center}
}
/* ajustes preview */
#tab-abastecimentos .filters{grid-template-columns:repeat(5,minmax(120px,1fr)) auto}#tab-abastecimentos .filters .row{flex-wrap:nowrap}
@media(max-width:1100px){#tab-abastecimentos .filters{grid-template-columns:repeat(3,1fr)}#tab-abastecimentos .filters .row{grid-column:1/-1}}
@media(max-width:600px){#tab-abastecimentos .filters{grid-template-columns:1fr 1fr}#tab-abastecimentos .filters .row{flex-wrap:wrap}}
.grid-ch{grid-template-columns:1.25fr 1fr}.donut svg{width:150px;height:150px}.donut ul{min-width:200px}
.donut li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
header .logo{background:none;padding:0;box-shadow:0 0 0 2px #ffffffcc,0 3px 10px #0003}
.bar-leg{position:relative;height:16px;display:block}.bar-leg span{position:absolute;top:0}.bar-leg span[style*="60%"],.bar-leg span[style*="85%"]{transform:translateX(-50%)}
.bar{position:relative}.bar::before,.bar::after{content:"";position:absolute;top:0;bottom:0;width:2px;background:#fff;z-index:1}.bar::before{left:60%}.bar::after{left:85%}
@media(max-width:900px){.grid-ch{grid-template-columns:1fr}}
@media(max-width:600px){#tab-abastecimentos .filters .row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}#tab-abastecimentos .filters .row .btn{padding:10px 6px;white-space:nowrap;font-size:13px}#tab-abastecimentos .filters .row #apply{grid-column:1/-1}}
/* tooltip do gráfico de consumo */
.wk{position:relative}.wk .seg-hit{cursor:pointer;outline:none}.wk rect.hl{filter:brightness(1.15) saturate(1.1);stroke:#1c2230;stroke-width:1.5;stroke-opacity:.55}
.wk .bar-r:hover{opacity:1}
.ch-tip{position:absolute;z-index:5;min-width:230px;max-width:290px;background:#1c2230;color:#fff;border-radius:10px;padding:9px 11px;font-size:12.5px;box-shadow:0 8px 24px #0004;pointer-events:none;line-height:1.35}
.ch-tip .th{font-weight:700;margin-bottom:5px;text-transform:capitalize}.ch-tip .tl,.ch-tip .tt{display:flex;align-items:center;gap:7px;padding:2px 0;opacity:.75}.ch-tip .tl.on{opacity:1}
.ch-tip .tl i{width:9px;height:9px;border-radius:3px;flex:none}.ch-tip .tl span,.ch-tip .tt span{flex:1}.ch-tip em{font-style:normal;white-space:nowrap;color:#ffd9cc}
.ch-tip .tt{opacity:1;border-top:1px solid #ffffff2a;margin-top:4px;padding-top:5px}
/* KPIs: valores sempre cabem no card (celular 360–390px e desktop) */
.kpis,.dash{grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr))}
.dash{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1100px){.dash{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi,.kpi>*,.dash .kpi .bx{min-width:0}
.kpi .v{font-size:clamp(17px,1.2vw + 12px,24px);line-height:1.2;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.dash .kpi .v{white-space:normal}
.kpi .l{overflow-wrap:break-word;hyphens:auto}
@media(max-width:600px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpis .kpi{padding:13px 12px}
  .kpi .v,.dash .kpi .v{font-size:clamp(15px,4.3vw,19px);letter-spacing:-.015em}
  .kpi .l{font-size:11px;letter-spacing:.03em}
}
@media(max-width:340px){.kpis,.dash{grid-template-columns:minmax(0,1fr)}}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Faturas: no celular cada fatura vira um cartão (Valor e Situação sempre visíveis) */
@media(max-width:700px){
  table.stack thead{display:none}table.stack,table.stack tbody{display:block;width:100%}
  table.stack tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"num val" "emi sit" "ven sit" "obs obs" "act act";gap:4px 12px;padding:12px 4px;border-bottom:1px solid var(--line);align-items:center}
  table.stack tbody tr td{display:block;padding:0;border:0;background:none!important;white-space:normal;min-width:0}
  table.stack tbody tr:nth-child(even){background:#fafbfc}
  table.stack .c-num{grid-area:num;font-weight:600}table.stack .c-val{grid-area:val;font-size:17px;font-weight:700;text-align:right;white-space:nowrap}
  table.stack .c-emi{grid-area:emi}table.stack .c-ven{grid-area:ven}table.stack .c-sit{grid-area:sit;justify-self:end;align-self:start}
  table.stack .c-emi,table.stack .c-ven{font-size:13px;color:var(--muted)}table.stack .c-emi::before,table.stack .c-ven::before{content:attr(data-label) ": ";font-weight:600}
  table.stack tr.late-row .c-emi,table.stack tr.late-row .c-ven{color:var(--err)}
  table.stack .c-obs{grid-area:obs;font-size:12px}table.stack .c-obs:empty{display:none}
  table.stack .c-act{grid-area:act;display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
  .fat-tbl + *{margin-top:0}.tbl:has(table.stack){overflow:visible}
  .af-row{flex-direction:column;align-items:stretch;gap:6px}.af-v{text-align:right;font-size:18px}
}
/* Admin › Postos/Preços no celular: cartões + editor em tela cheia */
.pe-list{display:none;gap:10px}@media(max-width:700px){.pe-list{display:grid}}
.pe-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff}
.pe-card-h{display:flex;gap:10px;align-items:center}.pe-card-h b{display:block;line-height:1.25}
.pe-card-p{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:10px 0}.pe-card-p div{background:#f6f7f9;border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;min-width:0}
.pe-card-p span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pe-card-p b{font-size:14px;white-space:nowrap}
.pe-card-f{display:flex;justify-content:space-between;align-items:center;gap:8px}.pe-card-f .btn{min-width:96px;min-height:40px}
.pe-modal{position:fixed;inset:0;background:#1c2230b3;z-index:3000;display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto;-webkit-overflow-scrolling:touch}
.pe-modal[hidden]{display:none}
.pe-box{background:#fff;border-radius:16px;width:100%;max-width:560px;display:flex;flex-direction:column;box-shadow:0 10px 40px #0005}
.pe-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;border-radius:16px 16px 0 0;z-index:1}
.pe-body{padding:6px 18px 12px}.pe-body h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:16px 0 8px}
.pe-body label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:10px}.pe-body label input,.pe-body label select{margin-top:4px;font-size:16px;padding:11px 12px;color:var(--ink)}
.pe-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.pe-2 label:last-child{min-width:0}
.pe-precos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pe-precos label{margin:0;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-money{display:flex;align-items:center;border:1px solid var(--line);border-radius:9px;margin-top:4px;background:#fff}.pe-money:focus-within{border-color:var(--brand-l);box-shadow:0 0 0 3px var(--brand-50)}
.pe-money i{font-style:normal;color:var(--muted);padding-left:10px;font-size:13px}.pe-money input{border:0!important;box-shadow:none!important;margin:0!important;text-align:right;font-weight:700;padding:11px 10px!important;min-width:0}
.pe-hint{font-size:12px;margin-top:6px}
.pe-foot{display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);position:sticky;bottom:0;background:#fff;border-radius:0 0 16px 16px}
.pe-foot .muted{margin-right:auto;font-size:12.5px}.pe-foot .btn{min-height:44px;min-width:100px}
.pe-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:#16a34a;color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;opacity:0;transition:.25s;z-index:3100;pointer-events:none;box-shadow:0 6px 20px #0003}.pe-toast.on{opacity:1;transform:translateX(-50%)}
@media(max-width:700px){
  .pe-modal{padding:0}.pe-box{border-radius:0;min-height:100%;max-width:none}.pe-head{border-radius:0}.pe-foot{border-radius:0;margin-top:auto}
  /* formulário "Novo posto": uma coluna (o span 2 criava coluna extra e empurrava campos para fora da tela) */
  #tab-postos .filters{grid-template-columns:minmax(0,1fr)!important}#tab-postos .filters>div{grid-column:auto!important;min-width:0}
  #tab-precos .card>.row{flex-direction:column;align-items:flex-start;gap:6px}#tab-precos #gSave{display:none}
}
.login label.remember{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);margin:2px 0 8px;cursor:pointer;user-select:none}.login label.remember input{width:18px;height:18px;margin:0;accent-color:var(--brand)}

/* Menu de CNPJ (logo do cliente no cabeçalho) */
.cnpj-btn{margin-left:auto;display:flex;align-items:center;gap:8px;background:transparent!important;border:0!important;padding:0!important;cursor:pointer;color:#fff}
.cnpj-btn .client-logo{margin-left:0}.cnpj-btn:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:12px}
.cnpj-btn:not([hidden]) ~ .who{margin-left:0}
.cnpj-chip{font-size:12px;font-weight:700;background:#ffffff26;border:1px solid #ffffff88;border-radius:999px;padding:4px 9px;white-space:nowrap}
.cx-sheet{position:fixed;inset:0;z-index:3000;background:#0b1d3a55;display:flex;justify-content:flex-end;align-items:flex-start;padding:76px 20px 20px}
.cx-sheet[hidden]{display:none}
.cx-sheet-box{background:#fff;color:var(--ink);width:420px;max-width:100%;border-radius:16px;box-shadow:0 18px 50px #0004;padding:16px;max-height:calc(100vh - 100px);overflow:auto}
.cx-sheet-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.cx-sheet-h b{font-size:16px}
.cx-sheet-h button{border:0;background:#f1f2f5;border-radius:999px;width:34px;height:34px;font-size:15px;cursor:pointer;color:var(--ink)}
.cx-list{display:flex;flex-direction:column;gap:8px}
.cx-opt{display:flex;gap:12px;align-items:center;text-align:left;width:100%;border:1.5px solid #e5e7eb;background:#fff;border-radius:12px;padding:11px 12px;cursor:pointer;font:inherit;color:var(--ink)}
.cx-opt i{width:18px;height:18px;border-radius:50%;border:2px solid #c7cbd3;flex:none}
.cx-opt.on{border-color:var(--brand);background:#fff4f1}.cx-opt.on i{border-color:var(--brand);box-shadow:inset 0 0 0 4px #fff;background:var(--brand)}
.cx-opt span{display:flex;flex-direction:column;min-width:0}.cx-opt small{color:var(--muted);font-size:12.5px;margin-top:2px}
.cx-info{margin-top:12px;border-top:1px solid #eef0f3;padding-top:10px}
.cx-det-h{font-size:12px;font-weight:700;color:var(--brand-d);text-transform:uppercase;letter-spacing:.04em;margin:8px 0 4px}
.cx-det{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;font-size:13px}.cx-det span{display:block;color:var(--muted);font-size:11.5px}.cx-det div:first-child{grid-column:1/-1}
.cx-note{font-size:12px;margin-top:10px}
body.cx-open{overflow:hidden}
.fin-cnpjs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-bottom:14px}
.fin-cnpj h3{margin:0 0 2px;font-size:15px}.fin-cnpj .kv{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.fin-cnpj .kv div{background:#f7f8fa;border-radius:10px;padding:8px 10px;min-width:0}.fin-cnpj .kv span{display:block;font-size:11.5px;color:var(--muted)}.fin-cnpj .kv b{font-size:15px;overflow-wrap:anywhere}
.fin-cnpj .kv .acc{background:#fff4f1}.fin-cnpj .kv .acc b{color:var(--brand-d)}
.fin-tot{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;font-size:13.5px}
.cnpj-tag{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:1px 6px;background:#eef2ff;color:#3730a3;margin-left:4px;vertical-align:middle}
.cnpj-tag.f{background:#fff4e5;color:#9a5b00}
@media(max-width:700px){.cx-sheet{align-items:flex-end;padding:0}.cx-sheet-box{width:100%;border-radius:18px 18px 0 0;max-height:88vh;padding:16px 16px calc(16px + env(safe-area-inset-bottom))}
 .cnpj-chip{font-size:11px;padding:3px 7px}.fin-cnpjs{grid-template-columns:1fr}}
header .client-logo[hidden]{display:none!important}
.kpi .v .kv2{display:flex;align-items:baseline;gap:8px;font-size:.78em;line-height:1.25}.kpi .v .kv2 small{font-size:11.5px;font-weight:600;color:var(--muted);min-width:86px}
@media(max-width:700px){.dash .kpi.kpi-wide{grid-column:1/-1}}
.kpi .v .kv2 small{color:inherit;opacity:.8}

/* Fotos dos postos */
.pfoto{display:block;border:0;padding:0;margin:0;background:#e9edf2;cursor:zoom-in;overflow:hidden;border-radius:10px;position:relative}
.pfoto img{display:block;width:100%;height:100%;object-fit:cover}
.pfoto::after{content:"⤢";position:absolute;right:6px;bottom:6px;background:rgba(0,0,0,.55);color:#fff;font-size:13px;line-height:1;padding:4px 5px;border-radius:6px}
.pfoto-mini{width:72px;height:54px;flex:0 0 72px;border-radius:8px}
.pfoto-mini::after{display:none}
.pfoto-card{width:100%;height:160px;margin:0 0 12px}
.pfoto-pop{width:100%;height:130px;margin:0 0 8px;border-radius:8px}
.foto-zoom{position:fixed;inset:0;z-index:5000;background:rgba(8,10,14,.94);display:none;align-items:center;justify-content:center;flex-direction:column;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
.foto-zoom.on{display:flex}
.foto-zoom img{max-width:100vw;max-height:calc(100vh - 70px);object-fit:contain;touch-action:pinch-zoom}
.foto-zoom .fz-t{color:#fff;font-size:14px;margin-top:10px;padding:0 16px;text-align:center}
.foto-zoom .fz-x{position:absolute;top:calc(10px + env(safe-area-inset-top));right:12px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.18);color:#fff;font-size:28px;line-height:44px;cursor:pointer}
body.noscroll{overflow:hidden}
.foto-adm{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.foto-adm .pfoto{width:160px;height:110px}
.foto-adm .foto-vazia{width:160px;height:110px;border-radius:10px;border:2px dashed #cdd5df;display:flex;align-items:center;justify-content:center;color:#8a96a6;font-size:12px;text-align:center}

/* Valores dos cartões sempre numa linha: a fonte encolhe com a largura do cartão (container query), nunca quebra no meio do número */
.dash .kpi .bx{flex:1 1 auto;align-self:stretch;container-type:inline-size}
.kpi .v{white-space:nowrap;overflow-wrap:normal;font-variant-numeric:tabular-nums}
.dash .kpi .v{white-space:nowrap;font-size:clamp(14px,13.5cqi,24px)}
.kpi .v .kv2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;white-space:nowrap;font-size:clamp(12px,calc((100cqi - 80px) / 7),19px);line-height:1.3}
.kpi .v .kv2+.kv2{margin-top:2px}
.kpi .v .kv2 small{flex:none;min-width:0;font-size:10.5px}
.kpi .v .kv2-v{font-variant-numeric:tabular-nums}
.kpi .s{overflow-wrap:break-word}.kpi .s .nw{white-space:nowrap}.kpi .s .s-row+.s-row{margin-top:3px}
@media(max-width:600px){.dash .kpi .v{font-size:clamp(13px,13.5cqi,19px)}}
/* NF-e: ícone na linha + menu DANFe/XML */
td.nfe-c,th.nfe-c{width:34px;padding-left:6px;padding-right:0;text-align:center}
.nfe-b{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:8px;background:var(--pri2);color:var(--pri);cursor:pointer;padding:0;vertical-align:middle;transition:background .15s,color .15s}
.nfe-b:hover,.nfe-b.on{background:var(--pri);color:#fff}.nfe-b:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
.nfe-menu{position:fixed;z-index:1000;min-width:210px;max-width:calc(100vw - 16px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px #0000001f,0 2px 6px #00000014;padding:6px;font-size:14px;animation:nfeIn .12s ease-out}
.nfe-menu .nfe-h{padding:8px 10px 6px;font-size:13px;color:var(--ink)}.nfe-menu .nfe-h span{color:var(--muted)}
.nfe-menu .nfe-sep{height:1px;background:var(--line);margin:6px 4px}
.nfe-menu a{display:flex;align-items:center;gap:10px;padding:10px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:600}
.nfe-menu a svg{color:var(--pri);flex:none}.nfe-menu a small{font-weight:500;color:var(--muted);margin-left:2px}
.nfe-menu a:hover,.nfe-menu a:focus-visible{background:var(--pri2);outline:none}
.nfe-menu .nfe-k{padding:6px 10px 4px;border-top:1px solid var(--line);margin-top:4px;font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums;line-height:1.35;white-space:normal;word-spacing:1px}
@keyframes nfeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.nfe-menu{animation:none}.nfe-b{transition:none}}
@media (max-width:640px){.nfe-b{width:32px;height:32px}.nfe-menu{font-size:15px}.nfe-menu a{padding:12px 10px}}
/* Aba Placas: baixar abastecimentos da placa (PDF/Excel) */
td.pl-td .pl-dl{width:26px;height:26px;margin-left:8px;vertical-align:-7px}
.pl-dl{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:30px;height:30px;border:0;border-radius:8px;background:var(--pri2);color:var(--pri);cursor:pointer;padding:0;vertical-align:middle;transition:background .15s,color .15s}
.pl-dl:hover,.pl-dl.on{background:var(--pri);color:#fff}.pl-dl:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
.pl-dl.btn{width:auto;height:auto;padding:6px 12px}
.pl-dl-card{margin-left:auto;width:34px;height:34px;align-self:center}
.pl-menu{min-width:230px}
@media (prefers-reduced-motion:reduce){.pl-dl{transition:none}}

/* Logo/nome da rede no topo do portal do cliente: link para o início */
header a.brand.home{color:inherit;text-decoration:none;cursor:pointer;border-radius:10px;padding:2px 6px 2px 2px;margin:-2px -6px -2px -2px;-webkit-tap-highlight-color:transparent;transition:transform .12s ease,opacity .12s ease,background-color .12s ease;user-select:none;-webkit-user-select:none}
@media (hover:hover){header a.brand.home:hover{background:#ffffff1a}}
header a.brand.home:active{transform:scale(.96);opacity:.8;background:#ffffff26}
header a.brand.home:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media (prefers-reduced-motion:reduce){header a.brand.home{transition:none}header a.brand.home:active{transform:none}}

/* Placas: detalhe em acordeão logo abaixo do cartão/linha */
.pl-acc{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease,opacity .28s ease;opacity:0}
.pl-acc.open{grid-template-rows:1fr;opacity:1}.pl-acc.sem-anim{transition:none}
.pl-acc>div{overflow:hidden;min-height:0}
.pl-acc #plDet{margin:6px 0 2px;box-shadow:none;border:1px solid var(--brand-100,#ffd9cc);background:#fffaf8;padding:12px}
.pl-acc #plDet h2{font-size:15px}
tr.pl-det-row>td{padding:0 8px 8px;text-align:left;background:#fff!important;border-top:0}
tr.pl-open td,.pl-card.pl-open{background:#fff6f2}.pl-card.pl-open{border-color:var(--brand-100,#ffd9cc);border-bottom-left-radius:4px;border-bottom-right-radius:4px}
.pl-det-card{margin-top:-6px}
.pl-carregando{opacity:.6;transition:opacity .15s}
tr.click:focus-visible,.pl-card.click:focus-visible{outline:2px solid var(--brand,#e8380d);outline-offset:-2px}
@media (prefers-reduced-motion:reduce){.pl-acc{transition:none}}
tr.pl-det-row .pl-acc{position:sticky;left:8px}

/* Documentos da fatura: botão bem visível (coluna própria no desktop; linha inteira no celular) */
.fat-docs{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;margin:0}
.due-docs{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
@media (max-width:700px){
  table.stack tbody tr{grid-template-areas:"num val" "docs docs" "emi sit" "ven sit" "obs obs" "act act"}
  table.stack .c-docs{grid-area:docs;margin:4px 0}table.stack .c-docs:empty{display:none}
  table.stack .c-docs .fat-docs,.due-docs .fat-docs{display:flex;justify-content:center;width:100%;padding:11px 12px;font-size:14px}
  .fd-actions .fat-docs{order:-1;flex-basis:100%;justify-content:center}
}
#fFatTbl td.c-act{white-space:normal;min-width:210px}#fFatTbl td.c-act .btn{margin:2px 0}#fFatTbl td.c-obs{white-space:normal;max-width:220px}
