:root{color-scheme:light;--royal:#1B3FBF;--royal2:#122A8A;--ink:#0A0A0A;--bg:#fff;--line:#E3E7F0;--soft:#F5F7FC;--mut:#5F6A80;--red:#C0281F;--ok:#1B3FBF}
*{box-sizing:border-box;border-radius:0}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif}
button,input,select{font:inherit;color:var(--ink)}
.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
aside{border-right:1px solid var(--ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.logo{padding:18px 18px 14px;border-bottom:1px solid var(--ink)}
.logo b{display:block;font-size:17px;font-weight:600;letter-spacing:.04em;color:var(--royal)}
.logo span{color:var(--mut);font-size:12px}
nav{padding:8px 0;flex:1}
nav button{display:flex;width:100%;gap:10px;align-items:center;text-align:left;background:none;border:0;border-left:4px solid transparent;padding:10px 16px;cursor:pointer}
nav button:hover{background:var(--soft)}
nav button.on{border-left-color:var(--royal);background:var(--soft);color:var(--royal);font-weight:600}
nav i{font-style:normal;width:18px;text-align:center;font-weight:700}
.me{border-top:1px solid var(--ink);padding:12px 16px;color:var(--mut);font-size:12px}
main{min-width:0}
header{display:flex;align-items:center;gap:12px;padding:14px 28px;border-bottom:1px solid var(--ink);position:sticky;top:0;background:var(--bg);z-index:5}
header h1{font-size:20px;font-weight:600;margin:0}
header .sp{flex:1}
.mes{display:flex;align-items:center;border:1px solid var(--ink)}
.mes button{border:0;background:none;padding:6px 10px;cursor:pointer}
.mes span{padding:0 10px;font-weight:600;min-width:120px;text-align:center}
.btn{background:var(--bg);border:1px solid var(--ink);padding:7px 14px;cursor:pointer}
.btn:hover{background:var(--soft)}
.btn.p{background:var(--royal);border-color:var(--royal);color:#fff}
.btn.p:hover{background:var(--royal2)}
.btn.sm{padding:3px 9px;font-size:12px}
.pg{padding:24px 28px 60px;max-width:1500px}
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:22px}
.kpi{border:1px solid var(--line);border-top:4px solid var(--royal);padding:12px 14px}
.kpi small{display:block;color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.kpi b{display:block;font-size:26px;font-weight:600;color:var(--royal);font-variant-numeric:tabular-nums}
.kpi em{font-style:normal;color:var(--mut);font-size:12px}
.cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:24px;align-items:start}
.card{border:1px solid var(--ink);margin-bottom:22px}
.card>h2{margin:0;padding:10px 14px;font-size:14px;font-weight:600;border-bottom:1px solid var(--ink);display:flex;align-items:center;gap:10px;background:var(--soft)}
.card>h2 .sp{flex:1}
.card .in{padding:14px}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{text-align:left;font-weight:600;font-size:12px;color:var(--mut);padding:8px 10px;border-bottom:1px solid var(--ink);white-space:nowrap}
td{padding:9px 10px;border-bottom:1px solid var(--line)}
tr:last-child td{border-bottom:0}
tr.sel td{background:var(--soft)}
.n{text-align:right}.royal{color:var(--royal)}.red{color:var(--red)}.mut{color:var(--mut)}
.tag{display:inline-block;border:1px solid var(--royal);color:var(--royal);padding:0 7px;font-size:12px;white-space:nowrap}
.tag.r{border-color:var(--red);color:var(--red)}.tag.k{border-color:var(--ink);color:var(--ink)}.tag.f{background:var(--royal);color:#fff;border-color:var(--royal)}
.bar{height:10px;background:var(--soft);border:1px solid var(--line);position:relative;min-width:90px}
.bar i{position:absolute;inset:0 auto 0 0;background:var(--royal)}.bar i.o{background:var(--red)}
.bar u{position:absolute;top:-3px;bottom:-3px;border-left:2px solid var(--ink)}
.chips{display:flex;gap:6px;margin-left:auto}
.chip{border:1px solid var(--ink);background:var(--bg);padding:2px 10px;cursor:pointer;font-size:12px}
.chip.on{background:var(--ink);color:var(--bg)}
input[type=text],input[type=number],input[type=password],input[type=month],input[type=date],select{height:34px;border:1px solid var(--ink);background:var(--bg);padding:0 10px}
label.opt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);padding:9px 11px;margin-bottom:8px;cursor:pointer}
label.opt.on{border-color:var(--royal);outline:1px solid var(--royal);background:var(--soft)}
label.opt input{margin-top:3px;accent-color:var(--royal)}
.donna{border:1px solid var(--royal);border-left:6px solid var(--royal);padding:12px 14px;margin-bottom:22px}
.donna b{color:var(--royal)}
.wa{background:var(--soft);border:1px solid var(--line);padding:12px;font-size:13px}
.wa .m{border:1px solid var(--line);background:var(--bg);padding:7px 10px;margin-bottom:8px;max-width:92%}
.wa .m.v{margin-left:auto;border-color:var(--royal)}
.wa small{display:block;color:var(--mut);font-size:11px}
.grid{overflow:auto;border:1px solid var(--ink)}
.grid table{min-width:1100px;font-size:13px}
.grid th,.grid td{text-align:right;padding:6px 8px;white-space:nowrap}
.grid th:first-child,.grid td:first-child{text-align:left;position:sticky;left:0;background:var(--bg);border-right:1px solid var(--ink)}
.grid .cur{background:var(--soft);outline:1px solid var(--royal)}
.grid .pv{color:var(--mut);font-style:italic}
.grid tr.gp td{background:var(--soft);font-weight:600}
.two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.form{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.form label{display:block;font-size:12px;color:var(--mut)}
.form input,.form select{width:100%;margin-top:3px}
.note{color:var(--mut);font-size:12px}
.pix{background:var(--soft);border:1px dashed var(--royal);padding:6px 10px;font-family:Consolas,monospace;font-size:12px;word-break:break-all}
aside{border-right:1px solid var(--line);background:#fff}
.logo{border-bottom:1px solid var(--line)}
.me{border-top:1px solid var(--line)}
header{border-bottom:1px solid var(--line);box-shadow:0 2px 14px rgba(27,63,191,.06);background:rgba(255,255,255,.92);backdrop-filter:blur(6px)}
.mes{border-color:var(--line)}
nav button{transition:all .18s;position:relative}
nav button:hover{padding-left:22px}
nav button.on{background:linear-gradient(90deg,rgba(27,63,191,.10),rgba(27,63,191,0))}
.btn{border-color:var(--line);transition:transform .15s,box-shadow .15s,background .15s}
.btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(27,63,191,.14)}
.btn:active{transform:translateY(0)}
.btn.p{box-shadow:0 4px 12px rgba(27,63,191,.28)}
.pg{background:#fff}
@keyframes up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(27,63,191,.35)}100%{box-shadow:0 0 0 12px rgba(27,63,191,0)}}
.kpi,.card,.donna,.pan{animation:up .55s cubic-bezier(.2,.8,.2,1) both}
.kpis>*:nth-child(2),.cols>div>*:nth-child(2){animation-delay:.07s}
.kpis>*:nth-child(3),.cols>div>*:nth-child(3){animation-delay:.14s}
.kpis>*:nth-child(4){animation-delay:.21s}.kpis>*:nth-child(5){animation-delay:.28s}
.kpi{border:1px solid var(--line);border-top:4px solid var(--royal);background:#fff;transition:transform .25s,box-shadow .25s}
.kpi:hover,.card:hover,.pan>div:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(27,63,191,.14)}
.card{border:1px solid var(--line);transition:transform .25s,box-shadow .25s;background:#fff;box-shadow:0 1px 3px rgba(10,10,10,.04)}
.card>h2{border-bottom:1px solid var(--line);background:#fff;color:var(--royal);letter-spacing:.01em}
th{border-bottom:1px solid var(--line)}
tbody tr,table tr{transition:background .15s}
table tr:hover td{background:var(--soft)}
.bar{background:var(--soft);border:0;height:8px}
.bar i{transform-origin:left;animation:grow .9s cubic-bezier(.2,.8,.2,1) both;transition:width .6s}
.bar i{background:linear-gradient(90deg,var(--royal),#4A6BF0)}.bar i.o{background:var(--red)}
.donna{border:1px solid var(--line);border-left:6px solid var(--royal);background:linear-gradient(90deg,#F0F4FF,#fff)}
.donna b:first-child:before{content:"";display:inline-block;width:9px;height:9px;background:var(--royal);margin-right:8px;animation:pulse 1.8s infinite}
.tag.f{box-shadow:0 2px 6px rgba(27,63,191,.25)}
.grid{border-color:var(--line)}
.grid th:first-child,.grid td:first-child{border-right:1px solid var(--line)}
label.opt{transition:all .18s}
label.opt:hover{transform:translateY(-2px);border-color:var(--royal);box-shadow:0 8px 18px rgba(27,63,191,.10)}
.pan{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:22px}
.pan>div{border:1px solid var(--line);background:linear-gradient(180deg,#F5F7FC,#fff);padding:12px 14px;transition:transform .25s,box-shadow .25s}
.pan small{display:block;color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.pan b{font-size:22px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.pan em{display:block;font-style:normal;font-size:12px;color:var(--mut)}
.sec{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin:0 0 10px}
.mini{display:flex;align-items:flex-end;gap:8px;height:120px;padding:0 4px;border-bottom:1px solid var(--line)}
.mini div{flex:1;background:linear-gradient(180deg,#4A6BF0,var(--royal));transform-origin:bottom;animation:rise .8s cubic-bezier(.2,.8,.2,1) both;position:relative;transition:filter .2s}
.mini div:hover{filter:brightness(1.2)}
.mini div.pv{background:repeating-linear-gradient(45deg,#C9D4FA,#C9D4FA 4px,#E4EAFD 4px,#E4EAFD 8px)}
.mini div.cur{outline:2px solid var(--ink);outline-offset:2px}
.mlab{display:flex;gap:8px;padding:4px 4px 0;font-size:11px;color:var(--mut)}.mlab span{flex:1;text-align:center}
.score{display:flex;align-items:center;gap:16px}
.score .ring{width:84px;height:84px;display:grid;place-items:center;font-size:24px;font-weight:600;color:var(--royal);background:conic-gradient(var(--royal) calc(var(--p)*1%),var(--soft) 0);position:relative}
.score .ring:before{content:"";position:absolute;inset:8px;background:#fff}.score .ring span{position:relative}
@keyframes dash{to{stroke-dashoffset:0}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{transform:scale(.6) rotate(-50deg);opacity:0}to{transform:none;opacity:1}}
.ln{fill:none;stroke-width:2.6;stroke-dasharray:1;stroke-dashoffset:1;animation:dash 1.5s .15s cubic-bezier(.2,.8,.2,1) forwards;stroke-linejoin:round}
.ln.pl{stroke-dasharray:6 5;stroke-dashoffset:0;stroke-width:2;animation:fade 1.2s both}
.dt{animation:fade .5s both;cursor:pointer;transition:r .15s}.dt:hover{r:6}
.leg{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin-top:8px}.leg i{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px}
.donut{width:170px;height:170px;position:relative;animation:pop .9s cubic-bezier(.2,.8,.2,1) both;flex:none}
.donut:before{content:"";position:absolute;inset:34px;background:#fff}
.donut span{position:absolute;inset:0;display:grid;place-items:center;text-align:center;font-size:12px;color:var(--mut);line-height:1.2}.donut span b{display:block;font-size:20px;color:var(--ink);font-weight:600}
.alloc{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.alloc table td{padding:5px 8px}
.ov{position:fixed;inset:0;background:rgba(10,10,10,.38);display:flex;align-items:flex-start;justify-content:center;padding-top:9vh;z-index:50;animation:fade .2s both}
.md{width:680px;max-width:94vw;background:#fff;border:1px solid var(--ink);box-shadow:0 30px 70px rgba(10,10,10,.3);animation:up .3s cubic-bezier(.2,.8,.2,1) both;max-height:80vh;overflow:auto}
.mh{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);color:var(--royal)}
.mb{padding:16px}
.mb>input{width:100%;height:44px;font-size:16px;border:2px solid var(--royal);padding:0 12px}
.mt{display:grid;grid-template-columns:auto 1fr auto;gap:4px 12px;align-items:center;width:100%;text-align:left;background:#fff;border:1px solid var(--line);margin-top:8px;padding:9px 12px;cursor:pointer;transition:all .18s;animation:up .3s both}
.mt:hover{border-color:var(--royal);transform:translateX(4px);box-shadow:0 6px 16px rgba(27,63,191,.12)}
.mt .bar{grid-column:1/4;height:4px}
.warn{margin-top:12px;border-left:4px solid var(--royal);background:#F0F4FF;padding:8px 12px}
.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:#fff;padding:12px 18px;z-index:70;max-width:420px;border-left:5px solid #4A6BF0;animation:up .3s both}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (max-width:1100px){.pan{grid-template-columns:repeat(2,1fr)}.app{grid-template-columns:1fr}aside{position:static;height:auto}nav{display:flex;flex-wrap:wrap}.kpis{grid-template-columns:repeat(2,1fr)}.cols,.two{grid-template-columns:1fr}.form{grid-template-columns:1fr 1fr}}
[hidden]{display:none!important}
.login{min-height:100vh;display:grid;place-items:center;background:#fff}
.login form{width:360px;max-width:92vw;border:1px solid var(--ink);padding:28px;animation:up .5s both}
.login h1{margin:0 0 4px;color:var(--royal);letter-spacing:.04em}
.login label{display:block;margin-top:14px;font-size:12px;color:var(--mut)}
.login input{width:100%;margin-top:3px}
.erro{color:var(--red);margin-top:12px;min-height:1.2em}
.vazio{padding:28px;text-align:center;color:var(--mut)}
.mini div.neg{background:var(--red)}
.sair{background:none;border:0;color:var(--mut);cursor:pointer;padding:0;text-decoration:underline}
pre.txt{white-space:pre-wrap;font:13px/1.5 Consolas,monospace;background:var(--soft);border:1px solid var(--line);padding:14px;margin:0}
.print *{animation:none!important;transition:none!important}
.print .ln{stroke-dashoffset:0!important}
.print header .btn.p{display:none}
.print aside{position:static;height:auto}
