/* ═══════════════════════════════════════════════════════════════════════
   PAINEL DE CONTROLE CLÍNICO — Estilos Globais
   Extraído automaticamente do monolito index.html
═══════════════════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --g9:#14532d;--g7:#15803d;--g6:#16a34a;--g5:#22c55e;--g1:#dcfce7;--g0:#f0fdf4;
  --r7:#b91c1c;--r6:#dc2626;--r1:#fee2e2;
  --b6:#2563eb;--b5:#3b82f6;--b4:#60a5fa;--b3:#93c5fd;--b1:#dbeafe;--b0:#eff6ff;
  --a8:#92400e;--a6:#d97706;--a5:#f59e0b;--a3:#fcd34d;--a1:#fef3c7;--a0:#fffbeb;
  --w:#ffffff;
  --s9:#0f172a;--s7:#334155;--s5:#64748b;--s4:#94a3b8;--s2:#e2e8f0;--s1:#f1f5f9;--s0:#f8fafc;
  --amb:#b45309;
  --R:14px;--Rs:8px;--Rx:5px;
  --sh:0 2px 14px rgba(0,0,0,.08);--shm:0 6px 26px rgba(0,0,0,.13);
}
html{scroll-behavior:smooth}
body{font-family:'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--s0);color:var(--s9);min-height:100vh;line-height:1.5}

/* ── UNIT BAR ── */
#unitBar{background:var(--g9);border-bottom:2px solid rgba(255,255,255,.08);position:sticky;top:0;z-index:400}
.ubIn{max-width:1440px;margin:0 auto;padding:7px 22px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ubLabel{font-size:.7rem;font-weight:800;color:rgba(255,255,255,.65);text-transform:uppercase;letter-spacing:.09em;white-space:nowrap}
/* ── Unit Dropdown ── */
.unitDrop{position:relative;flex-shrink:0}
.unitDropBtn{display:flex;align-items:center;gap:8px;padding:6px 14px;border-radius:var(--Rs);font-size:.85rem;font-weight:700;cursor:pointer;border:2px solid rgba(255,255,255,.28);background:rgba(255,255,255,.12);color:rgba(255,255,255,.92);transition:all .15s;white-space:nowrap;min-width:200px;justify-content:space-between}
.unitDropBtn:hover,.unitDrop.open .unitDropBtn{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.5);color:var(--w)}
.unitDropArrow{font-size:.7rem;opacity:.75;transition:transform .2s}
.unitDrop.open .unitDropArrow{transform:rotate(180deg)}
.unitDropMenu{display:none;position:absolute;top:calc(100% + 6px);left:0;min-width:220px;background:var(--w);border:1.5px solid var(--s2);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.16);z-index:9999;padding:6px;overflow:hidden}
.unitDrop.open .unitDropMenu{display:block}
.unitDropItem{display:block;width:100%;text-align:left;padding:9px 14px;border:none;background:none;cursor:pointer;font-size:.86rem;font-weight:600;color:var(--s8);border-radius:6px;transition:background .12s;white-space:nowrap}
.unitDropItem:hover{background:var(--s1)}
.unitDropItem.active{background:var(--g1);color:var(--g8);font-weight:800}
.ubSep{width:1px;height:18px;background:rgba(255,255,255,.2);margin:0 2px}
.ubActions{display:flex;gap:6px;margin-left:auto}
.ubBtn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--Rs);
  font-size:.76rem;font-weight:700;cursor:pointer;border:1px solid rgba(255,255,255,.25);
  background:rgba(255,255,255,.1);color:var(--w);transition:background .15s,transform .1s;white-space:nowrap}
.ubBtn:hover{background:rgba(255,255,255,.22)}
.ubBtn:active{transform:scale(.97)}
.ubBtnExp{border-color:rgba(134,239,172,.4);color:#86efac}
.ubBtnExp:hover{background:rgba(134,239,172,.15)}
.ubBtnImp{border-color:rgba(252,165,165,.4);color:#fca5a5}
.ubBtnImp:hover{background:rgba(252,165,165,.15)}

/* ── STORAGE BANNER ── */
#sBanner{display:none;background:#fef08a;border-bottom:2px solid #eab308;color:#713f12;
  padding:9px 20px;font-size:.81rem;font-weight:600;text-align:center}

/* ── HEADER ── */
header{background:linear-gradient(135deg,var(--g9) 0%,var(--g7) 55%,var(--g6) 100%);
  color:var(--w);position:sticky;top:36px;z-index:300;box-shadow:0 3px 20px rgba(0,0,0,.3)}
.hIn{max-width:1440px;margin:0 auto;padding:12px 22px;
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.brand{display:flex;align-items:center;gap:12px}
.bLogo{height:42px;min-width:42px;border-radius:10px;background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:21px;overflow:hidden;padding:3px}
.bLogo img{height:100%;width:auto;object-fit:contain}
.bName{font-size:1.12rem;font-weight:800;letter-spacing:-.3px}
.bSub{font-size:.68rem;opacity:.72;margin-top:1px;text-transform:uppercase;letter-spacing:.06em}
.hR{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.hStamp{font-size:.69rem;opacity:.6}
#saveInd{font-size:.71rem;font-weight:700;padding:3px 9px;border-radius:20px;
  background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);opacity:0;transition:opacity .4s}
#saveInd.on{opacity:1}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 15px;border-radius:var(--Rs);
  font-size:.83rem;font-weight:700;cursor:pointer;border:none;
  transition:filter .15s,transform .1s,box-shadow .15s;white-space:nowrap}
.btn:active{transform:scale(.97)}
.bG{background:var(--g6);color:var(--w)}.bG:hover{filter:brightness(1.12);box-shadow:0 3px 11px rgba(22,163,74,.4)}
.bR{background:var(--r6);color:var(--w)}.bR:hover{filter:brightness(1.1)}
.bGh{background:rgba(255,255,255,.12);color:var(--w);border:1px solid rgba(255,255,255,.25)}.bGh:hover{background:rgba(255,255,255,.2)}
.bSm{padding:5px 11px;font-size:.78rem}
.bDel{background:none;border:none;cursor:pointer;color:var(--s4);padding:3px 6px;border-radius:4px;font-size:.88rem;transition:color .15s,background .15s}
.bDel:hover{color:var(--r6);background:var(--r1)}

/* ── MAIN ── */
main{max-width:1440px;margin:0 auto;padding:22px 18px 70px}
.secL{font-size:.74rem;font-weight:800;color:var(--g7);text-transform:uppercase;letter-spacing:.08em;
  display:flex;align-items:center;gap:8px;margin:30px 0 13px}
.secL::after{content:'';flex:1;height:1px;background:var(--s2)}

