*{box-sizing:border-box;margin:0;padding:0}
/* ── DESIGN SYSTEM v1.0 — tokens oficiais (docs/design-system.md) ──
   Referência: Área do Dentista + PDF de Conferência. Os nomes legados
   (--b, --acl, --acm…) são mantidos apontando para os valores oficiais. */
:root{
  --ac:#8a45af;--ac2:#79369f;--acl:#f3e9fb;--acm:#e0d3ee;
  --bg:#f4eff9;--s:#fff;--s2:#f7f3fb;
  --b:#ece2f5;--b2:#e0d3ee;--hairline:#f3edf9;
  --t:#1b1226;--t2:#4b3f5c;--t3:#6a5f7a;--faint:#a091b3;
  --red:#c0392b;--redbg:#fceeed;
  --green:#127245;--greenbg:#e7f5ec;
  --warn:#8a5600;--warnbg:#fbf1e0;
  --blue:#1a56db;--bluebg:#e8f0fe; /* DEPRECIADO — remover na migração por página */
  --font:'Figtree',ui-sans-serif,system-ui,sans-serif;
  --disp:'Bricolage Grotesque',sans-serif;
  --r:11px;--rl:20px;--rxl:24px;
  --hero-g:linear-gradient(142deg,#9a53c4,#7130a0);
  --nav-g:linear-gradient(180deg,#8a45af,#5c2680);
  --sh:0 1px 2px rgba(24,16,40,.04),0 6px 20px rgba(24,16,40,.05);
  --shh:0 2px 8px rgba(24,16,40,.07),0 18px 44px rgba(24,16,40,.12);
  --btn-sh:0 6px 16px rgba(138,69,175,.34);
  --ease:cubic-bezier(.22,1,.36,1);
  --sw:232px;--th:64px;
}
html,body{font-family:var(--font);background:var(--bg);color:var(--t);font-size:14px;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* TOPBAR — translúcida com blur; a logo mora na sidebar */
.topbar{position:fixed;top:0;left:var(--sw);right:0;height:var(--th);background:rgba(255,255,255,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--b);padding:0 24px;display:flex;align-items:center;justify-content:space-between;z-index:100}
.logo-area{display:flex;align-items:center;gap:12px}
.logo-area img{height:46px;width:auto;object-fit:contain;flex-shrink:0}
.logo-div{width:1.5px;height:34px;background:var(--b2);flex-shrink:0}
.logo-sub{font-size:14px;font-weight:700;color:var(--t);letter-spacing:-.2px;white-space:nowrap}
.period-sel{background:var(--acl);border:1.5px solid var(--acm);border-radius:8px;padding:6px 12px;font-size:12px;color:var(--ac);font-family:var(--font);font-weight:700;cursor:pointer;outline:none;max-width:140px}
.usr-menu{position:relative}
.usr-btn{display:flex;align-items:center;gap:8px;padding:6px 14px 6px 6px;border:1px solid var(--b);border-radius:99px;background:var(--s);font-family:var(--font);font-size:12.5px;font-weight:700;color:var(--t2);cursor:pointer;transition:all .2s;white-space:nowrap;user-select:none}
.usr-av{width:28px;height:28px;border-radius:50%;background:var(--acl);color:var(--ac2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0}
.usr-btn:hover,.usr-menu:hover .usr-btn{color:var(--ac);border-color:var(--acm);background:var(--acl)}
.usr-btn-active{color:var(--ac)!important;border-color:var(--acm)!important;background:var(--acl)!important}
.usr-chev{transition:transform .2s;flex-shrink:0}
.usr-menu:hover .usr-chev{transform:rotate(180deg)}
.usr-drop{position:absolute;top:calc(100% + 8px);right:0;min-width:170px;background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);box-shadow:var(--shh);padding:6px;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .18s,transform .18s,visibility .18s;z-index:999}
.usr-drop::before{content:'';position:absolute;top:-8px;left:0;right:0;height:8px}
.usr-menu:hover .usr-drop{opacity:1;visibility:visible;transform:translateY(0)}
.usr-drop-item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--t2);text-decoration:none;transition:all .15s}
.usr-drop-item:hover{background:var(--acl);color:var(--ac)}
.usr-drop-active{color:var(--ac)!important}
.usr-drop-sair:hover{background:var(--redbg)!important;color:var(--red)!important}
.usr-drop-sep{height:1px;background:var(--b);margin:4px 0}
.ham{display:none;flex-direction:column;gap:4px;cursor:pointer;padding:6px;border-radius:8px;border:none;background:transparent}
.ham span{width:20px;height:2px;background:var(--t2);border-radius:2px;transition:all .3s}
.ham.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.ham.open span:nth-child(2){opacity:0;transform:scaleX(0)}
.ham.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* SIDEBAR — roxo da marca (gradiente oficial de navegação) */
.sov{display:none;position:fixed;inset:0;background:rgba(26,19,37,.4);z-index:105;opacity:0;transition:opacity .3s}
.sov.open{display:block;opacity:1}
/* Sidebar sobe até o topo (top:0), acima da topbar na coluna esquerda */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sw);background:var(--nav-g);padding:18px 14px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;z-index:110;transition:transform .3s}
.sb-brand{display:flex;align-items:center;gap:11px;padding:2px 8px 16px;border-bottom:1px solid rgba(255,255,255,.16);margin-bottom:12px}
.sb-brand img{height:40px;width:auto;object-fit:contain}
.nlabel{font-size:9.5px;color:rgba(255,255,255,.55);letter-spacing:1.4px;text-transform:uppercase;padding:0 10px;margin:14px 0 6px;font-weight:700}
.nlabel:first-child{margin-top:4px}
.nitem{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:11px;cursor:pointer;color:rgba(255,255,255,.85);font-size:13px;font-weight:600;transition:.15s var(--ease);text-decoration:none;position:relative}
.nitem:hover{color:#fff;background:rgba(255,255,255,.12)}
.nitem svg{width:15px;height:15px;flex-shrink:0;opacity:.75;transition:transform .2s}
.nitem:hover svg{transform:scale(1.1);opacity:1}
.nitem.active{color:#fff;background:rgba(255,255,255,.2);font-weight:700;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.nitem.active svg{opacity:1}

/* MAIN */
.main{margin-left:var(--sw);margin-top:var(--th);padding:26px 28px;background:var(--bg);min-height:calc(100vh - var(--th));animation:fadeUp .35s cubic-bezier(.22,1,.36,1)}
.ph{margin-bottom:20px}.pt{font-family:var(--disp);font-size:22px;font-weight:700;color:var(--t);margin-bottom:2px;letter-spacing:-.4px}.ps{font-size:12.5px;color:var(--t3);font-weight:500}

/* METRICS */
.mrow{display:grid;gap:12px;margin-bottom:18px}
.m5{grid-template-columns:repeat(5,1fr)}.m4{grid-template-columns:repeat(4,1fr)}.m3{grid-template-columns:repeat(3,1fr)}.m2{grid-template-columns:repeat(2,1fr)}
.mc{background:var(--s);border:none;border-radius:var(--rl);padding:16px 18px;position:relative;overflow:hidden;box-shadow:var(--sh);transition:transform .2s,box-shadow .2s}
.mc:hover{transform:translateY(-3px);box-shadow:var(--shh)}
.mc::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:4px;border-radius:0 0 var(--rl) var(--rl)}
/* Lucide icons */
i[data-lucide]{display:inline-flex;align-items:center;vertical-align:middle;flex-shrink:0}
i[data-lucide] svg{width:1em;height:1em}
.mc.mp::after{background:var(--ac)}.mc.mr::after{background:var(--red)}.mc.mg::after{background:var(--green)}.mc.mw::after{background:var(--warn)}.mc.mb::after{background:var(--blue)}
.ml{font-size:11.5px;color:var(--t3);font-weight:700;margin-bottom:7px}
.mv{font-size:18px;font-weight:800;color:var(--t);line-height:1}
.ms{font-size:11px;color:var(--t3);margin-top:4px;font-weight:600}

/* CARDS */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.card{background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);padding:18px 20px;box-shadow:var(--sh);margin-bottom:14px;transition:box-shadow .2s}
.card:hover{box-shadow:var(--shh)}
.ctitle{font-size:13px;font-weight:700;color:var(--t2);margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.leg{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:9px}
.li{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--t2);font-weight:700}
.ld{width:8px;height:8px;border-radius:2px;flex-shrink:0}

