: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}