/* ── TOP GRID ── */
.topGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.colCard{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden;display:flex;flex-direction:column}
.colCard::before{content:'';display:block;height:4px}
.colCard.leftCard::before{background:linear-gradient(90deg,var(--g9),var(--g6))}
.colCard.rightCard::before{background:linear-gradient(90deg,var(--g6),var(--g5))}
.colHead{padding:14px 18px 0;display:flex;flex-direction:column;gap:4px}
.colHeadRow{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.colBadge{font-size:.64rem;font-weight:800;padding:2px 8px;border-radius:20px;letter-spacing:.05em}
.colBadge.global{background:var(--s1);color:var(--s7)}.colBadge.monthly{background:var(--g1);color:var(--g7)}
.colTitle{font-size:.97rem;font-weight:800;color:var(--g9)}
.colDesc{font-size:.71rem;color:var(--s5);line-height:1.42;margin-top:1px}
.addForm{padding:12px 18px;display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;border-bottom:1px solid var(--s2)}
.afGroup{display:flex;flex-direction:column;gap:3px}
.afGroup.grow{flex:1;min-width:140px}.afGroup.sm{width:110px}
.afLabel{font-size:.7rem;font-weight:700;color:var(--s7)}
.afInp{border:1.5px solid var(--s2);border-radius:var(--Rs);padding:7px 10px;
  font-size:.88rem;color:var(--s9);background:var(--s0);outline:none;width:100%;transition:border-color .2s,box-shadow .2s}
.afInp:focus{border-color:var(--g6);box-shadow:0 0 0 3px rgba(22,163,74,.14)}
.globalTableWrap{max-height:300px;overflow-y:auto}
.gTable{width:100%;border-collapse:collapse;font-size:.8rem}
.gTable thead{position:sticky;top:0;z-index:2}
.gTable th{background:var(--g0);color:var(--g9);font-weight:800;text-align:left;padding:8px 12px;border-bottom:2px solid var(--g1);white-space:nowrap}
.gTable td{padding:7px 12px;border-bottom:1px solid var(--s1);white-space:nowrap}
.gTable tr:hover td{background:var(--g0)}
.gTable .eRow td{text-align:center;color:var(--s4);padding:24px;border-bottom:none}
.lancHead{padding:10px 18px 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--s2)}
.mPick{border:1.5px solid var(--s2);border-radius:var(--Rs);padding:6px 10px;font-size:.86rem;color:var(--s9);background:var(--s0);outline:none;cursor:pointer;transition:border-color .2s,box-shadow .2s}
.mPick:focus{border-color:var(--g6);box-shadow:0 0 0 3px rgba(22,163,74,.14)}
.mNavBtn{background:var(--g1);border:1.5px solid var(--g3);border-radius:var(--Rs);color:var(--g8);font-size:1rem;font-weight:900;padding:4px 10px;cursor:pointer;line-height:1;transition:background .15s}
.mNavBtn:hover{background:var(--g2)}
#mStatus{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:20px;display:none}
#mStatus.saved{display:inline;background:var(--g1);color:var(--g7)}
#mStatus.unsaved{display:inline;background:var(--s1);color:var(--s5)}
.lancList{flex:1;overflow-y:auto;max-height:220px}
.lancRow{display:flex;align-items:center;gap:10px;padding:7px 18px;border-bottom:1px solid var(--s1);transition:background .15s}
.lancRow:hover{background:var(--g0)}
.lancInfo{flex:1;min-width:0}
.lancName{font-size:.83rem;font-weight:700;color:var(--s9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lancPrice{font-size:.69rem;color:var(--s5);margin-top:1px}
.lancQtyWrap{display:flex;align-items:center;gap:5px;flex-shrink:0}
.lancQtyWrap label{font-size:.69rem;color:var(--s5);font-weight:700}
.qtyInp{border:1.5px solid var(--s2);border-radius:var(--Rs);padding:5px 8px;font-size:.88rem;font-weight:700;color:var(--g9);background:var(--w);outline:none;width:70px;text-align:right;transition:border-color .2s,box-shadow .2s}
.qtyInp:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.18)}
.lancUnit{font-size:.69rem;color:var(--s5)}
.lancEmpty{padding:28px 18px;text-align:center;color:var(--s4);font-size:.8rem;line-height:1.6}
.lancFooter{background:var(--g9);color:var(--w);padding:12px 18px;display:flex;flex-direction:column;gap:8px}
.lfRow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lfLabel{font-size:.74rem;font-weight:600;opacity:.85}
.lfVal{font-size:1rem;font-weight:900;letter-spacing:-.3px}
.lfRow.sep{border-top:1px solid rgba(255,255,255,.2);padding-top:8px}
.lfRow .lfVal.highlight{color:#86efac;font-size:1.15rem}
.lfRow .lfVal.red-hl{color:#fca5a5}

/* ── AGENDA ── */
.agWrap{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden}
/* Barra de configuração de horário */
.agConfig{padding:10px 16px;border-bottom:2px solid var(--g1);background:var(--g0);
  display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.agCfgLabel{font-size:.72rem;font-weight:800;color:var(--g7);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.agCfgRow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.agCfgSel{border:1.5px solid var(--g1);border-radius:var(--Rs);padding:4px 10px;
  font-size:.83rem;font-weight:700;color:var(--g9);background:var(--w);outline:none;cursor:pointer}
.agCfgSel:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.agCfgHint{font-size:.69rem;color:var(--s5);font-style:italic}
/* Grade */
.agTableWrap{overflow-x:auto}
.agTable{width:100%;border-collapse:collapse;min-width:580px}
.agTable thead th{background:var(--g9);color:var(--w);padding:9px 10px;font-size:.78rem;font-weight:800;text-align:center;border:1px solid rgba(255,255,255,.1)}
.agTable thead th:first-child{background:var(--g7);text-align:left;padding-left:14px;min-width:72px}
.agTime{padding:7px 14px;font-size:.76rem;font-weight:700;color:var(--s7);background:var(--s0);white-space:nowrap;border:1px solid var(--s2);border-right:2px solid var(--g1)}
/* Células */
.agCell{cursor:pointer;min-height:52px;padding:5px 6px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:1px;transition:filter .15s;border:1px solid var(--s2)}
.agCell:hover{filter:brightness(.92)}
.agEmpty{background:var(--w)}
.agPartial{background:#fef9c3}
.agFull{background:var(--g9)}
.agAllBloq{background:repeating-linear-gradient(45deg,var(--s1) 0,var(--s1) 6px,var(--s2) 6px,var(--s2) 12px)}
.agText{font-size:.66rem;font-weight:700;text-align:center;line-height:1.3;white-space:pre-line}
.agEmpty .agText{color:var(--s4)}
.agPartial .agText{color:#854d0e}
.agFull .agText{color:#86efac}
.agAllBloq .agText{color:var(--s5)}
/* Legenda */
.agLegend{display:flex;gap:14px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--s2);font-size:.69rem;color:var(--s5)}
.agLegend span{display:inline-flex;align-items:center;gap:5px}
.agDot{width:12px;height:12px;border-radius:2px;flex-shrink:0;border:1px solid rgba(0,0,0,.1)}

/* ── MODAL AGENDA ── */
.agBox{max-width:500px !important}
.agMHead{margin-bottom:14px}
.agMHead h3{color:var(--g9);font-size:1.05rem;margin-bottom:3px}
.agMHead p{font-size:.73rem;color:var(--s5);margin:0}
.roomRow{background:var(--s0);border:1.5px solid var(--s2);border-radius:var(--Rs);padding:11px 14px;margin-bottom:9px;transition:opacity .2s}
.roomRow.bloqActive{opacity:.5}
.roomHeader{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:6px}
.roomLabel{font-size:.85rem;font-weight:800;color:var(--g9)}
.bloqLabel{display:flex;align-items:center;gap:6px;font-size:.73rem;font-weight:700;color:var(--r6);cursor:pointer;user-select:none}
.bloqLabel input[type=checkbox]{cursor:pointer;accent-color:var(--r6);width:14px;height:14px}
.roomSel{width:100%;border:1.5px solid var(--s2);border-radius:var(--Rs);padding:7px 10px;
  font-size:.85rem;background:var(--w);color:var(--s9);outline:none;cursor:pointer}
.roomSel:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.roomSel:disabled{background:var(--s1);color:var(--s4);cursor:not-allowed}
/* Campo de profissional (NOVO) */
.roomProfInp{width:100%;border:1.5px solid var(--s2);border-radius:var(--Rs);
  padding:6px 10px;font-size:.82rem;margin-top:7px;background:var(--w);color:var(--s9);outline:none;
  transition:border-color .2s,box-shadow .2s;placeholder-color:var(--s4)}
.roomProfInp:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.12)}
.roomProfInp:disabled{background:var(--s1);color:var(--s4);cursor:not-allowed;border-color:var(--s2)}

/* ── KPI GRID ── */
.kpiGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:18px}
.kC{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s}
.kC:hover{box-shadow:var(--shm);transform:translateY(-2px)}
.kC::before{content:'';display:block;height:4px;background:linear-gradient(90deg,var(--g6),var(--g5))}
.kC.red::before{background:linear-gradient(90deg,var(--r7),var(--r6))}
.kC.mix::before{background:linear-gradient(90deg,var(--g6),var(--r6))}
.cH{padding:14px 16px 0;display:flex;align-items:flex-start;gap:10px}
.cIco{width:38px;height:38px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px}
.cIco.g{background:var(--g1)}.cIco.r{background:var(--r1)}.cIco.m{background:linear-gradient(135deg,var(--g1),var(--r1))}
.cTitle{font-size:.93rem;font-weight:800;color:var(--g9)}
.cDesc{font-size:.7rem;color:var(--s5);margin-top:2px;line-height:1.4}
.cNum{margin-left:auto;width:22px;height:22px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.66rem;font-weight:800;background:var(--g1);color:var(--g7)}
.kC.red .cNum{background:var(--r1);color:var(--r7)}
.cFm{margin:8px 16px;background:var(--s0);border:1px solid var(--s2);border-left:3px solid var(--g5);border-radius:0 var(--Rx) var(--Rx) 0;padding:5px 10px;font-family:'Courier New',monospace;font-size:.73rem;color:var(--g9);line-height:1.6}
.kC.red .cFm{border-left-color:var(--r6)}.kC.mix .cFm{border-left-color:var(--g7)}
.cInps{padding:0 16px;display:flex;flex-direction:column;gap:10px}
.iGrp{display:flex;flex-direction:column;gap:3px}
.iGrp label{font-size:.73rem;font-weight:700;color:var(--s7)}
.iGrp input[type="number"]{border:1.5px solid var(--s2);border-radius:var(--Rs);padding:8px 10px;font-size:.88rem;color:var(--s9);background:var(--w);outline:none;transition:border-color .2s,box-shadow .2s;width:100%}
.iGrp input[type="number"]:focus{border-color:var(--g6);box-shadow:0 0 0 3px rgba(22,163,74,.13)}
.kC.red .iGrp input[type="number"]:focus{border-color:var(--r6);box-shadow:0 0 0 3px rgba(220,38,38,.13)}
.iGrp input[readonly]{background:var(--g0);border-color:var(--g1);color:var(--g7);font-weight:700;cursor:not-allowed}
.autoTag{font-size:.67rem;font-weight:700;color:var(--g7);background:var(--g1);padding:1px 7px;border-radius:20px;margin-left:6px}
.helper{font-size:.69rem;color:var(--s4);line-height:1.4;padding-left:2px}
.lNote{font-size:.69rem;color:var(--g7);font-style:italic;padding:5px 9px;background:var(--g0);border-radius:var(--Rx);border:1px dashed var(--g5)}
.cDiv{height:1px;background:var(--s2);margin:12px 16px 0}
.cRes{padding:10px 16px}
.rG3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.rG3b{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.rIt{display:flex;flex-direction:column;gap:2px}
.rLb{font-size:.65rem;font-weight:700;color:var(--s5);text-transform:uppercase;letter-spacing:.04em}
.rV{font-size:1.6rem;font-weight:900;letter-spacing:-.5px;line-height:1}
.rSub{font-size:.68rem;color:var(--s5)}
.bdg{display:inline-flex;align-items:center;font-size:.68rem;font-weight:800;padding:2px 8px;border-radius:20px;margin-top:4px;width:fit-content}
.bG1{background:var(--g1);color:var(--g7)}.bW1{background:#fef9c3;color:#854d0e}
.bR1{background:var(--r1);color:var(--r7)}.bN1{background:var(--s1);color:var(--s5)}
.cCh{padding:0 12px 14px;flex:1;min-height:140px;position:relative}
.noDt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:.75rem;color:var(--s4)}
.noDt span{font-size:1.75rem;opacity:.3}

/* ── HISTÓRICO ── */
.histWrap{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow-x:auto}
.hTab{width:100%;border-collapse:collapse;font-size:.78rem}
.hTab th{background:var(--g0);color:var(--g9);font-weight:800;text-align:left;padding:9px 12px;border-bottom:2px solid var(--g1);white-space:nowrap}
.hTab td{padding:7px 12px;border-bottom:1px solid var(--s1);white-space:nowrap}
.hTab tr:last-child td{border-bottom:none}
.hTab tr:hover td{background:var(--g0)}
.hERow td{text-align:center;color:var(--s4);padding:28px}

/* ── TOAST & MODAIS ── */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(65px);padding:10px 22px;border-radius:28px;font-size:.84rem;font-weight:700;color:var(--w);box-shadow:0 6px 22px rgba(0,0,0,.27);z-index:999;pointer-events:none;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s;opacity:0;white-space:nowrap;background:var(--g7)}
#toast.on{transform:translateX(-50%) translateY(0);opacity:1}
#toast.err{background:var(--r6)}
.ovl{display:none;position:fixed;inset:0;background:rgba(0,0,0,.44);z-index:500;align-items:center;justify-content:center}
.ovl.open{display:flex}
.mBox{background:var(--w);border-radius:var(--R);padding:28px 24px;max-width:380px;width:92%;box-shadow:0 10px 38px rgba(0,0,0,.26);animation:pop .2s ease;max-height:90vh;overflow-y:auto}
@keyframes pop{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Estado de carregamento global ── */
.loadingState{
  display:flex;align-items:center;justify-content:center;
  gap:12px;padding:48px 20px;color:var(--s5);font-size:.88rem;
}
.loadingState::before{
  content:'';flex-shrink:0;width:22px;height:22px;
  border:3px solid var(--s2);border-top-color:var(--g6);
  border-radius:50%;animation:spin .75s linear infinite;
}
.mBox h3{font-size:1.02rem;color:var(--r7);margin-bottom:9px}
.mBox p{font-size:.84rem;color:var(--s5);line-height:1.55;margin-bottom:20px}
.mActs{display:flex;gap:9px;justify-content:flex-end}

/* ── RESPONSIVE ── */
@media(max-width:900px){
  .topGrid{grid-template-columns:1fr}.kpiGrid{grid-template-columns:1fr}
  .rG3,.rG3b{grid-template-columns:1fr}
  main{padding:14px 12px 54px}
  .addForm{flex-direction:column}.afGroup.sm{width:100%}
  header{top:52px}
}

/* ══ PRINT / PDF ══ */
@media print {
  #unitBar,header,.agFormWrap,.gcWrap,#ovl,#agOvl,#toast,
  .topGrid,.ubActions,#sBanner,#importFile,.gcLegend{display:none!important}
  #printHeader{display:block!important}
  body{background:#fff!important}
  main{padding:8px 0!important;max-width:100%!important}
  .kpiGrid{grid-template-columns:repeat(2,1fr)!important;gap:10px!important}
  .kC{break-inside:avoid;box-shadow:none!important;border:1px solid #e2e8f0!important;page-break-inside:avoid}
  .cCh{display:none!important}
  .histWrap,.compWrap{break-inside:avoid;page-break-inside:avoid}
  .hTab,.compGrid{font-size:.74rem}
  @page{margin:1.5cm;size:A4}
}
#printHeader{display:none;padding:0 0 14px;margin-bottom:10px;border-bottom:3px solid #14532d}
#printHeader h1{font-size:1.25rem;font-weight:900;color:#14532d;margin:0 0 3px}
#printHeader p{font-size:.79rem;color:#64748b;margin:0}

/* ══ COMPARATIVO ENTRE UNIDADES ══ */
.compWrap{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden}
.compLoading{padding:32px;text-align:center;color:var(--s4);font-size:.82rem;font-style:italic}
.compGrid{display:grid;width:100%;border-top:2px solid var(--g1)}
.compUnit{border-right:1px solid var(--s2);padding:16px 20px;border-top:3px solid transparent;transition:background .2s}
.compUnit:last-child{border-right:none}
.compBest{background:linear-gradient(180deg,var(--g0) 0%,var(--w) 70%);border-top:3px solid var(--g5)!important}
.compUnitName{font-size:.75rem;font-weight:800;color:var(--g9);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;padding-bottom:8px;border-bottom:2px solid var(--g1);display:flex;align-items:center;gap:6px}
.compBest .compUnitName{color:var(--g7);border-bottom-color:var(--g5)}
.compRow{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px dashed var(--s1);font-size:.79rem;gap:6px}
.compRow:last-child{border-bottom:none}
.compLabel{color:var(--s5);font-weight:600;flex-shrink:0}
.compVal{font-weight:800;color:var(--s9);text-align:right;display:flex;align-items:center;gap:4px}
.compVal.green{color:var(--g6)}.compVal.red{color:var(--r6)}.compVal.amber{color:var(--amb)}
.compBadge{font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:20px;white-space:nowrap}
.compNoData{padding:20px 0;text-align:center;color:var(--s4);font-size:.76rem;font-style:italic}
@media(max-width:900px){.compGrid{grid-template-columns:1fr 1fr!important}.compUnit{border-bottom:1px solid var(--s2)}}

/* ══ GCAL AGENDA ══ */
.gcWrap{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden}
.gcCtrl{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;background:var(--g0);border-bottom:2px solid var(--g1);flex-wrap:wrap}
.gcCtrlL,.gcCtrlR{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gcCtrlLabel{font-size:.72rem;font-weight:800;color:var(--g7);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.gcSel{border:1.5px solid var(--g1);border-radius:var(--Rs);padding:4px 10px;font-size:.83rem;font-weight:700;color:var(--g9);background:var(--w);outline:none;cursor:pointer}
.gcSel:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.gcFilterBtn{padding:5px 14px;border-radius:20px;font-size:.78rem;font-weight:700;cursor:pointer;border:1.5px solid var(--s2);background:var(--w);color:var(--s5);transition:all .15s}
.gcFilterBtn:hover{border-color:var(--g5);color:var(--g7)}
.gcFilterBtn.active{background:var(--g9);color:var(--w);border-color:var(--g9)}
.gcGridWrap{overflow-x:auto;overflow-y:auto;max-height:540px}
.gcTable{border-collapse:collapse;min-width:700px;width:100%;table-layout:fixed}
.gcTh{background:var(--g9);color:var(--w);padding:9px 6px 6px;font-size:.78rem;font-weight:800;text-align:center;position:sticky;top:0;z-index:10;border-right:1px solid rgba(255,255,255,.1)}
.gcTh:first-child{background:var(--g7);position:sticky;top:0;left:0;z-index:20}
.gcThSub{display:flex;gap:3px;justify-content:center;margin-top:5px}
.gcThSubLabel{font-size:.62rem;padding:1px 7px;border-radius:10px;font-weight:700}
.gcSub1{background:rgba(187,247,208,.3);color:#86efac}.gcSub2{background:rgba(191,219,254,.3);color:#93c5fd}.gcSub3{background:rgba(254,215,170,.3);color:#fdba74}
.gcTimeCell{background:var(--s0);padding:5px 8px 0;font-size:.73rem;font-weight:700;color:var(--s7);white-space:nowrap;border-right:2px solid var(--g1);border-bottom:1px solid var(--s2);vertical-align:top;text-align:center;position:sticky;left:0;z-index:5;width:70px;min-width:70px}
.gcHourRow{height:72px}
.gcDayGroup{border-right:1px solid var(--s2);padding:0}.gcDayGroup:last-child{border-right:none}
.gcDayCellWrap{display:flex;gap:3px;padding:4px;height:72px;border-bottom:1px solid var(--s2)}
.gcSubCell{flex:1;border-radius:6px;cursor:pointer;transition:all .14s;padding:4px 3px;position:relative;display:flex;flex-direction:column;gap:1px;overflow:hidden;min-width:0}
.gcSubFree{background:var(--s0)}.gcSubFree:hover{background:var(--g0);box-shadow:inset 0 0 0 1.5px var(--g5)}
.gcSubOcc1{background:#dcfce7;border:1px solid #86efac}.gcSubOcc2{background:#dbeafe;border:1px solid #93c5fd}.gcSubOcc3{background:#ffedd5;border:1px solid #fdba74}
.gcSubBloq{background:repeating-linear-gradient(45deg,var(--s1) 0,var(--s1) 5px,var(--s2) 5px,var(--s2) 10px)}
.gcSubPlus{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:var(--s3);transition:color .15s;pointer-events:none}
.gcSubFree:hover .gcSubPlus{color:var(--g5)}
.gcEvtProc{font-size:.6rem;font-weight:800;color:var(--s9);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcEvtProf{font-size:.57rem;color:var(--s5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcSingleCell{width:100%;height:72px;border-bottom:1px solid var(--s2);cursor:pointer;padding:7px 10px;transition:all .15s;display:flex;align-items:flex-start;gap:5px}
.gcSF{background:var(--s0)}.gcSF:hover{background:var(--g0);box-shadow:inset 2px 0 0 var(--g5)}
.gcSO1{background:#dcfce7;border-left:3px solid #16a34a}.gcSO2{background:#dbeafe;border-left:3px solid #2563eb}.gcSO3{background:#ffedd5;border-left:3px solid #ea580c}
.gcSBloq{background:repeating-linear-gradient(45deg,var(--s1) 0,var(--s1) 5px,var(--s2) 5px,var(--s2) 10px)}
.gcSFPlus{font-size:1rem;color:var(--s3);line-height:58px;flex-shrink:0}.gcSF:hover .gcSFPlus{color:var(--g5)}
.gcSEvt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.gcSEvtProc{font-size:.78rem;font-weight:800;color:var(--s9);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcSEvtProf{font-size:.7rem;color:var(--s7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcSEvtEsp{font-size:.66rem;color:var(--s5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcLegend{display:flex;gap:14px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--s2);font-size:.7rem;color:var(--s5)}
.gcLegend span{display:inline-flex;align-items:center;gap:5px}
.gcDot{width:13px;height:13px;border-radius:3px;flex-shrink:0;border:1px solid rgba(0,0,0,.08)}
.gcDotFree{background:var(--s0);border-color:var(--s2)}
.gcDotBloq{background:repeating-linear-gradient(45deg,var(--s1) 0,var(--s1) 3px,var(--s2) 3px,var(--s2) 6px)}
.roomProcInp{width:100%;border:1.5px solid var(--s2);border-radius:var(--Rs);padding:7px 10px;font-size:.85rem;background:var(--w);color:var(--s9);outline:none;transition:border-color .2s,box-shadow .2s;margin-bottom:2px}
.roomProcInp:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.roomProcInp:disabled{background:var(--s1);color:var(--s4);cursor:not-allowed;border-color:var(--s2)}
.roomSpecInp{width:100%;border:1.5px solid var(--s2);border-radius:var(--Rs);padding:6px 10px;font-size:.82rem;margin-top:4px;background:var(--w);color:var(--s9);outline:none;transition:border-color .2s,box-shadow .2s}
.roomSpecInp:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.12)}
.roomSpecInp:disabled{background:var(--s1);color:var(--s4);cursor:not-allowed;border-color:var(--s2)}

/* ══ PAINEL DE CADASTRO AGENDA ══ */
.agFormWrap{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden;margin-bottom:10px}
.agFormHeader{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--g0);border-bottom:2px solid var(--g1);gap:8px;flex-wrap:wrap}
.agFormHeaderTitle{font-size:.8rem;font-weight:800;color:var(--g8);text-transform:uppercase;letter-spacing:.07em;display:flex;align-items:center;gap:6px}
.agFormBody{padding:14px 16px 16px}
.agFormGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 14px;align-items:end}
.agFG{display:flex;flex-direction:column;gap:4px}
.agFG label{font-size:.72rem;font-weight:800;color:var(--g7);text-transform:uppercase;letter-spacing:.05em}
.agFInp{width:100%;border:1.5px solid var(--s2);border-radius:var(--Rs);padding:7px 10px;font-size:.85rem;background:var(--w);color:var(--s9);outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}
.agFInp:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.agFSel{width:100%;border:1.5px solid var(--g1);border-radius:var(--Rs);padding:7px 10px;font-size:.85rem;font-weight:600;color:var(--g9);background:var(--w);outline:none;cursor:pointer;box-sizing:border-box}
.agFSel:focus{border-color:var(--g6);box-shadow:0 0 0 2px rgba(22,163,74,.14)}
.agFBtn{align-self:end}
.agFBtn button{width:100%;padding:9px 16px;background:var(--g8);color:var(--w);border:none;border-radius:var(--Rs);font-size:.88rem;font-weight:800;cursor:pointer;transition:background .15s;white-space:nowrap}
.agFBtn button:hover{background:var(--g9)}
.agFClearBtn{padding:6px 14px;background:transparent;color:var(--s5);border:1.5px solid var(--s2);border-radius:var(--Rs);font-size:.75rem;font-weight:700;cursor:pointer;transition:all .15s}
.agFClearBtn:hover{border-color:var(--s4);color:var(--s7)}

/* ══ NAVEGAÇÃO DE MÓDULOS ══ */
#moduleNav{background:var(--w);border-bottom:2px solid var(--s2);position:sticky;top:102px;z-index:350}
.mnIn{max-width:1440px;margin:0 auto;padding:0 22px;display:flex;gap:0;overflow-x:auto}
.mnTab{padding:10px 22px;font-size:.84rem;font-weight:700;cursor:pointer;border:none;
  background:none;color:var(--s5);border-bottom:3px solid transparent;
  transition:all .15s;white-space:nowrap;flex-shrink:0}
.mnTab:hover{color:var(--g7);background:var(--g0)}
.mnTab.active{color:var(--g9);border-bottom-color:var(--g6)}

/* ══ CHAVEAMENTO DE MÓDULOS ══ */
body.mode-gestao #modulePacientes{display:none!important}
body.mode-pacientes .topGrid,body.mode-pacientes .agFormWrap,
body.mode-pacientes .gcWrap,body.mode-pacientes .kpiGrid,
body.mode-pacientes .histWrap,body.mode-pacientes .compWrap{display:none!important}
body.mode-pacientes #modulePacientes{display:block!important}
#modulePacientes{display:none;padding-top:4px}

/* ══ MÓDULO PACIENTES ══ */
.patHeader{display:flex;align-items:flex-start;justify-content:space-between;
  flex-wrap:wrap;gap:12px;margin-bottom:14px}
.patSearchWrap{margin-bottom:14px}
.patSearchInp{width:100%;max-width:520px;padding:10px 16px;border:1.5px solid var(--s2);
  border-radius:var(--Rs);font-size:.9rem;color:var(--s9);background:var(--w);
  outline:none;transition:border-color .2s,box-shadow .2s}
.patSearchInp:focus{border-color:var(--g6);box-shadow:0 0 0 3px rgba(22,163,74,.13)}
.patWrap{display:flex;flex-direction:column;gap:8px;min-height:100px}
.patEmpty{padding:44px;text-align:center;color:var(--s4);font-size:.84rem;line-height:2;
  background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh)}
.patCard{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:14px 18px;display:flex;align-items:center;justify-content:space-between;
  gap:12px;box-shadow:var(--sh);transition:box-shadow .2s,transform .15s;flex-wrap:wrap}
.patCard:hover{box-shadow:var(--shm);transform:translateY(-1px)}
.patCardMain{display:flex;align-items:center;gap:14px;flex:1;min-width:0}
.patCardAvatar{width:44px;height:44px;border-radius:50%;background:var(--g1);
  display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0}
.patCardInfo{flex:1;min-width:0}
.patCardName{font-size:.93rem;font-weight:800;color:var(--g9);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patCardMeta{font-size:.73rem;color:var(--s5);margin-top:2px}
.patCardActions{display:flex;gap:6px;flex-shrink:0}

/* ══ FORM PACIENTES (modal) ══ */
.patFormSec{font-size:.69rem;font-weight:800;color:var(--g7);text-transform:uppercase;
  letter-spacing:.08em;margin:18px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--g1)}
.patFormGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px 14px}
.patFG{display:flex;flex-direction:column;gap:4px}
.patFG label{font-size:.72rem;font-weight:700;color:var(--s7)}
.patFG.sp2{grid-column:span 2}.patFG.sp3{grid-column:span 3}
@media(max-width:600px){.patFormGrid{grid-template-columns:1fr 1fr}.patFG.sp2,.patFG.sp3{grid-column:span 2}}

/* ══ SIDEBAR ══ */
#sidebar{position:fixed;left:0;top:36px;bottom:0;width:230px;
  background:linear-gradient(180deg,var(--s9) 0%,#1a2640 100%);
  z-index:392;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;
  border-right:1px solid rgba(255,255,255,.07);box-shadow:3px 0 18px rgba(0,0,0,.3);
  transform:translateX(-100%);transition:transform .25s ease}
#sidebar.visible{transform:translateX(0)}
#sbTrigger{position:fixed;left:0;top:36px;bottom:0;width:14px;z-index:391;cursor:pointer}
#sbBackdrop{display:none;position:fixed;inset:0;z-index:389;background:rgba(0,0,0,.22);cursor:pointer}
#sbBackdrop.visible{display:block}
.sbHdr{padding:14px 16px 12px;background:rgba(0,0,0,.18);border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0}
.sbHdrLogo{font-size:1.7rem;margin-bottom:4px}
.sbHdrName{font-size:.78rem;font-weight:800;color:#fff;line-height:1.3}
.sbHdrSub{font-size:.63rem;color:rgba(255,255,255,.35);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sbNav{padding:6px 0;flex:1;overflow-y:auto}
.sbItem{display:flex;align-items:center;gap:9px;padding:10px 14px;font-size:.8rem;font-weight:600;
  color:rgba(255,255,255,.5);cursor:pointer;transition:all .15s;border-left:3px solid transparent;user-select:none}
.sbItem:hover{color:#fff;background:rgba(255,255,255,.06)}
.sbItem.active{color:#4ade80;background:rgba(74,222,128,.1);border-left-color:#4ade80;font-weight:700}
.sbItemIco{font-size:1rem;width:20px;text-align:center;flex-shrink:0}
.sbItemLbl{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sbItemChev{font-size:.65rem;margin-left:auto;transition:transform .2s;flex-shrink:0}
.sbSub{max-height:0;overflow:hidden;transition:max-height .25s ease}
.sbSub.open{max-height:600px}
.sbSubItem{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 44px;font-size:.76rem;font-weight:600;
  color:rgba(255,255,255,.38);cursor:pointer;transition:all .15s;border-left:3px solid transparent}
.sbSubItem:hover{color:rgba(255,255,255,.72);background:rgba(255,255,255,.04)}
.sbSubItem.active{color:#4ade80;background:rgba(74,222,128,.07);border-left-color:#4ade80;font-weight:700}
.sbDivider{height:1px;background:rgba(255,255,255,.06);margin:6px 12px}
.sbFooter{padding:8px 0;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0}

/* ══ LAYOUT COM SIDEBAR ══ */
body.sidebar-open #moduleNav{display:none!important}
@media(max-width:820px){#sbToggle{display:flex!important}}

/* ══ VISIBILIDADE DOS MÓDULOS ══ */
/* Todas as seções ocultas por padrão — evita flash antes do JS carregar */
#secHome,#secProntuario,#secAgenda,#secRelatorios,
#secAdminCadastro,#secAdminControle,#secAdminUnidades,
#secAdminSalas,#secAdminAtendimentos,#secAdminRecepcao,
#secAdminConvenios,#secAdminOdontoproc,#secRecebimentos,#secOdontograma,
#secAdminDRE,#secAdminRepasseRecep,
#modulePacientes{display:none}
/* Elementos soltos do fin-dashboard também ocultos por padrão */
#printHeader,.finDashLayout,.topGrid,.agFormWrap,#slCadastro,
#slKpis,.kpiGrid,#slComparativo,.compWrap,
#slOcupacao,.gcWrap,#slHistorico,.histWrap{display:none}

/* Com sidebar ativo oculta tudo; cada classe sb- revela o seu módulo */
body.sb-active main>*{display:none!important}
body.sb-home #secHome{display:block!important}
body.sb-pacientes #modulePacientes{display:block!important}
body.sb-agenda #secAgenda{display:flex!important;flex-direction:column}
body.sb-prontuario main{padding:0!important;overflow:hidden;height:calc(100vh - 86px);max-width:100%!important;width:100%!important}
body.sb-prontuario #secProntuario{display:flex!important;flex-direction:column;height:100%!important;width:100%!important;align-items:stretch!important;justify-content:flex-start!important}
body.sb-relatorios #secRelatorios{display:block!important}
body.sb-admin-cadastro #secAdminCadastro{display:block!important}
body.sb-admin-controle #secAdminControle{display:block!important}
body.sb-admin-unidades #secAdminUnidades{display:block!important}
body.sb-admin-salas #secAdminSalas{display:block!important}
body.sb-admin-atendimentos #secAdminAtendimentos{display:block!important}
body.sb-admin-recepcao #secAdminRecepcao{display:block!important}
body.sb-admin-convenios #secAdminConvenios{display:block!important}
body.sb-admin-odonto-proc #secAdminOdontoproc{display:block!important}
body.sb-recebimentos #secRecebimentos{display:block!important}
body.sb-odontograma #secOdontograma{display:block!important}
body.sb-estoque #secEstoque{display:block!important}
body.sb-admin-dre #secAdminDRE{display:block!important}
body.sb-admin-repasse-recep #secAdminRepasseRecep{display:block!important}
body.sb-fin-dashboard #printHeader{display:block!important}
body.sb-fin-dashboard .finDashLayout{display:flex!important;gap:20px;align-items:flex-start}
body.sb-fin-dashboard #slCadastro,body.sb-fin-dashboard .topGrid,
body.sb-fin-dashboard #slOcupacao,body.sb-fin-dashboard .agFormWrap,body.sb-fin-dashboard .gcWrap,
body.sb-fin-dashboard #slKpis,body.sb-fin-dashboard .kpiGrid,
body.sb-fin-dashboard #slComparativo,body.sb-fin-dashboard .compWrap,
body.sb-fin-dashboard #slHistorico,body.sb-fin-dashboard .histWrap{display:block!important}

/* ── Layout fin-dashboard 2 colunas ── */
.finMesSidebar{
  width:200px;flex-shrink:0;
  position:sticky;top:104px;
  max-height:calc(100vh - 120px);
  overflow-y:auto;
  background:var(--w);border:1px solid var(--s2);
  border-radius:var(--R);box-shadow:var(--sh);
  padding-bottom:12px;
}
.finMesSidebarTitle{
  font-size:.7rem;font-weight:800;color:var(--g9);
  text-transform:uppercase;letter-spacing:.06em;
  padding:12px 14px 10px;border-bottom:2px solid var(--g1);
}
.finMesNavRow{
  display:flex;align-items:center;justify-content:space-between;
  gap:6px;padding:14px 12px 6px;
}
.finMesNavBtn{
  background:var(--g1);border:1.5px solid var(--g3);color:var(--g8);
  font-size:1.1rem;font-weight:800;width:32px;height:32px;
  border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all .15s;flex-shrink:0;
}
.finMesNavBtn:hover{background:var(--g9);color:var(--w);border-color:var(--g9)}
.finMesLabelBig{
  font-size:.9rem;font-weight:800;color:var(--s9);
  text-align:center;flex:1;line-height:1.2;
}
.finMesStatusRow{text-align:center;padding:2px 12px 8px;min-height:22px}
.finMesStatusSpan{font-size:.72rem;font-weight:700;border-radius:20px;padding:2px 10px}
.finMesStatusSpan.saved{background:var(--g1);color:var(--g8)}
.finMesStatusSpan.unsaved{background:#fff8e1;color:#b45309}
.finMesSaveBtn{display:block;width:calc(100% - 24px);margin:0 12px;font-size:.78rem;padding:8px}
.finMesDivider{height:1px;background:var(--s2);margin:12px 0}
.finMesPickerRow{padding:0 12px;display:flex;flex-direction:column;gap:5px}
.finMesPickerLabel{font-size:.68rem;font-weight:700;color:var(--s5);text-transform:uppercase;letter-spacing:.04em}
.finMesPickerInp{width:100%;border:1.5px solid var(--s2);border-radius:8px;padding:6px 8px;font-size:.8rem;color:var(--s9);background:var(--s0);cursor:pointer;box-sizing:border-box}
.finMesPickerInp:focus{outline:none;border-color:var(--g5);box-shadow:0 0 0 2px var(--g1)}
.finMesTip{padding:0 12px;display:flex;gap:8px;align-items:flex-start}
.finMesTipIco{font-size:.85rem;flex-shrink:0;margin-top:1px}
.finMesTipText{font-size:.68rem;color:var(--s4);line-height:1.5}
/* Retrocompatibilidade: agFInp ainda usado em outros contextos */
.agFInp{width:100%;border:1px solid var(--s2);border-radius:6px;padding:6px 8px;font-size:.76rem;color:var(--s9);background:var(--w)}
.agFInp:focus{outline:none;border-color:var(--g5);box-shadow:0 0 0 2px var(--g1)}
.finMainContent{flex:1;min-width:0}

/* ── Comparativo total row ── */
.compTotais{background:linear-gradient(135deg,var(--g9) 0%,var(--g7) 100%);
  color:#fff;border-radius:0 0 var(--R) var(--R);padding:16px 20px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px 20px;margin-top:2px}
.compTotalItem{display:flex;flex-direction:column;gap:2px}
.compTotalLabel{font-size:.68rem;font-weight:600;opacity:.75;text-transform:uppercase;letter-spacing:.05em}
.compTotalVal{font-size:1rem;font-weight:900}

@media(max-width:900px){
  body.sb-fin-dashboard .finDashLayout{flex-direction:column!important}
  .finMesSidebar{width:100%;position:relative;top:auto;max-height:none}
}

/* ══ TELA INICIAL ══ */
#secHome{padding-top:4px}
.homeWelcome{background:linear-gradient(135deg,var(--g9) 0%,var(--g7) 55%,var(--g6) 100%);
  border-radius:var(--R);padding:26px 28px;color:#fff;margin-bottom:18px;box-shadow:var(--shm)}
.homeWelcomeTitle{font-size:1.3rem;font-weight:800;margin-bottom:5px}
.homeWelcomeSub{font-size:.84rem;opacity:.75}
.homeCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:18px}
.homeCard{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);padding:18px 16px;
  box-shadow:var(--sh);display:flex;align-items:center;gap:14px;cursor:pointer;
  transition:box-shadow .2s,transform .15s;text-decoration:none}
.homeCard:hover{box-shadow:var(--shm);transform:translateY(-2px)}
.homeCardIco{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-size:1.4rem;flex-shrink:0}
.homeCardIco.g{background:var(--g1)}.homeCardIco.b{background:#dbeafe}
.homeCardIco.p{background:#f3e8ff}.homeCardIco.o{background:#fef3c7}.homeCardIco.r{background:var(--r1)}
.homeCardLabel{font-size:.68rem;font-weight:700;color:var(--s4);text-transform:uppercase;letter-spacing:.05em}
.homeCardTitle{font-size:.88rem;font-weight:800;color:var(--s9);margin-top:2px}
.homeCardLocked{opacity:.5;cursor:default}
.homeCardLocked:hover{transform:none;box-shadow:var(--sh)}
.homeTip{background:var(--s1);border:1px solid var(--s2);border-radius:var(--Rs);
  padding:12px 16px;font-size:.8rem;color:var(--s5);line-height:1.5}

/* ══ PLACEHOLDERS (Prontuário, Agenda, Relatórios, Administrativo) ══ */
#secProntuario,#secAgenda,#secRelatorios,#secAdminCadastro,#secAdminControle{
  display:none;flex-direction:column;align-items:center;justify-content:center;min-height:440px}
.proWrap{max-width:400px;text-align:center}
.proIco{font-size:4rem;margin-bottom:14px}
.proTitle{font-size:1.08rem;font-weight:800;color:var(--s7);margin-bottom:8px}
.proDesc{font-size:.83rem;color:var(--s5);line-height:1.65;margin-bottom:14px}
.proBadge{display:inline-block;padding:6px 18px;background:var(--s1);border:1px solid var(--s2);
  border-radius:99px;font-size:.72rem;font-weight:700;color:var(--s5)}

/* MÓDULO AGENDA */
#secAgenda{padding:0;display:none;flex-direction:column;gap:10px;align-items:stretch;justify-content:flex-start;min-height:unset}
.agModHdr{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);padding:14px 18px;box-shadow:var(--sh)}
.agNavRow{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.agNavLeft,.agNavRight{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.agTitulo{font-size:1.05rem;font-weight:800;color:var(--s9);margin:0;white-space:nowrap;min-width:160px}
.agFiltro{font-size:.79rem;padding:5px 8px;min-width:160px}
.agViewToggle{display:flex;gap:4px;margin-top:10px;border-top:1px solid var(--s2);padding-top:10px}
.agVwBtn{padding:4px 16px;border-radius:20px;border:1.5px solid var(--s2);background:none;font-size:.78rem;font-weight:700;color:var(--s5);cursor:pointer;transition:all .15s}
.agVwBtn:hover{background:var(--s1);color:var(--s7)}
.agVwBtn.active{background:var(--g6);color:#fff;border-color:var(--g6)}
.agLegenda{display:flex;gap:14px;flex-wrap:wrap;font-size:.73rem;font-weight:600}
.agLeg{display:flex;align-items:center;gap:4px;cursor:default}
.agLeg[data-status="Agendado"]{color:#64748b}
.agLeg[data-status="Confirmado"]{color:#2563eb}
.agLeg[data-status="Recepcao"]{color:#d97706}
.agLeg[data-status="Atendimento"]{color:#7c3aed}
.agLeg[data-status="Finalizado"]{color:#16a34a}
.agLeg[data-status="Falta"]{color:#dc2626}
.agContainer{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);box-shadow:var(--sh);overflow:hidden;flex:1}
.agLoading{padding:80px 40px;text-align:center;color:var(--s4);font-size:.9rem}
.agGrade{display:flex;flex-direction:column;min-width:0}
.agGradeHdr{display:flex;border-bottom:2px solid var(--s2);position:sticky;top:0;z-index:12;background:var(--w)}
.agGradeHdrTime{width:66px;flex-shrink:0;border-right:1px solid var(--s2);background:var(--w)}
.agGradeHdrCol{flex:1;min-width:120px;padding:8px;text-align:center;border-right:1px solid var(--s2);font-size:.74rem;font-weight:700;color:var(--s5);line-height:1.4}
.agGradeHdrCol.hoje{background:#eff6ff;color:var(--g7)}
.agGradeHdrCol .agDiaLabel{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;display:block}
.agGradeHdrCol .agDiaNum{font-size:1.25rem;font-weight:800;display:block;color:var(--s8);line-height:1.3}
.agGradeHdrCol.hoje .agDiaNum{background:var(--g6);color:#fff;width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;margin:2px auto 0}
.agGradeBody{display:flex;overflow-y:scroll;height:calc(100vh - 310px);min-height:420px;position:relative}
.agGradeTimeCol{width:66px;flex-shrink:0;border-right:1px solid var(--s2);background:var(--w);position:sticky;left:0;z-index:5}
.agTimeSlot{height:54px;border-bottom:1px solid var(--s1);display:flex;align-items:flex-start;padding:3px 6px 0;font-size:.66rem;color:var(--s4);font-weight:600;user-select:none}
.agGradeCols{flex:1;display:flex;min-width:0;overflow-x:visible}
.agGradeCol{flex:1;min-width:120px;border-right:1px solid var(--s2);position:relative}
.agSlot{height:54px;border-bottom:1px solid var(--s1);cursor:crosshair;position:relative;transition:background .1s}
.agSlot:hover{background:rgba(59,130,246,.06)}
.agSlotHora{background:#fafbfc}
.agSlotHora:hover{background:rgba(59,130,246,.06)}
.agSlotMeia{background:#fff}
/* Mês */
.agMesWrap{display:flex;flex-direction:column;height:calc(100vh - 210px);overflow:hidden}
.agMesHdr{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:2px solid var(--s2)}
.agMesHdrCell{padding:6px 4px;text-align:center;font-size:.72rem;font-weight:600;color:var(--s5);text-transform:uppercase}
.agMesCells{display:grid;grid-template-columns:repeat(7,1fr);flex:1;overflow-y:auto;border-left:1px solid var(--s1)}
.agMesCell{min-height:120px;padding:4px;border-right:1px solid var(--s1);border-bottom:1px solid var(--s1);cursor:pointer;transition:background .1s}
.agMesCell:hover{background:rgba(59,130,246,.04)}
.agMesCellFora{background:#f8f9fa;cursor:default}
.agMesCellFora:hover{background:#f8f9fa}
.agMesCellHoje{background:#eff6ff}
.agMesDiaNum{font-size:.78rem;font-weight:500;color:var(--s5);margin-bottom:3px;line-height:1}
.agMesDiaHoje{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--b5);color:#fff;font-weight:700}
.atdClinica{color:var(--g6)!important;font-weight:700}
.agMesEvt{font-size:.67rem;padding:2px 5px;border-radius:3px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}
.agMesMais{font-size:.67rem;color:var(--b5);font-weight:600;padding:0 2px}
.agCard{position:absolute;left:3px;right:3px;border-radius:6px;padding:3px 7px 3px 8px;font-size:.71rem;line-height:1.3;cursor:pointer;z-index:3;box-shadow:0 1px 5px rgba(0,0,0,.18);overflow:hidden;transition:filter .12s,transform .1s;border-left:4px solid rgba(0,0,0,.25);border-top:1px solid rgba(255,255,255,.25)}
.agCard:hover{filter:brightness(.88);transform:translateY(-1px);z-index:4}
.agCardNome{font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:14px}
.agCardProc,.agCardSala{font-size:.64rem;color:rgba(255,255,255,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agCardHora{font-size:.62rem;color:rgba(255,255,255,.75)}
.agCardStatusDot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55)}
.agCardStatusDot[data-s="Agendado"]{background:#94a3b8}
.agCardStatusDot[data-s="Confirmado"]{background:#60a5fa}
.agCardStatusDot[data-s="Recepcao"]{background:#fbbf24}
.agCardStatusDot[data-s="Atendimento"]{background:#c084fc}
.agCardStatusDot[data-s="Finalizado"]{background:#4ade80}
.agCardStatusDot[data-s="Falta"]{background:#f87171}
.agHoraAtual{position:absolute;left:0;right:0;height:2px;background:#ef4444;z-index:6;pointer-events:none}
.agHoraAtual::before{content:'';position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:#ef4444}
.agPacWrap{position:relative}
.agPacDrop{position:absolute;top:100%;left:0;right:0;background:var(--w);border:1.5px solid var(--s2);border-top:none;border-radius:0 0 var(--Rs) var(--Rs);max-height:220px;overflow-y:auto;z-index:300;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.agPacItem{padding:8px 12px;cursor:pointer;font-size:.82rem;border-bottom:1px solid var(--s1);transition:background .1s}
.agPacItem:hover{background:var(--g0)}
.agPacItem strong{color:var(--g7);display:block}
.agPacItem small{color:var(--s4);font-size:.72rem}
.agConflitoBadge{padding:8px 12px;background:var(--r1);border:1px solid #fca5a5;border-radius:var(--Rs);color:var(--r7);font-size:.81rem;display:flex;gap:6px;align-items:flex-start}
#secAgenda .bGh,#modalAgendamento .bGh{background:var(--s1);color:var(--s7);border:1.5px solid var(--s3)}#secAgenda .bGh:hover,#modalAgendamento .bGh:hover{background:var(--s2);color:var(--s8);border-color:var(--s4)}@media(max-width:700px){.agFiltro{min-width:120px;font-size:.73rem}.agGradeHdrCol,.agGradeCol{min-width:80px}.agTitulo{font-size:.92rem}}

/* ══════════════════════════════════════════════════════════════════════════════
   PRONTUÁRIO ELETRÔNICO — CSS
   Cole DENTRO do bloco style existente, antes do seu fechamento
   ══════════════════════════════════════════════════════════════════════════════ */

/* ─── Container principal ─── */
#secProntuario {
  padding: 0;
  display: none;
  flex-direction: column;
  height: calc(100vh - 78px);
  min-height: 500px;
  gap: 0;
}

/* ─── Área de busca de paciente ─── */
.prnBuscaArea {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 60px 24px;
  flex: 1;
}
.prnBuscaCard {
  background: var(--w);
  border: 1px solid var(--s2);
  border-radius: var(--R);
  box-shadow: var(--shm);
  padding: 40px 44px;
  max-width: 520px;
  width: 100%;
  text-align: center;
}
.prnBuscaIco    { font-size: 3rem; margin-bottom: 10px; line-height: 1; }
.prnBuscaTitulo { font-size: 1.05rem; font-weight: 800; color: var(--s9); margin-bottom: 6px; }
.prnBuscaDesc   { font-size: .81rem; color: var(--s4); margin-bottom: 20px; line-height: 1.5; }
.prnBuscaWrap   { position: relative; }
#prnBuscaInput {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--s2);
  border-radius: var(--Rs);
  font-size: .88rem;
  color: var(--s9);
  background: var(--w);
  box-sizing: border-box;
  transition: border-color .15s, box-shadow .15s;
}
#prnBuscaInput:focus {
  border-color: var(--g5);
  outline: none;
  box-shadow: 0 0 0 3px rgba(22,163,74,.13);
}
.prnPacDrop {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--w);
  border: 1.5px solid var(--s2);
  border-top: none;
  border-radius: 0 0 var(--Rs) var(--Rs);
  max-height: 270px;
  overflow-y: auto;
  z-index: 200;
  box-shadow: 0 8px 28px rgba(0,0,0,.13);
  text-align: left;
}
.prnPacItem {
  padding: 9px 14px;
  cursor: pointer;
  font-size: .83rem;
  border-bottom: 1px solid var(--s1);
  transition: background .1s;
}
.prnPacItem:last-child { border-bottom: none; }
.prnPacItem:hover { background: var(--g0); }
.prnPacItem strong { color: var(--s9); display: block; margin-bottom: 1px; }
.prnPacItem small  { color: var(--s4); font-size: .72rem; }

/* ─── Área principal (após seleção do paciente) ─── */
#prnMain {
  display: none;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  width: 100%;
  gap: 10px;
}

/* ─── Header fixo do paciente ─── */
.prnHeaderPac {
  background: var(--w);
  border: 1px solid var(--s2);
  border-radius: var(--R);
  padding: 11px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  box-shadow: var(--sh);
  flex-shrink: 0;
}
.prnPacInfo       { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.prnPacNome       { font-size: 1rem; font-weight: 800; color: var(--s9); }
.prnPacMeta       { display: flex; gap: 16px; flex-wrap: wrap; }
.prnPacMeta span  { font-size: .75rem; color: var(--s5); }
.prnHeaderActs    { display: flex; gap: 8px; flex-shrink: 0; }

/* ─── Corpo: timeline + conteúdo ─── */
.prnCorpo {
  display: flex;
  gap: 10px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* ─── Timeline lateral ─── */
.prnTimeline {
  width: 250px;
  flex-shrink: 0;
  background: var(--w);
  border: 1px solid var(--s2);
  border-radius: var(--R);
  box-shadow: var(--sh);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.prnTlHeader {
  padding: 11px 14px;
  font-size: .77rem;
  font-weight: 800;
  color: var(--s9);
  border-bottom: 1px solid var(--s2);
  position: sticky;
  top: 0;
  background: var(--w);
  z-index: 2;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.prnTlBtnNovo {
  margin: 8px 10px 4px;
  width: calc(100% - 20px);
  padding: 7px 10px;
  background: var(--g6);
  color: #fff;
  border: none;
  border-radius: var(--Rs);
  font-size: .76rem;
  font-weight: 700;
  cursor: pointer;
  transition: background .15s;
}
.prnTlBtnNovo:hover { background: var(--g7); }
.prnTlItem {
  padding: 10px 14px;
  border-bottom: 1px solid var(--s1);
  cursor: pointer;
  transition: background .1s;
  border-left: 3px solid transparent;
}
.prnTlItem:hover  { background: var(--g0); border-left-color: var(--g4); }
.prnTlItem.ativo  { background: var(--g1); border-left-color: var(--g6); }
.prnTlData        { font-size: .8rem; font-weight: 700; color: var(--s8); }
.prnTlHora        { font-size: .71rem; color: var(--s4); }
.prnTlProf        { font-size: .71rem; color: var(--s5); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prnTlVazio       { padding: 24px 14px; font-size: .81rem; color: var(--s3); text-align: center; line-height: 1.6; }

/* ─── Área de conteúdo central ─── */
.prnContentArea {
  flex: 1;
  background: var(--w);
  border: 1px solid var(--s2);
  border-radius: var(--R);
  box-shadow: var(--sh);
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

/* Estado vazio */
.prnEmpty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: var(--s3);
  font-size: .88rem;
  gap: 10px;
}
.prnEmptyIco { font-size: 2.8rem; }

/* ─── Atendimento aberto ─── */
#prnAtendimento {
  display: none;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* Cabeçalho do atendimento */
.prnAtdHeader {
  padding: 10px 18px 0;
  border-bottom: 2px solid var(--s2);
  flex-shrink: 0;
}
.prnAtdData {
  font-size: .74rem;
  color: var(--s4);
  margin-bottom: 8px;
  font-style: italic;
}

/* ─── Abas ─── */
.prnTabs { display: flex; gap: 2px; }
.prnTab {
  padding: 7px 15px;
  border: none;
  background: none;
  font-size: .79rem;
  font-weight: 600;
  color: var(--s5);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color .13s, border-color .13s;
  white-space: nowrap;
}
.prnTab:hover         { color: var(--g6); }
.prnTab.ativa         { color: var(--g6); border-bottom-color: var(--g6); }

/* ─── Conteúdo das abas ─── */
.prnAbaContent {
  padding: 12px 18px 10px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  display: none;
}
.prnAbaContent.ativa { display: flex; flex-direction: column; }

.prnAbaLabel {
  display: block;
  font-size: .74rem;
  font-weight: 700;
  color: var(--s5);
  margin-bottom: 4px;
  text-transform: uppercase;
  letter-spacing: .04em;
  flex-shrink: 0;
}
.prnAbaActions {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  justify-content: flex-end;
  align-items: center;
  flex-shrink: 0;
}

/* ─── Evolução: barra de modelo + textarea ─── */
.prnModeloRow {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 6px;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.prnModeloSel {
  flex: 1;
  font-size: .78rem;
  padding: 6px 8px;
  min-width: 160px;
}
/* ── Toolbar do editor de evolução ── */
.prnEditorToolbar {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 4px 6px;
  background: var(--s1);
  border: 1.5px solid var(--s2);
  border-bottom: none;
  border-radius: var(--Rs) var(--Rs) 0 0;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.prnTbBtn {
  background: none;
  border: 1px solid transparent;
  border-radius: 4px;
  padding: 3px 8px;
  font-size: .82rem;
  color: var(--s7);
  cursor: pointer;
  line-height: 1.4;
  transition: background .12s, border-color .12s;
  min-width: 28px;
}
.prnTbBtn:hover { background: var(--w); border-color: var(--s2); }
.prnTbBtn.ativo  { background: var(--g1); border-color: var(--g4); color: var(--g7); }
.prnTbCodigo { margin-left: 4px; font-size: .75rem; letter-spacing: .3px; }
.prnTbSep { width: 1px; height: 18px; background: var(--s2); margin: 0 4px; }

/* ── Editor visual (contenteditable) ── */
#prnEvolucaoTxt {
  width: 100%;
  /* sem flex:1 — o editor cresce com o conteúdo; o pai (.prnAbaContent) rola */
  min-height: 460px;
  font-family: inherit;
  font-size: .88rem;
  line-height: 1.8;
  padding: 18px 22px;
  border: 1.5px solid var(--s2);
  border-top: none;
  border-radius: 0 0 var(--Rs) var(--Rs);
  color: var(--s9);
  background: var(--w);
  box-sizing: border-box;
  outline: none;
  overflow-y: visible; /* deixa o pai rolar; editor não corta o conteúdo */
}
#prnEvolucaoTxt:focus { border-color: var(--g5); }
#prnEvolucaoTxt:empty::before {
  content: attr(data-placeholder);
  color: var(--s3);
  pointer-events: none;
  white-space: pre-line;
}

/* ── Divisória/separador dentro do editor ── */
#prnEvolucaoTxt hr,
#prnEvolucaoTxt .prnDiv {
  border: none;
  border-top: 2.5px solid var(--s9);
  margin: 16px 0 14px;
  opacity: .75;
}

/* ── Botão Divisória na toolbar ── */
.prnTbDivBtn { font-size: .77rem; color: var(--s6); letter-spacing: .2px; }

/* ── Editor código-fonte HTML ── */
.prnEditorSrc {
  display: none;
  width: 100%;
  min-height: 460px;
  font-family: 'Courier New', Courier, monospace;
  font-size: .82rem;
  line-height: 1.6;
  padding: 14px 18px;
  border: 1.5px solid var(--g4);
  border-top: none;
  border-radius: 0 0 var(--Rs) var(--Rs);
  color: #1e293b;
  background: #f8fafc;
  box-sizing: border-box;
  resize: vertical;
}
.prnEditorSrc:focus { outline: none; border-color: var(--g5); }

#prnExamesTxt {
  width: 100%;
  flex: 1;
  min-height: 200px;
  resize: vertical;
  font-family: inherit;
  font-size: .84rem;
  line-height: 1.65;
  padding: 10px 12px;
  border: 1.5px solid var(--s2);
  border-radius: var(--Rs);
  color: var(--s9);
  background: #fafbfc;
  box-sizing: border-box;
  transition: border-color .15s, background .15s;
}
#prnExamesTxt:focus {
  border-color: var(--g5);
  outline: none;
  background: var(--w);
  box-shadow: 0 0 0 3px rgba(22,163,74,.1);
}

/* ─── Receituário: itens de medicamento ─── */
.prnMedItem {
  border: 1px solid var(--s2);
  border-radius: var(--Rs);
  margin-bottom: 8px;
  background: #fafbfc;
  overflow: hidden;
  transition: border-color .15s;
}
.prnMedItem:hover { border-color: var(--s3); }
/* Linha do cabeçalho: ① Nome ··· Qtd ✕ */
.prnMedHeader {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--s2);
  background: var(--w);
}
/* Linha pontilhada entre nome e quantidade */
.prnMedSep {
  flex: 1;
  border-bottom: 2px dotted var(--s3);
  margin: 0 4px;
  align-self: center;
}
.prnMedNum {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--g6);
  color: #fff;
  font-size: .72rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
/* Nome do medicamento — cresce até onde o sep permitir */
.prnMedApres {
  flex: 0 1 auto;
  min-width: 120px;
  border: none;
  background: transparent;
  font-size: .88rem;
  font-weight: 600;
  color: var(--s8);
  outline: none;
  padding: 0;
}
.prnMedApres::placeholder { font-weight: 400; color: var(--s4); }
/* Quantidade alinhada à direita do nome */
.prnMedQtd {
  width: 100px;
  border: 1px solid var(--s2);
  border-radius: 5px;
  padding: 4px 8px;
  font-size: .83rem;
  text-align: right;
  background: var(--w);
}
.prnMedQtd:focus { outline: none; border-color: var(--g5); }
/* Corpo: posologia + dias */
.prnMedBody { display: flex; flex-direction: column; gap: 0; }
.prnMedBody input {
  width: 100%;
  border: none;
  border-bottom: 1px solid var(--s1);
  background: transparent;
  padding: 7px 12px 7px 44px;
  font-size: .84rem;
  color: var(--s7);
  box-sizing: border-box;
  outline: none;
}
.prnMedBody input:last-child { border-bottom: none; }
.prnMedBody input:focus { background: var(--g0, #f0fdf4); }
.prnMedBody input::placeholder { color: var(--s4); }
.prnMedRemove {
  background: none;
  border: none;
  color: var(--r5, #dc2626);
  cursor: pointer;
  font-size: .9rem;
  padding: 2px 5px;
  border-radius: 4px;
  line-height: 1;
  transition: background .1s;
}
.prnMedRemove:hover { background: var(--r1, #fee2e2); }
.prnMedVazio { color: var(--s3); font-size: .83rem; text-align: center; padding: 20px; }
.prnBtnAddMed {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 8px;
  background: none;
  border: 1.5px dashed var(--s3);
  border-radius: var(--Rs);
  color: var(--s5);
  font-size: .8rem;
  cursor: pointer;
  margin-bottom: 12px;
  transition: border-color .13s, color .13s, background .13s;
}
.prnBtnAddMed:hover { border-color: var(--g6); color: var(--g6); background: var(--g0); }

/* ─── Atestado ─── */
.prnAtestadoGrid {
  display: grid;
  grid-template-columns: 1fr 110px 170px;
  gap: 10px;
  margin-bottom: 10px;
}
@media (max-width: 640px) {
  .prnAtestadoGrid { grid-template-columns: 1fr 1fr; }
}

/* ─── Modal Salvar Modelo ─── */
#modalSalvarModelo .mBox { max-width: 420px; width: 96%; }


/* ══════════════════════════════════════════════════════════════════════════════
   IMPRESSÃO — @media print  (documento A4)
   O div #prnDocImpressao fica invisível na tela e aparece apenas ao imprimir
   ══════════════════════════════════════════════════════════════════════════════ */

/* Esconde o div de impressão na tela */
#prnDocImpressao { display: none; }

@media print {

  /* Tamanho da página */
  @page {
    size: A4 portrait;
    margin: 20mm 22mm;
  }

  /* Isola o print do prontuário com classe no body — não interfere com @media print do dashboard */
  body.prn-imprimindo * { visibility: hidden !important; }

  body.prn-imprimindo #prnDocImpressao,
  body.prn-imprimindo #prnDocImpressao * { visibility: visible !important; }

  body.prn-imprimindo #prnDocImpressao {
    display: block !important;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    background: white;
    font-family: 'Times New Roman', Times, serif;
    font-size: 11.5pt;
    color: #111;
    line-height: 1.65;
  }

  /* ── Cabeçalho do documento ── */
  body.prn-imprimindo .prnImpHdr {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-bottom: 2.5pt solid #111;
    padding-bottom: 10pt;
    margin-bottom: 14pt;
  }
  body.prn-imprimindo .prnImpLogoWrap { display: flex; flex-direction: column; gap: 2pt; }
  body.prn-imprimindo .prnImpLogoNome { font-size: 17pt; font-weight: bold; letter-spacing: -.01em; }
  body.prn-imprimindo .prnImpLogoSub { font-size: 9pt; color: #555; }
  body.prn-imprimindo .prnImpHdrRight { text-align: right; font-size: 9pt; color: #444; }
  body.prn-imprimindo .prnImpHdrData { font-size: 10pt; font-weight: bold; color: #111; }

  /* ── Faixa de dados do paciente ── */
  body.prn-imprimindo .prnImpPacFaixa {
    background: #f2f2f2;
    padding: 8pt 11pt;
    border-radius: 3pt;
    font-size: 10pt;
    margin-bottom: 14pt;
    line-height: 1.8;
  }
  body.prn-imprimindo .prnImpPacLabel { font-weight: bold; }

  /* ── Divisor ── */
  body.prn-imprimindo .prnImpDivisor {
    border: none;
    border-top: 1pt solid #bbb;
    margin: 12pt 0;
  }

  /* ── Seções ── */
  body.prn-imprimindo .prnImpSecao { margin-bottom: 16pt; page-break-inside: avoid; }
  body.prn-imprimindo .prnImpSecaoTitulo {
    font-size: 8.5pt;
    font-weight: bold;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #444;
    border-bottom: 1pt solid #ccc;
    margin-bottom: 8pt;
    padding-bottom: 3pt;
  }
  body.prn-imprimindo .prnImpTexto { font-size: 11.5pt; white-space: pre-wrap; }

  /* Receituário */
  body.prn-imprimindo .prnImpMed {
    padding: 4pt 0 4pt 14pt;
    border-left: 2pt solid #ccc;
    margin-bottom: 6pt;
  }
  body.prn-imprimindo .prnImpMedNome { font-weight: bold; }
  body.prn-imprimindo .prnImpMedPos { font-style: italic; font-size: 10.5pt; color: #333; }

  /* ── Rodapé legal ── */
  body.prn-imprimindo .prnImpRodape {
    margin-top: 44pt;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    page-break-inside: avoid;
  }
  body.prn-imprimindo .prnImpAssinaturaLinha {
    border-top: 1pt solid #111;
    width: 240pt;
    margin-bottom: 5pt;
    margin-top: 28pt;
  }
  body.prn-imprimindo .prnImpProfNome { font-size: 11.5pt; font-weight: bold; }
  body.prn-imprimindo .prnImpProfConselho { font-size: 10pt; color: #444; }
  body.prn-imprimindo .prnImpLocalData { font-size: 10pt; color: #555; margin-top: 6pt; }

  /* Quebra de página entre seções longas */
  body.prn-imprimindo .prnImpPB { page-break-before: always; }
}
/* ══════════════════════════════════════════════════════════════════════════════
   FIM DO CSS DO PRONTUÁRIO
   ══════════════════════════════════════════════════════════════════════════════ */



/* ═══ Login Overlay ═══ */
#loginOverlay{position:fixed;inset:0;background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 100%);display:flex;align-items:center;justify-content:center;z-index:9999;}
#loginBox{background:#1e293b;border:1px solid #334155;border-radius:16px;padding:40px 36px;width:340px;box-shadow:0 25px 50px rgba(0,0,0,.5);}
#loginBox h2{color:#38bdf8;margin:0 0 8px;font-size:1.4rem;text-align:center;}
#loginBox p{color:#94a3b8;text-align:center;margin:0 0 28px;font-size:.85rem;}
.lField{width:100%;padding:11px 14px;background:#0f172a;border:1px solid #334155;border-radius:8px;color:#e2e8f0;font-size:.95rem;box-sizing:border-box;margin-bottom:14px;outline:none;}
.lField:focus{border-color:#38bdf8;}
.lFieldWrap{position:relative;margin-bottom:14px;}
.lFieldWrap .lField{margin-bottom:0;padding-right:42px;}
.lFieldWrap .eyeBtn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:#64748b;font-size:1.1rem;padding:4px;line-height:1;}
.lFieldWrap .eyeBtn:hover{color:#38bdf8;}
#loginBtn{width:100%;padding:12px;background:linear-gradient(135deg,#0ea5e9,#2563eb);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;margin-top:4px;}
#loginBtn:hover{opacity:.9;}
#loginErr{color:#f87171;font-size:.82rem;text-align:center;margin-top:12px;min-height:18px;}
#loginLogo{text-align:center;margin-bottom:20px;font-size:2rem;}

/* ═══════════════════════════════════════════════
   CADASTRO DE SALAS
═══════════════════════════════════════════════ */
.salasHdr{display:flex;align-items:flex-end;justify-content:space-between;padding:20px 24px 12px;border-bottom:1px solid var(--s2);}
.salasInfo{margin:12px 24px;padding:10px 14px;background:var(--g1);border:1px solid var(--g3);border-radius:8px;font-size:.78rem;color:var(--g8);line-height:1.5;}
.salasListWrap{padding:16px 24px 32px;}
.salasVazio{color:var(--s4);font-size:.85rem;padding:32px;text-align:center;background:var(--s1);border-radius:10px;border:1px dashed var(--s2);}
.salasTable{width:100%;border-collapse:collapse;font-size:.84rem;}
.salasTable thead th{text-align:left;padding:8px 10px;font-size:.72rem;font-weight:700;color:var(--s5);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--s2);}
.salasRow td{padding:10px 10px;border-bottom:1px solid var(--s2);vertical-align:middle;}
.salasRow:hover td{background:var(--s1);}
.salasRowInativa td{opacity:.55;}
.salasCor{width:22px;height:22px;border-radius:6px;border:2px solid rgba(0,0,0,.08);}
.salasNome{font-weight:600;color:var(--s9);}
.salasAcoes{display:flex;gap:6px;align-items:center;}
.salasBadge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:.7rem;font-weight:700;letter-spacing:.04em;}
.salasBadgeOk{background:var(--g1);color:var(--g7);border:1px solid var(--g3);}
.salasBadgeOff{background:var(--s1);color:var(--s4);border:1px solid var(--s2);}

/* ═══════════════════════════════════════════════
   SEÇÃO CADASTRAR ATENDIMENTOS
═══════════════════════════════════════════════ */
.atdHdr{display:flex;align-items:flex-end;justify-content:space-between;padding:20px 24px 12px;border-bottom:1px solid var(--s2);}
.atdInfo{margin:12px 24px;padding:10px 14px;background:var(--g1);border:1px solid var(--g3);border-radius:8px;font-size:.78rem;color:var(--g8);line-height:1.5;}
.atdListWrap{padding:16px 24px 32px;}
.atdVazio{color:var(--s4);font-size:.85rem;padding:32px;text-align:center;background:var(--s1);border-radius:10px;border:1px dashed var(--s2);}

/* Abas */
.atdTabs{display:flex;gap:0;padding:0 24px;border-bottom:2px solid var(--s2);margin-top:4px;}
.atdTab{background:none;border:none;border-bottom:3px solid transparent;padding:10px 18px;font-size:.84rem;font-weight:600;color:var(--s5);cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-2px;}
.atdTab:hover{color:var(--b6);}
.atdTabAct{color:var(--b6);border-bottom-color:var(--b5);}

/* Tabela */
.atdTable{width:100%;border-collapse:collapse;font-size:.84rem;}
.atdTable thead th{text-align:left;padding:8px 10px;font-size:.72rem;font-weight:700;color:var(--s5);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--s2);}
.atdTable tbody td{padding:10px 10px;border-bottom:1px solid var(--s2);vertical-align:middle;}
.atdTable tbody tr:hover td{background:rgba(59,130,246,.04);}
.atdNome{font-weight:600;color:var(--s8);}
.atdVal{font-weight:500;color:var(--s7);white-space:nowrap;}
.atdBadgeTipo{display:inline-block;margin-left:5px;padding:1px 6px;border-radius:10px;font-size:.68rem;font-weight:700;background:var(--b1);color:var(--b6);border:1px solid var(--b3);}
.atdAcoes{display:flex;gap:6px;}

/* Modal */
.atdModal{max-width:460px;width:96%;padding:24px 22px;}
.atdModalHdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}

/* Input de valor com prefixo R$ */
.atdValorWrap{display:flex;align-items:center;border:1px solid var(--s3);border-radius:8px;overflow:hidden;background:#fff;transition:border-color .15s;}
.atdValorWrap:focus-within{border-color:var(--b4);box-shadow:0 0 0 3px rgba(59,130,246,.12);}
.atdValorPrefix{padding:0 10px;font-size:.88rem;font-weight:700;color:var(--s6);background:var(--s1);border-right:1px solid var(--s2);white-space:nowrap;align-self:stretch;display:flex;align-items:center;}
.atdValorSuffix{padding:0 10px;font-size:.88rem;font-weight:700;color:var(--s6);background:var(--s1);border-left:1px solid var(--s2);white-space:nowrap;align-self:stretch;display:flex;align-items:center;}
.atdValorInp{border:none!important;border-radius:0!important;box-shadow:none!important;flex:1;min-width:0;text-align:right;}
.atdValorInp:focus{outline:none;box-shadow:none!important;}

/* Toggle R$ / % */
.atdToggleWrap{display:inline-flex;border:2px solid var(--b4);border-radius:10px;overflow:hidden;margin-top:8px;width:fit-content;box-shadow:0 1px 4px rgba(0,0,0,.1);}
.atdToggle{background:var(--s1);border:none;border-right:2px solid var(--b3);padding:10px 28px;font-size:.92rem;font-weight:700;color:var(--s5);cursor:pointer;transition:all .15s;letter-spacing:.02em;}
.atdToggle:last-child{border-right:none;}
.atdToggle:hover{background:var(--b1);color:var(--b6);}
.atdToggleAct{background:var(--b5);color:#fff;box-shadow:inset 0 2px 6px rgba(0,0,0,.18);}
.atdToggleAct:hover{background:var(--b6);color:#fff;}

/* Hint de repasse */
.atdRepasseHint{margin-top:5px;font-size:.72rem;color:var(--s4);}

/* ══════════════════════════════════════════════════════════════════
   MÓDULO RECEPÇÃO
   ══════════════════════════════════════════════════════════════════ */
body.sb-admin-recepcao #secAdminRecepcao{display:block!important}

#secAdminRecepcao{padding:24px 28px;max-width:1100px;display:none;}

/* Header */
.rcpHdr{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px;gap:12px;}
.rcpHdrTitulo{font-size:1.4rem;font-weight:800;color:var(--s9);}
.rcpHdrData{font-size:.85rem;color:var(--s5);margin-top:3px;text-transform:capitalize;}

/* Stats */
.rcpStats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:26px;}
@media(max-width:640px){.rcpStats{grid-template-columns:repeat(2,1fr);}}
.rcpStatCard{background:var(--w);border:1px solid var(--s2);border-radius:14px;padding:18px 16px;text-align:center;box-shadow:var(--sh);}
.rcpStatSt0{border-top:3px solid var(--s4);}
.rcpStatSt2{border-top:3px solid var(--b5);}
.rcpStatSt3{border-top:3px solid var(--g5);}
.rcpStatSt4{border-top:3px solid var(--r6);}
.rcpStatEmoji{font-size:1.7rem;line-height:1;margin-bottom:6px;}
.rcpStatNum{font-size:2.1rem;font-weight:800;color:var(--s9);line-height:1;}
.rcpStatLabel{font-size:.72rem;color:var(--s4);font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-top:4px;}

/* Grupos */
.rcpListWrap{display:flex;flex-direction:column;gap:0;}
.rcpGrupo{margin-bottom:22px;}
.rcpGrupoTitulo{font-size:.88rem;font-weight:700;color:var(--s5);padding-bottom:8px;border-bottom:2px solid var(--s2);margin-bottom:10px;}
.rcpGrupoCnt{font-weight:400;}

/* Cards */
.rcpCard{display:flex;align-items:flex-start;gap:16px;background:var(--w);border:1px solid var(--s2);
  border-left:4px solid var(--s3);border-radius:12px;padding:14px 18px;margin-bottom:9px;transition:box-shadow .15s;}
.rcpCard:hover{box-shadow:var(--sh);}
.rcpCard_agendado      {border-left-color:var(--s4); background:var(--s0);}
.rcpCard_em_atendimento{border-left-color:var(--b5); background:var(--b0);}
.rcpCard_finalizado    {border-left-color:var(--g5); background:var(--g0); opacity:.8;}
.rcpCard_faltou        {border-left-color:var(--r6); background:var(--r1); opacity:.75;}

.rcpCardLeft{text-align:center;min-width:50px;flex-shrink:0;padding-top:2px;}
.rcpCardHora{font-size:.78rem;font-weight:800;color:var(--s5);margin-bottom:2px;}
.rcpCardEmoji{font-size:1.8rem;line-height:1;}

.rcpCardBody{flex:1;min-width:0;}
.rcpCardNome{font-size:1rem;font-weight:700;color:var(--s9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rcpCardMeta{font-size:.78rem;color:var(--s5);margin-top:3px;margin-bottom:10px;}
.rcpCardSala{color:var(--b6);font-weight:600;}

.rcpTimer{display:inline-block;margin-bottom:8px;font-size:.76rem;font-weight:700;
  color:var(--b6);background:var(--b1);border-radius:20px;padding:3px 12px;border:1px solid var(--b3);}

/* 4 botões de status por card */
.rcpStatusBtns{display:flex;flex-wrap:wrap;gap:6px;}
.rcpStBtn{font-size:.76rem;font-weight:600;padding:5px 12px;border-radius:99px;
  cursor:pointer;border:1.5px solid var(--s3);background:var(--w);color:var(--s5);
  transition:all .15s;white-space:nowrap;}
.rcpStBtn:hover{filter:brightness(.95);}
/* Aguardando */
.rcpStBtn_agendado{border-color:var(--s4);color:var(--s6);}
.rcpStBtn_agendado.rcpStBtnAtivo{background:var(--s2);color:var(--s8);border-color:var(--s5);font-weight:700;}
/* Em Atendimento */
.rcpStBtn_em_atendimento{border-color:var(--b4);color:var(--b6);}
.rcpStBtn_em_atendimento.rcpStBtnAtivo{background:var(--b5);color:#fff;border-color:var(--b5);font-weight:700;}
/* Finalizado */
.rcpStBtn_finalizado{border-color:var(--g5);color:var(--g7);}
.rcpStBtn_finalizado.rcpStBtnAtivo{background:var(--g6);color:#fff;border-color:var(--g6);font-weight:700;}
/* Faltou */
.rcpStBtn_faltou{border-color:var(--r6);color:var(--r7);}
.rcpStBtn_faltou.rcpStBtnAtivo{background:var(--r6);color:#fff;border-color:var(--r6);font-weight:700;}

.rcpCardAcoes{display:flex;flex-direction:column;gap:7px;flex-shrink:0;align-items:stretch;}
.rcpBtnPrn{font-size:.8rem;font-weight:600;padding:7px 14px;background:var(--s1);color:var(--s7);
  border:1px solid var(--s2);border-radius:9px;cursor:pointer;transition:all .15s;white-space:nowrap;}
.rcpBtnPrn:hover{background:var(--s2);color:var(--s9);}

.rcpBtnOdo{font-size:.8rem;font-weight:600;padding:7px 14px;background:#eff6ff;color:#1d4ed8;
  border:1px solid #bfdbfe;border-radius:9px;cursor:pointer;transition:all .15s;white-space:nowrap;}
.rcpBtnOdo:hover{background:#dbeafe;color:#1e3a8a;border-color:#93c5fd;}

/* Linha de pagamento no card */
.rcpPagRow{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:9px;
  border-top:1px dashed var(--s2);flex-wrap:wrap;}
.rcpPagBadge{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:700;
  padding:3px 9px;border-radius:99px;white-space:nowrap;}
.rcpPagBadgePago{background:var(--g0);color:var(--g7);border:1.5px solid var(--g4);}
.rcpPagBadgePend{background:#fff8e1;color:#b45309;border:1.5px solid #fbbf24;}
.rcpBtnPag{font-size:.75rem;font-weight:700;padding:5px 13px;border-radius:99px;
  background:var(--g5);color:#fff;border:none;cursor:pointer;transition:background .15s;
  white-space:nowrap;}
.rcpBtnPag:hover{background:var(--g6);}

.rcpVazio{text-align:center;padding:60px 20px;color:var(--s4);font-size:.95rem;}

/* ─── TRIAGEM ──────────────────────────────────────────────────── */
#prnAbaTriagem{overflow-y:auto;padding:0 2px 8px;}
.trgSecTitle{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--s4);border-bottom:1px solid var(--s2);padding-bottom:4px;margin:12px 0 8px;}
.trgSecTitle:first-child{margin-top:2px;}
.trgGrid6{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:4px;}
@media(max-width:900px){.trgGrid6{grid-template-columns:repeat(3,1fr);}}
@media(max-width:600px){.trgGrid6{grid-template-columns:repeat(2,1fr);}}
.trgField{display:flex;flex-direction:column;gap:3px;}
.trgLabel{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--s4);}
.trgInpWrap{display:flex;align-items:center;gap:4px;}
.trgInp{min-width:0;flex:1;padding:5px 7px;font-size:.85rem;}
.trgUnit{font-size:.7rem;color:var(--s4);white-space:nowrap;flex-shrink:0;}
.trgImcReadonly{background:var(--s1)!important;font-weight:700;color:var(--s7)!important;cursor:default;}

/* IMC layout */
.trgImcArea{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.trgImcLeft{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;min-width:220px;}

/* IMC table */
.trgImcTable{flex-shrink:0;}
.trgImcTable table{border-collapse:collapse;font-size:.78rem;width:auto;}
.trgImcTable th{background:var(--s2);color:var(--s5);padding:5px 12px;text-align:left;font-size:.69rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;}
.trgImcTable td{padding:5px 12px;border-bottom:1px solid var(--s2);color:var(--s5);transition:background .2s,color .2s;}
.trgImcSub{padding-left:20px!important;font-style:italic;}
.trgImcGrupo td{font-weight:700;font-style:normal;background:var(--s1);color:var(--s4);font-size:.7rem;letter-spacing:.05em;}
.prnImcRow.ativo-imc td{font-weight:700;background:var(--imc-bg,#e8f5e9);color:var(--imc-color,#1b5e20);}
.trgImcGrupo.ativo-imc td{font-weight:700;}

/* Obs textarea triagem */
.trgObsTxt{resize:vertical;min-height:60px;max-height:120px;font-size:.85rem;}

/* ══ CONVÊNIOS ══ */
#secAdminConvenios{padding:0}
.convHdr{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
  background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:16px 20px;margin-bottom:16px;box-shadow:var(--sh)}
.convHdrTitle{font-size:1.05rem;font-weight:800;color:var(--s9)}
.convHdrSub{font-size:.8rem;color:var(--s4);margin-top:3px}
.convListWrap{display:flex;flex-direction:column;gap:10px}
.convCard{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:14px 18px;box-shadow:var(--sh);display:flex;align-items:center;
  justify-content:space-between;gap:12px;transition:box-shadow .2s}
.convCard:hover{box-shadow:var(--shm)}
.convCardInativo{opacity:.6}
.convCardMain{flex:1;min-width:0}
.convCardNome{font-size:.95rem;font-weight:700;color:var(--s9);margin-bottom:5px}
.convCardMeta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.convTipoBadge{display:inline-block;padding:2px 10px;border-radius:99px;
  background:var(--b1);color:var(--b6);font-size:.7rem;font-weight:700}
.convCodigo{display:inline-block;padding:2px 10px;border-radius:99px;
  background:var(--s1);color:var(--s5);font-size:.7rem;font-weight:600}
.convBadgeAtivo{display:inline-block;padding:2px 10px;border-radius:99px;
  background:var(--g1);color:var(--g7);font-size:.7rem;font-weight:700}
.convBadgeInativo{display:inline-block;padding:2px 10px;border-radius:99px;
  background:var(--r1);color:var(--r6);font-size:.7rem;font-weight:700}
.convCardBtns{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
.convBtnEdit{background:var(--s1);color:var(--s7)!important;border-color:var(--s2)!important}
.convBtnInativa{background:#fff8ed;color:#b45309!important;border-color:#fcd34d!important}
.convBtnAtiva{background:var(--g1);color:var(--g7)!important;border-color:var(--g5)!important}
.convVazio{padding:40px;text-align:center;color:var(--s4);font-size:.88rem;
  background:var(--s0);border:1px dashed var(--s2);border-radius:var(--R)}

/* ══ RECEBIMENTOS ══ */
#secRecebimentos{padding:0}
.recebHdr{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:16px 20px;margin-bottom:16px;box-shadow:var(--sh)}
.recebHdrTitle{font-size:1.05rem;font-weight:800;color:var(--s9);margin-bottom:3px}
.recebHdrSub{font-size:.8rem;color:var(--s4)}
.recebKpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
@media(max-width:700px){.recebKpis{grid-template-columns:repeat(2,1fr)}}
.recebKpi{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:14px 16px;box-shadow:var(--sh);text-align:center}
.recebKpiLabel{font-size:.7rem;font-weight:700;color:var(--s4);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.recebKpiVal{font-size:1.4rem;font-weight:800;color:var(--s9)}
.recebKpi.green .recebKpiVal{color:var(--g6)}
.recebKpi.amber .recebKpiVal{color:#d97706}
.recebKpi.red   .recebKpiVal{color:var(--r6)}
/* Alerta de pendentes no topo de Recebimentos */
.recebAlertaPend{background:#fffbeb;border:1.5px solid #f59e0b;border-radius:var(--R);
  padding:14px 18px;margin-bottom:14px;box-shadow:0 2px 8px rgba(245,158,11,.12);}
.recebAlertaTopo{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.recebAlertaTopo strong{font-size:.88rem;color:#92400e;}
.recebAlertaIcon{font-size:1.3rem;line-height:1;}
.recebPendTableWrap{overflow-x:auto;}
.recebPendTable{width:100%;border-collapse:collapse;font-size:.78rem;}
.recebPendTable thead tr{border-bottom:1.5px solid #fcd34d;}
.recebPendTable th{padding:5px 10px;text-align:left;font-size:.68rem;font-weight:700;
  color:#92400e;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;}
.recebPendTable td{padding:6px 10px;border-bottom:1px solid #fef3c7;vertical-align:middle;}
.recebPendTable tbody tr:last-child td{border-bottom:none;}
.recebPendTable tbody tr:hover{background:rgba(245,158,11,.06);}
.rpNome{font-weight:600;color:#78350f;}
.rpData{color:#b45309;white-space:nowrap;}
.rpProc{color:var(--s6);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rpVal{font-weight:700;color:#059669;white-space:nowrap;}
.rpAcao{white-space:nowrap;}
.recebPendBtnBaixa{font-size:.72rem !important;padding:4px 10px !important;}

.recebFiltros{background:var(--w);border:1px solid var(--s2);border-radius:var(--R);
  padding:12px 16px;margin-bottom:14px;display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;box-shadow:var(--sh)}
.recebFiltros label{font-size:.72rem;font-weight:700;color:var(--s5);display:block;margin-bottom:3px}
.recebFiltros input,.recebFiltros select{font-size:.82rem;padding:6px 10px;border:1px solid var(--s2);
  border-radius:var(--Rs);background:var(--s0);color:var(--s8)}
.recebTableWrap{overflow-x:auto;background:var(--w);border:1px solid var(--s2);
  border-radius:var(--R);box-shadow:var(--sh)}
.recebTable{width:100%;border-collapse:collapse;font-size:.82rem}
.recebTable th{background:var(--s1);color:var(--s5);padding:10px 12px;text-align:left;
  font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  border-bottom:1px solid var(--s2);white-space:nowrap}
.recebTable td{padding:10px 12px;border-bottom:1px solid var(--s1);color:var(--s7);vertical-align:middle}
.recebTable tr:last-child td{border-bottom:none}
.recebTable tr:hover td{background:var(--s0)}
.recebTdData{font-weight:600;white-space:nowrap}
.recebHora{color:var(--s4)}
.recebValor{font-weight:700;color:var(--s9);white-space:nowrap}
.recebValorEstorn{color:var(--s4)!important;text-decoration:line-through}
.recebStPago{display:inline-block;padding:3px 10px;border-radius:99px;
  background:var(--g1);color:var(--g7);font-size:.72rem;font-weight:700;white-space:nowrap}
.recebStPend{display:inline-block;padding:3px 10px;border-radius:99px;
  background:#fef3c7;color:#92400e;font-size:.72rem;font-weight:700;white-space:nowrap}
.recebStEstornado{display:inline-block;padding:3px 10px;border-radius:99px;
  background:#f3f4f6;color:#6b7280;font-size:.72rem;font-weight:700;white-space:nowrap;
  border:1px solid #d1d5db}
.recebRowEstornado td{opacity:.65}
.recebBtnBaixa{background:var(--g6)!important;color:#fff!important;border-color:var(--g7)!important}
.recebBtnEstorno{background:#fff3cd!important;color:#7c3f00!important;border-color:#fcd34d!important}
.recebVazio{padding:40px;text-align:center;color:var(--s4);font-size:.88rem;
  background:var(--s0);border:1px dashed var(--s2);border-radius:var(--R)}
.recebModalInfo{font-size:.82rem;color:var(--s5);background:var(--s0);
  border:1px solid var(--s2);border-radius:var(--Rs);padding:8px 12px;margin-bottom:14px}

/* ══ USUÁRIOS ══ */
#secAdminCadastro,#secAdminControle{padding:24px 28px;max-width:1100px}
.secModHdr{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:22px}
.secModTitle{font-size:1.08rem;font-weight:800;color:var(--s9)}
.secModSub{font-size:.81rem;color:var(--s5);margin-top:3px}

/* Grade de cards */
.usuGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.usuCard{background:var(--w);border:1px solid var(--s2);border-radius:14px;padding:16px 18px;
  box-shadow:var(--sh);display:flex;flex-direction:column;gap:10px}
.usuCardInativo{opacity:.55}
.usuCardHdr{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.usuCardNome{font-size:.94rem;font-weight:800;color:var(--s9);line-height:1.3}
.usuCardMeta{display:flex;flex-direction:column;gap:4px}
.usuMetaRow{font-size:.78rem;color:var(--s5)}
.usuCardStatus{font-size:.72rem;font-weight:700}
.usuAtivo{color:var(--g6)}.usuInativo{color:var(--r6)}
.usuCardAcoes{display:flex;gap:7px;flex-wrap:wrap;margin-top:2px}
.usuBtnDesativar{background:var(--r1)!important;color:var(--r7)!important;border-color:var(--r6)!important}
.usuVazio{text-align:center;padding:60px 20px;color:var(--s4);font-size:.93rem;line-height:1.7;
  background:var(--s0);border:1px dashed var(--s2);border-radius:var(--R)}

/* Role badges */
.roleBadge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:.69rem;font-weight:800;white-space:nowrap;letter-spacing:.03em}
.roleBadgeAdmin{background:#f3e8ff;color:#7c3aed}
.roleBadgeProf {background:#dbeafe;color:#1d4ed8}
.roleBadgeRecep{background:#d1fae5;color:#059669}
.roleBadgeFat  {background:#fef3c7;color:#d97706}

/* Modal seção título */
.usuModalSec{font-size:.71rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
  color:var(--s4);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--s2)}

/* Matriz de permissões */
.ctrlPermMatrix{background:var(--w);border:1px solid var(--s2);border-radius:14px;
  padding:20px 22px;margin-bottom:24px;box-shadow:var(--sh)}
.ctrlPermTitle{font-size:.9rem;font-weight:800;color:var(--s7);margin-bottom:14px}
.ctrlPermTableWrap{overflow-x:auto}
.ctrlPermTable{width:100%;border-collapse:collapse;font-size:.82rem}
.ctrlPermTable th,.ctrlPermTable td{padding:9px 14px;border:1px solid var(--s2);text-align:center}
.ctrlPermTable th{background:var(--s1);font-weight:700;color:var(--s6)}
.ctrlPermTable tbody tr:hover td{background:var(--s0)}
.ctrlPermModule{text-align:left!important;min-width:200px;font-weight:600;color:var(--s7)}
.ctrlRoleAdmin{color:#7c3aed!important;background:#f3e8ff!important}
.ctrlRoleProf {color:#1d4ed8!important;background:#dbeafe!important}
.ctrlRoleRecep{color:#059669!important;background:#d1fae5!important}
.ctrlRoleFat  {color:#d97706!important;background:#fef3c7!important}
.ctrlPermLgpd{margin-top:14px;font-size:.78rem;color:var(--s5);background:var(--b0);
  border:1px solid var(--b2);border-radius:var(--Rs);padding:10px 14px;line-height:1.6}

/* Lista de controle */
.ctrlRow{display:grid;grid-template-columns:1fr auto auto;align-items:start;gap:14px;
  background:var(--w);border:1px solid var(--s2);border-radius:12px;
  padding:12px 16px;margin-bottom:9px}
.ctrlRowInativo{opacity:.55}
.ctrlRowNome{font-size:.9rem;font-weight:700;color:var(--s9);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ctrlRowEmail{font-size:.75rem;color:var(--s4);margin-top:2px}
.ctrlCheck{display:inline-flex;align-items:center;gap:4px;cursor:pointer;
  padding:4px 6px;border-radius:6px;transition:background .15s}
.ctrlCheck:hover{background:var(--s1)}
.ctrlCheck input[type=checkbox]{width:14px;height:14px;accent-color:var(--g7);cursor:pointer}
@media(max-width:600px){.ctrlRow{grid-template-columns:1fr auto;gap:8px}}

/* Marcadores required / opcional nos labels */
.usuReq{color:var(--r6);font-weight:800;font-size:.85em}
.usuOpc{color:var(--s4);font-weight:400;font-size:.85em;font-style:italic}

/* Checkbox row no modal de usuários */
.usuCheckRow{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--s6);cursor:pointer;
  background:var(--b0);border:1px solid var(--b2);border-radius:var(--Rs);padding:8px 12px}
.usuCheckRow input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:var(--g6);flex-shrink:0}

/* Troca de senha: lFieldWrap dentro de modal */
.mBox .lFieldWrap{display:flex;align-items:center;gap:6px;margin:0}
.mBox .lFieldWrap .afInp{flex:1}
.mBox .lFieldWrap .eyeBtn{padding:8px 10px;background:var(--s1);border:1px solid var(--s2);
  border-radius:var(--Rs);cursor:pointer;font-size:.9rem;flex-shrink:0}

/* ══ VISIBILIDADE DO SIDEBAR POR PERFIL ══ */
/* Recepcionista: sem prontuário, relatórios, financeiro, administrativo */
body.role-recepcionista [data-mod="prontuario"],
body.role-recepcionista [data-mod="relatorios"],
body.role-recepcionista [data-mod="financeiro"],
body.role-recepcionista #sbGrpFin,
body.role-recepcionista [data-mod="administrativo"],
body.role-recepcionista #sbGrpAdmin{display:none!important}

/* Faturamento: sem pacientes, recepção, prontuário */
body.role-faturamento [data-mod="pacientes"],
body.role-faturamento [data-mod="admin-recepcao"],
body.role-faturamento [data-mod="prontuario"]{display:none!important}

/* Profissional de Saúde: sem administrativo */
body.role-profissional_saude [data-mod="administrativo"],
body.role-profissional_saude #sbGrpAdmin{display:none!important}

/* ══════════════════════════════════════════════════════════════════
   ODONTOGRAMA
══════════════════════════════════════════════════════════════════ */
#secOdontograma { padding: 18px 20px; max-width: 1400px; margin: 0 auto; }

.odontoHdr {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  margin-bottom: 16px; padding-bottom: 14px;
  border-bottom: 1.5px solid var(--s2);
}
.odontoHdrTitle { font-size: 1.15rem; font-weight: 800; color: var(--s9); }
.odontoHdrSub   { font-size: .78rem; color: var(--s4); }
.odontoPacInfo  { flex: 1; text-align: right; }
.odontoPacNome  { font-size: .9rem; font-weight: 700; color: var(--g7); }

/* ── Layout 3 colunas: histórico | arcadas | orçamento ── */
.odontoLayout {
  display: grid;
  grid-template-columns: 210px 1fr 255px;
  gap: 16px;
  align-items: start;
}
@media (max-width: 1200px) {
  .odontoLayout { grid-template-columns: 190px 1fr 240px; }
}
@media (max-width: 900px) {
  .odontoLayout { grid-template-columns: 1fr; }
}

/* ── Painel Histórico ── */
.odoHistPanel {
  background: var(--w);
  border: 1.5px solid var(--s2);
  border-radius: var(--Rs);
  overflow: hidden;
  position: sticky;
  top: 80px;
  max-height: calc(100vh - 120px);
  display: flex;
  flex-direction: column;
}
.odoHistTitulo {
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--s7);
  padding: 10px 12px 8px;
  background: var(--s0);
  border-bottom: 1px solid var(--s2);
  flex-shrink: 0;
}
.odoHistConteudo {
  overflow-y: auto;
  flex: 1;
  padding: 8px 0;
}
.odoHistVazio {
  font-size: .78rem;
  color: var(--s4);
  text-align: center;
  padding: 24px 12px;
  line-height: 1.5;
}
.odoHistSecao {
  font-size: .63rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--s4);
  padding: 8px 12px 4px;
}
.odoHistItem {
  border-bottom: 1px solid var(--s1);
}
.odoHistItemHdr {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  cursor: pointer;
  transition: background .12s;
  user-select: none;
}
.odoHistItemHdr:hover { background: var(--s1); }
.odoHistItemData {
  font-size: .73rem;
  font-weight: 700;
  color: var(--s9);
  flex: 1;
  line-height: 1.3;
}
.odoHistItemSub {
  font-size: .67rem;
  color: var(--s5);
  font-weight: 400;
}
.odoHistItemVal {
  font-size: .72rem;
  font-weight: 700;
  color: var(--g7);
  white-space: nowrap;
}
.odoHistArrow {
  font-size: .65rem;
  color: var(--s4);
  transition: transform .18s;
  flex-shrink: 0;
}
.odoHistArrow.open { transform: rotate(90deg); }
.odoHistItemBody {
  display: none;
  padding: 0 12px 10px;
  background: var(--s0);
  border-top: 1px solid var(--s2);
}
.odoHistItemBody.open { display: block; }
.odoHistLinha {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 4px 0;
  border-bottom: 1px dashed var(--s2);
  font-size: .72rem;
}
.odoHistLinha:last-child { border-bottom: none; }
.odoHistDente {
  font-weight: 800;
  color: var(--b6);
  min-width: 28px;
  font-size: .7rem;
}
.odoHistProc { color: var(--s7); flex: 1; line-height: 1.3; }
.odoHistPreco { color: var(--g7); font-weight: 700; white-space: nowrap; }
.odoHistAnamResp {
  font-size: .72rem;
  color: var(--s7);
  padding: 3px 0;
  border-bottom: 1px dashed var(--s2);
  line-height: 1.4;
}
.odoHistAnamResp:last-child { border-bottom: none; }
.odoHistAnamLabel { color: var(--s5); font-weight: 600; }
.odoHistStatus {
  display: inline-block;
  font-size: .62rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 10px;
  background: var(--g1);
  color: var(--g9);
}
.odoHistVizBtn {
  background: #ecfdf5;
  border: 1.5px solid #6ee7b7;
  border-radius: 6px;
  padding: 3px 8px;
  font-size: .85rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: background .12s;
  line-height: 1;
}
.odoHistVizBtn:hover { background: #d1fae5; border-color: #34d399; }

/* ── Visualização Histórica: mini-odontograma ── */
.odoHVArcadas {
  background: #f0fdf4;
  border: 1.5px solid #bbf7d0;
  border-radius: 10px;
  padding: 14px 10px 8px;
  margin-bottom: 14px;
  overflow-x: auto;
}
.odoHVArcadaLabel {
  font-size: .58rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: #4b7c5a;
  text-align: center;
  margin: 4px 0 3px;
}
.odoHVLabelGap { margin-top: 2px; }
.odoHVLinha {
  display: flex;
  justify-content: center;
  flex-wrap: nowrap;
  gap: 3px;
  margin-bottom: 3px;
}
.odoHVLinhaDecidua { gap: 4px; }
.odoHVSep {
  height: 1px;
  background: #86efac;
  margin: 6px 0;
}
.odoHVDente {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 34px;
  min-width: 30px;
  border: 1.5px solid #d1d5db;
  border-radius: 6px;
  background: #f9fafb;
  padding: 2px 1px 3px;
  position: relative;
  cursor: default;
}
.odoHVDeciduo { width: 28px; min-width: 24px; }
.odoHVDenteMarcado {
  background: #dcfce7;
  border-color: #16a34a;
  box-shadow: 0 0 0 1.5px #86efac;
}
.odoHVNum {
  font-size: .52rem;
  font-weight: 800;
  color: #64748b;
  line-height: 1.1;
  margin-bottom: 1px;
}
.odoHVDenteMarcado .odoHVNum { color: #166534; }
.odoHVImgWrap {
  position: relative;
  display: flex; align-items: center; justify-content: center;
  width: 20px; height: 28px;
}
.odoHVDeciduo .odoHVImgWrap { width: 16px; height: 22px; }
.odoHVImg {
  width: 100%; height: 100%;
  object-fit: contain;
}
.odoHVSVG {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  overflow: visible;
}
.odoHVMarca {
  position: absolute;
  top: -4px;
  right: -4px;
  background: #16a34a;
  color: #fff;
  font-size: .5rem;
  font-weight: 900;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
.odoHVLegenda {
  display: flex;
  gap: 18px;
  justify-content: center;
  font-size: .72rem;
  color: var(--s6);
  margin: 8px 0 12px;
}
.odoHVLegBox {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
  border: 1.5px solid #d1d5db;
  background: #f9fafb;
  vertical-align: middle;
  margin-right: 4px;
}
.odoHVLegBoxMarcado { background: #dcfce7; border-color: #16a34a; }
.odoHVSecTitulo {
  font-size: .78rem;
  font-weight: 800;
  color: var(--s8);
  margin-bottom: 10px;
  padding-bottom: 6px;
  border-bottom: 1.5px solid var(--s2);
}
.odoHVTableWrap { overflow-x: auto; }
.odoHVTable {
  width: 100%;
  border-collapse: collapse;
  font-size: .74rem;
}
.odoHVTable th {
  text-align: left;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--s5);
  border-bottom: 1.5px solid var(--s2);
  padding: 4px 8px 6px;
}
.odoHVTable td {
  padding: 5px 8px;
  border-bottom: 1px solid var(--s1);
  vertical-align: middle;
  color: var(--s8);
}
.odoHVTable tr:last-child td { border-bottom: none; }
.odoHVTable tr:hover td { background: var(--s0); }
.odoHVDentePill {
  display: inline-block;
  background: #dbeafe;
  color: #1e40af;
  font-weight: 800;
  border-radius: 20px;
  padding: 1px 8px;
  font-size: .68rem;
}
.odoHVFacesTd { color: var(--s5); font-size: .68rem; }
.odoHVVazio { font-size: .75rem; color: var(--s4); text-align: center; padding: 16px 0; font-style: italic; }
.odoHVTotal { color: #16a34a; font-weight: 800; }
.odoHVNav { display: flex; align-items: center; gap: 12px; }
.odoHVNavBtn {
  background: var(--w);
  border: 1.5px solid var(--s3);
  border-radius: 7px;
  padding: 5px 14px;
  font-size: .76rem;
  font-weight: 700;
  color: var(--s7);
  cursor: pointer;
  transition: background .12s;
}
.odoHVNavBtn:hover:not(:disabled) { background: var(--s1); border-color: var(--s5); }
.odoHVNavBtn:disabled { opacity: .4; cursor: default; }
.odoHVNavPos { font-size: .76rem; color: var(--s6); font-weight: 700; min-width: 60px; text-align: center; }

/* ── Arcadas ── */
.odontoPainelArcada {
  background: var(--w); border: 1.5px solid var(--s2);
  border-radius: var(--Rs); padding: 16px 14px;
  overflow-x: auto;
  min-width: 0;
}

/* ── Labels das arcadas ── */
.odontoArcadaLabel {
  font-size: .65rem; font-weight: 800; text-transform: uppercase;
  letter-spacing: .6px; color: var(--s4); text-align: center;
  margin: 2px 0 4px;
}
.odontoArcadaLabel.decidua {
  color: var(--g6);
  font-size: .6rem;
  letter-spacing: .4px;
  font-weight: 700;
}
/* Label da decídua superior: espaço reduzido acima (vem logo após permanente) */
.odontoArcadaLabel.odontoLabelDecSup { margin-top: 10px; margin-bottom: 2px; }
/* Label da decídua inferior: espaço reduzido abaixo (antes da permanente) */
.odontoArcadaLabel.odontoLabelDecInf { margin-top: 2px; margin-bottom: 10px; }

/* ── Linhas de dentes ── */
.odontoLinhaDentes {
  display: flex; justify-content: center; flex-wrap: nowrap;
  gap: 3px; margin-bottom: 2px; min-width: max-content;
}
.odontoLinhaDentes.decidua { opacity: .9; gap: 2px; }

/* ── Divisor central (entre arcadas) ── */
.odontoDivisor {
  border: none; border-top: 2px dashed var(--s3);
  margin: 8px 4px;
}
.odontoLegenda {
  display: flex; gap: 14px; justify-content: center;
  margin-bottom: 12px; flex-wrap: wrap;
}
.odontoLegItem { display: flex; align-items: center; gap: 5px; font-size: .75rem; color: var(--s6); }
.odontoLegBox  { width: 14px; height: 14px; border: 1px solid var(--s3); border-radius: 3px; display: inline-block; }
.odontoLegBox.normal     { background: #ecf0f1; }
.odontoLegBox.selecionada { background: #f1c40f; }
.odontoLegBox.finalizada  { background: #3b82f6; }

/* ── Dente individual ── */
.odontoDente {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  cursor: pointer; border-radius: 6px; padding: 2px; transition: background .12s;
}
.odontoDente:hover { background: var(--b1); }
.odontoDente.deciduo .odontoDenteGraf { width: 34px; height: 34px; }
.odontoDenteNum {
  font-size: .65rem; color: var(--s5); font-weight: 700;
  line-height: 1; user-select: none;
}
.odontoDenteGraf {
  position: relative; width: 44px; height: 44px;
}

/* ── Faces ── */
.odFace {
  position: absolute;
  border: 1px solid #94a3b8;
  background: #ecf0f1;
  transition: background .15s, border-color .15s;
  cursor: pointer;
}
.odFace:hover:not(.finalizada) { background: #bdc3c7; border-color: #64748b; }
.odFace.selecionada  { background: #f1c40f !important; border-color: #d97706 !important; }
.odFace.finalizada   { background: #3b82f6 !important; border-color: #1d4ed8 !important; cursor: default; }

/* Posições das faces (cruzeta) */
.odFace.top    { top:0; left:25%; width:50%; height:25%; clip-path:polygon(20% 0,80% 0,100% 100%,0 100%); }
.odFace.bottom { bottom:0; left:25%; width:50%; height:25%; clip-path:polygon(0 0,100% 0,80% 100%,20% 100%); }
.odFace.left   { top:25%; left:0; width:25%; height:50%; clip-path:polygon(0 20%,100% 0,100% 100%,0 80%); }
.odFace.right  { top:25%; right:0; width:25%; height:50%; clip-path:polygon(0 0,100% 20%,100% 80%,0 100%); }
.odFace.center { top:25%; left:25%; width:50%; height:50%; background:#fff; }

/* ── Painel de orçamento ── */
.odontoPainelOrcamento {
  background: var(--w); border: 1.5px solid var(--s2);
  border-radius: var(--Rs); padding: 16px 14px;
  position: sticky; top: 10px;
}
.odontoOrcTitle { font-size: .88rem; font-weight: 800; color: var(--s8); margin-bottom: 12px; }
.odontoOrcProcRow { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }

.odontoItensWrap { overflow-x: auto; margin-bottom: 12px; }
.odontoItensTabela {
  width: 100%; border-collapse: collapse; font-size: .78rem;
}
.odontoItensTabela th {
  background: var(--s1); color: var(--s6); font-weight: 700;
  padding: 6px 8px; text-align: left;
  border-bottom: 1.5px solid var(--s2);
}
.odontoItensTabela td {
  padding: 6px 8px; border-bottom: 1px solid var(--s1);
  vertical-align: middle;
}
.odontoVazio { text-align: center; color: var(--s3); padding: 16px !important; font-size: .82rem; }
.odontoRemBtn {
  background: none; border: none; color: var(--r4,#ef4444);
  cursor: pointer; font-size: .9rem; padding: 2px 5px; border-radius: 4px;
}
.odontoRemBtn:hover { background: var(--r1,#fee2e2); }

.odontoTotalRow {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 4px; border-top: 1.5px solid var(--s2);
  font-size: .88rem; font-weight: 700; color: var(--s8);
}
.odontoTotalVal { font-size: 1.05rem; color: var(--g7); }

/* ── Busca de paciente ── */
.odontoBuscaRes { max-height: 300px; overflow-y: auto; border:1px solid var(--s2); border-radius:8px; margin-top:4px; }
.odontoPacItem {
  padding: 10px 14px; cursor: pointer; border-bottom: 1px solid var(--s1);
  font-size: .86rem; transition: background .12s;
}
.odontoPacItem:last-child { border-bottom: none; }
.odontoPacItem:hover { background: var(--s1); }
.odontoPacItemNome { font-weight: 600; color: var(--s8); margin-bottom: 2px; }
.odontoPacItemMeta { font-size: .78rem; color: var(--s5); }

/* ── Dente selecionado ── */
.odontoDente.selecionado { background: var(--b1); outline: 2px solid var(--b5); outline-offset: 1px; }

/* ── Imagem anatômica do dente ── */
.odontoDenteImgWrap {
  position: relative;
  display: flex; align-items: center; justify-content: center;
  width: 37px; height: 40px;
}
.odontoDente.deciduo .odontoDenteImgWrap { width: 26px; height: 29px; }
.odontoDenteImg { width: 100%; height: 100%; object-fit: contain; display: block; pointer-events: none; }
.odontoDente.deciduo .odontoDenteImg { width: 26px; height: 29px; }

/* ── Info do dente selecionado (topo do painel lateral) ── */
.odoDenteInfoBox {
  background: var(--s1); border: 1px solid var(--s2);
  border-radius: 8px; padding: 10px 12px;
  margin-bottom: 12px; min-height: 38px;
  display: flex; align-items: center;
}
.odoDenteSelLabel { font-weight: 700; color: var(--b6); font-size: .88rem; }
.odoHint          { color: var(--s4); font-size: .8rem; }

/* ══ PAINEL LATERAL — 3 caixas com tonalidades de verde distintas ══ */

/* ── Caixa 1: Busca Rápida — verde menta claro ── */
#odoBuscaPanel {
  background: #f0fdf4;
  border: 2px solid #86efac;
  border-radius: 10px;
  padding: 10px 12px 4px;
  margin-bottom: 10px;
}
#odoBuscaPanel .odoSideTitulo {
  color: #166534; font-size: .7rem;
}

/* ── Caixa 2: Especialidade — verde sálvia médio ── */
#odoEspPanel {
  background: #dcfce7;
  border: 2px solid #4ade80;
  border-radius: 10px;
  padding: 10px 12px 6px;
  margin-bottom: 10px;
}
#odoEspPanel .odoSideTitulo {
  color: #14532d; font-size: .7rem;
}

/* ── Caixa 3: Intervenção — verde-azulado (teal) escuro ── */
#odoIntPanel {
  background: #ccfbf1;
  border: 2px solid #2dd4bf;
  border-radius: 10px;
  padding: 10px 12px 6px;
  margin-bottom: 10px;
}
#odoIntPanel .odoSideTitulo {
  color: #134e4a; font-size: .7rem;
}

/* ── Título de seção (base) ── */
.odoSideTitulo {
  font-size: .68rem; font-weight: 900; text-transform: uppercase;
  letter-spacing: .07em; color: var(--s5); margin-bottom: 8px;
}

/* ── Container de chips ── */
.odoChipLista { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }

/* ── Chip de especialidade ── */
.odoChip {
  background: rgba(255,255,255,.75); border: 1.5px solid #4ade80;
  border-radius: 20px; padding: 5px 13px;
  font-size: .79rem; font-weight: 700; color: #166534;
  cursor: pointer; transition: all .15s; line-height: 1.3;
}
.odoChip:hover {
  background: #16a34a; border-color: #16a34a; color: #fff;
}
.odoChipAtivo {
  background: #16a34a !important; border-color: #15803d !important;
  color: #fff !important; box-shadow: 0 2px 8px rgba(22,163,74,.35);
}

/* ── Chip de intervenção ── */
.odoChipInt {
  display: flex; flex-direction: column; align-items: flex-start;
  border-radius: 8px; padding: 7px 13px; width: 100%;
  background: rgba(255,255,255,.7); border: 1.5px solid #5eead4;
  color: #134e4a;
}
.odoChipInt:hover {
  background: #0f766e; border-color: #0f766e; color: #fff;
}
.odoChipInt:hover .odoChipVal { color: #99f6e4 !important; }
.odoChipVal {
  font-size: .72rem; color: #0d9488; font-weight: 800;
  margin-top: 2px; letter-spacing: .01em;
}
.odoChipInt .odoChipNomeText {
  font-size: .82rem; font-weight: 700; line-height: 1.3;
}

/* ── Busca rápida — campo de input ── */
.odoBuscaWrap { position: relative; margin-bottom: 6px; }
.odoBuscaInp {
  width: 100%; box-sizing: border-box;
  padding: 8px 32px 8px 10px;
  border: 1.5px solid #86efac; border-radius: 8px;
  font-size: .83rem; font-weight: 600;
  background: rgba(255,255,255,.85); color: #166534;
  transition: border-color .15s, box-shadow .15s;
}
.odoBuscaInp::placeholder { color: #4ade80; font-weight: 500; }
.odoBuscaInp:focus {
  outline: none; border-color: #16a34a;
  box-shadow: 0 0 0 3px rgba(22,163,74,.18);
  background: #fff;
}
.odoBuscaClear {
  position: absolute; right: 7px; top: 50%; transform: translateY(-50%);
  background: none; border: none; cursor: pointer;
  color: #4ade80; font-size: .82rem; padding: 2px 4px; line-height: 1;
  border-radius: 4px; transition: color .12s;
}
.odoBuscaClear:hover { color: #dc2626; }

/* ── Dropdown de resultados ── */
.odoBuscaDrop {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0;
  background: #fff; border: 2px solid #4ade80;
  border-radius: 10px; box-shadow: 0 10px 28px rgba(22,163,74,.18);
  z-index: 50; max-height: 260px; overflow-y: auto;
}
.odoBuscaItem {
  padding: 9px 13px; cursor: pointer;
  border-bottom: 1px solid #dcfce7; transition: background .1s;
}
.odoBuscaItem:last-child { border-bottom: none; }
.odoBuscaItem:hover { background: #f0fdf4; }
.odoBuscaItemNome {
  font-size: .84rem; font-weight: 700; color: #166534;
  line-height: 1.3;
}
.odoBuscaItemMeta {
  font-size: .74rem; color: #4b7a60; margin-top: 3px;
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
}
.odoBuscaItemEsp  { font-style: italic; color: #6b7280; }
.odoBuscaItemVal  { color: #0d9488; font-weight: 800; font-size: .76rem; }
.odoBuscaVazio    { padding: 12px; font-size: .8rem; color: #9ca3af; text-align: center; }
.odoBuscaDestaque { background: #bbf7d0; color: #14532d; border-radius: 3px; padding: 0 2px; font-weight: 900; }

/* ── Modal: seletor visual de faces ── */
.odoFacePickArea {
  position: relative;
  width: 230px; height: 230px;
  margin: 0 auto;
}
.odoFacePickLbl {
  position: absolute;
  font-size: .66rem; font-weight: 700;
  color: var(--s6); text-align: center;
  line-height: 1.25; pointer-events: none;
}
.odoFacePickLbl.lblTop    { top: 4px; left: 50%; transform: translateX(-50%); }
.odoFacePickLbl.lblBottom { bottom: 4px; left: 50%; transform: translateX(-50%); }
.odoFacePickLbl.lblLeft   { top: 50%; left: 4px; transform: translateY(-50%); writing-mode: vertical-lr; text-orientation: mixed; }
.odoFacePickLbl.lblRight  { top: 50%; right: 4px; transform: translateY(-50%); writing-mode: vertical-lr; text-orientation: mixed; }

.odoFacePickCruzeta {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 140px; height: 140px;
}

/* Faces da cruzeta do modal (clicáveis, maiores que as do odontograma) */
.odFacePick {
  position: absolute;
  border: 2px solid #94a3b8;
  background: #ecf0f1;
  cursor: pointer;
  transition: background .15s, border-color .15s, filter .1s;
}
.odFacePick:hover:not(.selecionada) { background: #cbd5e1; border-color: #64748b; filter: brightness(0.95); }
.odFacePick.selecionada             { background: #f1c40f !important; border-color: #d97706 !important; }
.odFacePick.top    { top:0; left:25%; width:50%; height:25%; clip-path:polygon(20% 0,80% 0,100% 100%,0 100%); }
.odFacePick.bottom { bottom:0; left:25%; width:50%; height:25%; clip-path:polygon(0 0,100% 0,80% 100%,20% 100%); }
.odFacePick.left   { top:25%; left:0; width:25%; height:50%; clip-path:polygon(0 20%,100% 0,100% 100%,0 80%); }
.odFacePick.right  { top:25%; right:0; width:25%; height:50%; clip-path:polygon(0 0,100% 20%,100% 80%,0 100%); }
.odFacePick.center {
  top:25%; left:25%; width:50%; height:50%;
  background: #fff;
  display: flex; align-items: center; justify-content: center;
}
.odFacePick.center.selecionada { background: #f1c40f !important; }
.odFacePickCenterLbl {
  font-size: .58rem; font-weight: 700; color: var(--s5);
  pointer-events: none; user-select: none; line-height: 1;
}

/* Texto de faces selecionadas */
.odoFacesSelText {
  font-size: .78rem;
  color: var(--s5); min-height: 18px;
  font-style: italic;
}

/* ── SVG de símbolos sobre o odontograma ── */
.odontoDenteSVG {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 6;
  overflow: visible;
}

/* ── Pills de status da intervenção (legado) ── */
.odoStatusPill {
  padding: 6px 14px;
  border: 1.5px solid var(--s3); border-radius: 20px;
  background: var(--s0); cursor: pointer;
  font-size: .82rem; font-weight: 600; color: var(--s6);
  transition: all .13s; user-select: none;
}
.odoStatusPill:hover { background: var(--s2); border-color: var(--s4); }
.odoStatusPill.odoStatusPillAtivo[data-status="a_realizar"] {
  background: #fef2f2; border-color: #ef4444; color: #b91c1c;
}
.odoStatusPill.odoStatusPillAtivo[data-status="executado"] {
  background: #f0fdf4; border-color: #22c55e; color: #15803d;
}
.odoStatusPill.odoStatusPillAtivo[data-status="existente"] {
  background: #eff6ff; border-color: #3b82f6; color: #1d4ed8;
}

/* ── Botões de cor visual no odontograma ── */
.odoCorBtn {
  display: flex; align-items: center; gap: 10px;
  flex: 1; padding: 9px 12px;
  border: 2px solid var(--s3); border-radius: 10px;
  background: var(--s0); cursor: pointer;
  transition: all .13s; user-select: none;
  text-align: left;
}
.odoCorBtn:hover { background: var(--s1); border-color: var(--s4); }
.odoCorBolinha {
  width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
  box-shadow: 0 1px 3px rgba(0,0,0,.18);
}
.odoCorLabel {
  font-size: .78rem; font-weight: 700; color: var(--s7); line-height: 1.3;
}
.odoCorSub { font-size: .68rem; font-weight: 400; color: var(--s5); }

.odoCorBtn.odoStatusPillAtivo[data-status="a_realizar"] {
  background: #fef2f2; border-color: #ef4444;
}
.odoCorBtn.odoStatusPillAtivo[data-status="a_realizar"] .odoCorLabel { color: #b91c1c; }

.odoCorBtn.odoStatusPillAtivo[data-status="executado"] {
  background: #f0fdf4; border-color: #22c55e;
}
.odoCorBtn.odoStatusPillAtivo[data-status="executado"] .odoCorLabel { color: #15803d; }

.odoCorBtn.odoStatusPillAtivo[data-status="existente"] {
  background: #eff6ff; border-color: #3b82f6;
}
.odoCorBtn.odoStatusPillAtivo[data-status="existente"] .odoCorLabel { color: #1d4ed8; }

/* ── Checkboxes de face (pill toggle) ── */
.odoFaceChk {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 14px;
  border: 1.5px solid var(--s3); border-radius: 20px;
  cursor: pointer; user-select: none;
  font-size: .82rem; font-weight: 600; color: var(--s6);
  background: var(--s0);
  transition: background .13s, border-color .13s, color .13s;
}
.odoFaceChk:hover { background: var(--s2); border-color: var(--s4); }
.odoFaceChk input[type=checkbox] { display: none; }
.odoFaceChk:has(input:checked) {
  background: #f0fdf4; border-color: #22c55e; color: #15803d;
}
.odoFaceChk:has(input:checked):hover { background: #dcfce7; }

/* ══════════════════════════════════════════════════════════════════════
   CAIXA DO DIA (CaixaMod)
══════════════════════════════════════════════════════════════════════ */

/* Seção oculta por padrão */
#secCaixa    { display: none; max-width: 100%; padding: 20px 24px; }
#secAuditoria{ display: none; max-width: 100%; padding: 20px 24px; }
body.sb-caixa     #secCaixa     { display: block !important; }
body.sb-auditoria #secAuditoria { display: block !important; }

/* Header */
.cxHdr {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px; margin-bottom: 20px; flex-wrap: wrap;
}
.cxHdrTitle { font-size: 1.18rem; font-weight: 800; color: var(--s9); }
.cxHdrSub   { font-size: .8rem; color: var(--s5); margin-top: 3px; }

/* Botão vermelho — Fechar Caixa */
.bDng {
  background: var(--r6); color: var(--w); border: none;
  border-radius: var(--Rs); padding: 7px 16px; font-weight: 700;
  font-size: .82rem; cursor: pointer; transition: background .15s;
}
.bDng:hover { background: var(--r7); }

/* Badge de turno */
.cxTurnoBadge       { font-size: .78rem; font-weight: 700; padding: 3px 10px;
                       border-radius: 20px; display: inline-block; }
.cxTurnoBadge.ativo  { background: var(--g1); color: var(--g7); }
.cxTurnoBadge.fechado{ background: var(--r1); color: var(--r7); }

/* Termômetro de comissão */
.cxTermometro {
  background: linear-gradient(135deg, var(--g9) 0%, #166534 100%);
  border-radius: var(--R); padding: 20px 24px; color: var(--w);
  margin-bottom: 20px; box-shadow: var(--shm);
}
.cxTermTitle { font-size: .78rem; font-weight: 700; opacity: .75;
               text-transform: uppercase; letter-spacing: .07em; }
.cxTermVal   { font-size: 2rem; font-weight: 900; margin: 6px 0 12px;
               font-variant-numeric: tabular-nums; }
.cxTermBarraWrap { display: flex; align-items: center; gap: 10px; }
.cxTermBarra {
  flex: 1; height: 10px; background: rgba(255,255,255,.2);
  border-radius: 10px; overflow: hidden;
}
.cxTermPreench {
  height: 100%; background: #86efac; border-radius: 10px;
  transition: width .6s ease;
}
.cxTermPct  { font-size: .82rem; font-weight: 800; min-width: 36px; text-align: right; }
.cxTermMeta { font-size: .72rem; opacity: .65; margin-top: 8px; }

/* Stats row */
.cxStatsRow {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 20px;
}
.cxStatCard {
  background: var(--w); border: 1px solid var(--s2); border-radius: var(--R);
  padding: 14px 18px; text-align: center; box-shadow: var(--sh);
}
.cxStatNum { font-size: 1.35rem; font-weight: 800; color: var(--s9);
             font-variant-numeric: tabular-nums; }
.cxStatLbl { font-size: .72rem; color: var(--s5); margin-top: 3px;
             text-transform: uppercase; font-weight: 700; letter-spacing: .05em; }

/* Lista */
.cxListLabel { font-size: .78rem; font-weight: 800; color: var(--s5);
               text-transform: uppercase; letter-spacing: .07em; margin-bottom: 10px; }
.cxListWrap  { display: flex; flex-direction: column; gap: 10px; }

/* Card de pendente */
.cxCard {
  background: var(--w); border: 1px solid var(--s2); border-radius: var(--R);
  padding: 14px 16px; display: flex; align-items: center;
  justify-content: space-between; gap: 12px; box-shadow: var(--sh);
  transition: box-shadow .15s;
}
.cxCard:hover { box-shadow: var(--shm); }
.cxCardLeft  { display: flex; flex-direction: column; gap: 2px; }
.cxCardVal   { font-size: 1.1rem; font-weight: 800; color: var(--s9);
               font-variant-numeric: tabular-nums; }
.cxCardData  { font-size: .72rem; color: var(--s4); }
.cxCardObs   { font-size: .8rem; color: var(--s5); max-width: 420px;
               white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cxBtnReceber{ white-space: nowrap; }

/* Estado vazio */
.cxVazio {
  background: var(--g0); border: 1px solid var(--g1); border-radius: var(--R);
  padding: 24px; text-align: center; color: var(--g7);
  font-weight: 600; font-size: .9rem;
}

/* ── CAIXA — KPIs redesenhados ── */
.cxKpisRow {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(160px,1fr));
  gap: 12px; margin-bottom: 20px;
}
.cxKpiCard {
  background: var(--w); border: 1px solid var(--s2); border-radius: var(--R);
  padding: 14px 16px; box-shadow: var(--sh);
}
.cxKpiCard.cxKpiG  { border-left: 4px solid var(--g6); }
.cxKpiCard.cxKpiY  { border-left: 4px solid #f59e0b; }
.cxKpiCard.cxKpiGr { border-left: 4px solid var(--g7); }
.cxKpiCard.cxKpiB  { border-left: 4px solid var(--r5); }
.cxKpiCard.cxKpiGd { border-left: 4px solid var(--b6); }
.cxKpiVal { font-size: 1.25rem; font-weight: 900; color: var(--s9); }
.cxKpiLbl { font-size: .7rem; color: var(--s5); margin-top: 4px; font-weight: 600; }

/* ── CAIXA — Tabela de atendimentos ── */
.cxTableScroll { overflow-x: visible; background: var(--w);
  border: 1px solid var(--s2); border-radius: var(--R); box-shadow: var(--sh); }
.cxTable { width: 100%; border-collapse: collapse; font-size: .79rem; table-layout: fixed; }
.cxTable colgroup .col-hora  { width: 54px; }
.cxTable colgroup .col-pac   { width: 14%; }
.cxTable colgroup .col-proc  { width: 14%; }
.cxTable colgroup .col-prof  { width: 13%; }
.cxTable colgroup .col-recep { width: 12%; }
.cxTable colgroup .col-val   { width: 84px; }
.cxTable colgroup .col-forma { width: 82px; }
.cxTable colgroup .col-st    { width: 100px; }
.cxTable colgroup .col-ac    { width: 108px; }
.cxTable thead th {
  padding: 8px 8px; text-align: left; font-size: .67rem; font-weight: 800;
  color: var(--s5); text-transform: uppercase; letter-spacing: .05em;
  background: var(--s0); border-bottom: 2px solid var(--s2); white-space: nowrap;
  position: sticky; top: 0; z-index: 1; overflow: hidden; text-overflow: ellipsis;
}
.cxTable tbody tr { border-bottom: 1px solid var(--s2); transition: background .1s; }
.cxTable tbody tr:last-child { border-bottom: none; }
.cxTable tbody tr:hover { background: var(--s0); }
.cxTable td { padding: 7px 8px; vertical-align: middle; overflow: hidden;
              overflow-wrap: break-word; word-break: break-word; }
.cxRowPend  { background: #fffbf0; }
.cxRowPend:hover { background: #fef9e7 !important; }
.cxTdHora  { white-space: nowrap; font-weight: 700; color: var(--s7); font-size: .82rem; }
.cxTdPac   { font-weight: 700; }
.cxTdProc  { color: var(--s7); }
.cxTdProf  { color: var(--s6); font-size: .77rem; }
.cxTdRecep { color: var(--s5); font-size: .77rem; }
.cxTdVal   { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.cxTdForma { font-size: .77rem; color: var(--s5); white-space: nowrap; }
.cxStPago  { display:inline-block; background:var(--g1); color:var(--g7);
  font-size:.72rem; font-weight:700; padding:3px 9px; border-radius:20px; white-space:nowrap; }
.cxStPend  { display:inline-block; background:#fef3c7; color:#92400e;
  font-size:.72rem; font-weight:700; padding:3px 9px; border-radius:20px; white-space:nowrap; }

/* Modal de pagamento — valor destaque */
.cxModalValorBox {
  background: var(--s0); border: 1px solid var(--s2); border-radius: var(--Rs);
  padding: 14px 18px; text-align: center; margin-bottom: 18px;
}
.cxModalValorLbl { font-size: .72rem; color: var(--s5); text-transform: uppercase;
                   font-weight: 700; letter-spacing: .07em; }
.cxModalValor    { font-size: 1.6rem; font-weight: 900; color: var(--g7);
                   font-variant-numeric: tabular-nums; margin-top: 4px; }

/* ══════════════════════════════════════════════════════════════════════
   AUDITORIA FINANCEIRA (AuditoriaMod)
══════════════════════════════════════════════════════════════════════ */

/* Header */
.audHdr {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px; margin-bottom: 14px; flex-wrap: wrap;
}
.audHdrTitle { font-size: 1.18rem; font-weight: 800; color: var(--s9); }
.audHdrSub   { font-size: .8rem; color: var(--s5); margin-top: 3px; }

/* Filtros — barra única compacta */
.audFiltros {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end;
  margin-bottom: 14px; padding: 10px 14px;
  background: var(--w); border: 1px solid var(--s2); border-radius: var(--R);
}
.audFiltros label { font-size: .73rem; color: var(--s5); font-weight: 700;
                    text-transform: uppercase; letter-spacing: .04em; }
.audFiltros select, .audFiltros input[type="date"] {
  font-size: .8rem; padding: 5px 8px; }

/* KPIs — faixa horizontal sempre em 5 colunas */
.audKpis {
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: 10px; margin-bottom: 14px;
}
.audKpiCard {
  background: var(--w); border: 1px solid var(--s2); border-radius: var(--R);
  padding: 10px 14px; box-shadow: var(--sh);
  display: flex; flex-direction: column; gap: 2px;
}
.audKpiCard.audKpiG { border-left: 4px solid var(--g6); }
.audKpiCard.audKpiB { border-left: 4px solid var(--b5); }
.audKpiCard.audKpiY { border-left: 4px solid var(--a5); }
.audKpiCard.audKpiR { border-left: 4px solid var(--r6); }
.audKpiVal { font-size: 1.1rem; font-weight: 900; color: var(--s9);
             font-variant-numeric: tabular-nums; }
.audKpiLbl { font-size: .67rem; color: var(--s5); margin-top: 2px;
             text-transform: uppercase; font-weight: 700; letter-spacing: .04em; }

/* Tabela — full width, sem min-width forçado */
.audTableWrap { overflow-x: auto; background: var(--w);
                border: 1px solid var(--s2); border-radius: var(--R);
                box-shadow: var(--sh); }
.audTable { width: 100%; border-collapse: collapse; font-size: .79rem; }
.audTable thead th {
  padding: 9px 10px; text-align: left; font-size: .68rem; font-weight: 800;
  color: var(--s5); text-transform: uppercase; letter-spacing: .05em;
  background: var(--s0); border-bottom: 2px solid var(--s2); white-space: nowrap;
  position: sticky; top: 0; z-index: 1;
}
.audTable tbody tr { border-bottom: 1px solid var(--s2); transition: background .1s; }
.audTable tbody tr:last-child { border-bottom: none; }
.audTable tbody tr:hover { background: var(--s0); }
.audTable td { padding: 8px 10px; vertical-align: middle; }
.audNum     { font-variant-numeric: tabular-nums; font-weight: 700; text-align: right; }
.audColorG  { color: var(--g7); }
.audColorB  { color: var(--b5); }
.audVazio   { text-align: center; color: var(--s4); padding: 28px !important;
              font-size: .86rem; }
.audAberto  { color: var(--a6); font-weight: 600; font-size: .8rem; }
.audTs      { font-size: .75rem; color: var(--s4); }

/* Badges de status */
.audBadge {
  display: inline-block; padding: 3px 9px; border-radius: 20px;
  font-size: .69rem; font-weight: 700; white-space: nowrap;
}
.audBdAberto { background: var(--a1); color: var(--a8); }
.audBdPend   { background: var(--r1); color: var(--r7); }
.audBdOk     { background: var(--g1); color: var(--g9); }
/* Linha de atendimento pendente */
.audRowPend  { background: #fffbf0; }
.audRowPend:hover { background: #fef9e7 !important; }
/* Colunas — larguras compactas com truncamento */
.audTdData  { white-space: nowrap; font-size: .77rem; width: 72px; }
.audHora    { color: var(--s4); font-size: .71rem; font-weight: 400; }
.audTdPac   { font-weight: 700; max-width: 150px; overflow: hidden;
              text-overflow: ellipsis; white-space: nowrap; }
.audTdProf  { color: var(--s6); font-size: .77rem; max-width: 130px;
              overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audTdProc  { color: var(--s7); max-width: 140px; overflow: hidden;
              text-overflow: ellipsis; white-space: nowrap; }
.audTdRecep { color: var(--s5); font-size: .77rem; max-width: 110px;
              overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audPercCol { color: var(--b6); white-space: nowrap; text-align: center; }
.audTdForma { font-size: .77rem; color: var(--s5); white-space: nowrap; }

/* ══════════════════════════════════════════════════════════════════════
   CADASTRO DE UNIDADES (UnidadesMod)
══════════════════════════════════════════════════════════════════════ */
.uniCard{display:flex;align-items:center;gap:16px;background:var(--w);border:1.5px solid var(--s2);border-radius:12px;padding:18px 20px;margin-bottom:14px;transition:box-shadow .15s}
.uniCard:hover{box-shadow:0 4px 18px rgba(0,0,0,.08)}
.uniCardLogo{width:60px;height:60px;border-radius:8px;border:1px solid var(--s2);background:var(--s0);display:flex;align-items:center;justify-content:center;font-size:1.6rem;flex-shrink:0;overflow:hidden}
.uniCardLogo img{width:100%;height:100%;object-fit:contain}
.uniCardInfo{flex:1;min-width:0}
.uniCardNome{font-size:.98rem;font-weight:800;color:var(--s9);margin-bottom:4px}
.uniCardMeta{font-size:.78rem;color:var(--s5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uniCardVazio{color:var(--a6);font-style:italic}
.uniCardBadge{font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:20px;white-space:nowrap;flex-shrink:0}
.uniCardBadge.ok{background:var(--g1);color:var(--g8)}
.uniCardBadge.pend{background:#fff8e1;color:#b45309;border:1px solid #fcd34d}
.uniFormSec{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--s5);padding:10px 0 6px;border-bottom:1.5px solid var(--s2);margin-bottom:12px}

/* ══════════════════════════════════════════════════════════════════════
   PROCEDIMENTOS ODONTOLÓGICOS (OdontoProcMod)
══════════════════════════════════════════════════════════════════════ */
#secAdminOdontoproc { max-width: 900px; margin: 0 auto; padding: 24px 20px; }
.opGrupo { margin-bottom: 20px; border: 1px solid var(--s2); border-radius: 10px; overflow: hidden; }
.opGrupoHdr {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--s1); padding: 10px 14px; gap: 10px;
  border-bottom: 1px solid var(--s2);
}
.opGrupoHdrInfo { display: flex; align-items: center; gap: 10px; min-width: 0; }
.opGrupoNome {
  font-size: .85rem; font-weight: 800; color: var(--s8); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.opGrupoStatus { font-size: .72rem; font-weight: 700; padding: 2px 8px;
  border-radius: 20px; white-space: nowrap; flex-shrink: 0; }
.opGrupoStatus.ativo  { background: var(--g1); color: var(--g7); }
.opGrupoStatus.inativo{ background: var(--s2); color: var(--s5); }
.opGrupoAcoes { display: flex; gap: 6px; flex-shrink: 0; }
.opGrupoTabela { overflow-x: auto; }
.opGrupoVazio { padding: 18px 16px; font-size: .8rem; color: var(--s4); font-style: italic; }

/* Botão Odontograma no Prontuário */
.prnBtnOdonto {
  background: var(--b5,#3b82f6); color: #fff; border: none;
  font-size: .75rem; font-weight: 700; padding: 5px 12px;
  border-radius: 6px; cursor: pointer; transition: background .15s;
}
.prnBtnOdonto:hover { background: var(--b6,#2563eb); }

/* ═══════════════════════════════════════════════════════════════════════
   RESPONSIVO GERAL — Tablet, Mobile e telas pequenas
   Breakpoints: ≤1024px | ≤768px | ≤600px | ≤480px | ≤360px
   Complementa as @media já existentes — não as substitui.
═══════════════════════════════════════════════════════════════════════ */

/* ── ≤1024px: Tablet deitado / desktop compacto ─────────────────────── */
@media(max-width:1024px){
  /* Unit bar — botão dropdown menor */
  .unitDropBtn{min-width:150px}
  /* Odontograma — painéis inferiores em mobile */
  .odontoPainelOrcamento{position:relative;top:auto}
  /* KPI grid — minimums menores */
  .kpiGrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
  /* Auditoria — KPIs em 3 colunas */
  .audKpis{grid-template-columns:repeat(3,1fr)}
  /* Prontuário — timeline lateral stack */
  .prnCorpo{flex-direction:column}
  .prnTimeline{width:100%;max-height:280px;flex-shrink:unset;overflow-y:auto}
  /* Secções admin sem max-width rígido */
  #secAdminCadastro,#secAdminControle{padding:20px 18px}
  #secAdminRecepcao{max-width:100%;padding:20px 18px}
  #secAuditoria{max-width:100%}
  #secCaixa{max-width:100%}
}

/* ── ≤768px: Tablet retrato ──────────────────────────────────────────── */
@media(max-width:768px){
  /* Unit bar */
  .ubIn{padding:5px 12px;gap:6px}
  .unitDropBtn{min-width:130px;font-size:.8rem;padding:5px 10px}
  .ubLabel{display:none}
  /* Header */
  .hIn{padding:9px 14px;gap:6px}
  .bName{font-size:1rem}
  .bSub{display:none}
  /* Main */
  main{padding:10px 10px 56px}
  /* KPI grid — 1 coluna */
  .kpiGrid{grid-template-columns:1fr}
  /* rG3 — 2 colunas */
  .rG3,.rG3b{grid-template-columns:1fr 1fr}
  /* Modais mais largos no tablet */
  .mBox{max-width:520px;width:96%;padding:22px 18px}
  /* Comparativo — 1 coluna */
  .compGrid{grid-template-columns:1fr!important}
  .compUnit{border-right:none!important;border-bottom:1px solid var(--s2)}
  /* Auditoria — 3 cols */
  .audKpis{grid-template-columns:repeat(3,1fr);gap:8px}
  /* Recepção — stats 2 cols */
  .rcpStats{grid-template-columns:repeat(2,1fr)}
  /* Recepção — card ações quebra para baixo */
  .rcpCard{flex-wrap:wrap}
  .rcpCardAcoes{flex-direction:row;flex-wrap:wrap;width:100%;justify-content:flex-start}
  /* secModHdr wrap */
  .secModHdr{align-items:flex-start}
  /* Caixa / Recebimentos — padding */
  #secCaixa,#secRecebimentos{padding:16px 14px!important}
  /* Agenda — grade mínima menor */
  .agGradeHdrCol,.agGradeCol{min-width:90px}
  /* Receb KPIs */
  .recebKpis{grid-template-columns:repeat(2,1fr)}
  /* Finance sidebar — já tem breakpoint 900px mas reforça */
  .finMesSidebar{position:relative!important;top:auto!important;max-height:none!important;width:100%!important}
}

/* ── ≤600px: Mobile grande / phablet ────────────────────────────────── */
@media(max-width:600px){
  /* Unit bar */
  .ubIn{padding:4px 10px;gap:4px}
  .ubBtn{font-size:.7rem;padding:3px 8px}
  .ubBtnImp{display:none}
  /* Header */
  .bLogo{height:34px;min-width:34px;font-size:17px}
  .bName{font-size:.92rem}
  .hIn{padding:8px 12px}
  #saveInd{display:none}
  /* Main */
  main{padding:8px 8px 60px}
  /* rG3 — 1 coluna */
  .rG3,.rG3b{grid-template-columns:1fr}
  /* Modais */
  .mBox{padding:18px 14px;border-radius:12px;width:97%}
  /* Agenda — grade body menor */
  .agGradeBody{height:calc(100vh - 250px);min-height:280px}
  .agGradeHdrCol,.agGradeCol{min-width:76px}
  /* Agenda — filtros wrap */
  .agNavRow{flex-direction:column;align-items:flex-start}
  .agNavLeft,.agNavRight{width:100%}
  .agFiltro{min-width:100%!important;font-size:.8rem}
  /* Auditoria — 2 colunas KPIs */
  .audKpis{grid-template-columns:repeat(2,1fr)}
  /* Home cards */
  .homeCards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
  .homeCard{padding:14px 12px;gap:10px}
  .homeCardIco{width:38px;height:38px;font-size:1.1rem}
  /* Comparativo total */
  .compTotais{grid-template-columns:repeat(2,1fr)}
  /* Secções com padding reduzido */
  #secAdminCadastro,#secAdminControle{padding:14px 12px}
  #secAdminRecepcao{padding:14px 12px}
  #secAuditoria,#secCaixa{padding:14px 12px!important}
  /* secModHdr — empilha */
  .secModHdr{flex-direction:column;align-items:flex-start;gap:8px}
  .secModHdr .btn,.secModHdr button{align-self:flex-start}
  /* Recepção — card compacto */
  .rcpCard{padding:12px 14px;gap:10px}
  .rcpCardNome{font-size:.92rem}
  .rcpCardMeta{font-size:.74rem}
  .rcpStatusBtns{gap:4px}
  .rcpStBtn{font-size:.72rem;padding:4px 10px}
  /* Pacientes form grid */
  .patFormGrid{grid-template-columns:1fr 1fr}
  /* Prontuário — compact */
  .prnTimeline{max-height:200px}
  body.sb-prontuario main{height:calc(100vh - 74px)}
  /* kpiGrid gap */
  .kpiGrid{gap:10px}
  /* Toast full width */
  #toast{left:50%;width:calc(100% - 24px);text-align:center;white-space:normal}
}

/* ── ≤480px: Mobile ─────────────────────────────────────────────────── */
@media(max-width:480px){
  /* Unit bar — sem wrap forçado */
  .ubIn{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .unitDropBtn{min-width:110px;font-size:.76rem;padding:4px 8px}
  .ubLabel{display:none}
  /* Header ainda mais compacto */
  .hIn{padding:7px 10px}
  .bLogo{height:30px;min-width:30px;font-size:15px}
  .bName{font-size:.84rem}
  .brand{gap:8px}
  .hR{gap:4px}
  /* Main */
  main{padding:6px 6px 62px}
  /* Seção labels */
  .secL{font-size:.7rem;margin:18px 0 9px}
  /* KPI values compactos */
  .rV{font-size:1.25rem}
  .rLb{font-size:.62rem}
  /* Botões de modal empilhados */
  .mActs{flex-wrap:wrap}
  .mActs>.btn{flex:1 1 auto;justify-content:center;min-width:120px}
  /* Auditoria KPIs gap menor */
  .audKpis{gap:6px}
  .audKpi{padding:10px 8px!important}
  /* Home welcome */
  .homeWelcome{padding:16px 14px}
  .homeWelcomeTitle{font-size:1.05rem}
  /* Recebimentos filtros */
  .recebFiltros{flex-direction:column!important;align-items:stretch!important}
  .recebFiltros .afInp,.recebFiltros select,.recebFiltros .btn{width:100%}
  /* cxTableScroll tabela — colunas ocultam no mobile */
  .cxTdRecep,.audTdRecep{display:none}
  /* Agenda navegação */
  .agNavLeft{flex-wrap:wrap}
  .agTitulo{font-size:.9rem;min-width:auto}
  /* Triagem grid */
  .trgGrid6{grid-template-columns:repeat(2,1fr)!important}
  /* Odontograma botões */
  .odBtns{flex-wrap:wrap}
  /* recepção botão abre triagem e prontuário */
  .rcpCardAcoes{flex-direction:column}
  /* Pacientes form grid — 1 coluna */
  .patFormGrid{grid-template-columns:1fr}
  .patFG.sp2,.patFG.sp3{grid-column:span 1}
  /* Modal agenda mais compacta */
  .agBox{max-width:100%!important}
  /* Prontuário body */
  body.sb-prontuario main{height:calc(100vh - 70px)}
  /* Caixa / Receb */
  #secCaixa,#secRecebimentos{padding:10px 8px!important}
  .cxKpisRow{grid-template-columns:repeat(2,1fr);gap:8px}
  .recebKpis{grid-template-columns:repeat(2,1fr);gap:8px}
  /* Finance */
  .finMainContent .topGrid{grid-template-columns:1fr}
}

/* ── ≤360px: Mobile pequeno ─────────────────────────────────────────── */
@media(max-width:360px){
  .hIn{padding:6px 8px}
  .bName{font-size:.78rem}
  .bLogo{height:28px;min-width:28px;font-size:13px}
  main{padding:4px 4px 62px}
  .btn{padding:6px 10px;font-size:.77rem}
  .homeWelcomeTitle{font-size:.95rem}
  .homeWelcomeSub{font-size:.78rem}
  .audKpis{grid-template-columns:1fr 1fr}
  .recebKpis{grid-template-columns:1fr 1fr}
  .rcpStats{grid-template-columns:repeat(2,1fr)}
  .mBox{padding:14px 12px}
  main{padding:4px 4px 62px}
}

/* ══════════════════════════════════════════════════════════════════
   ANAMNESE ODONTOLÓGICA
══════════════════════════════════════════════════════════════════ */

/* Cada bloco de pergunta */
.anamPergunta {
  padding: 12px 0;
  border-bottom: 1px solid var(--s2);
}
.anamPergunta:last-child { border-bottom: none; }

/* Label da pergunta */
.anamPergLabel {
  font-size: .82rem;
  font-weight: 700;
  color: var(--s9);
  margin-bottom: 8px;
  line-height: 1.4;
}

/* Row de radio buttons */
.anamRadioRow {
  display: flex;
  gap: 20px;
  margin-bottom: 8px;
}
.anamRadioLabel {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .85rem;
  font-weight: 600;
  color: var(--s7);
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 20px;
  border: 1.5px solid var(--s2);
  transition: background .12s, border-color .12s;
  user-select: none;
}
.anamRadioLabel:hover { background: var(--s1); border-color: var(--s4); }
.anamRadioLabel input[type="radio"] {
  accent-color: var(--g6);
  width: 15px; height: 15px;
  cursor: pointer;
}

/* Input condicional (aparece quando SIM é selecionado) */
.anamCondicional {
  margin-top: 2px;
  transition: opacity .15s;
}

/* Textarea de obs */
.anamTextarea {
  resize: vertical;
  min-height: 70px;
}

/* Highlight ao selecionar SIM */
.anamRadioLabel:has(input:checked) {
  background: var(--g1);
  border-color: var(--g6);
  color: var(--g9);
}

/* ─── Overlay genérico para modais de módulos ─── */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  overflow-y: auto;
}
.modalBox {
  background: var(--w);
  border-radius: var(--R);
  padding: 26px 24px 22px;
  box-shadow: 0 12px 48px rgba(0,0,0,.3);
  animation: pop .18s ease;
  max-height: 92vh;
  overflow-y: auto;
  width: 100%;
}
.modalHdr {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 18px;
}
.modalHdr h3 {
  font-size: .98rem;
  font-weight: 800;
  color: var(--s9);
  margin: 0;
}

/* ═══════════════════════════════════════════════════════════════════
   MÓDULO DE ESTOQUE
═══════════════════════════════════════════════════════════════════ */
#secEstoque {
  padding: 0;
}
.estModHdr {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  padding: 20px 24px 0;
}
.estModTitulo {
  font-size: 1.3rem;
  font-weight: 900;
  color: var(--s9);
}
.estModSub {
  font-size: .8rem;
  color: var(--s5);
  margin-top: 2px;
}
.estModActs { display: flex; gap: 8px; flex-wrap: wrap; }

/* Sub-abas */
.estSubTabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--s2);
  margin: 16px 24px 0;
  overflow-x: auto;
}
.estAba {
  padding: 9px 20px;
  font-size: .85rem;
  font-weight: 700;
  color: var(--s5);
  background: none;
  border: none;
  border-bottom: 3px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color .15s, border-color .15s;
}
.estAba:hover { color: var(--s8); }
.estAbaAtiva {
  color: var(--g7);
  border-bottom-color: var(--g6);
}

/* Conteúdo de cada aba */
.estSection { padding: 18px 24px 32px; }

/* Cabeçalho interno da aba */
.estSecHdr {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 16px;
}
.estSecTitulo { font-size: .95rem; font-weight: 800; color: var(--s8); }

/* Tabela */
.estTableWrap {
  overflow-x: auto;
  border-radius: var(--Rs);
  border: 1px solid var(--s2);
}
.estTable {
  width: 100%;
  border-collapse: collapse;
  font-size: .82rem;
}
.estTable thead tr {
  background: var(--s1);
}
.estTable th {
  padding: 10px 12px;
  text-align: left;
  font-size: .76rem;
  font-weight: 700;
  color: var(--s6);
  text-transform: uppercase;
  letter-spacing: .04em;
  border-bottom: 1px solid var(--s2);
  white-space: nowrap;
}
.estTable td {
  padding: 9px 12px;
  border-bottom: 1px solid var(--s1);
  color: var(--s8);
  vertical-align: middle;
}
.estTable tbody tr:last-child td { border-bottom: none; }
.estTable tbody tr:hover td { background: var(--s1); }
.estRowAlerta td { background: #fef9c3 !important; }
.estTableSm th, .estTableSm td { padding: 6px 10px; }

/* Badges */
.estBadge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 20px;
  font-size: .72rem;
  font-weight: 700;
}
.estBadgeGreen  { background: var(--g1);  color: var(--g8);  }
.estBadgeRed    { background: #fee2e2;    color: #991b1b;    }
.estBadgeYellow { background: #fef9c3;    color: #854d0e;    }
.estBadgeBlue   { background: var(--b1);  color: var(--b8);  }
.estBadgeGray   { background: var(--s1);  color: var(--s6);  }

/* Tipo movimentação */
.estMovTipo {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: .75rem;
  font-weight: 700;
}
.estTipoEnt { background: var(--g1); color: var(--g8); }
.estTipoSai { background: #fee2e2;   color: #991b1b;   }
.estTipoAj  { background: var(--b1); color: var(--b8); }
.estTipoTr  { background: #f3e8ff;   color: #6b21a8;   }

/* Botões ação inline */
.estAcoesCell { white-space: nowrap; }
.estBtnEnt { background: var(--g1) !important; color: var(--g8) !important; border-color: var(--g3) !important; }
.estBtnSai { background: #fee2e2 !important;   color: #991b1b !important;   border-color: #fca5a5 !important; }
.estBtnAprova  { background: var(--g1) !important; color: var(--g8) !important; border-color: var(--g4) !important; }
.estBtnRejeita { background: #fee2e2 !important;   color: #991b1b !important;   border-color: #fca5a5 !important; }
.estBtnRecebe  { background: var(--b1) !important; color: var(--b8) !important; border-color: var(--b4) !important; }

/* Estado vazio */
.estVazio {
  padding: 40px 24px;
  text-align: center;
  color: var(--s5);
  font-size: .88rem;
  background: var(--s0);
  border-radius: var(--Rs);
  border: 1px dashed var(--s3);
}
.estVazioSm {
  padding: 10px 14px;
  text-align: center;
  color: var(--s4);
  font-size: .8rem;
}

/* Cards de vínculos procedimento → material */
.estVincProcCard {
  background: var(--s0);
  border: 1px solid var(--s2);
  border-radius: var(--Rs);
  margin-bottom: 12px;
  overflow: hidden;
}
.estVincProcHdr {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 16px;
  background: var(--s1);
  border-bottom: 1px solid var(--s2);
}
.estVincProcNome { font-weight: 700; font-size: .88rem; color: var(--s8); }
.estVincCodigo {
  font-size: .72rem;
  background: var(--b1);
  color: var(--b7);
  padding: 1px 6px;
  border-radius: 4px;
  font-weight: 700;
}
.estVincItens { padding: 8px 16px; }
.estVincItem {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 5px 0;
  border-bottom: 1px solid var(--s1);
  font-size: .83rem;
}
.estVincItem:last-child { border-bottom: none; }
.estVincQtd { color: var(--g7); font-weight: 600; margin-left: auto; margin-right: 8px; }
.estVincVazio { padding: 8px 16px; font-size: .8rem; color: var(--s4); }

/* Itens do pedido em construção */
.estPedItemRow {
  display: flex;
  gap: 8px;
  align-items: flex-end;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding: 12px;
  background: var(--s0);
  border: 1px solid var(--s2);
  border-radius: var(--Rs);
}
.estPedItemRow .patFG { flex: 1; min-width: 140px; margin: 0; }

/* ══════════════════════════════════════════════════════════════
   RELATÓRIOS
══════════════════════════════════════════════════════════════ */
.relKpis {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 10px;
  margin-bottom: 16px;
}
@media (max-width: 1100px) { .relKpis { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 700px)  { .relKpis { grid-template-columns: repeat(2, 1fr); } }

.relKpiG { border-left: 4px solid var(--g6); }
.relKpiB { border-left: 4px solid var(--b5); }
.relKpiY { border-left: 4px solid var(--a5); }
.relKpiR { border-left: 4px solid var(--r6); }

/* ── Filtros ── */
.relFiltros {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
  background: var(--w);
  border: 1px solid var(--s2);
  border-radius: var(--R);
  padding: 12px 14px;
  margin-bottom: 14px;
  box-shadow: var(--sh);
}
.relFiltGrp { display: flex; flex-direction: column; gap: 3px; }
.relFiltLbl {
  font-size: .67rem; font-weight: 700; color: var(--s5);
  text-transform: uppercase; letter-spacing: .04em;
}
.relFiltInp, .relFiltSel {
  font-size: .8rem; padding: 5px 8px;
  border: 1.5px solid var(--s2); border-radius: 8px;
  background: var(--bg); color: var(--s8); height: 32px;
}
.relFiltSel { min-width: 110px; }

/* ── Botões header ── */
.relBtnGroup { display: flex; gap: 8px; margin-left: auto; }

/* ── Tabs ── */
.relTabNav {
  display: flex; gap: 6px;
  border-bottom: 2px solid var(--s2);
  margin-bottom: 12px; padding-bottom: 6px;
}
.relTab {
  padding: 6px 18px; border: 1.5px solid var(--s2);
  border-radius: 8px; background: var(--w);
  color: var(--s6); cursor: pointer;
  font-size: .8rem; font-weight: 700; transition: all .15s;
}
.relTab:hover { background: var(--s1); color: var(--s8); }
.relTab.relTabAtivo { background: var(--p); color: #fff; border-color: var(--p); }

/* ── Tabelas ── */
.relTableWrap {
  overflow-x: auto; background: var(--w);
  border: 1px solid var(--s2); border-radius: var(--R); box-shadow: var(--sh);
}
.relTable { width: 100%; border-collapse: collapse; font-size: .79rem; }
.relTable thead th {
  padding: 9px 10px; text-align: left;
  font-size: .68rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--s5); background: var(--s1);
  border-bottom: 1px solid var(--s2); white-space: nowrap;
}
.relTable tbody td {
  padding: 8px 10px; border-bottom: 1px solid var(--s1);
  color: var(--s7); vertical-align: middle;
}
.relTable tbody tr:last-child td { border-bottom: none; }
.relTable tbody tr:hover td { background: var(--s1); }
.relVazio { text-align: center; color: var(--s4); font-size: .8rem; padding: 24px !important; }

/* ── Resumo box ── */
.relResumo {
  display: inline-block; min-width: 280px;
  background: var(--w); border: 1px solid var(--s2);
  border-radius: var(--R); padding: 12px 14px;
  margin-bottom: 0; box-shadow: var(--sh);
}
.relResumoTit {
  font-size: .72rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--s5); margin-bottom: 8px;
}

/* ── Loading ── */
.relCarregando { text-align: center; padding: 24px; color: var(--s4); font-size: .85rem; }

/* ── Aviso tabela inexistente ── */
.relAviso {
  background: #fffbeb; border: 1.5px solid #f59e0b;
  border-radius: var(--R); padding: 12px 16px;
  font-size: .8rem; color: #78350f; margin-bottom: 14px;
}
.relAviso code { background: #fef3c7; padding: 1px 5px; border-radius: 4px; font-family: monospace; }
.relAviso strong { font-weight: 700; }

/* ── DRE cards ── */
.relDRE {
  display: flex; align-items: center; gap: 0;
  flex-wrap: wrap; background: var(--w);
  border: 1.5px solid var(--s2); border-radius: var(--R);
  padding: 20px 16px; box-shadow: var(--sh); margin-bottom: 4px;
}
.relDREBloco {
  flex: 1; min-width: 140px; text-align: center; padding: 10px 16px;
}
.relDREDestaque {
  background: var(--s0); border-radius: var(--Rs);
  border: 1.5px solid var(--s2);
}
.relDREIco  { font-size: 1.4rem; margin-bottom: 6px; }
.relDRELabel { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--s5); margin-bottom: 4px; }
.relDREValor { font-size: 1.15rem; font-weight: 800; color: var(--s8); }
.relDRESep   { font-size: 1.6rem; font-weight: 300; color: var(--s3); padding: 0 4px; align-self: center; }

/* ── Laboratório funil KPIs ── */
.relLabFunil {
  display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 4px;
}

/* ══════════════════════════════════════════════════════════════
   IMPRESSÃO — RELATÓRIOS (body.rel-imprimindo)
══════════════════════════════════════════════════════════════ */
#relPrintArea { display: none; }

@media print {
  body.rel-imprimindo * { visibility: hidden !important; }
  body.rel-imprimindo #relPrintArea,
  body.rel-imprimindo #relPrintArea * { visibility: visible !important; }
  body.rel-imprimindo #relPrintArea {
    display: block !important;
    position: absolute; top: 0; left: 0; width: 100%;
    background: #fff; font-family: Arial, sans-serif;
    font-size: 9pt; color: #111;
  }
  .relPrintHdr {
    display: flex; align-items: center; gap: 16px;
    border-bottom: 2pt solid #1e3a5f;
    padding-bottom: 8pt; margin-bottom: 10pt;
  }
  .relPrintLogo { font-size: 14pt; font-weight: 900; color: #1e3a5f; flex-shrink: 0; }
  .relPrintTit  { font-size: 12pt; font-weight: 800; color: #1e3a5f; }
  .relPrintSub  { font-size: 9pt; color: #444; margin-top: 2pt; }
  .relPrintGen  { font-size: 8pt; color: #888; margin-top: 2pt; }
  .relPrintKpis { display: flex; gap: 8pt; margin-bottom: 10pt; }
  .relPrintKpi  {
    flex: 1; border: 1pt solid #ddd; border-radius: 3pt;
    padding: 5pt 7pt; display: flex; flex-direction: column; align-items: center;
  }
  .relPkVal { font-size: 11pt; font-weight: 900; color: #1e3a5f; }
  .relPkLbl { font-size: 7pt; color: #666; text-transform: uppercase; letter-spacing: .03em; margin-top: 1pt; }
  .relPrintTable { width: 100%; border-collapse: collapse; font-size: 8pt; }
  .relPrintTable thead th {
    background: #1e3a5f; color: #fff;
    padding: 4pt 5pt; text-align: left;
    font-size: 7pt; text-transform: uppercase;
  }
  .relPrintTable tbody td { padding: 3pt 5pt; border-bottom: 1pt solid #eee; }
  .relPrintTable tbody tr:nth-child(even) td { background: #f5f7fa; }
}

/* ══════════════════════════════════════════════════════════════
   ADMIN DRE — Custos, Repasses & Laboratório
══════════════════════════════════════════════════════════════ */
.dreSection {
  background: var(--w);
  border: 1.5px solid var(--s2);
  border-radius: var(--R);
  padding: 20px;
  margin-top: 12px;
  box-shadow: var(--sh);
}
.dreLoading {
  padding: 32px; text-align: center; color: var(--s5); font-size: .88rem;
}
.dreToolbar {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px; flex-wrap: wrap; gap: 8px;
  font-size: .84rem; color: var(--s6);
}
.dreForm {
  margin-top: 20px;
  background: var(--s0);
  border: 1.5px solid var(--s2);
  border-radius: var(--R);
  padding: 18px 20px;
}
.dreFormTit {
  font-size: .9rem; font-weight: 800; color: var(--s8); margin-bottom: 14px;
}
.dreFormGrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.dreFormBtns {
  display: flex; gap: 8px; justify-content: flex-end;
}
.dreBadge {
  display: inline-block;
  background: var(--s1); color: var(--s7);
  border-radius: 20px; padding: 2px 9px;
  font-size: .72rem; font-weight: 700; text-transform: capitalize;
}
.dreLabKpis {
  display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 4px;
}
</style>