/* TABLE */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:400px}
th{text-align:left;padding:8px 9px;font-size:11.5px;font-weight:600;color:var(--t3);border-bottom:1.5px solid var(--b);white-space:nowrap}
td{padding:9px;border-bottom:1px solid var(--b);color:var(--t);font-weight:600;transition:background .15s}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--acl)}
.tf td{font-weight:800;font-size:13px;padding-top:11px;border-top:1.5px solid var(--b2);border-bottom:none!important;background:var(--s2)}
/* Badges legados — reskinados como .pill do DS (radius 7); migrar para .pill */
.bdg{display:inline-flex;align-items:center;gap:4px;padding:2.5px 8px;border-radius:7px;font-size:10.5px;font-weight:700;white-space:nowrap}
.bok{background:var(--greenbg);color:var(--green)}
.bwarn{background:var(--warnbg);color:var(--warn)}
.bdan{background:var(--redbg);color:var(--red)}
.bblue{background:var(--bluebg);color:var(--blue)} /* reservado à identidade CoDental */
.bpur{background:var(--acl);color:var(--ac2)}
.bgry{background:var(--s2);color:var(--t3)}
.bblu{background:var(--acl);color:var(--ac2)}
.pbar{height:4px;border-radius:2px;background:var(--b);overflow:hidden;margin-top:4px}
.pfil{height:4px;border-radius:2px;width:0;transition:width 1s cubic-bezier(.22,1,.36,1)}

