body{margin:0}
.app{display:grid;grid-template-columns:248px 1fr;min-height:820px;background:var(--bg);color:var(--tx);font-family:'Manrope',sans-serif;font-size:14px}
.dk{--bg:#0F1417;--sf:#171E23;--bd:#26313A;--tx:#E8EEF2;--mu:#93A3AF;--ac:#F5A524;--ok:#3DD68C;--no:#FF7A7A;--hv:#202B33}
.lt{--bg:#F3F5F7;--sf:#FFFFFF;--bd:#E2E7EC;--tx:#13202B;--mu:#556573;--ac:#F5A524;--ok:#0B8A55;--no:#C23B3B;--hv:#EBEFF3}
.sb{background:var(--sf);border-right:1px solid var(--bd);padding:20px 14px;display:flex;flex-direction:column;gap:18px}
.lg{display:flex;align-items:center;gap:10px;padding:4px 8px}
.mk{width:38px;height:38px;border-radius:11px;background:var(--ac);display:grid;place-items:center}
.gh{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:none;color:var(--tx);font:inherit;font-weight:700;padding:8px 10px;border-radius:10px;min-height:44px}
.gh.o{background:var(--hv)}
.gl{display:flex;align-items:center;gap:10px}
.gb{width:28px;height:28px;border-radius:8px;background:var(--hv);display:grid;place-items:center;color:var(--ac)}
.gh.o .gb{background:var(--sf)}
.sub{display:flex;flex-direction:column;gap:2px;margin:6px 0 4px 24px;padding-left:10px;border-left:1px solid var(--bd)}
.g{font-size:11px;letter-spacing:.08em;color:var(--mu);padding:0 10px 6px;font-weight:700}
.n{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--mu);font-weight:600}
.n.a{background:var(--hv);color:var(--tx)}
.n.a i{background:var(--ac);opacity:1}
.n i{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.5}
.mn{padding:24px 28px;display:flex;flex-direction:column;gap:20px}
.tb{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.cd{background:var(--sf);border:1px solid var(--bd);border-radius:14px;padding:18px}
.kp{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.row{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}
.mu{color:var(--mu)}.ok{color:var(--ok)}.no{color:var(--no)}
.v{font-size:24px;font-weight:800;margin:6px 0 2px}
.chip{border:1px solid var(--bd);background:var(--sf);border-radius:999px;padding:8px 14px;font-weight:600}
.seg{display:flex;background:var(--sf);border:1px solid var(--bd);border-radius:999px;padding:3px}
.seg button{border:0;background:none;color:var(--mu);font:inherit;font-weight:700;padding:7px 12px;border-radius:999px;display:flex;gap:6px;align-items:center;min-height:36px}
.seg button.on{background:var(--ac);color:#1A1200}
.av{width:40px;height:40px;border-radius:50%;background:var(--hv);display:grid;place-items:center;font-weight:800}
.bar{display:grid;grid-template-columns:170px 1fr 90px;gap:12px;align-items:center;padding:8px 0}
.tk{height:10px;border-radius:6px;background:var(--hv)}.tk b{display:block;height:10px;border-radius:6px}
table{width:100%;border-collapse:collapse}td,th{padding:11px 8px;text-align:left;border-bottom:1px solid var(--bd)}th{color:var(--mu);font-size:12px}
.bd{display:inline-block;padding:3px 9px;border-radius:999px;font-weight:700;font-size:12px;background:var(--hv)}
.tabs{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:900px){.app{grid-template-columns:1fr}
.kp{grid-template-columns:1fr 1fr}
.row{grid-template-columns:1fr}}
.k5{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.r2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lgd{display:flex;gap:14px;flex-wrap:wrap;color:var(--mu);font-size:12px;margin-top:6px}
.pg{height:8px;border-radius:6px;background:var(--hv)}.pg b{display:block;height:8px;border-radius:6px}
td.r,th.r{text-align:right}
@media (max-width:900px){.k5{grid-template-columns:1fr 1fr}
.r2{grid-template-columns:1fr}}
.btn{border:1px solid var(--bd);background:var(--sf);color:var(--tx);font:inherit;font-weight:700;padding:9px 14px;border-radius:10px;min-height:40px}
.btn.p{background:var(--ac);color:#1A1200;border-color:var(--ac)}
.in{background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:10px 12px;color:var(--tx);min-height:40px;font:inherit;box-sizing:border-box;width:100%}
.fl{display:flex;flex-direction:column;gap:6px}.fl label{font-size:12px;color:var(--mu);font-weight:700}
.sw{width:40px;height:22px;border-radius:999px;background:var(--hv);position:relative;display:inline-block;flex:none}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--mu)}
.sw.on{background:var(--ac)}.sw.on::after{left:21px;background:#1A1200}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.ln{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--bd)}
.paper{background:#fff;color:#13202B;border-radius:6px;padding:26px;box-shadow:0 10px 30px rgba(0,0,0,.25);--bd:#E2E7EC;--mu:#556573;--tx:#13202B;--hv:#EBEFF3;--ac:#F5A524;--ok:#0B8A55;--no:#C23B3B}
.w{background:var(--ac)!important;color:#1A1200!important}
@media (max-width:900px){.g2,.g3{grid-template-columns:1fr}}

/* ---- regras do app (menu recolhível, logo por tema, foco, impressão) ---- */
a.n{text-decoration:none}
.gh{cursor:pointer}
.gh[aria-expanded=false]+.sub{display:none}
.gh[aria-expanded=false]>svg{transform:rotate(-90deg)}
.lt .th-dk,.dk .th-lt{display:none}
.chip-role,.veic{cursor:pointer}
.in:focus-within,select.in:focus,input.in:focus{outline:2px solid var(--ac);outline-offset:1px}
select.in{appearance:auto}
.btn,.chip{cursor:pointer}
@media print{.sb{display:none}.app{display:block}.seg,.btn{display:none}}
dialog{background:var(--sf);color:var(--tx);border:1px solid var(--bd);border-radius:16px;padding:22px;font-family:inherit}
dialog::backdrop{background:rgba(0,0,0,.55)}
select.chip{appearance:auto;font:inherit}
form.tabs{align-items:center}
select.chip{background:var(--sf);color:var(--tx)}
select option{background:var(--sf);color:var(--tx)}
.chip input[type=date]{background:none;border:0;color:inherit;font:inherit;outline:0;cursor:pointer}
.dk input[type=date],.dk input[type=month]{color-scheme:dark}
.lt input[type=date],.lt input[type=month]{color-scheme:light}

/* ============ v3: menu fixo, animações, gavetas, notificações, gráficos interativos ============ */
.app{align-items:start}
.sb{position:sticky;top:0;height:100vh;overflow-y:auto;box-sizing:border-box;scrollbar-width:thin}
.mn{min-width:0}
.sub{margin:0 0 0 24px;padding:6px 0 4px 10px;overflow:hidden;min-height:0}
.subw{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.2,.8,.2,1)}
.gh[aria-expanded=false]+.subw{grid-template-rows:0fr}
.gh svg:last-child,.gh>svg{transition:transform .3s}
.gh[aria-expanded=false]>svg{transform:rotate(-90deg)}
.n.a{background:linear-gradient(90deg,color-mix(in srgb,var(--ac) 18%,transparent),var(--hv) 70%)}
.n,.gh{transition:background-color .2s,color .2s,transform .2s}
.n:hover{background:var(--hv);color:var(--tx);transform:translateX(3px)}
.gh:hover{background:var(--hv)}
.sair{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;color:var(--mu);transition:background-color .2s,color .2s,transform .2s}
.sair:hover{background:var(--hv);color:var(--no);transform:translateX(2px)}
a.av{text-decoration:none;color:inherit;cursor:pointer;transition:transform .2s,box-shadow .2s}
a.av:hover{transform:scale(1.06);box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 45%,transparent)}
.mn>.tb:first-child{flex-wrap:nowrap;align-items:flex-start;gap:16px}
.mn>.tb:first-child>div:first-child{flex:1;min-width:0}
.mn>.tb:first-child>div:last-child{flex-shrink:0;flex-wrap:nowrap}
.bell{position:relative;width:40px;height:40px;border-radius:50%;border:1px solid var(--bd);background:var(--sf);color:var(--tx);display:grid;place-items:center;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s}
.bell:hover{transform:translateY(-1px);border-color:var(--ac);box-shadow:0 6px 16px rgba(0,0,0,.2)}
.badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;border-radius:9px;background:var(--no);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center}
.burger{display:none;width:40px;height:40px;border-radius:10px;border:1px solid var(--bd);background:var(--sf);color:var(--tx);place-items:center;cursor:pointer}

/* botões: efeito ao passar o mouse (somente botões) */
.btn,.chip,.seg button,.veic{transition:transform .15s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease,filter .2s ease,color .2s}
.btn:hover,.chip:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(0,0,0,.18);filter:brightness(1.07)}
.btn.p:hover{box-shadow:0 8px 22px rgba(245,165,36,.38)}
.btn:active,.chip:active,.seg button:active{transform:translateY(0) scale(.97);box-shadow:none}
.seg button:not(.on):hover{color:var(--tx)}
.chip:hover{border-color:var(--ac)}
.chip.ativo{border-color:var(--ac);color:var(--ac)}
.veic:hover{border-color:var(--ac)!important;transform:translateY(-1px)}
.veic .vic svg{width:18px;height:18px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.clicavel{cursor:pointer}
.clicavel:hover td{background:var(--hv)}

/* transição suave claro/escuro */
.app.animando,.app.animando *{transition:background-color .45s ease,color .45s ease,border-color .45s ease,fill .45s ease,stroke .45s ease,box-shadow .45s ease!important}

/* cards e gráficos aparecem suavemente ao rolar a página */
.rv{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.rv.vis{opacity:1;transform:none}

/* gráficos interativos */
.bar,.fatia{cursor:pointer;transition:opacity .15s,filter .15s}
.bar{transform-box:fill-box;transform-origin:50% 100%;animation:crescer .7s cubic-bezier(.2,.8,.2,1) both}
.bar:hover,.fatia:hover{filter:brightness(1.18)}
.cd:has(.bar:hover) .bar:not(:hover){opacity:.55}
.bar.oculto{display:none}
@keyframes crescer{from{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}
.leg-i{cursor:pointer;user-select:none;transition:opacity .2s}
.leg-i.off{opacity:.35;text-decoration:line-through}
#dica{font-family:inherit;line-height:1.35;position:fixed;pointer-events:none;background:var(--sf);color:var(--tx);border:1px solid var(--bd);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:700;box-shadow:0 10px 28px rgba(0,0,0,.3);opacity:0;transition:opacity .12s;z-index:95;max-width:280px}
#dica.on{opacity:1}

/* gavetas laterais */
.veu{position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .3s;z-index:65}
.veu.on{opacity:1;pointer-events:auto}
.gaveta{position:fixed;top:0;right:0;bottom:0;width:min(430px,92vw);background:var(--sf);color:var(--tx);border-left:1px solid var(--bd);box-shadow:-20px 0 50px rgba(0,0,0,.35);transform:translateX(105%);transition:transform .38s cubic-bezier(.2,.8,.2,1);z-index:70;display:flex;flex-direction:column}
.gaveta.aberta{transform:none}
.gtopo{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--bd)}
.gcorpo{padding:16px 20px;overflow:auto;display:flex;flex-direction:column;gap:10px}
.alerta{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:12px;border:1px solid var(--bd);border-left:4px solid var(--ac);text-decoration:none;color:inherit;transition:transform .2s,background-color .2s}
.alerta:hover{background:var(--hv);transform:translateX(-3px)}
.alerta.no{border-left-color:var(--no)}
.alerta span{color:var(--mu);font-size:13px}

/* notificações (pop-up com fade) */
#toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:80;width:min(370px,92vw)}
.toast{position:relative;overflow:hidden;background:var(--sf);color:var(--tx);border:1px solid var(--bd);border-left:4px solid var(--ac);border-radius:12px;padding:12px 40px 14px 14px;box-shadow:0 14px 40px rgba(0,0,0,.35);animation:entra .45s cubic-bezier(.2,.8,.2,1) both}
.toast.no{border-left-color:var(--no)}
.toast b{display:block;margin-bottom:2px}
.toast span{color:var(--mu);font-size:13px}
.toast .x{position:absolute;top:8px;right:8px;border:0;background:none;color:var(--mu);cursor:pointer;font-size:14px;padding:4px}
.toast .prog{position:absolute;left:0;bottom:0;height:3px;background:var(--ac);width:100%;transform-origin:left;animation:prog var(--dur,7s) linear forwards}
.toast.no .prog{background:var(--no)}
.toast:hover .prog{animation-play-state:paused}
.toast.saindo{animation:sai .45s ease forwards}
@keyframes entra{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@keyframes sai{to{opacity:0;transform:translateX(28px)}}
@keyframes prog{to{transform:scaleX(0)}}

@media (max-width:900px){
.sb{position:fixed;left:0;top:0;bottom:0;width:270px;transform:translateX(-105%);transition:transform .35s cubic-bezier(.2,.8,.2,1);z-index:60;box-shadow:20px 0 50px rgba(0,0,0,.35)}
.app.menu-aberto .sb{transform:none}
.burger{display:grid}
.mn>.tb:first-child{flex-wrap:wrap}
.g4{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}.rv{opacity:1;transform:none}}
@media print{.rv{opacity:1!important;transform:none!important}.gaveta,.veu,#toasts,#dica{display:none}}
.gaveta:not(.aberta){box-shadow:none;visibility:hidden;transition:transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s .38s}
.gaveta .alerta{background:transparent;color:var(--tx)}
.gaveta .alerta:hover{background:var(--hv)}
.gaveta .alerta span{color:var(--mu)}
.gaveta .gcorpo .dl{display:grid;grid-template-columns:auto 1fr;gap:0;margin:0}
.gaveta .gcorpo .dl>*{padding:10px 0;border-bottom:1px solid var(--bd);margin:0}
.gaveta .gcorpo .dl dt{color:var(--mu);font-size:13px;padding-right:18px}
.gaveta .gcorpo .dl dd{text-align:right;font-weight:700}
.alerta.aviso{border-left-color:var(--ac)}.toast.aviso{border-left-color:var(--ac)}

/* ---- submenu recolhido sem "restos" visíveis ---- */
.gh[aria-expanded=false]+.subw .sub{padding-top:0;padding-bottom:0;border-left-color:transparent;visibility:hidden;transition:padding .3s,visibility 0s .3s}
.gh[aria-expanded=true]+.subw .sub{visibility:visible}
.subw{overflow:hidden}

/* ---- botão e modo "barra lateral recolhida" ---- */
.sbtopo{display:flex;align-items:center;justify-content:space-between;gap:6px}
.sbtog{flex:none;width:32px;height:32px;border-radius:9px;border:1px solid var(--bd);background:var(--sf);color:var(--mu);display:grid;place-items:center;cursor:pointer;transition:background-color .2s,color .2s,transform .3s}
.sbtog:hover{background:var(--hv);color:var(--tx)}
.app[data-pronto]{transition:grid-template-columns .3s cubic-bezier(.2,.8,.2,1)}
@media (min-width:901px){
  .app.recolhido{grid-template-columns:78px 1fr}
  .recolhido .sb{padding:20px 10px;align-items:center;overflow-x:hidden}
  .recolhido .sbtopo{flex-direction:column;gap:12px}
  .recolhido .sbtog{transform:rotate(180deg)}
  .recolhido .lg img[src*="logo-nome"]{display:none}
  .recolhido .lg{padding:0!important}
  .recolhido .sb>div:not(.sbtopo):not(#chip){width:100%}
  .recolhido .gh{justify-content:center;padding:8px 0}
  .recolhido .gl{font-size:0;gap:0}
  .recolhido .gh>svg{display:none}
  .recolhido .subw{display:none}
  .recolhido #chip{padding:8px!important;justify-content:center}
  .recolhido #chip>div,.recolhido #chip .sair{display:none}
}
.hd{margin-top:6px}.hd summary{cursor:pointer;color:var(--ac);font-size:12px;font-weight:700}
.hl{display:grid;grid-template-columns:120px 1fr 18px 1fr;gap:8px;font-size:12px;padding:4px 0;border-bottom:1px dashed var(--bd)}
.hl .no,.hl .ok{word-break:break-word}

/* ---- mensagens e diálogos dentro da página ---- */
.toast.ok{border-left-color:var(--ok)}.toast.ok .prog{background:var(--ok)}
.toast.info{border-left-color:var(--mu)}.toast.info .prog{background:var(--mu)}
.toast.aviso{border-left-color:var(--ac)}
dialog.dlg-c{border:1px solid var(--bd);border-radius:16px;background:var(--sf);color:var(--tx);padding:22px;width:min(440px,92vw);max-height:88vh;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.5)}
dialog.dlg-c::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
dialog.dlg-c[open]{animation:entra .3s cubic-bezier(.2,.8,.2,1) both}
.dlg-f{display:flex;flex-direction:column;gap:14px}.dlg-t{font-size:18px}.dlg-p{margin:0;color:var(--mu);line-height:1.5}
.dlg-c-campos{display:flex;flex-direction:column;gap:10px}
.dlg-corpo{max-height:58vh;overflow:auto;padding-right:4px}
a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}

/* =====================================================================================
   v4 · Estilo profissional e minimalista
   Paleta clara em cinza suave (sem branco puro), bordas discretas, tipografia e tabelas refinadas.
   ===================================================================================== */
.dk{--bg:#0E1317;--sf:#151B20;--sb:#11171B;--in:#0F1519;--bd:#232C34;--tx:#E7EDF1;--mu:#8E9EAA;--ac:#F5A524;--ok:#4CCB92;--no:#F27F7F;--hv:#1C252C;--sombra:none}
.lt{--bg:#DCE1E6;--sf:#ECEFF2;--sb:#E3E7EB;--in:#F4F6F8;--bd:#CBD2D9;--tx:#17222C;--mu:#52606D;--ac:#F5A524;--ok:#0B7F50;--no:#B03636;--hv:#E1E6EB;--sombra:0 1px 2px rgba(23,34,44,.07)}
body{background:#0E1317}
.app{font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;letter-spacing:.005em}
.mn{padding:28px 34px;gap:24px}
.mn h1{font-weight:700!important;letter-spacing:-.015em;font-size:26px!important}

/* --- cartões --- */
.cd{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:20px;box-shadow:var(--sombra)}
.kp{gap:16px}
.kp7{grid-template-columns:repeat(12,1fr)}
.kp7>*{grid-column:span 3}
.kp7>*:nth-child(n+5){grid-column:span 4}
.kp>.cd>.mu:first-child,.k5>.cd>.mu:first-child{font-size:12.5px;font-weight:600;letter-spacing:.01em}
.kp>.cd>.mu:last-child,.k5>.cd>.mu:last-child{font-size:12px;line-height:1.4;opacity:.9}
.v{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:8px 0 4px}
@media (max-width:900px){.kp7{grid-template-columns:1fr 1fr}.kp7>*,.kp7>*:nth-child(n+5){grid-column:auto}}

/* --- barra lateral --- */
.sb{background:var(--sb)}
.gh{font-weight:600;min-height:40px;padding:6px 10px;border-radius:10px;transition:background-color .2s,color .2s}
.gh.o,.gh:hover{background:transparent}
.gh:hover{background:var(--hv)}
.gb{background:transparent;width:26px;height:26px}
.gh.o .gb{background:transparent}
.gh .gl{gap:12px}
.sub{margin:2px 0 6px 22px;border-left:1px solid var(--bd)}
.n{padding:8px 12px;font-weight:500;font-size:13.5px;position:relative;border-radius:8px}
.n i{display:none}
.n.a{background:var(--hv);color:var(--tx);font-weight:700;box-shadow:inset 2px 0 0 var(--ac)}
.n:hover{background:var(--hv);transform:none}
.chip-role{border-radius:12px!important;box-shadow:none}

/* --- cabeçalho: tudo com a mesma altura --- */
.chip{height:40px;box-sizing:border-box;display:inline-flex;align-items:center;padding:0 14px;border-radius:10px;font-weight:600;background:var(--sf);box-shadow:var(--sombra)}
.seg{height:40px;box-sizing:border-box;border-radius:10px;padding:3px;box-shadow:var(--sombra)}
.seg button{border-radius:8px;min-height:32px;padding:0 12px;font-weight:600}
.seg button.on{background:var(--hv);color:var(--tx);box-shadow:inset 0 0 0 1px var(--bd)}
.seg button.on svg{color:var(--ac)}
.av,.bell{width:40px;height:40px;box-sizing:border-box;border-radius:10px;border:1px solid var(--bd);background:var(--sf);font-weight:700;box-shadow:var(--sombra)}
.av{display:grid;place-items:center;text-decoration:none;color:var(--tx)}
select.chip{padding:0 12px}
form.chip{padding:0 12px}

/* --- tabelas --- */
table{border-collapse:separate;border-spacing:0}
th{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--mu);padding:12px 10px;border-bottom:1px solid var(--bd);position:sticky;top:0;background:var(--sf);z-index:1}
td{padding:13px 10px;border-bottom:1px solid color-mix(in srgb,var(--bd) 70%,transparent)}
tr:last-child>td{border-bottom:0}
tbody tr,table tr{transition:background-color .15s}
td.r,th.r{font-variant-numeric:tabular-nums}
table tr:hover>td{background:color-mix(in srgb,var(--hv) 70%,transparent)}
th:hover{background:var(--sf)}
td a.mu{font-size:12.5px;text-decoration:none;opacity:.6;transition:opacity .15s,color .15s}
tr:hover td a.mu{opacity:1}
td a.mu:hover{color:var(--ac);text-decoration:underline}
@media (hover:none){td a.mu{opacity:1}}

/* --- etiquetas --- */
.bd{padding:3px 10px;border-radius:999px;font-weight:600;font-size:12px;background:var(--hv);border:1px solid transparent}
.bd.ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.bd.no{background:color-mix(in srgb,var(--no) 14%,transparent);color:var(--no)}
.bd.w{background:color-mix(in srgb,var(--ac) 22%,transparent)!important;color:var(--tx)!important}
.bd.mu{color:var(--mu)}

/* --- botões e campos --- */
.btn{background:transparent;border:1px solid var(--bd);font-weight:600;min-height:38px;padding:0 14px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background-color .2s,border-color .2s,transform .15s}
.btn:hover{background:var(--hv);border-color:color-mix(in srgb,var(--bd) 60%,var(--mu))}
.btn.p{background:var(--ac);border-color:var(--ac);color:#1A1200;font-weight:700}
.btn.p:hover{filter:brightness(1.06);background:var(--ac)}
.btn:active{transform:scale(.98)}
.in{background:var(--in);border:1px solid var(--bd);border-radius:10px;min-height:40px;transition:border-color .2s,box-shadow .2s}
.in:hover{border-color:color-mix(in srgb,var(--bd) 55%,var(--mu))}
.in:focus,.in:focus-within,select.in:focus,input.in:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 24%,transparent)}
:focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:6px}
.fl label{font-weight:600;letter-spacing:.01em}
.ln{padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--bd) 70%,transparent)}
input[type=checkbox]{accent-color:var(--ac);width:16px;height:16px}
select.chip,select.in{background-color:var(--in)}
select.chip{background-color:var(--sf)}

/* --- gráficos --- */
svg rect.bar{rx:4px;ry:4px;opacity:.94}
svg rect.bar:hover{opacity:1}
svg line[style*="--bd"]{opacity:.55;stroke-dasharray:3 5}
svg text{font-family:inherit}
.tk,.pg{background:color-mix(in srgb,var(--bd) 60%,transparent)}
.lgd{font-size:12px}

/* --- diálogos, avisos e gavetas --- */
dialog,dialog.dlg-c{border-radius:14px;box-shadow:0 24px 70px rgba(10,16,22,.35)}
.lt dialog,.lt dialog.dlg-c{box-shadow:0 24px 60px rgba(30,42,54,.22)}
.toast{border-radius:12px;box-shadow:0 12px 32px rgba(10,16,22,.28)}
.lt .toast{box-shadow:0 12px 30px rgba(30,42,54,.18)}
.gaveta{box-shadow:-18px 0 44px rgba(10,16,22,.28)}
.alerta{border-radius:10px}
.veu{background:rgba(14,19,23,.5)}

/* --- rolagem discreta --- */
*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--mu) 45%,transparent) transparent}

/* --- celular: tabelas largas rolam dentro do cartão --- */
@media (max-width:900px){.cd{overflow-x:auto}.cd table{min-width:560px}.mn{padding:18px 16px}}
@media print{body{background:#fff}.lt{--bg:#fff;--sf:#fff}}
body:has(.app.lt){background:#DCE1E6}
td.r,th.r,td.r *{white-space:nowrap}

/* notificações já vistas ficam mais discretas */
.gaveta .alerta.lido{opacity:.62}
.gaveta .alerta.lido b{font-weight:600}

/* ===== celular e tablet (v6): nada passa da largura da tela, barra fixa no topo, toques confortáveis ===== */
.mbar{display:none}
@media (max-width:900px){
  .app{grid-template-columns:minmax(0,1fr)}
  .mn{padding:0 14px 28px;gap:16px;max-width:100vw}
  .mn>*,.row>*,.r2>*,.g2>*,.g3>*,.k5>*,.kp>*{min-width:0}
  .row,.r2,.g2,.g3{grid-template-columns:minmax(0,1fr)}
  .mbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:50;margin:0 -14px;padding:10px 14px;background:var(--bg);border-bottom:1px solid var(--bd)}
  .mbar .bell,.mbar .burger{width:44px;height:44px;border-radius:12px;flex:none}
  .mbar .bell{margin-left:auto}
  .mbar .burger{display:grid;border:1px solid var(--bd);background:var(--sf);color:var(--tx);place-items:center}
  .mbar-t{font-weight:800;font-size:18px;letter-spacing:.02em}
  .mn .tb .burger,.mn .tb .bell,.mn .tb .av{display:none}
  .tb{gap:10px;min-width:0}
  .tb>.tb{width:100%;justify-content:flex-start;gap:10px}
  .tb h1{font-size:22px!important}
  #formPeriodo{flex:1 1 100%;min-width:0;padding:6px 10px}
  #formPeriodo input{min-width:0;flex:1 1 0;width:100%;font-size:14px}
  .tabs{flex-wrap:wrap}
  .seg button{padding:6px 10px}
  .btn,.chip,.in,select.in,.tabs .chip{min-height:44px}
  .cd{padding:14px;overflow-x:auto}
  .cd table{min-width:520px}
  .k5,.kp,.kp7{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
  .kp7>*,.kp7>*:nth-child(n+5){grid-column:auto}
  .k5 .v,.kp .v{font-size:20px}
  form.cd .tabs{flex-direction:column;align-items:stretch}
  .gaveta{width:min(100vw,380px)}
  #toasts{left:12px;right:12px;bottom:12px;width:auto}
  #dica{max-width:70vw}
}
@media (max-width:480px){
  .k5,.kp,.kp7{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:900px){
  select,select.chip,select.in{max-width:100%;min-width:0;text-overflow:ellipsis}
  .tabs select,.tb select{flex:1 1 150px}
  .seg button{font-size:0;gap:0;padding:7px 14px;min-height:36px}
  .seg button svg{width:18px;height:18px}
}
@media (max-width:900px){.sbtog{display:none}}
@media (max-width:900px){
  .mn [style*="grid-template-columns"],.row,.r2{grid-template-columns:minmax(0,1fr)!important}
  .ln{flex-wrap:wrap}
  .ln .tabs{flex-wrap:nowrap}
}

/* ===== tabelas largas (v7): nunca passam do cartão nem alargam a página; rolam por dentro do cartão quando não cabem ===== */
@media (min-width:901px){
  .app{grid-template-columns:248px minmax(0,1fr)}
  .app.recolhido{grid-template-columns:78px minmax(0,1fr)}
}
.mn{min-width:0}
.cd:has(table){overflow-x:auto;scrollbar-width:thin}
.cd table{border-collapse:collapse}
@media (min-width:901px) and (max-width:1500px){
  .cd:has(table) th,.cd:has(table) td{padding-left:8px;padding-right:8px}
}
@media (min-width:901px) and (max-width:1500px){
  .cd:has(table) th{font-size:10.5px;letter-spacing:.02em;padding-left:6px;padding-right:6px}
  .cd:has(table) td{font-size:13px;padding-left:6px;padding-right:6px}
  .cd:has(table) .bd{white-space:nowrap;padding-left:8px;padding-right:8px}
  .mn{padding-left:24px;padding-right:24px}
}
@media (min-width:901px) and (max-width:1500px){.cd:has(table){padding:14px}}
@media (min-width:901px) and (max-width:1100px){
  .mn [style*="grid-template-columns"],.row,.r2{grid-template-columns:minmax(0,1fr)!important}
  .mn>*,.row>*,.r2>*{min-width:0}
}
@media (max-width:1500px){.mn [style*="380px"]{grid-template-columns:minmax(0,1fr)!important}}
.k5{grid-template-columns:repeat(5,minmax(0,1fr))}
.k5>*,.kp>*{min-width:0}
@media (min-width:901px) and (max-width:1250px){.k5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.k5{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.k5{grid-template-columns:minmax(0,1fr)}}
@media (max-width:1500px){.row-manut{grid-template-columns:minmax(0,1fr)!important}}

/* ===================================================================
   v8 · POLIMENTO VISUAL (só aparência — cole no FINAL do styles.css)
   =================================================================== */

/* 1. Tokens de movimento, raio e profundidade --------------------- */
:root{--ease:cubic-bezier(.2,.8,.2,1);--ease-sai:cubic-bezier(.4,0,1,1);--rapido:.15s;--medio:.25s;--raio:14px}
.dk{--sombra-1:0 1px 0 rgba(255,255,255,.035) inset,0 1px 2px rgba(0,0,0,.25);--sombra-2:0 1px 0 rgba(255,255,255,.05) inset,0 12px 32px -12px rgba(0,0,0,.55);--vidro:color-mix(in srgb,var(--bg) 72%,transparent)}
.lt{--sombra-1:0 1px 2px rgba(23,34,44,.06),0 1px 1px rgba(23,34,44,.04);--sombra-2:0 14px 34px -14px rgba(23,34,44,.22);--vidro:color-mix(in srgb,var(--bg) 70%,transparent)}

/* 2. Tipografia: números alinhados e títulos equilibrados ---------- */
.app{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.v,td,th,.chip,.bd,.tk+*,svg text{font-variant-numeric:tabular-nums}
h1,h2,h3{text-wrap:balance;letter-spacing:-.02em}
.mn h1{font-weight:800}
::selection{background:color-mix(in srgb,var(--ac) 35%,transparent)}

/* 3. Cartões: profundidade sutil e elevação ao passar o mouse ------ */
.mn .cd{box-shadow:var(--sombra-1);transition:box-shadow var(--medio) var(--ease),border-color var(--medio) var(--ease),transform var(--medio) var(--ease)}
.mn .kp>.cd:hover,.mn .k5>.cd:hover{transform:translateY(-2px);box-shadow:var(--sombra-2);border-color:color-mix(in srgb,var(--ac) 30%,var(--bd))}

/* 4. Cabeçalho fixo com vidro sutil (computador) ------------------- */
@media (min-width:901px){
  .mn>.mbar+.tb{position:sticky;top:0;z-index:30;margin:-24px -28px 0;padding:16px 28px 14px;background:var(--vidro);
    -webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);border-bottom:1px solid transparent;transition:border-color var(--medio),box-shadow var(--medio)}
  .mn>.mbar+.tb.rolou{border-bottom-color:var(--bd);box-shadow:0 8px 24px -18px rgba(0,0,0,.5)}
}
@media (min-width:901px) and (max-width:1500px){.mn>.mbar+.tb{margin:-24px -24px 0;padding:14px 24px 12px}}

/* 5. Vidro também na barra do celular, gaveta e janelas ------------ */
@media (max-width:900px){.mbar{background:var(--vidro)!important;-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%)}}
dialog::backdrop,.veu{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
dialog[open]{animation:dlg-entra var(--medio) var(--ease);box-shadow:0 30px 80px -20px rgba(0,0,0,.6)}
@keyframes dlg-entra{from{opacity:0;transform:translateY(10px) scale(.98)}}
/* Quem pede menos transparência no sistema operacional recebe fundo sólido */
@media (prefers-reduced-transparency:reduce){.mn>.mbar+.tb,.mbar{background:var(--bg)!important;backdrop-filter:none!important}dialog::backdrop,.veu{backdrop-filter:none}}

/* 6. Tabelas: leitura mais fácil ----------------------------------- */
tbody tr{transition:background-color var(--rapido)}
tbody tr:hover>td:first-child{box-shadow:inset 3px 0 0 var(--ac)}
td a.mu{display:inline-grid;place-items:center;min-width:28px;min-height:28px;border-radius:8px;transition:background-color var(--rapido),color var(--rapido)}
td a.mu:hover{background:var(--hv);text-decoration:none!important}

/* 7. Botões e controles: resposta ao toque e foco visível ---------- */
.btn,.chip,.seg button,.bell,.veic{transition:transform var(--rapido) var(--ease),box-shadow var(--medio) var(--ease),background-color var(--medio),border-color var(--medio),filter var(--medio),color var(--medio)}
.btn:active,.chip:active,.seg button:active,.bell:active{transform:scale(.97)!important;transition-duration:.06s}
:where(a,button,select,summary,[tabindex]):focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:10px}
.in:focus,select.in:focus,input.in:focus{outline:0;border-color:var(--ac);box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 22%,transparent)}
.btn.p{background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0));box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 2px 8px -2px rgba(245,165,36,.45)}

/* 8. Menu lateral: item ativo mais nítido -------------------------- */
.n{transition:background-color var(--rapido),color var(--rapido)}
.n.a{box-shadow:inset 3px 0 0 var(--ac)}

/* 9. Troca de página suave (Chrome, Edge e Safari recentes) -------- */
@view-transition{navigation:auto}
.sb{view-transition-name:menu}
.mbar{view-transition-name:barra}
::view-transition-old(root){animation:vt-sai .14s var(--ease-sai) both}
::view-transition-new(root){animation:vt-entra .22s var(--ease) both}
@keyframes vt-sai{to{opacity:0}}
@keyframes vt-entra{from{opacity:0;transform:translateY(6px)}}

/* 10. Barra de rolagem discreta ------------------------------------ */
.app *{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--mu) 35%,transparent) transparent}

