:root{
  --navy:#0b2545; --navy2:#13315c; --navy3:#1e4a7d; --steel:#8da9c4; --accent:#1d5fbf;
  --bg:#f3f5f8; --card:#fff; --line:#e3e8ef; --line2:#eef1f5; --text:#1a2433; --muted:#5f6b7a; --muted2:#8a95a3;
  --ok:#1b7f4b; --ok-bg:#e5f5ec; --warn:#a15c00; --warn-bg:#fff3dd; --crit:#c2410c; --crit-bg:#ffe9df;
  --zero:#b42318; --zero-bg:#fde7e7; --info:#1d5fbf; --info-bg:#e6effc; --purple:#6b3fa0; --purple-bg:#f1eafb;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
button,input,select,textarea{font:inherit;color:inherit}
.boot{display:grid;place-items:center;height:100vh;color:var(--muted)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.muted{color:var(--muted)} .small{font-size:12px} .nowrap{white-space:nowrap} .strong{font-weight:600}
.hidden{display:none!important}

/* ---------- login ---------- */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(160deg,var(--navy) 0%,var(--navy2) 55%,var(--navy3) 100%)}
.auth-card{width:100%;max-width:400px;background:#fff;border-radius:14px;padding:28px 24px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.auth-card .logo{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.auth-card .logo img{width:40px;height:40px}
.auth-card h1{font-size:22px;color:var(--navy)}
.auth-card p.sub{margin:0 0 20px;color:var(--muted)}
.auth-card .btn{width:100%;justify-content:center;margin-top:6px}

/* ---------- layout ---------- */
.app{display:flex;min-height:100vh}
.sidebar{width:248px;flex:0 0 248px;background:var(--navy);color:#dbe5f1;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand img{width:34px;height:34px}
.brand b{display:block;color:#fff;font-size:16px;letter-spacing:.04em}
.brand span{font-size:11.5px;color:var(--steel);display:block;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav{padding:10px 10px 20px;display:flex;flex-direction:column;gap:2px}
.nav-h{font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--steel);opacity:.75;padding:14px 12px 4px}
.nav-h:first-child{padding-top:4px}
.nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;color:#c9d6e6;font-weight:500}
.nav a svg{width:18px;height:18px;flex:0 0 18px;opacity:.85}
.nav a:hover{background:rgba(255,255,255,.07);text-decoration:none;color:#fff}
.nav a.active{background:var(--navy3);color:#fff}
.nav a .pill{margin-left:auto;background:#f59e0b;color:#1a1a1a;border-radius:20px;padding:0 7px;font-size:11.5px;font-weight:700;line-height:19px}
.nav a .pill.red{background:#ef4444;color:#fff}
.side-foot{margin-top:auto;padding:14px 18px;font-size:11.5px;color:var(--steel);border-top:1px solid rgba(255,255,255,.08)}
.content{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--line);padding:10px 24px;min-height:58px}
.topbar h1{font-size:18px;color:var(--navy);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menu-btn{display:none}
.sync{font-size:12px;color:var(--muted2);white-space:nowrap}
.sync.off{color:var(--zero)}
.who{display:flex;align-items:center;gap:10px}
.who .avatar{width:32px;height:32px;border-radius:50%;background:var(--navy2);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.who .nm{line-height:1.15}
.who .nm b{display:block;font-size:13px}
.who .nm span{font-size:11.5px;color:var(--muted)}
main{padding:22px 24px 40px;max-width:1500px;width:100%}
.overlay{display:none}

/* ---------- componentes ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;font-weight:600;cursor:pointer;white-space:nowrap;color:var(--text);text-decoration:none!important;min-height:36px}
.btn:hover{background:#f6f8fb}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.primary:hover{background:var(--navy2)}
.btn.success{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.danger{background:#fff;border-color:#f3c3bd;color:var(--zero)}
.btn.danger:hover{background:var(--zero-bg)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{padding:4px 10px;min-height:28px;font-size:12.5px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.loading::after{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.icon-btn{border:0;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:var(--muted);padding:4px 8px;border-radius:6px}
.icon-btn:hover{background:var(--line2)}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;justify-content:space-between;margin-bottom:14px}
.toolbar .actions{display:flex;gap:8px;flex-wrap:wrap}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.filters label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);font-weight:600}
.filters input,.filters select{min-width:140px}
.filters input[type=search]{min-width:220px}
input,select,textarea{border:1px solid #cfd7e2;border-radius:8px;padding:7px 10px;background:#fff;min-height:36px;width:100%}
textarea{min-height:70px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(29,95,191,.25);border-color:var(--accent)}
input[type=checkbox]{width:auto;min-height:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;min-width:0}
.card h2{font-size:14.5px;color:var(--navy);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:block;color:inherit;border-left:4px solid var(--steel)}
a.kpi:hover{text-decoration:none;border-color:var(--accent)}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.kpi .v{font-size:24px;font-weight:700;color:var(--navy);margin-top:4px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .s{font-size:12px;color:var(--muted2)}
.kpi.navy{background:var(--navy);border-color:var(--navy);border-left-color:var(--steel)}
.kpi.navy .l,.kpi.navy .s{color:var(--steel)} .kpi.navy .v{color:#fff}
.kpi.warn{border-left-color:#f59e0b} .kpi.crit{border-left-color:var(--crit)} .kpi.zero{border-left-color:var(--zero)} .kpi.ok{border-left-color:var(--ok)}
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap;background:var(--line2);color:var(--muted)}
.badge.ok{background:var(--ok-bg);color:var(--ok)} .badge.warn{background:var(--warn-bg);color:var(--warn)}
.badge.crit{background:var(--crit-bg);color:var(--crit)} .badge.zero{background:var(--zero-bg);color:var(--zero)}
.badge.info{background:var(--info-bg);color:var(--info)} .badge.purple{background:var(--purple-bg);color:var(--purple)}
.badge.muted{background:#eef0f3;color:#6b7280}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--muted)}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.chip b{margin-left:4px}

/* ---------- tabelas ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff}
.card .table-wrap{border:0;border-radius:0;margin:0 -18px -16px}
table{width:100%;border-collapse:collapse}
th,td{padding:9px 12px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle}
th{background:#f7f9fc;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;white-space:nowrap;position:sticky;top:0}
tbody tr:hover{background:#fafbfd}
tbody tr:last-child td{border-bottom:0}
tfoot td{background:#f2f5f9;font-weight:700;border-top:1px solid var(--line)}
td.empty{text-align:center;color:var(--muted2);padding:26px}
td .row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
td.prod{min-width:190px}
td.prod b{display:block;font-weight:600}
td.prod span{font-size:12px;color:var(--muted2)}
tr.diff-neg td{background:#fff6f4} tr.diff-pos td{background:#f3fbf6}
.table-wrap input{min-width:90px}

/* ---------- modal ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(11,37,69,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:100;overflow-y:auto}
.modal{background:#fff;border-radius:12px;width:100%;max-width:560px;box-shadow:0 25px 60px rgba(0,0,0,.3)}
.modal.wide{max-width:900px}
.modal header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal header h3{font-size:16px;color:var(--navy)}
.modal-body{padding:16px 18px;display:grid;gap:12px}
.modal footer{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--line);background:#fafbfc;border-radius:0 0 12px 12px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-grid .full{grid-column:1/-1}
.field{display:flex;flex-direction:column;gap:4px}
.field>span{font-size:12.5px;font-weight:600;color:#384354}
.field>span i{color:var(--zero);font-style:normal}
.field small{color:var(--muted2);font-size:11.5px}
.check{display:flex;gap:8px;align-items:center;font-weight:500}
.form-error{background:var(--zero-bg);color:var(--zero);border:1px solid #f7c6c1;padding:9px 12px;border-radius:8px;font-weight:600}
.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:12px}
.info-grid div span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted2);font-weight:700}
.info-grid div b{font-weight:600;word-break:break-word}
.note{background:var(--info-bg);color:#1c3d6e;border-radius:8px;padding:10px 12px;font-size:13px}
.note.warn{background:var(--warn-bg);color:#7a4500}

/* ---------- toast ---------- */
.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:200;max-width:min(380px,calc(100vw - 32px))}
.toast{background:var(--navy);color:#fff;padding:11px 14px;border-radius:9px;box-shadow:0 10px 25px rgba(0,0,0,.2);font-weight:500;animation:tin .2s ease}
.toast.err{background:#9f1d1d}
@keyframes tin{from{transform:translateY(8px);opacity:0}}

/* ---------- gráficos ---------- */
.chart svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-top:6px;flex-wrap:wrap}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.stack{display:flex;height:16px;border-radius:8px;overflow:hidden;background:var(--line2);margin:4px 0 10px}
.stack div{height:100%}
.hbar{display:grid;grid-template-columns:130px 1fr 110px;gap:8px;align-items:center;font-size:12.5px;margin:6px 0}
.hbar .t{background:var(--line2);border-radius:4px;height:10px;overflow:hidden}
.hbar .t div{height:100%;background:var(--navy3);border-radius:4px}
.hbar .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.pick-list{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-top:6px;display:grid;gap:2px}
[data-emp-q]{margin-top:2px}
.report-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:16px}
.report-list button{text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px 14px;cursor:pointer;font-weight:600;color:var(--navy)}
.report-list button.on{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy);background:#f3f6fb}
.report-list button span{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.section-title{font-size:13px;font-weight:700;color:var(--navy);text-transform:uppercase;letter-spacing:.04em;margin:18px 0 8px}

/* ---------- responsivo ---------- */
@media (max-width:1100px){.grid2{grid-template-columns:1fr}}
@media (max-width:860px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:60;transform:translateX(-100%);transition:transform .2s}
  body.nav-open .sidebar{transform:none}
  body.nav-open .overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50}
  .menu-btn{display:inline-block}
  .topbar{padding:8px 16px}
  main{padding:16px 16px 40px}
  .who .nm{display:none}
  .sync{display:none}
}
@media (max-width:700px){
  .form-grid{grid-template-columns:1fr}
  .filters{width:100%}
  .filters label{flex:1 1 140px}
  .filters input,.filters select,.filters input[type=search]{min-width:0}
  .kpis{grid-template-columns:1fr 1fr}
  .kpi .v{font-size:19px}
  .modal-bg{padding:0}
  .modal{border-radius:0;min-height:100%}
  .modal footer{border-radius:0;position:sticky;bottom:0}
  .hbar{grid-template-columns:90px 1fr 90px}
  /* tabelas viram cartões no celular */
  .table-wrap.cards{border:0;background:transparent;overflow:visible}
  .card .table-wrap.cards{margin:0}
  .cards table,.cards tbody,.cards tr,.cards td{display:block;width:100%}
  .cards thead{display:none}
  .cards tbody tr{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:6px 0;box-shadow:var(--shadow)}
  .cards td{display:flex;justify-content:space-between;gap:12px;border:0;padding:5px 14px;text-align:right}
  .cards td::before{content:attr(data-label);font-size:11px;text-transform:uppercase;color:var(--muted2);font-weight:700;text-align:left;flex:0 0 auto;padding-top:2px}
  .cards td.prod{display:block;text-align:left;border-bottom:1px solid var(--line2);padding-bottom:8px;margin-bottom:2px}
  .cards td.prod::before{display:none}
  .cards td.empty{display:block;text-align:center}
  .cards td.empty::before{display:none}
  .cards td .row-actions{justify-content:flex-end}
  .cards td:has(.row-actions)::before{content:""}
  .cards tfoot,.cards tfoot tr,.cards tfoot td{display:block}
  .cards tfoot td{display:flex;justify-content:space-between;border-radius:8px}
  .cards tfoot td:empty{display:none}
}
@media print{.sidebar,.topbar,.toolbar,.filters{display:none!important} main{padding:0}}

/* ---------- OMNI DP: área de alertas de ASO e férias (acréscimo) ---------- */
.dp-panel{background:#fff;border:2px solid #b42318;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:18px}
.dp-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.dp-head h2{font-size:15px;color:#b42318;letter-spacing:.02em}
.dp-counts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:12px}
.dp-count{border:1px solid var(--line);border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;background:#fff;border-left-width:5px}
.dp-count b{display:block;font-size:22px;line-height:1.1}
.dp-count span{font-size:11.5px;font-weight:600}
.dp-count.on{outline:2px solid var(--navy);outline-offset:1px}
.dp-count.dp-zero{color:var(--muted2);border-left-color:var(--line)}
.dp-filters{margin-bottom:10px}
.dp-list{display:grid;gap:8px}
.dp-item{display:grid;grid-template-columns:64px 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-left-width:6px;border-radius:8px;padding:8px 12px;background:#fff}
.dp-days{text-align:center;line-height:1.05}
.dp-days b{display:block;font-size:24px}
.dp-days span{font-size:10.5px;font-weight:700;text-transform:uppercase}
.dp-title{font-weight:700}
.dp-act{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.dp-chip{display:inline-block;border-radius:20px;padding:2px 9px;font-size:11.5px;font-weight:700;white-space:nowrap}
.dp-missing{margin-top:10px;color:var(--warn)}
.dp-D30{border-left-color:#eab308} .dp-chip.dp-D30{background:#fef3c7;color:#854d0e} .dp-count.dp-D30 b{color:#854d0e} .dp-item.dp-D30{background:#fffdf2} .dp-item.dp-D30 .dp-days{color:#854d0e}
.dp-D20{border-left-color:#f59e0b} .dp-chip.dp-D20{background:#ffedd5;color:#9a3412} .dp-item.dp-D20{background:#fff8f0} .dp-item.dp-D20 .dp-days{color:#b45309}
.dp-D15{border-left-color:#ea580c} .dp-chip.dp-D15{background:#ea580c;color:#fff} .dp-count.dp-D15 b{color:#c2410c} .dp-item.dp-D15{background:#fff3ea} .dp-item.dp-D15 .dp-days{color:#c2410c}
.dp-D10{border-left-color:#dc2626} .dp-chip.dp-D10{background:#fee2e2;color:#b91c1c} .dp-item.dp-D10{background:#fff1f1} .dp-item.dp-D10 .dp-days{color:#b91c1c}
.dp-VENCIDO{border-left-color:#991b1b} .dp-chip.dp-VENCIDO{background:#b91c1c;color:#fff} .dp-count.dp-VENCIDO b{color:#b91c1c} .dp-item.dp-VENCIDO{background:#fde4e4;border-color:#f3b4b4;border-left-color:#991b1b} .dp-item.dp-VENCIDO .dp-days{color:#991b1b}
@media (max-width:700px){.dp-item{grid-template-columns:52px 1fr}.dp-act{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center}.dp-counts{grid-template-columns:1fr 1fr}}