/* FORM — Design System §6 (label visível, focus ring roxo, erro junto ao campo) */
.fg{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:13px;margin-bottom:14px}
.fgp{display:flex;flex-direction:column;gap:6px}
.fgp label{font-size:12px;color:var(--t2);font-weight:700}
.fgp input,.fgp select,.fgp textarea{background:var(--s2);border:1.5px solid var(--b2);border-radius:11px;padding:11px 12px;color:var(--t);font-size:14px;font-family:var(--font);font-weight:600;outline:none;transition:border .15s,box-shadow .15s;width:100%}
.fgp input:focus,.fgp select:focus,.fgp textarea:focus{border-color:var(--ac);box-shadow:0 0 0 3.5px rgba(138,69,175,.18)}
.fgp input::placeholder{color:var(--t3);font-weight:500}
.fsec{margin-bottom:22px}
.fst{font-family:var(--disp);font-size:14px;font-weight:700;color:var(--t);letter-spacing:-.2px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--b);display:flex;align-items:center;gap:8px}
.fst svg{width:14px;height:14px;color:var(--ac);flex-shrink:0}
.colh{display:grid;gap:7px;margin-bottom:7px}
.colh span{font-size:10px;color:var(--t3);font-weight:700;letter-spacing:.5px;text-transform:uppercase}
.btn{padding:9px 20px;border-radius:var(--r);cursor:pointer;font-size:13px;font-weight:700;font-family:var(--font);transition:all .2s;border:none}
.btnp{background:var(--ac);color:#fff;box-shadow:0 2px 8px rgba(138,69,175,.25)}
.btnp:hover{background:var(--ac2);box-shadow:0 5px 16px rgba(138,69,175,.35);transform:translateY(-2px)}
.btns{padding:5px 12px;font-size:12px}
.btnadd{background:transparent;border:1.5px dashed var(--b2);color:var(--t3);border-radius:var(--r);padding:7px 14px;cursor:pointer;font-size:12px;font-family:var(--font);font-weight:700;transition:all .2s;margin-bottom:14px;display:inline-flex;align-items:center;gap:5px}
.btnadd:hover{border-color:var(--ac);color:var(--ac);background:var(--acl)}
.btnrm{background:var(--redbg);border:none;color:var(--red);border-radius:9px;width:30px;height:30px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .2s;font-family:var(--font);flex-shrink:0}
.btnrm:hover{background:var(--red);color:#fff}
.ok{background:var(--greenbg);border:1.5px solid #a3d9bc;color:var(--green);padding:10px 14px;border-radius:var(--r);font-size:13px;margin-bottom:12px;display:none;font-weight:700}

/* ALERT CARDS */
.arow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.prog{height:5px;border-radius:3px;background:rgba(0,0,0,.1);overflow:hidden;margin-top:8px}
.progf{height:5px;border-radius:3px;transition:width 1s cubic-bezier(.22,1,.36,1)}

/* DENT CARDS */
.dcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-bottom:18px}
.dcard{background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);padding:18px 16px 16px;box-shadow:var(--sh);transition:transform .2s,box-shadow .2s}
.dcard:hover{transform:translateY(-4px);box-shadow:var(--shh)}
.dch{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.dav{width:38px;height:38px;border-radius:50%;background:var(--acl);border:2px solid var(--acm);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;color:var(--ac);flex-shrink:0}
.dst{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.dstc{background:var(--s2);border-radius:8px;padding:8px 10px;border:1px solid var(--b)}
.dstl{font-size:9.5px;color:var(--t3);font-weight:700;letter-spacing:.5px;text-transform:uppercase;margin-bottom:3px}
.dstv{font-size:14px;font-weight:800;color:var(--t)}
.prgb{height:5px;border-radius:3px;background:var(--b);overflow:hidden;margin-top:6px}
.prgf{height:5px;border-radius:3px;transition:width 1s cubic-bezier(.22,1,.36,1)}

/* DENT VIEW HEADER */
.dvh{background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);padding:16px 18px;margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--sh);flex-wrap:wrap;gap:10px}
.dvhl{display:flex;align-items:center;gap:12px}
.dvav{width:46px;height:46px;border-radius:50%;background:var(--acl);border:2px solid var(--acm);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:900;color:var(--ac);flex-shrink:0}
.dvn{font-size:16px;font-weight:900;color:var(--t)}
.dve{font-size:12px;color:var(--t3);font-weight:600;margin-top:2px}
.dvmes{background:var(--acl);border:1.5px solid var(--acm);border-radius:8px;padding:5px 13px;font-size:12px;color:var(--ac);font-weight:700}

/* TABS — chips do Design System v1.0 */
.tabs{display:flex;gap:8px;flex-wrap:wrap;padding:0 0 16px;margin-bottom:20px}
.tbtn{height:38px;padding:0 16px;border-radius:10px;border:1px solid var(--b);background:var(--s);color:var(--t2);font-size:12.5px;font-weight:700;cursor:pointer;font-family:var(--font);transition:.15s;white-space:nowrap;box-shadow:var(--sh)}
.tbtn:hover:not(.active){border-color:var(--b2)}
.tbtn.active{background:var(--ac);color:#fff;border-color:var(--ac)}
.tc{display:none;opacity:0;transform:translateY(6px);transition:opacity .22s ease,transform .22s ease}.tc.active{display:block;opacity:1;transform:translateY(0)}

/* LINK BOX */

/* LINK CARDS — 2026 redesign */
.llink-list{display:grid;gap:12px}
.llink-card{background:var(--s);border:1.5px solid var(--b);border-left:4px solid var(--acm);border-radius:var(--rl);padding:16px 18px;box-shadow:var(--sh);transition:box-shadow .18s}
.llink-card:hover{box-shadow:var(--shh)}
.llink-head{display:flex;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.llink-info{flex:1;min-width:0}
.llink-url{display:flex;align-items:center;gap:8px;background:var(--s2);border:1.5px solid var(--b);border-radius:var(--r);padding:9px 12px;cursor:pointer;transition:border-color .2s,background .2s}
.llink-url:hover{border-color:var(--ac);background:var(--acl)}
.llink-url-text{flex:1;font-size:11.5px;font-family:monospace;color:var(--t2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;transition:color .2s}
.llink-btns{display:flex;gap:8px;flex-shrink:0}
.btn-wpp{background:#25d366;color:#fff;border-radius:99px;font-size:13px;font-weight:700;font-family:var(--font);text-decoration:none;padding:9px 16px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px rgba(37,211,102,.25)}
.btn-wpp:hover{background:#1ebe5d;box-shadow:0 5px 16px rgba(37,211,102,.4);transform:translateY(-1px)}
@media(max-width:560px){.llink-btns{width:100%;margin-left:62px}.llink-btns .btn,.llink-btns .bpill,.llink-btns .btn-wpp{flex:1;justify-content:center}}

/* ── MODERN BUTTON SYSTEM ─────────────────────────────────── */
.bpill{display:inline-flex;align-items:center;gap:6px;padding:9px 20px;border-radius:99px;font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;border:none;transition:all .2s;white-space:nowrap;text-decoration:none;vertical-align:middle}
.bpill-sm{padding:7px 16px!important;font-size:12.5px!important}
.bpill-xs{padding:5px 12px!important;font-size:11.5px!important}
.bpill-ac{background:var(--ac);color:#fff;box-shadow:0 2px 8px rgba(138,69,175,.25)}
.bpill-ac:hover{box-shadow:0 5px 16px rgba(138,69,175,.4);transform:translateY(-1px)}
.bpill-green{background:#1a7a4a;color:#fff;box-shadow:0 2px 8px rgba(26,122,74,.2)}
.bpill-green:hover{background:#158040;box-shadow:0 5px 16px rgba(26,122,74,.35);transform:translateY(-1px)}
.bpill-red{background:#dc2626;color:#fff;box-shadow:0 2px 8px rgba(220,38,38,.2)}
.bpill-red:hover{background:#c01f1f;box-shadow:0 5px 16px rgba(220,38,38,.35);transform:translateY(-1px)}
.bpill-blue{background:#1a56db;color:#fff;box-shadow:0 2px 8px rgba(26,86,219,.2)}
.bpill-blue:hover{background:#1547c0;box-shadow:0 5px 16px rgba(26,86,219,.35);transform:translateY(-1px)}
.bpill-ghost{background:var(--s2);color:var(--t2);border:1.5px solid var(--b)}
.bpill-ghost:hover{background:var(--b);color:var(--t)}
.bpill-outline-ac{background:var(--acl);color:var(--ac);border:1.5px solid var(--acm)}
.bpill-outline-ac:hover{background:var(--ac);color:#fff;box-shadow:0 4px 12px rgba(138,69,175,.3)}
.bpill-outline-warn{background:var(--warnbg);color:var(--warn);border:1.5px solid #f5c58a}
.bpill-outline-warn:hover{background:var(--warn);color:#fff;box-shadow:0 4px 12px rgba(234,88,12,.3)}
.bicon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;flex-shrink:0;border:1.5px solid transparent}
.bicon-green{background:#dcfce7;border-color:#86efac;color:#15803d}
.bicon-green:hover{background:#15803d;border-color:#15803d;color:#fff;box-shadow:0 3px 10px rgba(21,128,61,.3);transform:scale(1.12)}
.bicon-red{background:#fee2e2;border-color:#fca5a5;color:#dc2626}
.bicon-red:hover{background:#dc2626;border-color:#dc2626;color:#fff;box-shadow:0 3px 10px rgba(220,38,38,.3);transform:scale(1.12)}
.bicon-blue{background:#eef3ff;border-color:#b8cef8;color:#1a56db}
.bicon-blue:hover{background:#1a56db;border-color:#1a56db;color:#fff;box-shadow:0 3px 10px rgba(26,86,219,.3);transform:scale(1.12)}
.bicon-ghost{background:var(--s2);border-color:var(--b);color:var(--t2)}
.bicon-ghost:hover:not(:disabled){background:var(--acl);border-color:var(--acm);color:var(--ac);box-shadow:0 3px 10px rgba(138,69,175,.18);transform:scale(1.08)}
.bicon:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* DENT CFG CARDS */
.dent-cfg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-top:4px}
.dent-card{background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);box-shadow:var(--sh);padding:20px 16px 14px;transition:box-shadow .2s,transform .2s}
.dent-card:hover{box-shadow:0 6px 24px rgba(138,69,175,.13);transform:translateY(-2px)}
@media(max-width:540px){.dent-cfg-grid{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.dent-cfg-grid{grid-template-columns:1fr}}

/* VALUES */
.vg{color:var(--green);font-weight:700}.vr{color:var(--red);font-weight:700}.vp{color:var(--ac);font-weight:700}.vw{color:var(--warn);font-weight:700}

.fscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.empty{text-align:center;padding:2.5rem;color:var(--t3);font-size:14px;font-weight:700}

/* DENTISTA PAGE (sem sidebar) */
.dentista-page .main{margin-left:0}
.dentista-page .topbar{justify-content:center;left:0}
.dentista-page .sidebar,.dentista-page .sov,.dentista-page .ham,.dentista-page #gmes{display:none!important}

/* LOADING */
.loading{text-align:center;padding:3rem;color:var(--t3);font-weight:700;font-size:13px}
.loading::after{content:'...';animation:dots 1.2s infinite}
@keyframes dots{0%,20%{content:''}40%{content:'.'}60%{content:'..'}80%,100%{content:'...'}}

/* SKELETON */
@keyframes shimmer{0%{background-position:-600px 0}100%{background-position:600px 0}}
.skel{border-radius:6px;background:linear-gradient(90deg,var(--b) 25%,var(--s2) 50%,var(--b) 75%);background-size:600px 100%;animation:shimmer 1.4s infinite linear}
.skel-mc{height:90px;border-radius:var(--rl);margin-bottom:0}
.skel-row{height:14px;margin-bottom:8px}
.skel-row:last-child{margin-bottom:0;width:60%}
.skel-card{background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);padding:18px 20px;box-shadow:var(--sh);margin-bottom:14px}

/* CUSTOM TOOLTIP — renderizado via JS (#js-tip) no main.js para evitar clip de overflow */
[data-tip]{cursor:help}

/* RESPONSIVE */
@media(max-width:860px){
  .ham{display:flex}
  .topbar{left:0}
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0}
  .m5{grid-template-columns:repeat(2,1fr)}
  .m4{grid-template-columns:repeat(2,1fr)}
  .g2{grid-template-columns:1fr}
  .arow{grid-template-columns:1fr}
}
@media(max-width:540px){
  .m5,.m4,.m3{grid-template-columns:1fr 1fr}
  .m2{grid-template-columns:1fr}
  .logo-sub{display:none}
}

/* ── VISÃO GERAL — ranking dentistas ──────────────────── */
.vis-rank-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--b)}
.vis-rank-row:last-child{border-bottom:none;padding-bottom:0}
.vis-rank-bar-wrap{flex:1;height:6px;background:var(--b);border-radius:3px;overflow:hidden;min-width:50px}
.vis-rank-bar{height:6px;border-radius:3px;width:0;transition:width .9s cubic-bezier(.22,1,.36,1)}

/* ── CONFERÊNCIA ─────────────────────────────────────── */
/* Tabela-extrato: são centenas de linhas por mês, então cada linha ocupa uma
   altura só. O status vira um trilho colorido na borda esquerda em vez de um
   fundo lavado célula a célula — a 7% de opacidade sobre 15 colunas nenhuma
   cor se destacava; a 100% sobre 3px a exceção salta. */
.conf-tb{font-size:12.5px}
.conf-tb th{padding:7px 6px;font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--faint)}
.conf-tb td{padding:5px 6px;line-height:1.35;vertical-align:middle;white-space:nowrap}
.conf-tb .num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.conf-tb tbody td:first-child{border-left:3px solid transparent}
.conf-tb tr[data-st="pendente"] td:first-child{border-left-color:var(--warn)}
.conf-tb tr[data-st="aprovado"] td:first-child{border-left-color:var(--green)}
.conf-tb tr[data-st="rejeitado"] td:first-child{border-left-color:var(--red)}
.conf-tb tr[data-st="so_codental"] td:first-child{border-left-color:var(--blue)}
.conf-tb tr[data-st="so_codental"] td{color:var(--t3)}
/* Motivo da rejeição em uma linha só — o texto completo fica no title. */
.conf-motivo{display:inline-block;max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:-2px;font-size:10.5px;font-weight:600;color:var(--red)}
/* Nome do paciente com teto — nowrap sem teto deixaria a grade largar com nomes compostos. */
.conf-pac{max-width:150px;overflow:hidden;text-overflow:ellipsis}
/* Diferença CoDental, entre parênteses ao lado do valor */
.conf-dif{font-size:10.5px;font-weight:700}
/* Chip do drill-down de procedimentos — contagem visível, rótulo no title */
.conf-proc{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:7px;border:1px solid var(--b2);background:var(--s2);color:var(--t3);font-size:10px;font-weight:800;font-family:var(--font);cursor:pointer;vertical-align:-1px;transition:background .15s,color .15s,border-color .15s}
.conf-proc:hover{background:var(--acl);color:var(--ac);border-color:var(--acm)}
.conf-proc:focus-visible{outline:2px solid var(--ac);outline-offset:1px}
/* Status pode quebrar linha quando há selos — é a válvula de escape que
   permite à grade caber na tela sem scroll horizontal. */
.conf-tb td.conf-st{white-space:normal;min-width:104px;line-height:1.6}

/* Cluster de ações — uma linha, ícone só. Cinza em repouso para não pintar
   285 linhas de verde e vermelho; ganha cor no hover e nos toggles ativos. */
.conf-ac{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.conf-ac-sep{width:1px;height:16px;background:var(--b2);margin:0 4px;flex-shrink:0}
.conf-ic{width:24px;height:24px;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--faint);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}
.conf-ic:hover{background:var(--s2);color:var(--t2)}
.conf-ic:focus-visible{outline:2px solid var(--ac);outline-offset:1px;color:var(--t2)}
.conf-ic--ok:hover{background:var(--greenbg);color:var(--green);border-color:#b7e0c6}
.conf-ic--no:hover{background:var(--redbg);color:var(--red);border-color:#f0c6c1}
.conf-ic--warn:hover{background:var(--warnbg);color:var(--warn);border-color:#e8d3ac}
.conf-ic[aria-pressed="true"]{background:var(--warnbg);color:var(--warn);border-color:#e8d3ac}
.conf-ic--no[aria-pressed="true"]{background:var(--redbg);color:var(--red);border-color:#f0c6c1}
.conf-ic--on{background:var(--acl);color:var(--ac2);border-color:var(--acm)}

.conf-card-header{position:sticky;top:0;z-index:10;background:var(--s);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1.5px solid var(--b);padding:14px 18px;margin:-18px -20px 14px}
.prot-body{overflow:hidden;max-height:0;transition:max-height .35s cubic-bezier(.22,1,.36,1)}
.prot-body.open{max-height:1200px}

/* ── Faixa de reconciliação (KPIs da Conferência) ─────────
   Os quatro números são partes de um todo, então a barra segmentada é a
   informação, não enfeite: um olhar diz quanto do mês bate. */
.recon{background:var(--s);border-radius:var(--rl);box-shadow:var(--sh);padding:14px 18px 4px}
.recon-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:9px}
.recon-t{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--t3)}
.recon-n{font-size:11.5px;font-weight:700;color:var(--faint);font-variant-numeric:tabular-nums}
.recon-bar{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--b);gap:2px}
.recon-seg{transition:flex-grow .5s var(--ease)}
.recon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-top:2px}
.recon-cell{display:flex;align-items:center;gap:10px;padding:12px 10px;border-radius:12px;background:transparent;border:none;font-family:var(--font);text-align:left;cursor:pointer;transition:background .15s}
.recon-cell:hover{background:var(--s2)}
.recon-cell:focus-visible{outline:2px solid var(--ac);outline-offset:-2px}
.recon-cell[aria-pressed="true"]{background:var(--acl)}
.recon-ic{width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.recon-v{font-size:20px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.recon-l{font-size:10.5px;font-weight:700;color:var(--t3);margin-top:3px;white-space:nowrap}
@media(max-width:720px){.recon-grid{grid-template-columns:1fr 1fr}}

/* ── FECHAMENTO CARDS ────────────────────────────────── */
.fech-list{display:grid;gap:12px;margin-top:4px}
.fech-card{display:grid;grid-template-columns:auto 1fr repeat(3,auto);align-items:center;gap:12px 20px;background:var(--s);border:1.5px solid var(--b);border-left:4px solid var(--acm);border-radius:var(--rl);padding:16px 20px;box-shadow:var(--sh)}
.fech-stat{text-align:right}
.fech-stat-label{font-size:10.5px;color:var(--t3);font-weight:600;margin-bottom:2px}
.fech-stat-val{font-size:16px;font-weight:800}
.fech-total-strip{display:flex;justify-content:flex-end;gap:24px;background:var(--s2);border:1.5px solid var(--b);border-radius:var(--rl);padding:14px 20px;margin-top:8px;flex-wrap:wrap}
@media(max-width:640px){.fech-card{grid-template-columns:auto 1fr}.fech-stat{grid-column:span 1}}

/* ── CONFIGURAÇÕES ───────────────────────────────────── */
.cfg-dent-list{display:grid;gap:10px}
.cfg-dent-row{display:flex;align-items:center;gap:14px;background:var(--s);border:1.5px solid var(--b);border-left:4px solid var(--acm);border-radius:var(--rl);padding:14px 16px;box-shadow:var(--sh);transition:box-shadow .22s,transform .22s}
.cfg-dent-row:hover{box-shadow:0 6px 24px rgba(138,69,175,.13);transform:translateY(-2px)}
.cfg-dent-del{opacity:0;transition:opacity .15s,background .18s,border-color .18s,color .18s,transform .18s}
.cfg-dent-row:hover .cfg-dent-del{opacity:1}
@media(hover:none){.cfg-dent-del{opacity:1}}

/* Period lock pills */
.period-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:10px;margin-top:4px}
.period-pill{display:flex;flex-direction:column;align-items:center;gap:5px;padding:16px 12px;border-radius:var(--rl);border:1.5px solid;cursor:pointer;transition:all .18s;font-family:var(--font);user-select:none;background:none}
.period-pill.open{background:var(--greenbg);border-color:#a3d9bc;color:var(--green)}
.period-pill.open:hover{background:#d0f0e3;border-color:var(--green);transform:translateY(-2px)}
.period-pill.locked{background:var(--warnbg);border-color:#f5c58a;color:var(--warn)}
.period-pill.locked:hover{background:#fde8c5;border-color:var(--warn);transform:translateY(-2px)}


/* ── NOTIFICATIONS ─────────────────────────────────────── */
.notif-wrap{position:relative}

/* Bell button */
.notif-btn{position:relative;width:38px;height:38px;border:1.5px solid var(--b);border-radius:9px;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t2);transition:all .2s;flex-shrink:0}
.notif-btn:hover{color:var(--ac);border-color:var(--acm);background:var(--acl)}
.notif-btn.has-unread{color:var(--ac);border-color:transparent;background:var(--acl);box-shadow:0 0 0 2px var(--acm),0 0 0 5px rgba(138,69,175,.18),0 0 12px 3px rgba(138,69,175,.12);animation:notif-bell-glow 2.8s ease-in-out infinite}
@keyframes notif-bell-glow{0%,100%{box-shadow:0 0 0 2px var(--acm),0 0 0 5px rgba(138,69,175,.18),0 0 12px 3px rgba(138,69,175,.12)}50%{box-shadow:0 0 0 2px var(--acm),0 0 0 8px rgba(138,69,175,.10),0 0 20px 6px rgba(138,69,175,.08)}}

/* Badge */
.notif-badge{position:absolute;top:-7px;right:-7px;min-width:20px;height:20px;background:var(--red);color:#fff;font-size:10px;font-weight:800;border-radius:99px;display:flex;align-items:center;justify-content:center;padding:0 5px;font-family:var(--font);border:2.5px solid var(--s);animation:notif-badge-pulse 2.4s ease-in-out infinite}
@keyframes notif-badge-pulse{0%,100%{box-shadow:0 0 0 0 rgba(192,57,43,.55);transform:scale(1)}50%{box-shadow:0 0 0 6px rgba(192,57,43,0);transform:scale(1.08)}}

/* Dropdown panel */
.notif-drop{position:fixed;top:calc(var(--th,60px) + 10px);right:20px;width:420px;max-height:560px;background:rgba(255,255,255,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1.5px solid var(--b);border-radius:16px;box-shadow:0 20px 60px rgba(138,69,175,.20),0 4px 20px rgba(0,0,0,.08);overflow:hidden;display:flex;flex-direction:column;z-index:1100;opacity:0;visibility:hidden;transform:translateY(-10px) scale(.96);transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1),visibility .22s;transform-origin:top right}
.notif-drop.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}

/* Header — gradient strip */
.notif-drop-head{height:52px;padding:0 16px;background:linear-gradient(110deg,var(--ac) 0%,var(--ac2) 100%);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px}
.notif-drop-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:#fff;letter-spacing:-.1px}
.notif-drop-title svg{opacity:.9}
.notif-head-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.notif-head-count{min-width:22px;height:22px;background:rgba(255,255,255,.25);color:#fff;font-size:11px;font-weight:800;border-radius:99px;display:flex;align-items:center;justify-content:center;padding:0 6px}
.notif-mark-all{font-size:11.5px;font-weight:700;color:rgba(255,255,255,.6);cursor:pointer;border:none;background:none;font-family:var(--font);padding:4px 0;transition:color .15s;white-space:nowrap}
.notif-mark-all:hover{color:#fff}

/* Category pills */
.notif-pills-row{display:flex;gap:6px;padding:10px 12px;border-bottom:1.5px solid var(--b);overflow-x:auto;flex-shrink:0;scrollbar-width:none;background:var(--s)}
.notif-pills-row::-webkit-scrollbar{display:none}
.notif-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 13px;border-radius:99px;font-size:12px;font-weight:700;font-family:var(--font);cursor:pointer;border:1.5px solid var(--b);background:var(--s2);color:var(--t2);white-space:nowrap;transition:all .15s;flex-shrink:0}
.notif-pill:hover{border-color:var(--acm);color:var(--ac);background:var(--acl)}
.notif-pill.active{background:var(--ac);color:#fff;border-color:var(--ac);box-shadow:0 2px 8px rgba(138,69,175,.28)}
.notif-pill-urgente.active{background:var(--red);border-color:var(--red);box-shadow:0 2px 8px rgba(192,57,43,.28)}
.notif-pill-sistema.active{background:var(--green);border-color:var(--green);box-shadow:0 2px 8px rgba(26,122,74,.22)}
.notif-pill-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.notif-pill-urgente .notif-pill-dot{background:var(--red)}
.notif-pill-producao .notif-pill-dot{background:var(--ac)}
.notif-pill-sistema .notif-pill-dot{background:var(--green)}
.notif-pill.active .notif-pill-dot{background:rgba(255,255,255,.7)}

/* Body */
.notif-body{overflow-y:auto;flex:1;padding:10px 10px 12px;scrollbar-width:thin;scrollbar-color:var(--b2) transparent;background:var(--s2)}
.notif-body::-webkit-scrollbar{width:4px}
.notif-body::-webkit-scrollbar-thumb{background:var(--b2);border-radius:4px}

/* Notification item — card style */
.notif-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:var(--rl);border:1.5px solid var(--b);border-left:4px solid var(--b2);background:var(--s);margin-bottom:8px;position:relative;transition:box-shadow .15s,transform .15s;animation:notif-item-in .28s cubic-bezier(.22,1,.36,1) both}
.notif-item:last-child{margin-bottom:0}
.notif-item:hover{box-shadow:0 4px 14px rgba(138,69,175,.10);transform:translateY(-1px)}
.notif-item.cat-urgente{border-left-color:var(--red);background:var(--redbg);box-shadow:0 2px 10px rgba(192,57,43,.08)}
.notif-item.cat-urgente:hover{box-shadow:0 5px 18px rgba(192,57,43,.16)}
.notif-item.cat-producao{border-left-color:var(--ac)}
.notif-item.cat-sistema{border-left-color:var(--green)}

/* Unread dot — top right corner */
.notif-item.unread::after{content:'';position:absolute;top:12px;right:12px;width:7px;height:7px;background:var(--ac);border-radius:50%;border:1.5px solid var(--s)}
.notif-item.cat-urgente.unread::after{background:var(--red)}

/* Staggered entrance */
@keyframes notif-item-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.notif-item:nth-child(1){animation-delay:0ms}
.notif-item:nth-child(2){animation-delay:35ms}
.notif-item:nth-child(3){animation-delay:70ms}
.notif-item:nth-child(4){animation-delay:105ms}
.notif-item:nth-child(5){animation-delay:140ms}
.notif-item:nth-child(6){animation-delay:175ms}
.notif-item:nth-child(7){animation-delay:210ms}
.notif-item:nth-child(8){animation-delay:210ms}

/* Icon circle */
.notif-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.notif-icon.urgente{background:rgba(192,57,43,.12);color:var(--red)}
.notif-icon.producao{background:var(--acl);color:var(--ac)}
.notif-icon.sistema{background:var(--greenbg);color:var(--green)}

/* Text */
.notif-content{flex:1;min-width:0}
.notif-titulo{font-size:13px;font-weight:800;color:var(--t);margin-bottom:3px;line-height:1.3}
.notif-msg{font-size:12px;font-weight:600;color:var(--t2);line-height:1.5;margin-bottom:10px}

/* CTA — full-width pill */
.notif-acao{display:flex;align-items:center;justify-content:center;width:100%;height:28px;border-radius:99px;font-size:11.5px;font-weight:800;font-family:var(--font);text-decoration:none;cursor:pointer;transition:all .15s;background:var(--acl);color:var(--ac);border:1.5px solid var(--acm)}
.notif-acao:hover{background:var(--ac);color:#fff;border-color:var(--ac);box-shadow:0 3px 10px rgba(138,69,175,.3)}
.cat-urgente .notif-acao{background:rgba(192,57,43,.10);color:var(--red);border-color:rgba(192,57,43,.3)}
.cat-urgente .notif-acao:hover{background:var(--red);color:#fff;border-color:var(--red);box-shadow:0 3px 10px rgba(192,57,43,.3)}
.cat-sistema .notif-acao{background:var(--greenbg);color:var(--green);border-color:rgba(26,122,74,.3)}
.cat-sistema .notif-acao:hover{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 3px 10px rgba(26,122,74,.3)}

/* Empty state */
.notif-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 20px 32px;color:var(--t3);text-align:center}
.notif-empty svg{opacity:.18;margin-bottom:14px}
.notif-empty-title{font-size:14px;font-weight:800;color:var(--t2);margin-bottom:5px}
.notif-empty-sub{font-size:12px;font-weight:600;color:var(--t3)}

/* Footer */
.notif-footer{padding:9px 16px;border-top:1.5px solid var(--b);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;background:var(--s)}
.notif-footer-ts{font-size:11px;font-weight:600;color:var(--t3)}
.notif-footer a{font-size:11.5px;color:var(--ac);font-weight:700;text-decoration:none;transition:color .15s}
.notif-footer a:hover{color:var(--ac2);text-decoration:underline}

@media(max-width:460px){.notif-drop{right:8px;left:8px;width:auto}}

/* ── DASHBOARD — seletores customizados de mês/ano ─── */
.dsel-wrap{position:relative}
.dsel-btn{display:flex;align-items:center;gap:7px;padding:9px 15px;border:1.5px solid var(--b);border-radius:9px;background:var(--s);font-family:var(--font);font-size:14px;font-weight:700;color:var(--t);cursor:pointer;transition:all .18s;white-space:nowrap;box-shadow:var(--sh);user-select:none}
.dsel-btn:hover,.dsel-btn.open{color:var(--ac);border-color:var(--acm);background:var(--acl)}
.dsel-chev{transition:transform .18s;flex-shrink:0;color:var(--t3)}
.dsel-btn.open .dsel-chev{transform:rotate(180deg)}
.dsel-drop{position:absolute;top:calc(100% + 6px);right:0;min-width:165px;background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);box-shadow:var(--shh);padding:5px;z-index:500;opacity:0;visibility:hidden;transform:translateY(-6px) scale(.97);transition:opacity .18s,transform .18s,visibility .18s;transform-origin:top right;max-height:260px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--b2) transparent}
.dsel-drop.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.dsel-drop::-webkit-scrollbar{width:4px}
.dsel-drop::-webkit-scrollbar-thumb{background:var(--b2);border-radius:4px}
.dsel-opt{display:block;width:100%;padding:9px 13px;border:none;background:none;font-family:var(--font);font-size:13.5px;font-weight:600;color:var(--t2);text-align:left;cursor:pointer;border-radius:8px;transition:all .12s}
.dsel-opt:hover{background:var(--acl);color:var(--ac)}
.dsel-opt.active{background:var(--ac);color:#fff;font-weight:800}
.dsel-btn:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.dsel-opt:focus-visible{outline:2px solid var(--ac);outline-offset:-2px}
/* Variante campo de formulário — ocupa a linha inteira do .fgp */
.dsel-wrap--full{width:100%}
/* O botão preenche o wrap: sem isso ele se ajusta ao texto e o controle
   encolhe/estica a cada escolha ("Janeiro" ≠ "Todos os meses"), deixando os
   filtros de tamanhos diferentes. O wrap é quem define a largura. */
.dsel-wrap[data-dsel] .dsel-btn{width:100%;justify-content:space-between}

/* ── CALENDÁRIO compacto (réplica do popup "Data do atendimento" da Área do Dentista) ── */
.cal-wrap{position:relative}
.cal-trig{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:var(--s2);border:1.5px solid var(--b);border-radius:10px;padding:8px 12px;font-family:var(--font);font-size:13px;font-weight:600;color:var(--t);outline:none;cursor:pointer;text-align:left;transition:all .18s}
.cal-trig.empty{color:var(--t3);font-weight:500}
.cal-trig:hover,.cal-trig.open{border-color:var(--ac);box-shadow:0 0 0 3px rgba(138,69,175,.12)}
.cal-trig-chev{flex-shrink:0;color:var(--t3);transition:transform .15s}
.cal-trig.open .cal-trig-chev{transform:rotate(180deg)}
.cal-panel{position:absolute;top:calc(100% + 6px);left:0;width:220px;background:var(--s);border:1.5px solid var(--b);border-radius:var(--rl);box-shadow:var(--shh);padding:7px;z-index:500;opacity:0;visibility:hidden;transform:translateY(-6px) scale(.97);transition:opacity .18s,transform .18s,visibility .18s;transform-origin:top left}
.cal-panel.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;padding:0 1px}
.cal-hd-lbl{font-size:12px;font-weight:700;color:var(--t);text-transform:capitalize}
.cal-nav{width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:var(--t2);display:flex;align-items:center;justify-content:center;transition:.15s;flex-shrink:0;cursor:pointer}
.cal-nav:hover:not(:disabled){background:var(--s2);color:var(--t)}
.cal-nav:disabled{opacity:.3;cursor:not-allowed}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:1px}
.cal-dow span{display:block;text-align:center;font-size:9px;font-weight:800;color:var(--t3);text-transform:uppercase;padding:1px 0}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.cal-day{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:7px;border:none;background:transparent;font-size:11px;font-weight:600;color:var(--t2);transition:.12s;cursor:pointer;font-family:var(--font)}
.cal-day:hover:not(:disabled):not(.cal-day--sel){background:var(--s2)}
.cal-day--empty{visibility:hidden}
.cal-day--today{box-shadow:inset 0 0 0 1.5px var(--ac)}
.cal-day--sel{background:var(--ac);color:#fff;font-weight:700}
.cal-day--disabled{color:var(--t3);opacity:.35;cursor:not-allowed}
.cal-today{width:100%;margin-top:5px;height:26px;border-radius:7px;border:1px solid var(--b);background:var(--s2);color:var(--ac);font-size:11px;font-weight:700;transition:.15s;cursor:pointer;font-family:var(--font)}
.cal-today:hover{background:var(--acl)}
.cal-clear{width:100%;margin-top:4px;height:24px;border-radius:7px;border:none;background:transparent;color:var(--t3);font-size:10.5px;font-weight:700;transition:.15s;cursor:pointer;font-family:var(--font)}
.cal-clear:hover{color:var(--red)}

@keyframes modal-in{from{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}

/* ── Flatpickr — tema DentalWay ── */
input.flatpickr-input:not(.flatpickr-alt-input){display:none!important;visibility:hidden!important}
.flatpickr-calendar{font-family:var(--font)!important;border-radius:var(--rl)!important;box-shadow:0 8px 32px rgba(138,69,175,.18)!important;border:1.5px solid var(--b)!important;overflow:hidden!important;background:var(--s)!important}
.flatpickr-months{background:var(--ac)!important}
.flatpickr-months *{color:#fff!important;background:transparent!important;font-family:var(--font)!important}
.flatpickr-months svg,.flatpickr-months svg path{fill:#fff!important}
.flatpickr-prev-month,.flatpickr-next-month{color:#fff!important;fill:#fff!important;padding:8px!important}
.flatpickr-prev-month:hover svg,.flatpickr-next-month:hover svg{fill:#fff!important}
.flatpickr-current-month{font-size:14px!important;font-weight:800!important;font-family:var(--font)!important;color:#fff!important}
.flatpickr-monthDropdown-months{-webkit-appearance:none!important;appearance:none!important;background:transparent!important;border:none!important;outline:none!important;color:#fff!important;font-family:var(--font)!important;font-weight:800!important;font-size:14px!important;cursor:default!important;pointer-events:none!important;padding:0!important;margin:0!important}
.numInputWrapper .arrowUp,.numInputWrapper .arrowDown{display:none!important}
.numInputWrapper{width:auto!important}
.numInput.cur-year{-webkit-appearance:none!important;font-family:var(--font)!important;font-weight:800!important;font-size:14px!important;color:#fff!important;background:transparent!important;border:none!important;outline:none!important;padding:0 2px!important;width:52px!important;pointer-events:none!important}
.numInput.cur-year::-webkit-inner-spin-button,.numInput.cur-year::-webkit-outer-spin-button{-webkit-appearance:none!important;display:none!important}
.flatpickr-weekdays{background:var(--s)!important;border-bottom:1px solid var(--b)!important}
span.flatpickr-weekday{color:var(--ac)!important;font-weight:800!important;background:transparent!important;font-family:var(--font)!important;font-size:11px!important}
.flatpickr-days{background:var(--s)!important}
.flatpickr-day{border-radius:8px!important;font-weight:700!important;color:var(--t)!important;font-family:var(--font)!important;transition:all .15s!important;font-size:13px!important}
.flatpickr-day:hover{background:var(--acl)!important;border-color:transparent!important;color:var(--ac)!important}
.flatpickr-day.today{border-color:var(--acm)!important;color:var(--ac)!important;font-weight:900!important}
.flatpickr-day.today:hover{background:var(--acl)!important}
.flatpickr-day.selected,.flatpickr-day.selected:hover{background:var(--ac)!important;border-color:var(--ac)!important;color:#fff!important;font-weight:900!important;box-shadow:0 2px 8px rgba(138,69,175,.35)!important}
.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{color:var(--t3)!important;background:transparent!important;opacity:.4!important}

/* ══ DESIGN SYSTEM v1.0 — componentes do Dashboard (Opção B aprovada) ══ */

/* Faixa de KPIs */
.kstrip{display:grid;grid-template-columns:1.35fr 1fr 1fr 1fr 1fr;gap:12px;margin-bottom:16px}
.kpi{background:var(--s);border-radius:var(--rl);padding:15px 16px;box-shadow:var(--sh);display:flex;flex-direction:column;justify-content:center}
.kpi-l{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--t3)}
.kpi-v{font-size:19px;font-weight:700;letter-spacing:-.5px;margin-top:8px;line-height:1;font-variant-numeric:tabular-nums}
.kpi-v.red{color:var(--red)}
.kpi-t{font-size:11px;font-weight:700;margin-top:7px;min-height:14px}
.kpi-t.up{color:var(--green)}.kpi-t.down{color:var(--red)}.kpi-t.flat{color:var(--t3)}
.kpi.hero{background:var(--hero-g);color:#fff;box-shadow:var(--shh);position:relative;overflow:hidden}
.kpi.hero::before{content:'';position:absolute;top:-40px;right:-40px;width:130px;height:130px;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 70%);pointer-events:none}
.kpi.hero .kpi-l{color:rgba(255,255,255,.85)}
.kpi.hero .kpi-v{font-family:var(--disp);font-size:26px;letter-spacing:-.8px}
.kpi.hero .kpi-t{color:#c9f5dc}
.kpi.hero .mini-bar{display:flex;height:6px;gap:2px;margin-top:10px;background:rgba(255,255,255,.16);border-radius:99px;overflow:hidden}
.kpi.hero .mini-bar i{border-radius:99px;display:block}

/* Cockpit: coluna principal + trilho */
.cockpit{display:grid;grid-template-columns:1fr 340px;gap:14px;align-items:start;margin-bottom:14px}
.cockpit-l{display:flex;flex-direction:column;gap:14px;min-width:0}
.cockpit-rail{display:flex;flex-direction:column;gap:14px;min-width:0}
.dscard{background:var(--s);border-radius:var(--rl);box-shadow:var(--sh);padding:18px 20px;position:relative;overflow:hidden}
.dscard::before{content:'';position:absolute;top:-40px;right:-40px;width:130px;height:130px;background:radial-gradient(circle,rgba(138,69,175,.07),transparent 70%);pointer-events:none}
.dscard-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.dscard-t{font-family:var(--disp);font-size:14.5px;font-weight:700;letter-spacing:-.2px;color:var(--t)}
.metap{font-size:11px;color:var(--t3);font-weight:700;background:var(--s2);border:1px solid var(--b);border-radius:99px;padding:3px 11px;white-space:nowrap}

/* Cards de meta (trilho) */
.meta-card{border-left:3px solid var(--green)}
.meta-card.mix{border-left-color:var(--ac)}
.meta-card.warn{border-left-color:var(--warn)}
.meta-card.dan{border-left-color:var(--red)}
.meta-v{font-size:16px;font-weight:700;letter-spacing:-.3px;margin-top:2px;font-variant-numeric:tabular-nums}
.meta-prog{height:6px;border-radius:3px;background:var(--s2);overflow:hidden;margin-top:9px;box-shadow:inset 0 0 0 1px var(--hairline)}
.meta-progf{height:100%;border-radius:3px;background:linear-gradient(90deg,#49c586,#127245);width:0;transition:width .9s var(--ease)}
.meta-progf.mix{background:var(--hero-g)}
.meta-progf.warn{background:linear-gradient(90deg,#e3a63f,#8a5600)}
.meta-progf.dan{background:linear-gradient(90deg,#e05a4b,#c0392b)}
.meta-s{font-size:11px;color:var(--t3);font-weight:600;margin-top:6px}

/* Ranking compacto de dentistas */
.rrow{display:flex;align-items:center;gap:10px;padding:9px 0}
.rrow+.rrow{box-shadow:inset 0 1px 0 var(--hairline)}
.rpos{width:20px;font-size:10px;font-weight:800;color:var(--faint);text-align:center;flex-shrink:0}
.rpos.top{color:var(--ac2)}
.rav{width:30px;height:30px;border-radius:50%;background:var(--acl);color:var(--ac2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--b2);overflow:hidden}
.rav img{width:100%;height:100%;object-fit:cover;display:block}
.rmain{flex:1;min-width:0}
.rname{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--t);min-width:0}
.rbar{height:5px;background:var(--s2);border-radius:99px;overflow:hidden;margin-top:4px;box-shadow:inset 0 0 0 1px var(--hairline)}
.rfill{height:100%;border-radius:99px;background:var(--hero-g);width:0;transition:width .8s var(--ease)}
.rv{font-size:12.5px;font-weight:700;flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums;color:var(--t)}
.rv small{display:block;font-size:10px;font-weight:600;color:var(--t3)}
.rwarn{display:inline-flex;align-items:center;gap:3px;font-size:9.5px;font-weight:700;color:var(--warn)}

/* Tabela quiet (DS §7.2) */
.tbl{border:1px solid var(--b);border-radius:14px;overflow:hidden;background:var(--s)}
.tbl table{min-width:0}
.tbl thead th{padding:10px 13px;font-size:9.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--ac2);background:var(--s2);border-bottom:1px solid var(--b);text-align:left;white-space:nowrap}
.tbl thead th.r{text-align:right}
.tbl tbody td{padding:10px 13px;border-bottom:1px solid var(--hairline);color:var(--t2);font-weight:600;vertical-align:middle}
.tbl tbody tr.alt td{background:#faf7fd}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl tbody tr:hover td{background:var(--acl)}
.tbl td.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl td strong{color:var(--t);font-weight:700}
.tbl tfoot td{padding:11px 13px;background:var(--acl);font-weight:800;font-size:12.5px;color:var(--t);border-top:1.5px solid var(--b);border-bottom:none;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl tfoot td.lbl{font-size:9px;text-transform:uppercase;letter-spacing:.9px;color:var(--ac2)}
.tagn{background:var(--s2);color:var(--t2);border-radius:7px;padding:1px 8px;font-size:10.5px;font-weight:700;box-shadow:inset 0 0 0 1px var(--b);white-space:nowrap}
.tagb{background:var(--acl);color:var(--ac2);border-radius:7px;padding:1px 8px;font-size:10.5px;font-weight:700;white-space:nowrap}
.pmini{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end}
.pmini .pb{width:56px;height:5px;background:var(--s2);border-radius:99px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--hairline)}
.pmini .pf{height:100%;border-radius:99px;background:var(--ac);display:block;width:0;transition:width .8s var(--ease)}

/* Donut (Chart.js) — legenda lateral */
.donut-wrap{display:flex;align-items:center;gap:18px}
.donut-plot{position:relative;width:118px;height:118px;flex-shrink:0}
.dleg{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.dli{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--t2)}
.dli i{width:8px;height:8px;border-radius:3px;flex-shrink:0}
.dli b{margin-left:auto;font-weight:700;color:var(--t);font-variant-numeric:tabular-nums}
.dli .dn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

@media(max-width:1080px){.cockpit{grid-template-columns:1fr}.kstrip{grid-template-columns:repeat(2,1fr)}.kpi.hero{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* DS v1.0 — utilitários das páginas Caixa/Histórico */
.kstrip.k3{grid-template-columns:1.35fr 1fr 1fr}
.rise{animation:fadeUp .45s var(--ease) both}
.bdel{background:var(--redbg);color:var(--red);border:none;border-radius:99px;padding:7px 14px;font-size:11.5px;font-weight:700;font-family:var(--font);cursor:pointer;white-space:nowrap;transition:.15s}
.bdel:hover{background:var(--red);color:#fff}
.bdel.icon{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:9px}
@media(max-width:1080px){.kstrip.k3{grid-template-columns:1fr}}

/* DS v1.0 — botão primário compacto oficial (§4) e eyebrow de seção */
.dsbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--ac);color:#fff;border:none;border-radius:10px;height:40px;padding:0 18px;font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;box-shadow:var(--btn-sh);transition:filter .15s,transform .15s}
.dsbtn:hover:not(:disabled){filter:brightness(1.06)}
.dsbtn:active:not(:disabled){transform:scale(.98)}
.dsbtn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
.dsec{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:24px 2px 11px}
.dsec-t{display:flex;align-items:center;gap:9px;font-family:var(--disp);font-size:16px;font-weight:700;color:var(--t);letter-spacing:-.3px}
.dsec-t::before{content:'';width:4px;height:16px;border-radius:99px;background:var(--ac)}

/* DS v1.0 — pills de status, chips de filtro, input/ícone utilitários (Glosas+) */
.kstrip.k4{grid-template-columns:1.35fr 1fr 1fr 1fr}
@media(max-width:1080px){.kstrip.k4{grid-template-columns:1fr 1fr}.kstrip.k4 .kpi.hero{grid-column:1/-1}}
.pill{display:inline-flex;align-items:center;gap:4px;border-radius:7px;padding:2.5px 8px;font-size:10.5px;font-weight:700;white-space:nowrap}
.pill.ok{background:var(--greenbg);color:var(--green)}
.pill.wait{background:var(--warnbg);color:var(--warn)}
.pill.rej{background:var(--redbg);color:var(--red)}
.pill.part{background:var(--acl);color:var(--ac2)}
.chip{border:1px solid var(--b);background:var(--s);color:var(--t2);border-radius:10px;padding:0 14px;height:38px;font-size:12.5px;font-weight:700;white-space:nowrap;cursor:pointer;font-family:var(--font);transition:.15s;display:inline-flex;align-items:center;gap:6px;box-shadow:var(--sh)}
.chip:hover{border-color:var(--b2)}
.chip[aria-pressed="true"]{background:var(--ac);color:#fff;border-color:var(--ac)}
.chip .n{opacity:.6;font-variant-numeric:tabular-nums}
.chip[aria-pressed="true"] .n{opacity:.8}
.dsinput{background:var(--s2);border:1.5px solid var(--b2);border-radius:11px;padding:10px 12px;color:var(--t);font-size:13px;font-family:var(--font);font-weight:600;outline:none;width:100%;transition:border .15s,box-shadow .15s}
.dsinput:focus{border-color:var(--ac);box-shadow:0 0 0 3.5px rgba(138,69,175,.18)}
.dsinput::placeholder{color:var(--t3);font-weight:500}
.dsic{width:34px;height:34px;border-radius:10px;border:1px solid var(--b);background:var(--s);color:var(--t3);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;flex-shrink:0}
.dsic:hover:not(:disabled){color:var(--ac2);border-color:var(--ac)}
.dsic:disabled{opacity:.4;cursor:not-allowed}
.dsic.del{background:var(--redbg);border-color:transparent;color:var(--red)}
.dsic.del:hover{background:var(--red);color:#fff}
.dsbtn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--s2);color:var(--t2);border:1px solid var(--b);border-radius:10px;height:40px;padding:0 18px;font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;transition:.15s}
.dsbtn-ghost:hover:not(:disabled){background:var(--b)}
.dsbtn-ghost:disabled{opacity:.55;cursor:not-allowed}

/* ── Modo privacidade (admin) ── */
/* .mny marca valores em R$ para o modo privacidade; aplicado por vários scripts e componentes do admin. */
.priv-btn{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--b);border-radius:9px;background:var(--s);color:var(--t2);cursor:pointer;transition:all .18s;box-shadow:var(--sh);flex-shrink:0}
.priv-btn:hover{color:var(--ac);border-color:var(--acm);background:var(--acl)}
.priv-btn[aria-pressed="true"]{color:var(--ac);border-color:var(--acm);background:var(--acl)}
.mny{transition:filter .18s ease}
body.priv .mny{filter:blur(.32em);user-select:none}

/* ── Modal Profissional: campos exclusivos de Dentista (esp./CRO/comissão/acesso) ── */
/* Alternado via classList (não via style inline) para não sobrescrever um */
/* display:grid inline no elemento — ver aoTrocarCargo() em producao.js. */
.campo-oculto{display:none!important}

/* ── Card de aniversariantes (dashboard) ── */
.aniv-passou{opacity:.45}
.rname-wrap{display:flex;align-items:center;gap:6px;min-width:0}
.aniv-hoje{display:inline-block;flex-shrink:0;padding:1px 7px;border-radius:20px;background:var(--acl);color:var(--ac2);font-size:9.5px;font-weight:800;vertical-align:middle}