/* 11. Celular: indicadores em 2 colunas (menos rolagem) ------------ */
@media (max-width:600px){
  .mn .kp,.mn .k5{grid-template-columns:1fr 1fr!important;gap:10px!important}
  .mn .kp>.cd,.mn .k5>.cd{padding:12px!important}
  .mn .kp .v,.mn .k5 .v{font-size:clamp(17px,5.2vw,22px)!important;overflow-wrap:anywhere}
  .mn .kp>.cd>.mu:last-child,.mn .k5>.cd>.mu:last-child{font-size:11.5px}
  .mn .kp>.cd:last-child:nth-child(odd),.mn .k5>.cd:last-child:nth-child(odd){grid-column:1/-1}
}

/* 12. Tela de login: brilho de fundo e cartão de vidro ------------- */
body:has(form[action="/login"]) .dk{background:radial-gradient(900px 500px at 50% -10%,color-mix(in srgb,var(--ac) 16%,transparent),transparent 70%),var(--bg)!important}
form[action="/login"].cd,#fTroca.cd{background:color-mix(in srgb,var(--sf) 82%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 30px 80px -30px rgba(0,0,0,.7);animation:dlg-entra .4s var(--ease)}

/* Acessibilidade: sem movimento para quem pediu menos animação ----- */
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .mn .kp>.cd:hover,.mn .k5>.cd:hover{transform:none}
}
@media print{.mn>.mbar+.tb{position:static;backdrop-filter:none;background:none}}
