ViniciusKhan's picture
Corrige unidade do campo de reajuste (percent vs valor)
01cf033
Raw
History Blame Contribute Delete
20 kB
:root{
/* Paleta Penso (02 - Cores.pdf): Blue #0018FF, Blue Tech #0004DD, Black Intense #060606. */
--c1:#0018FF;--c2:#0004DD;--c3:#FFC453;
--bg:#F6F7FB;--surface:#ffffff;--surface2:#F5F6FA;--line:#EBEDF3;
--txt:#12141C;--muted:#68707E;--faint:#9AA1B0;
--ok:#16C79A;--high:#F05454;--med:#FFC453;--low:#eab308;
--blue:#0018FF;--green:#16C79A;--red:#F05454;--amber:#FFC453;--violet:#7C3AED;--teal:#0EA5A0;
--penso-blue:#0018FF;--penso-bluetech:#0004DD;--penso-black:#171717;--penso-blackx:#060606;
--radius:20px;--radius-sm:13px;
--shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px -6px rgba(16,24,40,.10);
--shadow-md:0 4px 10px rgba(16,24,40,.05),0 16px 36px -8px rgba(16,24,40,.14);
--shadow-lg:0 20px 50px -12px rgba(6,6,20,.35);
--sb:260px;
--font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,Arial,sans-serif;
}
[data-theme="dark"]{--bg:#0A0B10;--surface:#14151F;--surface2:#191b28;--line:#262a3a;--txt:#EEF0F8;--muted:#9aa3c0;--faint:#6c7595;
--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -6px rgba(0,0,0,.45);
--shadow-md:0 4px 10px rgba(0,0,0,.35),0 16px 36px -8px rgba(0,0,0,.55);
--shadow-lg:0 26px 60px rgba(0,0,0,.6)}
*{box-sizing:border-box}
::selection{background:rgba(0,24,255,.18)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--faint)}
body{margin:0;font-family:var(--font);color:var(--txt);letter-spacing:-.1px;
background:var(--bg);
min-height:100vh;-webkit-font-smoothing:antialiased}
a{color:var(--c1)}
.app{display:flex;min-height:100vh}
/* ---------------------------- Sidebar ---------------------------- */
.sidebar{width:var(--sb);background:linear-gradient(175deg,#050608 0%,#080B1E 38%,#0006C4 82%,#0018FF 130%);color:#fff;position:fixed;inset:0 auto 0 0;
display:flex;flex-direction:column;padding:20px 16px;z-index:40;transition:transform .28s cubic-bezier(.4,0,.2,1)}
.sb-brand{display:flex;align-items:center;gap:12px;padding:4px 8px 20px;margin-bottom:10px;border-bottom:1px solid rgba(255,255,255,.12)}
.sb-brand .logo{width:42px;height:42px;border-radius:14px;background:rgba(255,255,255,.14);display:grid;place-items:center;font-size:20px}
.sb-brand .penso-logo{background:linear-gradient(135deg,#ffffff,#eef2ff);color:#0018FF;font-weight:900;font-size:19px;font-family:var(--font);box-shadow:0 6px 16px rgba(0,0,0,.35)}
.sb-brand h1{font-size:15.5px;margin:0;font-weight:800;letter-spacing:-.2px} .sb-brand .s{font-size:11px;color:#B9C7FF;margin-top:1px}
nav{display:flex;flex-direction:column;gap:2px;overflow:auto;margin-top:8px;flex:1}
nav a{display:flex;align-items:center;gap:12px;color:#C7D0F0;text-decoration:none;padding:10px 12px;border-radius:13px;
font-size:13.5px;font-weight:600;cursor:pointer;transition:.16s ease;position:relative}
nav a .i{width:30px;height:30px;flex:none;text-align:center;font-size:15px;border-radius:9px;background:rgba(255,255,255,.06);
display:inline-flex;align-items:center;justify-content:center;transition:.16s ease}
nav a:hover{background:rgba(255,255,255,.08);color:#fff}
nav a:hover .i{background:rgba(255,255,255,.14)}
nav a.active{background:linear-gradient(100deg,#ffffff,#f3f5ff);color:#0018FF;box-shadow:0 8px 20px rgba(0,0,0,.28)}
nav a.active .i{background:rgba(0,24,255,.12)}
.sb-foot{margin-top:auto;padding-top:16px;display:flex;align-items:center;gap:10px;border-top:1px solid rgba(255,255,255,.12)}
.sb-foot img{width:38px;height:38px;border-radius:50%;border:2px solid rgba(255,255,255,.5)}
.sb-foot .n{font-size:12.5px;font-weight:700} .sb-foot .r{font-size:11px;color:#B9C7FF}
/* ---------------------------- Layout ---------------------------- */
.mainwrap{margin-left:var(--sb);flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.72);backdrop-filter:blur(14px) saturate(1.4);
border-bottom:1px solid var(--line);padding:14px 26px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
[data-theme="dark"] .topbar{background:rgba(15,16,26,.72)}
.hamb{display:none;background:var(--surface);border:1px solid var(--line);color:var(--txt);border-radius:12px;width:38px;height:38px;font-size:18px;cursor:pointer}
.vtitle{font-size:21px;font-weight:800;margin:0;letter-spacing:-.5px;
background:linear-gradient(90deg,var(--c1),#5b3bff);-webkit-background-clip:text;background-clip:text;color:transparent}
.spacer{flex:1}
.pill{display:flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:12px;padding:7px 13px;border-radius:999px;font-weight:600;box-shadow:var(--shadow)}
.dot{width:8px;height:8px;border-radius:50%;background:#9aa3b2}
.dot.on{background:#22c55e;animation:pulse 1.8s infinite} .dot.off{background:#ef4444}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.sel{appearance:none;background:var(--surface);border:1px solid var(--line);color:var(--txt);border-radius:12px;
padding:9px 30px 9px 13px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow);
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2368707E'%3E%3Cpath d='M6 9 1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}
.sel:focus{outline:none;border-color:var(--c1)}
.iconbtn{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--txt);cursor:pointer;font-size:16px;box-shadow:var(--shadow);transition:.15s}
.iconbtn:hover{border-color:var(--c1);transform:translateY(-1px)}
.btn{border:0;border-radius:13px;padding:10px 19px;font-size:14px;font-weight:700;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:8px}
.btn:hover{filter:brightness(1.06);transform:translateY(-1px)} .btn:active{transform:translateY(1px)} .btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn-primary{background:linear-gradient(100deg,var(--c1),#4a3bff);color:#fff;box-shadow:0 10px 24px -6px rgba(0,24,255,.45)}
.btn-ghost{background:var(--surface);color:var(--c1);border:1px solid var(--line)}
.btn-ghost:hover{background:var(--surface2)}
.btn-sm{padding:8px 14px;font-size:12.5px;border-radius:11px}
main{padding:26px 28px 40px;flex:1;max-width:1400px;width:100%;margin:0 auto}
/* ---------------------------- Cards ---------------------------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:20px;animation:fadeUp .5s cubic-bezier(.16,1,.3,1) both}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.sh-left{display:flex;align-items:center;gap:12px}
.sh-ic{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;font-size:19px;color:#fff;flex:none;box-shadow:0 6px 16px -4px rgba(0,0,0,.25)}
.sec-h h2{font-size:15.5px;margin:0;color:var(--txt);font-weight:800;letter-spacing:-.3px}
.meta{display:flex;gap:8px;flex-wrap:wrap}
.chip{background:var(--surface2);border:1px solid var(--line);color:var(--txt);border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600}
.chip.good{background:#dcfce7;color:#15803d;border-color:#bbf7d0} .chip.bad{background:#ffe4e6;color:#be123c;border-color:#fecdd3}
.hero{border-radius:18px;padding:20px 22px;background:linear-gradient(135deg,rgba(0,24,255,.06),rgba(124,58,237,.05) 55%,rgba(255,196,83,.06));
border:1px solid rgba(0,24,255,.10);position:relative;margin-bottom:18px;overflow:hidden}
.hero::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:999px;background:linear-gradient(180deg,var(--c1),#7C3AED)}
.hero .h{font-size:11.5px;font-weight:800;color:var(--c1);text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.hero p{margin:0 0 11px;font-size:14.5px;line-height:1.68;color:var(--txt)} .hero p:last-child{margin-bottom:0}
.hero strong{color:var(--c1)}
.skeleton{border-radius:12px;background:linear-gradient(100deg,var(--surface2) 30%,var(--line) 50%,var(--surface2) 70%);
background-size:200% 100%;animation:shimmer 1.4s infinite}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.topload{height:3px;border-radius:999px;overflow:hidden;background:var(--line);margin-bottom:14px;position:relative}
.topload::after{content:"";position:absolute;inset:0;width:34%;border-radius:999px;background:linear-gradient(90deg,var(--c1),var(--c3));animation:slide 1.1s infinite}
.fade-view{animation:fadeUp .35s cubic-bezier(.16,1,.3,1) both}
.errcard{display:flex;align-items:flex-start;gap:12px}
.errcard .ic{font-size:22px;line-height:1}
.errcard .btns{display:flex;gap:8px;margin-top:10px}
/* ---------------------------- KPIs ---------------------------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:14px}
.kpi{border:1px solid var(--line);border-radius:17px;padding:18px;background:var(--surface);transition:.2s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;opacity:0;transition:.2s;pointer-events:none}
.kpi:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:transparent}
.kpi .ic{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;font-size:21px;margin-bottom:12px;box-shadow:0 6px 14px -4px rgba(0,0,0,.18)}
.kpi .lab{font-size:11.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.kpi .val{font-size:24px;font-weight:800;margin-top:3px;letter-spacing:-.6px;color:var(--txt)}
.kpi.blue .ic{background:linear-gradient(135deg,#3b6bff,#0018FF);color:#fff} .kpi.blue .val{color:#0018FF}
.kpi.green .ic{background:linear-gradient(135deg,#34d399,#0d9488);color:#fff} .kpi.green .val{color:#0d9488}
.kpi.red .ic{background:linear-gradient(135deg,#fb7185,#e11d48);color:#fff} .kpi.red .val{color:#e11d48}
.kpi.amber .ic{background:linear-gradient(135deg,#fbbf24,#d97706);color:#fff} .kpi.amber .val{color:#b45309}
.kpi.violet .ic{background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff} .kpi.violet .val{color:#7c3aed}
.kpi.teal .ic{background:linear-gradient(135deg,#5eead4,#0d9488);color:#fff} .kpi.teal .val{color:#0d9488}
.split{display:grid;grid-template-columns:1.4fr .6fr;gap:18px;align-items:start} @media(max-width:900px){.split{grid-template-columns:1fr}}
.filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.fchip{font-size:12px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface2);color:var(--muted);cursor:pointer;font-weight:700;transition:.15s}
.fchip:hover{border-color:var(--c1);color:var(--c1)}
.fchip.active{background:linear-gradient(100deg,var(--c1),#4a3bff);color:#fff;border-color:transparent;box-shadow:0 8px 18px -6px rgba(0,24,255,.4)}
/* ---------------------------- Alertas ---------------------------- */
.alert{border:1px solid var(--line);background:var(--surface);padding:15px 17px;margin-bottom:12px;border-radius:16px;
animation:fadeUp .4s cubic-bezier(.16,1,.3,1) both;position:relative;padding-left:20px;transition:.15s}
.alert::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;border-radius:999px;background:#9aa3b2}
.alert:hover{box-shadow:var(--shadow)}
.alert .badge{display:inline-block;color:#fff;font-size:10px;font-weight:800;padding:3px 10px;border-radius:999px;margin-right:7px;letter-spacing:.03em}
.alert .t{font-weight:800;font-size:14.5px;letter-spacing:-.2px} .alert .d{color:var(--muted);font-size:13px;margin-top:6px;line-height:1.5} .alert .a{font-size:13px;margin-top:8px}
.alert details{margin-top:9px} .alert summary{cursor:pointer;font-size:12px;color:var(--c1);font-weight:700}
.recs{margin:9px 0 0;padding-left:18px} .recs li{font-size:12.5px;color:var(--muted);margin-bottom:4px} .recs a{color:var(--c1)}
.plan{white-space:pre-wrap;background:var(--surface2);border:1px dashed var(--line);border-radius:12px;padding:11px 13px;font-size:12.5px;margin-top:9px;line-height:1.5}
/* ---------------------------- Grades de destaque ---------------------------- */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:14px}
.dcard{border:1px solid var(--line);border-radius:17px;background:var(--surface);overflow:hidden;box-shadow:var(--shadow);
transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s;animation:fadeUp .45s cubic-bezier(.16,1,.3,1) both}
.dcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}
.dcard .dh{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;font-size:13px;font-weight:800;color:#fff}
.dcard .dh .ct{background:rgba(255,255,255,.28);color:#fff;border-radius:999px;padding:2px 10px;font-size:11px}
.dcard ul{margin:0;padding:11px 15px 13px 29px;max-height:280px;overflow:auto} .dcard li{font-size:12.5px;margin-bottom:5px;line-height:1.5}
.dcard a{text-decoration:none;color:var(--c1);font-weight:600} .dcard a:hover{text-decoration:underline} .dcard .info{color:var(--faint)}
.dgrid .dcard:nth-child(1){animation-delay:.03s} .dgrid .dcard:nth-child(2){animation-delay:.08s}
.dgrid .dcard:nth-child(3){animation-delay:.13s} .dgrid .dcard:nth-child(4){animation-delay:.18s}
/* ---------------------------- Abas / painéis ---------------------------- */
.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.tab{padding:8px 15px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);color:var(--muted);font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s}
.tab:hover{color:var(--c1)}
.tab.active{background:linear-gradient(100deg,var(--c1),#4a3bff);color:#fff;border-color:transparent}
.panel{display:none;border:1px solid var(--line);border-radius:16px;padding:18px 22px;background:var(--surface);max-height:600px;overflow:auto}
.panel.active{display:block} .panel h2{font-size:16px;color:var(--c1)} .panel table{border-collapse:collapse;width:100%} .panel td,.panel th{border:1px solid var(--line);padding:6px 9px;font-size:13px}
table.owners{width:100%;border-collapse:collapse}
.owners th,.owners td{border-bottom:1px solid var(--line);padding:10px 11px;font-size:13px;text-align:left}
.owners th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:700}
.owners tbody tr{transition:.12s} .owners tbody tr:hover{background:var(--surface2)}
.empty{text-align:center;color:var(--faint);padding:48px 20px;font-size:14px}
.err{background:#ffe4e6;border:1px solid #fecdd3;color:#be123c;padding:14px 16px;border-radius:14px;font-size:14px;white-space:pre-wrap}
label.lbl{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 7px;font-weight:700}
input[type=text],input[type=date],input[type=password],input[type=email]{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:13px;font-size:14px;background:var(--surface2);color:var(--txt);font-family:var(--font);transition:.15s}
input:focus{outline:none;border-color:var(--c1);box-shadow:0 0 0 4px rgba(0,24,255,.10);background:var(--surface)}
.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}
.switch input{display:none}.track{width:42px;height:24px;border-radius:999px;background:#cbd0e0;position:relative;transition:.2s}
[data-theme="dark"] .track{background:#39406a}
.track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s}
.switch input:checked + .track{background:linear-gradient(100deg,var(--c1),#4a3bff)} .switch input:checked + .track::after{transform:translateX(18px)}
.bar{height:8px;background:var(--line);border-radius:999px;overflow:hidden;position:relative;margin:10px 0}
.bar::after{content:"";position:absolute;inset:0;width:38%;border-radius:999px;background:linear-gradient(90deg,var(--c1),var(--c3));animation:slide 1.25s infinite}
@keyframes slide{0%{transform:translateX(-110%)}100%{transform:translateX(330%)}}
.integr{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;padding:20px;border-top:1px solid var(--line);margin-top:8px}
.integr span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:700}
.integr img{height:20px;opacity:.55;transition:.2s} .integr img:hover{opacity:1;transform:translateY(-2px)}
.backdrop{position:fixed;inset:0;background:rgba(10,8,20,.55);backdrop-filter:blur(6px);display:none;align-items:flex-start;justify-content:center;padding:60px 16px;z-index:60}
.backdrop.open{display:flex} .modal{background:var(--surface);border:1px solid var(--line);border-radius:20px;max-width:520px;width:100%;padding:26px;box-shadow:var(--shadow-lg);animation:fadeUp .3s cubic-bezier(.16,1,.3,1) both}
.modal .mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal h3{margin:0;font-size:17px;letter-spacing:-.3px}
.modal .x{background:var(--surface2);border:1px solid var(--line);border-radius:11px;cursor:pointer;font-size:15px;padding:5px 11px;color:var(--txt)}
#toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:9px;z-index:70}
.toast{background:var(--txt);color:var(--surface);padding:13px 17px;border-radius:14px;font-size:13px;box-shadow:var(--shadow-lg);animation:fadeUp .3s cubic-bezier(.16,1,.3,1)}
.toast.ok{background:linear-gradient(100deg,#16a34a,#22c55e);color:#fff} .toast.bad{background:linear-gradient(100deg,#e11d48,#f43f5e);color:#fff}
.cclist{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.ccrow{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px 13px;font-size:13px}
.ccrow button{background:none;border:0;color:var(--red);cursor:pointer;font-size:13px;font-weight:700}
.ccadd{display:flex;gap:8px;margin-top:14px}
@media(max-width:860px){.sidebar{transform:translateX(-100%)} .sidebar.open{transform:none} .mainwrap{margin-left:0} .hamb{display:block} .split{grid-template-columns:1fr} main{padding:18px 16px 32px}}
/* ---- Reforço visual: contratos/reajuste, animações staggered ---- */
.disclaimer{margin-top:14px;padding:11px 14px;border-radius:12px;background:var(--surface2);border:1px dashed var(--line);color:var(--muted);font-size:12px;line-height:1.55}
.af-glow{position:relative;overflow:hidden}
.af-glow::before{content:"";position:absolute;inset:-2px;border-radius:var(--radius);padding:2px;
background:linear-gradient(120deg,var(--c1),var(--c3),#7c3aed);background-size:220% 220%;
-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
animation:af-borderflow 5s ease infinite;opacity:.5;pointer-events:none}
@keyframes af-borderflow{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.kpis .kpi{animation:fadeUp .45s cubic-bezier(.16,1,.3,1) both}
.kpis .kpi:nth-child(1){animation-delay:.02s} .kpis .kpi:nth-child(2){animation-delay:.06s}
.kpis .kpi:nth-child(3){animation-delay:.10s} .kpis .kpi:nth-child(4){animation-delay:.14s}
.kpis .kpi:nth-child(5){animation-delay:.18s} .kpis .kpi:nth-child(6){animation-delay:.22s}
.kpis .kpi:nth-child(7){animation-delay:.26s} .kpis .kpi:nth-child(8){animation-delay:.30s}
.kpis .kpi:nth-child(9){animation-delay:.34s} .kpis .kpi:nth-child(10){animation-delay:.38s}
.kpi:hover .ic{transform:scale(1.08) rotate(-4deg);transition:.2s}