:root{
  --bg:#f3f5f9;--card:#fff;--ink:#17202e;--mut:#64708a;--line:#e3e8f0;
  --pri:#1d4ed8;--pri-d:#1e3fae;--pri-l:#e8efff;
  --red:#dc2626;--red-l:#fee2e2;--amb:#d97706;--amb-l:#fef3c7;--grn:#16a34a;--grn-l:#dcfce7;--blu-l:#dbeafe;--gry-l:#eef1f6;
  --r:12px;--sh:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
h1{font-size:1.5rem;margin:0}h2{font-size:1.1rem;margin:0 0 .75rem}h3{margin:0 0 .5rem;font-size:1rem}
a{color:var(--pri)}
button,input,select,textarea{font:inherit;color:inherit}
.hide{display:none!important}

/* layout */
.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.side{background:#0f1b3d;color:#cbd5f0;padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px;color:#fff;font-weight:700;line-height:1.15}
.brand small{display:block;font-weight:400;color:#93a3cf;font-size:.74rem}
.logo{width:38px;height:38px;border-radius:10px;background:var(--pri);display:grid;place-items:center;flex:none}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;color:#cbd5f0;text-decoration:none;font-weight:500}
.nav a:hover{background:rgba(255,255,255,.07)}
.nav a.on{background:var(--pri);color:#fff}
.nav .badge{margin-left:auto}
.nav-sep{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#6f7fae;padding:14px 12px 4px}
.side .me{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:12px 8px 0;font-size:.85rem}
.side .me b{color:#fff;display:block}
.side .me button{margin-top:8px;background:none;border:1px solid rgba(255,255,255,.2);color:#cbd5f0;border-radius:8px;padding:6px 10px;cursor:pointer;width:100%}
.side .me button:hover{background:rgba(255,255,255,.08)}
.main{padding:24px 28px 60px;min-width:0}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.top .sp{flex:1}
.btn.menu-btn{display:none}

/* componentes */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:18px;border:1px solid var(--line)}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;cursor:pointer;font-weight:600;display:inline-flex;gap:6px;align-items:center;text-decoration:none;color:var(--ink)}
.btn:hover{background:var(--gry-l)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}.btn.pri:hover{background:var(--pri-d)}
.btn.dng{color:var(--red);border-color:#fecaca}.btn.dng:hover{background:var(--red-l)}
.btn.sm{padding:4px 10px;font-size:.85rem}
.btn:disabled{opacity:.55;cursor:not-allowed}
.stat{cursor:pointer;transition:transform .12s;text-decoration:none;color:inherit;display:block;border-left:5px solid var(--line)}
.stat:hover{transform:translateY(-2px)}
.stat .n{font-size:2rem;font-weight:800;line-height:1.1}
.stat .l{color:var(--mut);font-size:.88rem}
.stat.red{border-left-color:var(--red)}.stat.red .n{color:var(--red)}
.stat.amb{border-left-color:var(--amb)}.stat.amb .n{color:var(--amb)}
.stat.blu{border-left-color:var(--pri)}.stat.blu .n{color:var(--pri)}
.stat.grn{border-left-color:var(--grn)}.stat.grn .n{color:var(--grn)}
.badge{display:inline-block;border-radius:999px;padding:2px 9px;font-size:.78rem;font-weight:700;white-space:nowrap}
.b-red{background:var(--red-l);color:#991b1b}.b-amb{background:var(--amb-l);color:#92400e}.b-grn{background:var(--grn-l);color:#166534}
.b-blu{background:var(--blu-l);color:#1e40af}.b-gry{background:var(--gry-l);color:#475467}
.nav .badge{background:var(--red);color:#fff}
.alert-banner{display:flex;gap:12px;align-items:center;background:var(--red-l);border:1px solid #fecaca;color:#7f1d1d;border-radius:var(--r);padding:12px 16px;margin-bottom:16px}
.alert-banner.amb{background:var(--amb-l);border-color:#fde68a;color:#78350f}
.alert-banner a{margin-left:auto;font-weight:700}

/* tabela */
.tbl-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);padding:8px 10px;border-bottom:2px solid var(--line);white-space:nowrap}
td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr.row{cursor:pointer}tbody tr.row:hover{background:#f8faff}
tr.s-vencido td:first-child{box-shadow:inset 4px 0 var(--red)}
tr.s-hoje td:first-child{box-shadow:inset 4px 0 var(--amb)}
tr.s-proximo td:first-child{box-shadow:inset 4px 0 #f59e0b80}
td .sub{color:var(--mut);font-size:.82rem}
.num{font-weight:700;white-space:nowrap}
.empty{text-align:center;color:var(--mut);padding:36px 10px}

/* formulários */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filters>*{flex:0 1 auto}
input,select,textarea{border:1px solid #cdd5e3;border-radius:9px;padding:9px 11px;background:#fff;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #93b4ff;border-color:var(--pri)}
.filters input[type=search]{min-width:240px;flex:1}.filters select{width:auto}
label{display:block;font-weight:600;font-size:.86rem;margin-bottom:4px}
label .req{color:var(--red)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.form .full{grid-column:1/-1}
.hint{color:var(--mut);font-size:.8rem;margin-top:3px}
textarea{min-height:100px;resize:vertical}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 13px;cursor:pointer;font-weight:600;font-size:.85rem}
.chip.on{background:var(--pri);color:#fff;border-color:var(--pri)}

/* detalhes */
.det{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 12px}
.kv dt{color:var(--mut);font-weight:600;font-size:.85rem}.kv dd{margin:0}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{position:relative;padding:0 0 16px 22px;border-left:2px solid var(--line);margin-left:6px}
.timeline li::before{content:"";position:absolute;left:-7px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--pri);border:2px solid #fff}
.timeline li.status::before{background:var(--grn)}.timeline li.alteracao::before{background:var(--amb)}
.timeline .who{font-size:.8rem;color:var(--mut)}
.deadline{border-radius:var(--r);padding:14px 16px;font-weight:700;display:flex;gap:10px;align-items:center;margin-bottom:14px}
.deadline.vencido{background:var(--red-l);color:#991b1b}.deadline.hoje{background:var(--amb-l);color:#92400e}
.deadline.proximo{background:var(--amb-l);color:#92400e}.deadline.no_prazo{background:var(--grn-l);color:#166534}
.deadline.sem_prazo,.deadline.encerrado{background:var(--gry-l);color:#475467}

/* barras */
.bars .row{display:grid;grid-template-columns:minmax(90px,170px) 1fr 38px;gap:10px;align-items:center;margin:7px 0;font-size:.9rem}
.bars .bar{height:12px;background:var(--gry-l);border-radius:99px;overflow:hidden}
.bars .bar i{display:block;height:100%;background:var(--pri);border-radius:99px}
.bars .row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bars .row b{text-align:right}

/* modal / toast */
.overlay{position:fixed;inset:0;background:rgba(15,27,61,.5);display:grid;place-items:center;padding:16px;z-index:50}
.modal{background:#fff;border-radius:14px;max-width:560px;width:100%;max-height:92vh;overflow:auto;padding:22px;box-shadow:0 20px 50px rgba(0,0,0,.3)}
.modal .acts{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
#toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:60}
.toast{background:#17202e;color:#fff;border-radius:10px;padding:11px 16px;box-shadow:var(--sh);max-width:360px}
.toast.err{background:#b91c1c}
.err-msg{background:var(--red-l);color:#991b1b;border-radius:9px;padding:9px 12px;margin-bottom:12px;font-size:.9rem}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(135deg,#0f1b3d,#1d4ed8)}
.login .card{width:100%;max-width:400px;padding:30px}
.login .logo{margin:0 auto 12px;width:56px;height:56px}
.login h1{text-align:center;font-size:1.3rem}.login p.s{text-align:center;color:var(--mut);margin:4px 0 20px}
.login .f{margin-bottom:14px}

@media(max-width:860px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:260px;z-index:40;transform:translateX(-105%);transition:transform .2s}
  .side.open{transform:none}
  .btn.menu-btn{display:inline-flex}
  .main{padding:16px 14px 60px}
  .det{grid-template-columns:1fr}
  .kv{grid-template-columns:100px 1fr}
}
@media print{
  .side,.top .btn,.filters,.menu-btn,#toasts{display:none!important}
  .shell{display:block}body{background:#fff}.card{box-shadow:none}
}
@media(max-width:560px){
  .g4{grid-template-columns:1fr 1fr}
  .stat .n{font-size:1.6rem}.stat{padding:12px}
  .g2{grid-template-columns:1fr}
  .top .btn.pri{order:3}
}

/* ===== Agenda: calendário e componentes próprios (usa as variáveis do tema base) ===== */
.nav .badge.zero{display:none}
.cal-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.cal-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cal-title{margin:0 0 0 6px;font-size:1.25rem}.cal-title::first-letter,.lista-dia h3::first-letter{text-transform:uppercase}
.cal-bar .sp{flex:1}
.views{display:flex;gap:6px;margin:0}
.leg{display:flex;gap:6px 14px;flex-wrap:wrap;font-size:.8rem;color:var(--mut);margin:2px 0 12px}
.leg i{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--c);margin-right:5px;vertical-align:-1px}
.filters label.chk{display:flex;align-items:center;gap:6px;margin:0;font-weight:600;align-self:center;white-space:nowrap}
.filters label.chk input{width:auto}
.cal-wrap{padding:0;overflow:hidden}

/* chips de compromisso */
.chip-ev{--c:#1d4ed8;display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--c);background:#eef1f6;background:color-mix(in srgb,var(--c) 14%,#fff);color:var(--ink);border-radius:5px;padding:2px 6px;margin:2px 0;cursor:pointer;font-size:.78rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-ev:hover{background:color-mix(in srgb,var(--c) 26%,#fff)}
.chip-ev .hr{font-weight:700;margin-right:4px}
.chip-ev.canc{opacity:.55;text-decoration:line-through}
.chip-ev.dia{background:var(--c);color:#fff}
.chip-ev.dia:hover{background:var(--c);filter:brightness(1.08)}
.chip-ev.pend{border-left-style:dashed}

/* visão mensal */
.mes{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.mes-cab{padding:8px 6px;text-align:center;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);background:#f8faff;border-bottom:1px solid var(--line)}
.mes-dia{min-height:112px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 5px;min-width:0;position:relative}
.mes-dia:nth-child(7n){border-right:0}
.mes-dia.fora{background:#fafbfd}.mes-dia.fora .num{color:#9aa5bb}
.mes-dia.fer{background:#fff8f1}
.mes-topo{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.mes-dia .num{border:0;background:none;cursor:pointer;font-weight:700;width:26px;height:26px;border-radius:50%;font-size:.85rem}
.mes-dia .num:hover{background:var(--pri-l)}
.mes-dia.hoje .num{background:var(--pri);color:#fff}
.mes-dia .mais{border:0;background:none;color:var(--mut);cursor:pointer;font-size:1rem;opacity:0;border-radius:6px;width:22px;height:22px;padding:0}
.mes-dia:hover .mais{opacity:1}.mes-dia .mais:hover{background:var(--gry-l)}
.fer-nome{font-size:.7rem;color:#b45309;font-weight:600;line-height:1.2;margin-bottom:2px}
.ver-mais{border:0;background:none;color:var(--pri);font-weight:700;font-size:.76rem;cursor:pointer;padding:1px 4px}

/* visão semanal / diária */
.sem{--hh:50px;overflow-x:auto}
.sem-in{min-width:640px}
.sem-head,.sem-all,.sem-corpo{display:grid;grid-template-columns:54px repeat(var(--cols),minmax(0,1fr))}
.sem-head{background:#f8faff;border-bottom:1px solid var(--line)}
.sem-head .d{padding:8px 4px;text-align:center;border-left:1px solid var(--line);cursor:pointer}
.sem-head .d small{display:block;color:var(--mut);font-weight:700;text-transform:uppercase;font-size:.7rem}
.sem-head .d b{font-size:1.15rem;display:inline-block;min-width:34px;height:34px;line-height:34px;border-radius:50%}
.sem-head .d.hoje b{background:var(--pri);color:#fff}
.sem-head .d.fer small{color:#b45309}
.sem-head .d .fn{display:block;font-size:.65rem;color:#b45309;font-weight:600;line-height:1.1}
.sem-all{border-bottom:1px solid var(--line);min-height:30px}
.sem-all .g,.sem-corpo .g{font-size:.68rem;color:var(--mut);padding:4px 6px;text-align:right}
.sem-all .c{border-left:1px solid var(--line);padding:2px 3px;min-width:0}
.sem-corpo{position:relative}
.sem-corpo .horas{position:relative}
.sem-corpo .horas span{position:absolute;right:6px;transform:translateY(-50%);font-size:.68rem;color:var(--mut)}
.sem-corpo .col{position:relative;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hh) - 1px),var(--line) calc(var(--hh) - 1px),var(--line) var(--hh));cursor:cell}
.sem-corpo .col.hoje{background-color:#f5f8ff}
.sem-corpo .col.fer{background-color:#fff8f1}
.ev-bloco{--c:#1d4ed8;position:absolute;border:0;border-left:3px solid var(--c);background:#eef1f6;background:color-mix(in srgb,var(--c) 16%,#fff);color:var(--ink);border-radius:6px;padding:2px 5px;font-size:.74rem;line-height:1.25;text-align:left;overflow:hidden;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.12)}
.ev-bloco:hover{z-index:5;background:color-mix(in srgb,var(--c) 28%,#fff)}
.ev-bloco b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-bloco.canc{opacity:.55;text-decoration:line-through}
.ev-bloco.pend{border-left-style:dashed}
.agora{position:absolute;left:0;right:0;height:2px;background:var(--red);z-index:4;pointer-events:none}
.agora::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--red)}

/* lista */
.lista-dia{padding:10px 16px;border-bottom:1px solid var(--line)}
.lista-dia:last-child{border-bottom:0}
.lista-dia h3{margin:0 0 6px;font-size:.95rem}
.lista-dia h3 small{color:var(--mut);font-weight:500;text-transform:none}
.lista-dia.hoje h3{color:var(--pri)}
.lin-ev{--c:#1d4ed8;display:flex;gap:12px;align-items:center;width:100%;text-align:left;border:0;background:none;border-left:4px solid var(--c);padding:8px 10px;margin:3px 0;border-radius:6px;cursor:pointer}
.lin-ev:hover{background:#f8faff}
.lin-ev .t{min-width:96px;font-weight:700;font-size:.85rem}
.lin-ev .x{flex:1;min-width:0}.lin-ev .x b{display:block}.lin-ev .x span{color:var(--mut);font-size:.82rem}
.lin-ev.canc{opacity:.55}.lin-ev.canc b{text-decoration:line-through}

/* detalhe do compromisso */
.modal.largo{max-width:700px}
.ev-topo{--c:#1d4ed8;border-left:6px solid var(--c);padding:2px 0 2px 14px;margin-bottom:14px}
.ev-topo .cat{color:var(--c);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
.ev-topo h2{margin:2px 0 8px;font-size:1.3rem}
.ev-acoes{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.ev-acoes select{width:auto;padding:6px 10px}
.pessoas{display:flex;flex-direction:column;gap:4px}
.pessoas div{display:flex;gap:8px;align-items:center}
.lista-part{max-height:170px;overflow:auto;border:1px solid #cdd5e3;border-radius:9px;padding:6px 10px}
.lista-part label{display:flex;gap:8px;align-items:center;font-weight:500;margin:0;padding:4px 0}
.lista-part input{width:auto}
.conflito{background:var(--amb-l);color:#78350f;border-radius:9px;padding:10px 14px;margin:10px 0;font-size:.9rem}
.conflito ul{margin:6px 0 0;padding-left:18px}

/* tarefas e contatos */
.tarefa{display:flex;gap:12px;align-items:flex-start;padding:12px 6px;border-bottom:1px solid var(--line)}
.tarefa:last-child{border-bottom:0}
.tarefa input[type=checkbox]{width:20px;height:20px;margin-top:2px;flex:none;cursor:pointer;accent-color:var(--pri)}
.tarefa .x{flex:1;min-width:0}.tarefa .x b{display:block}
.tarefa.feita .x b{text-decoration:line-through;color:var(--mut)}
.tarefa .sub{color:var(--mut);font-size:.82rem}
.cor-lin{display:flex;gap:8px;margin-bottom:8px;align-items:center}
.cor-lin input[type=color]{width:46px;height:38px;padding:2px;flex:none}
.painel-col{display:grid;gap:14px}
.mini{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);cursor:pointer;--c:#1d4ed8}
.mini:last-child{border-bottom:0}
.mini .bar{width:4px;align-self:stretch;border-radius:4px;background:var(--c);flex:none}
.mini .t{min-width:58px;font-weight:700;font-size:.85rem}.mini .x{flex:1;min-width:0}.mini .x span{color:var(--mut);font-size:.8rem;display:block}
.mini:hover{background:#f8faff}

@media(max-width:860px){
  .mes-dia{min-height:78px;padding:2px}
  .mes-dia .chip-ev{font-size:.66rem;padding:1px 3px}.mes-dia .chip-ev .hr{display:none}
  .fer-nome{display:none}
  .lin-ev .t{min-width:70px}
}
@media(max-width:560px){
  .leg{display:none}
  .filters select{flex:1 1 44%;min-width:0}
  .top .btn:not(.pri):not(.menu-btn){display:none}
  .mes-dia{min-height:64px}.mes-dia .chip-ev:nth-of-type(n+2){display:none}
  .cal-title{font-size:1.05rem}
}
@media print{
  .cal-bar .btn,.views,.filters,.leg,.ev-acoes{display:none!important}
  .sem{overflow:visible}.mes-dia{min-height:90px}
}
