/* Clínica Conceber — gerado por src/montar.py (não edite; edite src/). */
/* ---------- estilos/0-logo.css ---------- */
/* ---------- Logotipo da Clínica Conceber (vetor; troca de 21/10/2026) ----------
   O que é: o símbolo (óvulo verde + meia-lua azul + espermatozoide que desenha o coração), em SVG, não imagem
   de pontinhos: fica nítido em qualquer tamanho e tela (inclusive retina). Foi redesenhado a partir da arte
   enviada pelo Matheus (recortada, sem o quadrado branco), com círculos e curvas lisas.
   Onde fica: este arquivo é a ÚNICA cópia. A variável --logo-img é usada em dois lugares:
     • .brand-mark  → logotipo do topo/menu lateral (pagina.html, <span class="brand-mark">);
     • .login-card h1::before → logotipo das telas de entrada (login, senha, 2FA, "Quase lá").
   Para trocar o desenho de novo: gere o SVG e substitua o texto de --logo-img (troque " por ', e < > # por %3C %3E %23).
   --logo-ar = largura ÷ altura do desenho. Tamanho no menu: cada regra .brand-mark só define --mark-h (a altura).
   Sem dado de paciente, sem script, sem endereço externo (a CSP já permite img-src data:). */
:root{
  --logo-ar:1.444;
  --logo-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='8.9 6.7 230.1 159.4'%3E%3Cpath fill='%232A2B5B' d='M135.6,132.4C135.1,133.1 133.5,135.6 132.3,137.0C131.1,138.4 129.7,139.8 128.3,141.0C126.8,142.3 125.3,143.4 123.8,144.5C122.2,145.6 120.6,146.7 118.9,147.7C117.3,148.7 115.6,149.6 113.8,150.4C112.1,151.2 110.3,151.8 108.5,152.5C106.7,153.2 104.8,154.0 103.0,154.5C101.1,155.1 99.2,155.5 97.3,155.8C95.4,156.2 93.5,156.4 91.5,156.6C89.6,156.8 87.6,157.0 85.7,157.0C83.7,157.1 81.8,157.1 79.8,157.0C77.8,157.0 75.9,156.9 73.9,156.6C72.0,156.4 70.0,156.1 68.1,155.7C66.2,155.3 64.3,154.7 62.4,154.1C60.5,153.5 58.6,152.8 56.8,152.1C55.0,151.4 53.1,150.6 51.4,149.8C49.6,148.9 47.8,148.0 46.1,147.0C44.4,146.0 42.7,145.0 41.0,143.8C39.4,142.7 37.9,141.4 36.5,140.1C35.0,138.7 33.5,137.4 32.1,136.0C30.7,134.6 29.2,133.2 27.9,131.7C26.6,130.2 25.4,128.6 24.3,127.0C23.1,125.4 22.1,123.7 21.0,122.0C20.0,120.4 18.9,118.7 18.0,116.9C17.1,115.1 16.3,113.3 15.6,111.5C14.8,109.6 14.1,107.8 13.5,105.9C12.9,104.0 12.3,102.1 11.9,100.1C11.4,98.2 11.0,96.2 10.7,94.3C10.4,92.3 10.2,90.3 10.0,88.4C9.8,86.4 9.8,84.4 9.8,82.4C9.8,80.4 9.9,78.4 10.0,76.5C10.2,74.5 10.4,72.5 10.7,70.5C11.0,68.6 11.4,66.6 11.9,64.7C12.3,62.8 12.9,60.8 13.5,59.0C14.1,57.1 14.8,55.2 15.5,53.4C16.3,51.5 17.1,49.7 18.0,47.9C18.9,46.2 20.0,44.5 21.0,42.8C22.1,41.1 23.2,39.4 24.3,37.8C25.5,36.2 26.7,34.6 28.0,33.1C29.3,31.6 30.7,30.2 32.1,28.9C33.6,27.5 35.1,26.2 36.6,24.9C38.1,23.6 39.6,22.3 41.2,21.1C42.8,20.0 44.4,18.9 46.1,17.9C47.8,16.8 49.6,15.9 51.4,15.1C53.2,14.2 55.0,13.5 56.8,12.7C58.7,12.0 60.5,11.3 62.4,10.7C64.3,10.1 66.2,9.6 68.1,9.1C70.0,8.7 72.0,8.3 73.9,8.1C75.9,7.8 77.8,7.7 79.8,7.6C81.8,7.5 83.7,7.5 85.7,7.5C87.6,7.6 89.6,7.6 91.5,7.9C93.5,8.1 95.4,8.4 97.3,8.8C99.2,9.2 101.1,9.7 103.0,10.3C104.9,10.8 106.7,11.5 108.5,12.2C110.3,12.9 112.1,13.5 113.9,14.3C115.6,15.1 117.4,15.9 119.1,16.9C120.8,17.8 122.4,18.9 124.0,19.9C125.6,21.0 127.6,22.6 128.6,23.3C129.6,24.1 129.2,23.9 130.1,24.5C130.9,25.2 132.5,26.4 133.6,27.3C134.7,28.1 135.6,28.9 136.6,29.7C137.5,30.6 138.9,31.9 139.3,32.4L139.0,32.7L139.0,32.7C138.5,32.3 137.0,31.1 136.0,30.3C135.0,29.5 134.1,28.8 133.0,28.0C131.8,27.2 130.1,26.3 129.2,25.7C128.3,25.1 128.8,25.3 127.7,24.5C126.7,23.8 124.7,22.3 123.1,21.3C121.6,20.3 119.9,19.3 118.3,18.5C116.6,17.6 114.9,16.8 113.1,16.1C111.4,15.4 109.6,14.8 107.8,14.2C106.1,13.6 104.3,13.0 102.5,12.5C100.6,12.1 98.8,11.7 96.9,11.4C95.1,11.1 93.2,10.9 91.3,10.7C89.4,10.6 87.6,10.6 85.7,10.7C83.8,10.7 81.9,10.9 80.1,11.1C78.2,11.3 76.3,11.5 74.5,11.8C72.7,12.1 70.8,12.5 69.0,13.0C67.2,13.6 65.5,14.2 63.7,14.9C62.0,15.6 60.3,16.3 58.6,17.1C57.0,18.0 55.4,18.9 53.8,19.8C52.2,20.7 50.6,21.7 49.1,22.7C47.6,23.7 46.1,24.8 44.7,26.0C43.3,27.2 42.0,28.5 40.7,29.7C39.4,31.0 38.1,32.3 36.9,33.6C35.6,34.9 34.3,36.2 33.3,37.7C32.3,39.2 31.9,41.1 31.0,42.7C30.2,44.3 29.1,45.7 28.2,47.2C27.3,48.7 26.5,50.3 25.8,51.9C25.0,53.5 24.3,55.1 23.7,56.7C23.1,58.4 22.5,60.0 22.0,61.7C21.5,63.4 21.0,65.1 20.7,66.8C20.3,68.5 20.0,70.2 19.7,72.0C19.4,73.7 19.3,75.4 19.1,77.2C19.0,78.9 18.9,80.7 18.9,82.4C18.9,84.2 19.0,85.9 19.1,87.6C19.3,89.4 19.4,91.1 19.7,92.9C20.0,94.6 20.3,96.3 20.7,98.0C21.0,99.7 21.5,101.4 22.0,103.1C22.5,104.8 23.1,106.4 23.7,108.1C24.3,109.7 25.0,111.3 25.8,112.9C26.5,114.5 27.5,116.0 28.2,117.6C28.9,119.3 29.2,121.2 30.1,122.8C30.9,124.4 32.0,125.8 33.1,127.3C34.2,128.7 35.5,130.1 36.7,131.4C37.9,132.7 39.2,134.0 40.5,135.3C41.8,136.6 43.1,137.9 44.5,139.1C45.9,140.2 47.4,141.3 48.9,142.4C50.5,143.4 52.0,144.4 53.6,145.3C55.2,146.2 56.9,147.1 58.5,147.9C60.2,148.7 61.9,149.6 63.6,150.2C65.4,150.9 67.2,151.5 69.0,152.0C70.8,152.5 72.6,152.9 74.5,153.2C76.3,153.5 78.2,153.8 80.0,154.0C81.9,154.2 83.8,154.2 85.7,154.3C87.6,154.3 89.4,154.2 91.3,154.1C93.2,154.0 95.1,153.9 97.0,153.6C98.8,153.3 100.7,153.0 102.5,152.5C104.3,152.0 106.1,151.4 107.9,150.8C109.7,150.1 111.5,149.6 113.2,148.9C114.9,148.1 116.6,147.3 118.3,146.4C119.9,145.5 121.5,144.5 123.1,143.4C124.6,142.4 126.1,141.2 127.5,140.0C129.0,138.9 130.5,137.7 131.8,136.4C133.1,135.1 134.9,132.9 135.5,132.2Z'/%3E%3Cellipse fill='%2342B8AC' cx='85.7' cy='82.4' rx='67.9' ry='70.4' transform='rotate(2.5 85.7 82.4)'/%3E%3Cpath fill='%232A2B5B' d='M146.4,165.2C146.9,164.7 148.5,163.1 149.6,162.1C150.7,161.1 151.9,160.1 153.0,159.2C154.2,158.2 155.4,157.3 156.6,156.4C157.8,155.5 159.0,154.7 160.3,153.8C161.6,152.9 162.8,152.1 164.2,151.3C165.5,150.4 166.8,149.6 168.1,148.8C169.5,148.0 170.9,147.3 172.2,146.5C173.6,145.7 175.0,144.9 176.4,144.1C177.8,143.3 179.2,142.5 180.6,141.8C182.0,141.0 183.4,140.2 184.9,139.4C186.3,138.6 187.7,137.8 189.1,136.9C190.6,136.1 192.0,135.3 193.4,134.4C194.8,133.6 196.2,132.7 197.7,131.8C199.1,130.9 200.4,130.0 201.8,129.0C203.2,128.1 204.6,127.1 205.9,126.1C207.3,125.1 208.6,124.1 209.9,123.0C211.2,122.0 212.5,120.9 213.7,119.8C215.0,118.7 216.2,117.6 217.4,116.4C218.6,115.3 219.7,114.1 220.8,112.9C222.0,111.7 223.0,110.5 224.1,109.2C225.1,108.0 226.1,106.7 227.0,105.4C228.0,104.1 228.9,102.8 229.7,101.5C230.5,100.1 231.3,98.8 232.1,97.4C232.8,96.0 233.5,94.6 234.1,93.1C234.7,91.7 235.2,90.2 235.7,88.8C236.2,87.3 236.6,85.8 236.9,84.3C237.3,82.7 237.6,81.2 237.7,79.7C237.9,78.1 238.1,76.5 238.1,75.0C238.2,73.4 238.2,71.8 238.1,70.2C238.0,68.7 237.9,67.1 237.7,65.5C237.5,63.9 237.2,62.3 236.9,60.7C236.6,59.2 236.2,57.6 235.7,56.0C235.3,54.5 234.8,52.9 234.2,51.4C233.7,49.9 233.1,48.4 232.4,46.9C231.7,45.4 231.0,43.9 230.3,42.5C229.5,41.1 228.7,39.6 227.8,38.3C226.9,36.9 226.0,35.5 225.1,34.2C224.1,32.9 223.1,31.6 222.0,30.4C221.0,29.2 219.8,28.0 218.7,26.8C217.5,25.7 216.3,24.6 215.1,23.6C213.8,22.6 212.5,21.6 211.2,20.7C209.8,19.8 208.4,18.9 207.0,18.1C205.6,17.4 204.1,16.6 202.6,16.0C201.1,15.4 199.6,14.8 198.0,14.3C196.4,13.8 194.8,13.4 193.1,13.1C191.5,12.8 189.8,12.6 188.1,12.4C186.4,12.3 184.6,12.2 182.8,12.2C181.1,12.3 179.3,12.4 177.4,12.6C175.6,12.9 173.7,13.3 171.8,13.7C170.0,14.1 168.2,14.6 166.4,15.0C164.6,15.5 162.7,15.8 161.0,16.2C159.2,16.7 157.4,17.2 155.8,17.7C154.1,18.2 152.5,18.8 150.9,19.4C149.4,20.1 147.8,20.8 146.4,21.5C145.0,22.3 143.7,23.1 142.5,24.0C141.2,24.9 140.1,25.9 139.1,26.9C138.0,28.0 136.9,29.6 136.3,30.3C135.7,31.1 135.7,31.4 135.6,31.6L137.0,32.5L137.0,32.5C137.2,32.3 137.2,32.0 137.8,31.3C138.3,30.6 139.4,29.2 140.4,28.2C141.4,27.3 142.4,26.4 143.6,25.6C144.8,24.8 146.1,24.1 147.4,23.4C148.8,22.7 150.2,22.1 151.7,21.5C153.2,21.0 154.8,20.5 156.5,20.0C158.1,19.5 159.8,19.1 161.5,18.7C163.3,18.3 165.0,18.0 166.9,17.6C168.7,17.2 170.7,16.6 172.5,16.2C174.3,15.8 176.0,15.4 177.8,15.2C179.5,14.9 181.2,14.8 182.9,14.7C184.6,14.7 186.3,14.7 187.9,14.8C189.5,14.9 191.1,15.1 192.7,15.4C194.3,15.7 195.8,16.1 197.3,16.5C198.8,17.0 200.3,17.5 201.7,18.1C203.2,18.7 204.6,19.3 206.0,20.1C207.3,20.8 208.7,21.6 210.0,22.4C211.3,23.3 212.5,24.2 213.8,25.2C215.0,26.2 216.2,27.2 217.3,28.3C218.4,29.3 219.5,30.5 220.6,31.6C221.7,32.8 222.7,34.0 223.6,35.3C224.6,36.5 225.5,37.8 226.4,39.2C227.3,40.5 228.1,41.9 228.9,43.3C229.6,44.7 230.3,46.1 231.0,47.5C231.6,49.0 232.2,50.5 232.7,52.0C233.3,53.4 233.8,55.0 234.2,56.5C234.6,58.0 234.9,59.5 235.2,61.1C235.5,62.6 235.7,64.2 235.9,65.7C236.1,67.2 236.2,68.8 236.2,70.3C236.2,71.8 236.2,73.4 236.1,74.9C236.0,76.4 235.9,77.9 235.7,79.4C235.4,80.8 235.1,82.3 234.8,83.8C234.4,85.2 234.0,86.6 233.5,88.0C233.0,89.4 232.4,90.8 231.8,92.1C231.2,93.5 230.6,94.8 229.8,96.2C229.1,97.5 228.3,98.8 227.5,100.1C226.7,101.3 225.8,102.6 224.9,103.8C223.9,105.1 223.0,106.3 222.0,107.5C221.0,108.7 219.9,109.9 218.8,111.0C217.7,112.2 216.6,113.3 215.5,114.4C214.3,115.6 213.1,116.7 211.9,117.7C210.7,118.8 209.4,119.8 208.2,120.9C206.9,121.9 205.6,122.9 204.3,123.9C203.0,124.9 201.6,125.8 200.3,126.7C198.9,127.7 197.5,128.6 196.2,129.5C194.8,130.4 193.4,131.2 192.0,132.1C190.6,132.9 189.2,133.7 187.8,134.6C186.4,135.4 184.9,136.2 183.5,137.0C182.1,137.8 180.7,138.6 179.3,139.3C177.9,140.1 176.4,140.9 175.0,141.7C173.6,142.5 172.2,143.3 170.9,144.1C169.5,144.9 168.1,145.7 166.8,146.5C165.4,147.4 164.1,148.2 162.7,149.1C161.4,149.9 160.1,150.8 158.8,151.7C157.6,152.6 156.3,153.5 155.1,154.5C153.9,155.5 152.7,156.4 151.6,157.5C150.4,158.5 149.3,159.6 148.3,160.7C147.2,161.8 145.7,163.6 145.2,164.2Z'/%3E%3Cpath fill='%232A2B5B' d='M134.2,45.5Q135.2,36.9 137.9,29.2Q132.7,35.5 125.9,40.8L128.0,46.8Z'/%3E%3Cellipse fill='%232A2B5B' cx='128.0' cy='46.8' rx='5.3' ry='9.1' transform='rotate(29.4 128.0 46.8)'/%3E%3C/svg%3E");
}
.brand-mark{ --mark-h:34px; display:block; flex:none; height:var(--mark-h); width:calc(var(--mark-h) * var(--logo-ar)); background:var(--logo-img) center/contain no-repeat; }

/* ---------- estilos/1-base.css ---------- */
:root{
  --bg:#F5F6F9;
  --surface:#FFFFFF;
  --surface-muted:#EEF0F5;
  --border:#DFE2EA;
  --text:#171B2B;
  --text-muted:#5F6579;
  --accent:#33448C;
  --accent-strong:#1D2A5C;
  --accent-soft:#E7EAF7;
  --good:#1F8A5D;
  --good-soft:#E1F3E7;
  --warn:#A66A14;
  --warn-soft:#FBEEDA;
  --bad:#B7402A;
  --bad-soft:#FBE3DC;
  --paid:#8A4FA0;
  --paid-soft:#F3E6F5;
  --logo-fill:#2FC3AA;
  --logo-line:#16295E;
  --shadow: 0 1px 2px rgba(15,20,35,0.04), 0 1px 1px rgba(15,20,35,0.03);
  --shadow-lg: 0 8px 28px -12px rgba(15,20,35,0.22), 0 2px 6px -2px rgba(15,20,35,0.08);
  --radius-lg: 14px;
  --radius-md: 10px;
  --radius-sm: 8px;
}

*{ box-sizing:border-box; }
html,body{ margin:0; }
body{
  background:var(--bg);
  color:var(--text);
  font-family:"Public Sans", -apple-system, "Segoe UI", sans-serif;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing:antialiased;
}
h2,h3{ font-family:"Public Sans", -apple-system, sans-serif; text-wrap:balance; margin:0; }
h1{ font-family:"Fraunces", Georgia, serif; text-wrap:balance; margin:0; }
button, input, select, textarea{ font-family:inherit; color:inherit; }
a{ color:var(--accent-strong); }
::selection{ background:var(--accent-soft); color:var(--accent-strong); }

.app{ max-width:1180px; margin:0 auto; padding:28px 24px 72px; }
.hidden{ display:none !important; }

/* ---------- Login ---------- */
.login-wrap{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.login-card{ width:100%; max-width:380px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:32px 28px; }
.login-card h1{ font-size:1.5rem; color:var(--logo-line); margin-bottom:4px; }
.login-card p.sub{ font-size:0.86rem; color:var(--text-muted); margin:0 0 22px; }
.login-error{ background:var(--bad-soft); color:var(--bad); border-radius:var(--radius-sm); padding:9px 12px; font-size:0.83rem; margin-bottom:14px; display:none; }
.login-info{ background:var(--accent-soft); color:var(--accent-strong); border-radius:var(--radius-sm); padding:9px 12px; font-size:0.83rem; margin-bottom:14px; display:none; }
.login-actions{ margin-top:18px; }
.login-link{ display:block; text-align:center; margin-top:14px; font-size:0.82rem; cursor:pointer; }
.pending-card{ text-align:center; }
.pending-card svg{ margin-bottom:10px; }

/* ---------- Header ---------- */
.topbar{ display:flex; align-items:center; gap:15px; padding:2px 2px 26px; border-bottom:1px solid var(--border); margin-bottom:24px; }
.brand-mark{ --mark-h:46px; }
.brand-text{ flex:1; }
.brand-text h1{ font-size:1.42rem; font-weight:600; color:var(--logo-line); letter-spacing:-0.01em; }
.brand-text p{ margin:3px 0 0; font-size:0.86rem; color:var(--text-muted); letter-spacing:0.01em; }
.who-box{ display:flex; align-items:center; gap:10px; }
.who-box .who-name{ text-align:right; font-size:0.82rem; }
.who-box .who-name b{ display:block; font-size:0.88rem; }
.who-box .who-role{ color:var(--text-muted); }

/* ---------- KPIs ---------- */
.kpis{ display:flex; flex-wrap:wrap; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); margin-bottom:22px; overflow:hidden; }
.kpi{ position:relative; flex:1 1 160px; padding:15px 20px; border-right:1px solid var(--border); }
.kpi:last-child{ border-right:none; }
.kpi .value{ font-family:"Fraunces",serif; font-size:1.8rem; font-weight:600; line-height:1.1; color:var(--text); }
.kpi .label{ margin-top:5px; font-size:0.74rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.05em; }
.kpi.accent .value{ color:var(--accent-strong); }
.kpi.warn .value{ color:var(--warn); }
.kpi.bad .value{ color:var(--bad); }

/* ---------- Controls ---------- */
.controls{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:22px; }
.search-wrap{ position:relative; flex:1 1 220px; min-width:180px; }
.search-wrap input{ width:100%; padding:9px 12px 9px 34px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.9rem; }
.search-wrap input:focus, select.group-select:focus, .form-field input:focus, .field input:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.search-wrap svg{ position:absolute; left:11px; top:50%; transform:translateY(-50%); opacity:0.5; }
select.group-select{ padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.86rem; }
.toggle-chip{ display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface); font-size:0.83rem; cursor:pointer; user-select:none; white-space:nowrap; transition:background .12s ease, border-color .12s ease; }
.toggle-chip.active{ background:var(--accent-soft); border-color:var(--accent); color:var(--accent-strong); font-weight:600; }
.btn{ border:none; border-radius:var(--radius-sm); padding:9px 16px; font-size:0.86rem; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; gap:6px; transition:background .12s ease, opacity .12s ease; }
.btn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.btn.primary{ background:var(--accent); color:#fff; }
.btn.primary:hover{ background:var(--accent-strong); }
.btn.ghost{ background:transparent; border:1px solid var(--border); color:var(--text); }
.btn.ghost:hover{ background:var(--surface-muted); }
.btn.small{ padding:5px 11px; font-size:0.76rem; }
.btn[disabled]{ opacity:0.5; cursor:not-allowed; }
.btn.block{ width:100%; justify-content:center; }

/* ---------- Groups ---------- */
.group{ margin-bottom:12px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); overflow:hidden; }
.group-header{ display:flex; align-items:center; gap:10px; padding:13px 18px; cursor:pointer; }
.group-header h2{ font-size:0.98rem; font-weight:600; color:var(--text); flex:1; letter-spacing:0.005em; }
.group-count{ font-size:0.74rem; color:var(--text-muted); background:var(--surface-muted); border:1px solid var(--border); border-radius:999px; padding:2px 9px; }
.group-caret{ transition:transform .15s ease; opacity:0.55; }
.group.collapsed .group-caret{ transform:rotate(-90deg); }
.group-body{ padding:0 10px 10px; border-top:1px solid var(--border); }
.group.collapsed .group-body{ display:none; }
.group-empty{ padding:20px 14px; text-align:center; color:var(--text-muted); font-size:0.86rem; }

/* ---------- Patient row ---------- */
.p-row{ border-top:1px solid var(--border); padding:12px 8px; display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
.group-body .p-row:first-child{ border-top:none; }
.p-row.urgent{ background:linear-gradient(90deg,var(--warn-soft),transparent 40%); }
.p-expand-btn{ background:none; border:none; cursor:pointer; color:var(--text-muted); padding:4px; flex:none; }
.p-main{ flex:1 1 220px; min-width:190px; display:flex; flex-direction:column; gap:3px; }
.p-name-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.p-name{ font-weight:700; font-size:0.98rem; border:none; background:transparent; padding:0; width:auto; min-width:60px; }
.p-name:focus{ outline:1px dashed var(--accent); }
.p-name[readonly]{ cursor:default; }
.p-code{ font-size:0.75rem; color:var(--text-muted); }
.paid-badge{ font-size:0.7rem; font-weight:700; padding:2px 9px; border-radius:999px; cursor:pointer; letter-spacing:0.02em; }
.paid-badge.yes{ background:var(--paid-soft); color:var(--paid); }
.paid-badge.no{ background:var(--surface-muted); color:var(--text-muted); border:1px dashed var(--border); }

.p-stage{ flex:1 1 260px; min-width:220px; }
.stepper{ display:flex; align-items:center; gap:3px; }
.step{ flex:1; height:6px; border-radius:4px; background:var(--surface-muted); }
.step.done{ background:var(--accent); }
.stage-label{ margin-top:5px; font-size:0.76rem; color:var(--text-muted); display:flex; justify-content:space-between; gap:8px; }
.stage-label .cur{ color:var(--accent-strong); font-weight:600; }

.p-side{ flex:1 1 220px; min-width:200px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; justify-content:flex-end; }
.pill{ font-size:0.72rem; font-weight:600; padding:3px 9px; border-radius:999px; cursor:pointer; border:1px solid transparent; white-space:nowrap; }
.pill-ok{ background:var(--good-soft); color:var(--good); }
.pill-solicitado{ background:var(--warn-soft); color:var(--warn); }
.pill-pendente{ background:var(--bad-soft); color:var(--bad); }
.chip{ font-size:0.7rem; font-weight:700; padding:3px 8px; border-radius:6px; background:var(--accent-soft); color:var(--accent-strong); }

/* ---------- Detail panel ---------- */
.p-detail{ flex-basis:100%; width:100%; margin-top:10px; padding:16px; background:var(--surface-muted); border-radius:var(--radius-md); display:none; }
.p-row.expanded .p-detail{ display:block; }
.detail-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:10px 14px; margin-bottom:14px; }
.field label{ display:block; font-size:0.7rem; text-transform:uppercase; letter-spacing:0.03em; color:var(--text-muted); margin-bottom:3px; }
.field input, .field textarea{ width:100%; padding:7px 9px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.86rem; }
.field textarea{ resize:vertical; min-height:44px; }
.detail-section-title{ font-size:0.72rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--text-muted); margin:14px 0 8px; }
.addon-row{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.addon-toggle{ font-size:0.78rem; font-weight:600; padding:6px 12px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface); cursor:pointer; }
.addon-toggle.on{ background:var(--accent-soft); border-color:var(--accent); color:var(--accent-strong); }
.checklist-row{ display:flex; align-items:center; gap:10px; margin-bottom:8px; flex-wrap:wrap; }
.checklist-row .cl-label{ width:92px; font-size:0.8rem; font-weight:600; flex:none; }
.checklist-row input{ flex:1; min-width:140px; padding:6px 9px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.83rem; }
.detail-footer{ display:flex; justify-content:space-between; align-items:center; margin-top:12px; gap:10px; flex-wrap:wrap; }
.meta-note{ font-size:0.72rem; color:var(--text-muted); }

/* ---------- Dialog ---------- */
dialog#addDialog, dialog#archiveDialog, dialog#canDialog, dialog#userDialog{ border:none; border-radius:var(--radius-lg); padding:0; background:var(--surface); color:var(--text); box-shadow:var(--shadow-lg); max-width:420px; width:92vw; }
.dialog-inner{ padding:24px 24px 20px; }
.dialog-inner h3{ margin-bottom:14px; font-size:1.1rem; font-weight:600; }
.form-field{ margin-bottom:12px; }
.form-field label{ display:block; font-size:0.76rem; color:var(--text-muted); margin-bottom:4px; text-transform:uppercase; letter-spacing:0.03em; }
.form-field input, .form-field select{ width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--bg); font-size:0.9rem; }
.dialog-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:16px; }

/* ---------- Toast ---------- */
.toast{ position:fixed; bottom:20px; left:50%; transform:translateX(-50%); background:var(--logo-line); color:#fff; padding:9px 18px; border-radius:999px; font-size:0.84rem; box-shadow:var(--shadow-lg); z-index:50; }

.offline-note{ font-size:0.8rem; color:var(--warn); background:var(--warn-soft); border-radius:var(--radius-sm); padding:9px 13px; margin-bottom:16px; display:none; }
.loading-note{ font-size:0.86rem; color:var(--text-muted); padding:28px 14px; text-align:center; }

/* ---------- Tabs ---------- */
.tab-nav{ display:flex; gap:4px; border-bottom:1px solid var(--border); margin-bottom:20px; overflow-x:auto; overflow-y:hidden; padding-bottom:1px; overscroll-behavior-y:none; }
.tab-btn{ background:none; border:none; padding:10px 16px; font-size:0.86rem; font-weight:600; color:var(--text-muted); cursor:pointer; border-bottom:2px solid transparent; white-space:nowrap; margin-bottom:-1px; }
.mod-nav{ gap:6px; margin-bottom:12px; padding-bottom:1px; }
.mod-btn{ background:none; border:none; padding:11px 20px; font-size:0.98rem; font-weight:700; color:var(--text-muted); cursor:pointer; border-bottom:3px solid transparent; white-space:nowrap; margin-bottom:-1px; letter-spacing:0.01em; }
.mod-btn:hover{ color:var(--text); }
.mod-btn.active{ color:var(--accent-strong); border-bottom-color:var(--accent); }
.sub-nav .tab-btn{ font-weight:500; font-size:0.84rem; }
.sub-nav .tab-btn.active{ font-weight:700; }
.tab-btn:hover{ color:var(--text); }
.tab-btn.active{ color:var(--accent-strong); border-bottom-color:var(--accent); }
.tab-panel{ display:none; }
.tab-panel.active{ display:block; }
.tab-intro{ font-size:0.86rem; color:var(--text-muted); margin:0; flex:1; }

/* ---------- NGS table ---------- */
.table-scroll{ overflow-x:auto; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
table.ngs-table{ border-collapse:collapse; width:100%; min-width:820px; font-size:0.85rem; }
table.ngs-table th{ text-align:left; font-size:0.71rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--text-muted); background:var(--surface-muted); padding:10px 12px; white-space:nowrap; }
table.ngs-table td{ padding:7px 12px; border-top:1px solid var(--border); vertical-align:middle; }
table.ngs-table input{ width:100%; min-width:96px; padding:6px 8px; border:1px solid transparent; border-radius:var(--radius-sm); background:transparent; font-size:0.85rem; }
table.ngs-table input:hover, table.ngs-table input:focus{ border-color:var(--border); background:var(--surface); outline:none; }
table.ngs-table tr:hover td{ background:var(--surface-muted); }
table.ngs-table th.sortable{ cursor:pointer; user-select:none; }
table.ngs-table th.sortable:hover{ color:var(--text); }
table.ngs-table th .sort-ind{ margin-left:5px; font-size:0.72rem; opacity:0.35; }
table.ngs-table th.sorted{ color:var(--accent-strong); }
table.ngs-table th.sorted .sort-ind{ opacity:1; }
.list-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; margin-bottom:16px; max-width:640px; }
.list-card h3{ font-size:1rem; font-weight:600; margin:0 0 4px; }
.list-card .list-hint{ font-size:0.8rem; color:var(--text-muted); margin:0 0 12px; }
.opt-row{ display:flex; align-items:center; gap:6px; margin-bottom:6px; }
.opt-row input{ flex:1; min-width:0; padding:7px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:0.88rem; background:var(--surface); }
.opt-row .opt-use{ font-size:0.72rem; color:var(--text-muted); white-space:nowrap; min-width:92px; text-align:right; }
.opt-row .btn{ padding:5px 9px; }
.opt-actions{ display:flex; gap:8px; align-items:center; margin-top:12px; flex-wrap:wrap; }
.apag-text{ font-size:0.85rem; }
.apag-muted{ color:var(--text-muted); }
.sched-toggle{ display:flex; align-items:center; gap:8px; text-transform:none; font-size:0.88rem; color:var(--text); margin:4px 0 8px; }
.sched-presets{ display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 8px; }
table.sched-grid{ border-collapse:collapse; width:100%; font-size:0.86rem; }
table.sched-grid td{ padding:4px 6px; border-top:1px solid var(--border); vertical-align:middle; }
table.sched-grid input[type="time"]{ width:auto; min-width:96px; }
table.sched-grid label{ display:flex; align-items:center; gap:8px; text-transform:none; font-size:0.86rem; color:var(--text); min-width:120px; }
table.sched-grid input[type="checkbox"]{ width:auto; }
.notif-badge{ display:inline-block; min-width:18px; height:18px; line-height:18px; padding:0 5px; margin-left:6px; border-radius:9px; background:#E5322D; color:#fff; font-size:0.68rem; font-weight:700; text-align:center; vertical-align:top; transform:translateY(-5px); box-shadow:0 0 0 2px var(--surface); }
.ac-sec{ margin:0 0 26px; }
.ac-sec h3{ margin:0 2px 8px; font-size:0.95rem; }
.ac-days{ display:flex; gap:8px; align-items:flex-end; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:14px 16px 10px; margin-bottom:14px; }
.ac-day{ flex:1 1 0; min-width:0; text-align:center; font-size:0.72rem; color:var(--text-muted); }
.ac-day .n{ font-weight:700; color:var(--text); font-size:0.86rem; min-height:1.2em; }
.ac-day .bar-wrap{ height:64px; display:flex; align-items:flex-end; justify-content:center; }
.ac-day .bar{ width:60%; max-width:34px; min-height:2px; background:var(--accent); border-radius:4px 4px 0 0; }
.ac-day.zero .bar{ background:var(--border); }
.ac-day.today .lbl{ font-weight:700; color:var(--accent-strong); }
.dot-on{ display:inline-block; width:12px; height:12px; border-radius:50%; background:var(--good); }
.dot-off{ display:inline-block; width:12px; height:12px; border-radius:50%; background:var(--surface-muted); border:1px solid var(--border); }
table.ngs-table td.c, table.ngs-table th.c{ text-align:center; }
.sev{ font-size:0.7rem; font-weight:700; padding:2px 8px; border-radius:999px; white-space:nowrap; }
.sev-alta{ background:var(--bad-soft); color:var(--bad); }
.sev-media{ background:var(--warn-soft); color:var(--warn); }
.sev-baixa{ background:var(--accent-soft); color:var(--accent-strong); }
.flag{ display:inline-block; font-size:0.7rem; font-weight:600; padding:2px 7px; border-radius:6px; margin:1px 3px 1px 0; background:var(--surface-muted); color:var(--text-muted); white-space:nowrap; }
.flag.alta{ background:var(--bad-soft); color:var(--bad); }
.flag.media{ background:var(--warn-soft); color:var(--warn); }
.flag.baixa{ background:var(--accent-soft); color:var(--accent-strong); }
tr.ac-new td{ background:#FFF8EC; }
tr.ac-new td:first-child{ box-shadow:inset 3px 0 0 #E5322D; }
.new-tag{ font-size:0.62rem; font-weight:700; color:#fff; background:#E5322D; border-radius:4px; padding:1px 5px; margin-left:6px; vertical-align:middle; }
dialog#newUserDialog{ border:none; border-radius:var(--radius-lg); padding:0; background:var(--surface); color:var(--text); box-shadow:var(--shadow-lg); max-width:540px; width:92vw; }
dialog#delUserDialog{ border:none; border-radius:var(--radius-lg); padding:0; background:var(--surface); color:var(--text); box-shadow:var(--shadow-lg); max-width:500px; width:92vw; }
.ret-box{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:14px 16px; }
.ret-box label{ display:flex; align-items:center; gap:8px; font-size:0.88rem; }
.cred-box{ background:var(--surface-muted); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 14px; font-size:0.86rem; line-height:1.55; white-space:pre-wrap; word-break:break-all; user-select:all; margin:10px 0 4px; font-family:ui-monospace,Menlo,Consolas,monospace; }
.cfg-actions{ display:flex; flex-wrap:wrap; gap:6px; }
.btn.danger-soft{ background:var(--bad-soft); color:var(--bad); }
.btn.danger-soft:hover{ opacity:.85; }
input.pw-input{ font-family:ui-monospace,Menlo,Consolas,monospace; letter-spacing:0.02em; }
.apag-title{ margin:18px 2px 8px; font-size:0.95rem; }
.pager{ display:inline-flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:center; }

/* ---------- Financeiro table ---------- */
table.fin-table{ border-collapse:collapse; width:100%; font-size:0.9rem; }
table.fin-table th{ text-align:left; font-size:0.71rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--text-muted); background:var(--surface-muted); padding:10px 12px; }
table.fin-table td{ padding:10px 12px; border-top:1px solid var(--border); }

/* ---------- Date calculator ---------- */
.calc-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:22px; max-width:640px; }
.calc-row{ display:flex; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.calc-row .form-field{ flex:1 1 200px; }
.calc-row select, .calc-row input{ width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--bg); font-size:0.9rem; }
.calc-result{ display:flex; flex-direction:column; gap:2px; }
.calc-step{ display:flex; justify-content:space-between; padding:8px 4px; border-top:1px solid var(--border); font-size:0.9rem; }
.calc-step:first-child{ border-top:none; }
.calc-step .step-label{ font-weight:600; }
.calc-step .step-date{ color:var(--accent-strong); font-weight:700; }
.calc-disclaimer{ margin:16px 0 0; font-size:0.74rem; color:var(--text-muted); }
#tab-restrito .field textarea{ min-height:220px; }

/* ---------- Archive ---------- */
.archive-section{ margin-top:28px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface-muted); }
.archive-header{ display:flex; align-items:center; gap:10px; padding:14px 18px; cursor:pointer; }
.archive-header h2{ font-size:0.92rem; font-weight:600; color:var(--text-muted); flex:1; }
.archive-hint{ margin:0 18px 10px; font-size:0.76rem; color:var(--text-muted); }
.archive-body{ padding:0 10px 12px; display:none; }
.archive-section.open .archive-body{ display:block; }
.archive-section.open .group-caret{ transform:rotate(180deg); }
.archive-row{ border-top:1px solid var(--border); padding:10px 8px; display:flex; flex-wrap:wrap; gap:10px; align-items:center; font-size:0.86rem; }
.archive-body .archive-row:first-child{ border-top:none; }
.archive-row .a-name{ font-weight:700; flex:1 1 180px; }
.archive-row .a-meta{ color:var(--text-muted); font-size:0.78rem; flex:2 1 260px; }
.archive-empty{ padding:18px 14px; text-align:center; color:var(--text-muted); font-size:0.85rem; }

/* ---------- Somente leitura / campos ocultos ---------- */
.readonly-note{ font-size:0.8rem; color:var(--text-muted); background:var(--surface-muted); border:1px solid var(--border); border-radius:var(--radius-sm); padding:8px 13px; margin-bottom:16px; }
.tab-panel.readonly .edit-only{ display:none !important; }
.tab-panel.readonly .paid-badge, .tab-panel.readonly .pill, .tab-panel.readonly .addon-toggle{ pointer-events:none; }
.tab-panel.readonly select:disabled{ opacity:1; color:inherit; }
table.fin-table.hide-grupo .col-grupo, table.fin-table.hide-codigo .col-codigo{ display:none; }

/* ---------- Cancelamentos ---------- */
table.ngs-table select{ width:100%; min-width:96px; padding:6px 8px; border:1px solid transparent; border-radius:var(--radius-sm); background:transparent; font-size:0.85rem; }
table.ngs-table select:hover, table.ngs-table select:focus{ border-color:var(--border); background:var(--surface); outline:none; }
input.group-select{ padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.86rem; }
.form-field textarea{ width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--bg); font-size:0.9rem; min-height:60px; resize:vertical; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:0 12px; }
.more-row{ text-align:center; margin-top:12px; font-size:0.8rem; color:var(--text-muted); }
.row-actions{ display:flex; gap:6px; justify-content:flex-end; }

/* ---------- Configurações (admin) ---------- */
dialog#userDialog{ max-width:700px; max-height:92vh; }
.cfg-chips{ display:flex; flex-wrap:wrap; gap:5px; }
.perm-matrix{ width:100%; border-collapse:collapse; font-size:0.86rem; margin-top:6px; }
.perm-matrix th{ text-align:center; font-size:0.7rem; text-transform:uppercase; letter-spacing:0.04em; color:var(--text-muted); background:var(--surface-muted); padding:8px 6px; }
.perm-matrix th:first-child{ text-align:left; padding-left:10px; }
.perm-matrix td{ padding:8px 6px; border-top:1px solid var(--border); vertical-align:top; }
.perm-matrix td.radio-cell{ text-align:center; }
.perm-matrix .tab-name{ font-weight:600; padding-left:10px; }
.perm-matrix .tab-hint{ display:block; font-weight:400; font-size:0.72rem; color:var(--text-muted); }
details.hide-fields{ margin-top:6px; font-size:0.78rem; }
details.hide-fields summary{ cursor:pointer; color:var(--accent-strong); }
.hide-list{ display:flex; flex-wrap:wrap; gap:6px 16px; padding:8px 0 2px; }
.hide-list label{ display:flex; align-items:center; gap:6px; cursor:pointer; }
.cfg-warning{ font-size:0.76rem; color:var(--warn); background:var(--warn-soft); border-radius:var(--radius-sm); padding:8px 11px; margin:10px 0 0; }
.cfg-audit-row{ border-top:1px solid var(--border); padding:9px 8px; font-size:0.82rem; }
.cfg-audit-row:first-child{ border-top:none; }

@media (max-width:640px){
  .form-row{ grid-template-columns:1fr; }
  .kpis{ grid-template-columns:repeat(2,1fr); }
  .p-side{ justify-content:flex-start; }
  .topbar{ flex-wrap:wrap; }
}

/* ---------- Início / Relatórios / Fichas abertas / 2FA / "Ver como" (migração 11) ---------- */
.home-hello{ margin:0 2px 18px; }
.home-hello h2{ font-family:"Fraunces",Georgia,serif; font-size:1.5rem; font-weight:600; }
.home-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px; }
.home-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px 18px; box-shadow:var(--shadow); }
.home-card h3{ font-size:0.86rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--text-muted); margin:0 0 10px; }
.home-card.wide{ grid-column:1 / -1; }
.home-stats{ display:flex; flex-wrap:wrap; gap:8px 22px; }
.home-stat .v{ font-family:"Fraunces",serif; font-size:1.6rem; font-weight:600; line-height:1.1; }
.home-stat .l{ font-size:0.72rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.04em; margin-top:3px; }
.home-stat.warn .v{ color:var(--warn); } .home-stat.bad .v{ color:var(--bad); }
.home-card .btn{ margin-top:12px; }
.home-links{ display:flex; flex-wrap:wrap; gap:8px; }
.home-link{ background:var(--accent-soft); border:1px solid transparent; color:var(--accent-strong); border-radius:var(--radius-sm); padding:9px 14px; font-size:0.86rem; font-weight:600; cursor:pointer; text-align:left; }
.home-link:hover{ border-color:var(--accent); }
.home-link small{ display:block; font-weight:400; font-size:0.72rem; color:var(--text-muted); margin-top:2px; }
.home-alert{ display:flex; align-items:center; gap:10px; }
.home-alert .dot{ width:10px; height:10px; border-radius:50%; background:var(--good); flex:none; }
.home-alert.on .dot{ background:#E5322D; }

.rp-controls{ display:flex; flex-wrap:wrap; gap:10px 12px; align-items:flex-end; margin-bottom:16px; }
.rp-controls .form-field{ margin:0; }
.rp-controls select, .rp-controls input[type=date]{ padding:9px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.86rem; }
.rp-quick{ display:flex; gap:6px; flex-wrap:wrap; }
.rp-title{ margin:4px 2px 2px; font-size:1.05rem; }
.rp-sub{ margin:0 2px 10px; }
.rp-num{ text-align:right; white-space:nowrap; }
.rp-bar{ display:inline-block; vertical-align:middle; width:120px; height:8px; margin-left:10px; background:var(--surface-muted); border-radius:4px; overflow:hidden; }
.rp-bar i{ display:block; height:100%; background:var(--accent); border-radius:4px; }
table.rp-table tfoot td{ font-weight:700; border-top:2px solid var(--border); }
.fi-sum{ display:flex; flex-wrap:wrap; gap:6px; margin:0 2px 12px; align-items:center; }
.fi-filter{ display:inline-flex; align-items:center; gap:8px; background:var(--accent-soft); color:var(--accent-strong); border-radius:var(--radius-sm); padding:6px 10px; font-size:0.82rem; }

.mfa-steps{ margin:0 0 12px; padding-left:20px; font-size:0.86rem; color:var(--text-muted); }
.mfa-steps li{ margin-bottom:4px; }
.mfa-qr{ display:flex; justify-content:center; margin:8px 0 10px; }
.mfa-qr img{ background:#fff; border:1px solid var(--border); border-radius:var(--radius-sm); padding:8px; }
.mfa-manual{ font-size:0.8rem; margin-bottom:12px; color:var(--text-muted); }
.mfa-manual code{ display:block; margin-top:6px; word-break:break-all; background:var(--surface-muted); padding:6px 8px; border-radius:6px; font-size:0.8rem; user-select:all; }
#mfaCode{ letter-spacing:0.35em; font-size:1.2rem; text-align:center; }

.pill-2fa{ display:inline-block; font-size:0.68rem; font-weight:700; padding:2px 7px; border-radius:999px; margin-top:5px; }
.ret-box label{ flex-wrap:wrap; max-width:100%; }
.al-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px 20px; margin-bottom:16px; max-width:720px; }
.al-card h3{ font-size:1rem; font-weight:600; margin:0 0 4px; }
.al-hint{ font-size:0.8rem; color:var(--text-muted); margin:0 0 12px; }
.al-chips{ display:flex; flex-wrap:wrap; gap:8px; margin:8px 0 10px; }
.al-chip{ display:inline-flex; align-items:center; gap:6px; background:var(--bg); border:1px solid var(--border); border-radius:999px; padding:4px 6px 4px 12px; font-size:0.85rem; max-width:100%; overflow-wrap:anywhere; }
.al-chip button{ border:none; background:transparent; cursor:pointer; font-size:0.95rem; color:var(--text-muted); padding:0 6px; }
.al-add{ display:flex; flex-wrap:wrap; gap:8px; }
.al-add input{ flex:1 1 220px; min-width:0; }
.al-grp{ font-size:0.78rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--text-muted); margin:14px 0 4px; }
.al-ev{ display:flex; align-items:flex-start; gap:8px; font-size:0.88rem; padding:4px 0; }
.al-ev input{ margin-top:3px; }
.al-st{ display:inline-block; font-size:0.75rem; padding:1px 8px; border-radius:999px; border:1px solid var(--border); }
.al-st.ok{ color:#0a7a3d; border-color:#0a7a3d; } .al-st.erro{ color:#b3261e; border-color:#b3261e; } .al-st.pend{ color:var(--text-muted); }
.al-log{ width:100%; border-collapse:collapse; font-size:0.83rem; }
.al-log td{ padding:6px 4px; border-top:1px solid var(--border); vertical-align:top; overflow-wrap:anywhere; }
.al-err{ display:block; color:#b3261e; font-size:0.78rem; margin-top:2px; }
.ret-box select{ max-width:100%; }
.pill-2fa.on{ background:var(--good-soft); color:var(--good); } .pill-2fa.off{ background:var(--warn-soft); color:var(--warn); }

/* ---------- estilos/2-revisao-uso.css ---------- */
/* =====================================================================
   REVISÃO VISUAL (30/09/2026) — princípios de design da Apple adaptados a
   um sistema de trabalho: resposta imediata ao clique, movimento curto e
   discreto (0,1–0,25 s, sem “quique”), fonte do próprio aparelho, cabeçalho
   translúcido, acessibilidade. Só modo claro. Nada aqui muda regra de
   negócio ou segurança — é só aparência e uso.
   ===================================================================== */
:root{
  color-scheme: light;
  --font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --ease-out: cubic-bezier(.2,.8,.2,1);
  --ease-in: cubic-bezier(.4,0,1,1);
  --t-press: 100ms;
  --t-fast: 140ms;
  --t-med: 200ms;
  --alert:#D93A2B;
  --alert-soft:#FDECEA;
  --new-row:#FFF8EC;
  --head-bg: rgba(245,246,249,0.90);
  --head-h: 0px;          /* altura visível do cabeçalho fixo (medida pelo JS) */
  --topbar-h: 0px;        /* altura da faixa da marca (rola e some; as barras ficam) */
  --text-muted:#5A6075;   /* um pouco mais escuro: melhor contraste em texto pequeno */
}
html{ scroll-padding-top: calc(var(--head-h) + 12px); }
body{ font-family:var(--font-ui); line-height:1.45; text-rendering:optimizeLegibility; }
h1,h2,h3{ font-family:var(--font-ui); }
button{ font-family:inherit; }
.pw-input, .cred-box, .mfa-manual code, #mfaSecret{ font-family:var(--font-mono); }

/* ---------- Tipografia: títulos grandes com espaçamento negativo, texto miúdo levemente aberto */
h1{ font-weight:700; letter-spacing:-0.02em; line-height:1.15; }
.brand-text h1{ font-size:1.22rem; font-weight:700; letter-spacing:-0.018em; }
.brand-text p{ font-size:0.8rem; margin-top:1px; letter-spacing:0; }
.login-card h1{ font-size:1.55rem; letter-spacing:-0.022em; }
.home-hello h2{ font-family:var(--font-ui); font-size:1.6rem; font-weight:700; letter-spacing:-0.024em; line-height:1.15; }
.kpi .value, .home-stat .v{ font-family:var(--font-ui); font-weight:700; letter-spacing:-0.028em; font-variant-numeric:tabular-nums; }
.kpi .value{ font-size:1.75rem; }
.home-stat .v{ font-size:1.6rem; }
.kpi .label, .home-stat .l, .home-card h3{ letter-spacing:0.045em; }
.group-header h2{ letter-spacing:-0.005em; }
.tab-intro, .archive-hint, .meta-note, .list-hint, .al-hint{ line-height:1.5; }
.p-name{ font-size:1rem; letter-spacing:-0.005em; }

/* ---------- Cores soltas agora usam a mesma paleta */
.notif-badge, .new-tag{ background:var(--alert); }
tr.ac-new td{ background:var(--new-row); }
tr.ac-new td:first-child{ box-shadow:inset 3px 0 0 var(--alert); }
.home-alert.on .dot{ background:var(--alert); }
.al-st.ok{ color:var(--good); border-color:var(--good); }
.al-st.erro{ color:var(--bad); border-color:var(--bad); }
.al-err{ color:var(--bad); }

/* ---------- Resposta ao clique: afunda na hora em que aperta (não só no hover) */
.btn, .toggle-chip, .pill, .paid-badge, .addon-toggle, .home-link, .mod-btn, .tab-btn, .p-expand-btn, .login-link, .al-chip button{ -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.btn, .toggle-chip, button.pill, button.paid-badge, .addon-toggle, .home-link, .login-link{
  transition: transform var(--t-press) ease-out, background-color var(--t-fast) ease, border-color var(--t-fast) ease, color var(--t-fast) ease, box-shadow var(--t-fast) ease, opacity var(--t-fast) ease;
}
.btn:active:not([disabled]), .toggle-chip:active, button.pill:active, button.paid-badge:active, .addon-toggle:active, .home-link:active{ transform:scale(0.97); transition-duration:60ms; }
.mod-btn, .tab-btn{ transition: color var(--t-fast) ease, border-color var(--t-fast) ease, opacity var(--t-press) ease; }
.mod-btn:active, .tab-btn:active{ opacity:0.6; transition-duration:40ms; }
.btn.ghost:active:not([disabled]){ background:var(--surface-muted); }
.toggle-chip:hover{ border-color:#C8CDD9; }
.toggle-chip[aria-pressed="true"]{ background:var(--accent-soft); border-color:var(--accent); color:var(--accent-strong); font-weight:600; }

/* botões que antes eram texto clicável */
button.pill, button.paid-badge, button.addon-toggle{ font-family:inherit; line-height:1.35; margin:0; }
button.pill{ border:1px solid transparent; }
.paid-badge{ border:1px solid transparent; line-height:1.35; }
.paid-badge.yes:hover{ border-color:#D9C2E0; }
.paid-badge.no{ border:1px dashed #C4C9D6; }
button.pill:hover{ filter:brightness(0.97); }
.login-link{ display:block; margin:14px auto 0; padding:6px 10px; background:none; border:0; border-radius:6px; color:var(--accent-strong); font-size:0.84rem; cursor:pointer; }
.login-link:hover{ text-decoration:underline; }
.p-expand-btn{ border-radius:6px; }
.p-expand-btn:hover{ background:var(--surface-muted); color:var(--text); }
.p-expand-btn svg{ transition: transform var(--t-med) var(--ease-out); }
.p-row.expanded .p-expand-btn svg{ transform:rotate(90deg); }

/* ---------- Foco visível em tudo (teclado) */
:where(button, [role="button"], a, summary, [tabindex]):focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:6px; }
input:not([type="checkbox"]):not([type="radio"]), select, textarea{ transition: border-color var(--t-fast) ease, box-shadow var(--t-fast) ease, background-color var(--t-fast) ease; }
input:not([type="checkbox"]):not([type="radio"]):focus, select:focus, textarea:focus{ outline:none; border-color:var(--accent) !important; box-shadow:0 0 0 3px var(--accent-soft); }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
input[type="checkbox"], input[type="radio"]{ accent-color: var(--accent); }
.p-name:focus{ outline:none; box-shadow:0 0 0 3px var(--accent-soft); border-radius:4px; }
/* validação ao digitar (o navegador marca depois que a pessoa mexeu no campo) */
input:user-invalid{ border-color:var(--bad) !important; }
input:user-invalid:focus{ box-shadow:0 0 0 3px var(--bad-soft); }
.field-hint{ font-size:0.76rem; color:var(--text-muted); margin-top:5px; min-height:1.1em; transition: color var(--t-fast) ease; }
.field-hint.ok{ color:var(--good); }
.field-hint.warn{ color:var(--warn); }
.field-hint.err{ color:var(--bad); }

/* ---------- Botões: perigoso em vermelho, “carregando” com indicador */
.btn.danger{ background:var(--bad); color:#fff; }
.btn.danger:hover:not([disabled]){ background:#9A3321; }
.btn.primary-soft{ background:var(--accent-soft); color:var(--accent-strong); border:1px solid transparent; }
.btn.primary-soft:hover{ border-color:var(--accent); }
.btn.busy{ cursor:progress; }
.btn.busy::before{ content:""; width:12px; height:12px; flex:none; border-radius:50%; border:2px solid currentColor; border-right-color:transparent; animation: spin .7s linear infinite; }
.btn[disabled].busy{ opacity:0.75; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ---------- Cabeçalho fixo e translúcido (a marca rola e some; as barras de navegação ficam) */
.app{ padding-top:0; }
.app-head{
  position:sticky; top:calc(-1 * var(--topbar-h)); z-index:30;
  margin:0 -24px 22px; padding:0 24px;
  background:var(--head-bg);
  -webkit-backdrop-filter:saturate(180%) blur(18px); backdrop-filter:saturate(180%) blur(18px);
  transition: box-shadow var(--t-med) ease;
}
.app-head.scrolled{ box-shadow: 0 1px 0 var(--border), 0 10px 18px -16px rgba(15,20,35,0.35); }
.app-head .topbar{ padding:20px 2px 16px; margin-bottom:6px; }
.app-head .mod-nav{ margin-bottom:0; }
.app-head .tab-nav.sub-nav{ margin-bottom:0; }
.app-head .offline-note{ margin:0 0 8px; }
.brand-mark{ --mark-h:40px; }
.who-box .btn{ flex:none; }

/* ---------- Tabelas: título das colunas fixo ao rolar (computador) e linha destacada */
table.ngs-table td, table.fin-table td{ transition: background-color var(--t-fast) ease; }
table.ngs-table tr:focus-within td{ background:#F4F6FB; }
table.fin-table tbody tr:hover td{ background:var(--surface-muted); }
@media (min-width:900px) and (pointer:fine){
  .tab-panel .table-scroll{ max-height: calc(100vh - var(--head-h) - 28px); max-height: calc(100dvh - var(--head-h) - 28px); overflow:auto; }
  .tab-panel .table-scroll thead th{ position:sticky; top:0; z-index:2; box-shadow: inset 0 -1px 0 var(--border); }
}
.pager .btn{ min-width:36px; }

/* ---------- Janelas: surgem com leve aumento e o fundo escurece aos poucos */
dialog{ border:none; border-radius:var(--radius-lg); padding:0; background:var(--surface); color:var(--text); box-shadow:0 24px 60px -20px rgba(15,20,35,0.35), 0 4px 14px -6px rgba(15,20,35,0.12); max-width:440px; width:92vw; max-height:92vh; }
dialog{ opacity:0; transform: translateY(8px) scale(0.985);
  transition: opacity var(--t-med) var(--ease-out), transform var(--t-med) var(--ease-out), overlay var(--t-med) allow-discrete, display var(--t-med) allow-discrete; }
dialog[open]{ opacity:1; transform:none; }
@starting-style{ dialog[open]{ opacity:0; transform: translateY(8px) scale(0.985); } }
dialog::backdrop{ background:rgba(15,20,35,0); transition: background-color var(--t-med) ease, overlay var(--t-med) allow-discrete, display var(--t-med) allow-discrete; }
dialog[open]::backdrop{ background:rgba(15,20,35,0.42); }
@starting-style{ dialog[open]::backdrop{ background:rgba(15,20,35,0); } }
.dialog-inner h3{ font-size:1.12rem; font-weight:700; letter-spacing:-0.012em; }
#userDialog .dialog-actions, #newUserDialog .dialog-actions{ position:sticky; bottom:0; background:var(--surface); margin:16px -24px -20px; padding:12px 24px 16px; border-top:1px solid var(--border); }
.dlg-sec{ border-top:1px solid var(--border); padding-top:14px; margin-top:14px; }
#confirmText{ line-height:1.5; }

/* ---------- Aviso (toast): cor por tipo, entra e sai deslizando pouco */
.toast{ display:flex; align-items:center; gap:9px; max-width:min(560px, calc(100vw - 32px)); width:max-content; bottom:calc(22px + env(safe-area-inset-bottom)); padding:10px 16px 10px 12px; border-radius:12px; line-height:1.35; font-weight:500; text-align:left;
  transition: opacity var(--t-med) var(--ease-out), transform var(--t-med) var(--ease-out); }
.toast[hidden]{ display:none; }
.toast::before{ content:"i"; flex:none; width:20px; height:20px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,0.18); font-size:0.72rem; font-weight:800; }
.toast.ok{ background:#1B5E43; } .toast.ok::before{ content:"✓"; }
.toast.warn{ background:#7A4D0C; } .toast.warn::before{ content:"!"; }
.toast.err{ background:#9B2C1E; } .toast.err::before{ content:"✕"; }
.toast.enter, .toast.leaving{ opacity:0; transform:translate(-50%, 10px); }
.toast.leaving{ transition-timing-function: var(--ease-in); transition-duration: var(--t-fast); }

/* ---------- Salvando / Salvo (edição direta nos campos) */
.save-state{ display:inline-flex; align-items:center; gap:5px; font-size:0.72rem; font-weight:600; color:var(--text-muted); white-space:nowrap; opacity:0; transition: opacity var(--t-med) ease; }
.save-state:empty{ display:none; }
.save-state.on{ opacity:1; }
.save-state.saving::before{ content:""; width:9px; height:9px; border-radius:50%; border:1.5px solid currentColor; border-right-color:transparent; animation: spin .7s linear infinite; }
.save-state.ok{ color:var(--good); }
.save-state.err{ color:var(--bad); }
.sv-err{ border-color:var(--bad) !important; background:var(--bad-soft) !important; }
.row-actions{ align-items:center; }

/* ---------- Abrir e fechar (grupos, ficha da paciente, seções recolhíveis) */
.anim-in{ animation: reveal var(--t-med) var(--ease-out); }
.p-row.closing .p-detail, .group.closing .group-body, .archive-section.closing .archive-body{ animation: conceal var(--t-fast) var(--ease-in) forwards; pointer-events:none; }
.group.closing .group-caret{ transform:rotate(-90deg); }
.archive-section.closing .group-caret{ transform:none; }
@keyframes reveal{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:none; } }
@keyframes conceal{ from{ opacity:1; } to{ opacity:0; transform:translateY(-4px); } }
.group-caret{ transition: transform var(--t-med) var(--ease-out); }
.group-header, .archive-header{ border-radius:var(--radius-lg); transition: background-color var(--t-fast) ease; user-select:none; }
.group-header:hover{ background:#FAFBFC; }
.archive-header:hover{ background:rgba(255,255,255,0.5); }
.p-row{ transition: background-color var(--t-fast) ease; }
.p-row.urgent{ background:linear-gradient(90deg, var(--warn-soft), rgba(251,238,218,0.25) 55%, transparent); box-shadow: inset 3px 0 0 var(--warn); border-radius:6px; }
.step{ transition: background-color var(--t-med) ease; }
.tab-panel.active{ animation: fade-in var(--t-fast) ease-out; }
@keyframes fade-in{ from{ opacity:0; } to{ opacity:1; } }
.login-wrap:not(.hidden) .login-card{ animation: reveal 240ms var(--ease-out); }

/* ---------- Relatórios: barras crescem ao gerar */
.rp-bar i{ transform-origin:left center; animation: grow 420ms var(--ease-out) both; }
@keyframes grow{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }

/* ---------- Início */
.home-card{ transition: border-color var(--t-fast) ease; }
.home-card .btn{ margin-top:14px; }
.home-link{ min-height:44px; }

/* ---------- Configurações: ações agrupadas, perigosas separadas */
.cfg-actions{ align-items:center; }
.cfg-danger{ margin-top:6px; padding-top:6px; border-top:1px dashed var(--border); }
.cfg-cell-actions{ min-width:250px; }

/* ---------- Celular e telas pequenas */
@media (max-width:640px){
  .app{ padding:0 16px 64px; }
  .app-head{ margin:0 -16px 16px; padding:0 16px; }
  .app-head .topbar{ padding:14px 0 10px; gap:10px; flex-wrap:nowrap; }
  .brand-text p{ display:none; }
  .brand-text h1{ font-size:1.06rem; }
  .brand-mark{ --mark-h:31px; }
  .who-box .who-name{ font-size:0.76rem; max-width:40vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .who-box .who-name b{ font-size:0.82rem; overflow:hidden; text-overflow:ellipsis; }
  .mod-btn{ padding:10px 12px; font-size:0.92rem; }
  .tab-btn{ padding:10px 12px; }
  .home-hello h2{ font-size:1.35rem; }
  .kpi{ padding:12px 14px; flex-basis:140px; }
  .kpi .value{ font-size:1.5rem; }
  .dialog-inner{ padding:20px 18px 16px; }
  #userDialog .dialog-actions, #newUserDialog .dialog-actions{ margin:14px -18px -16px; padding:12px 18px 14px; }
  .toast{ bottom:calc(14px + env(safe-area-inset-bottom)); }
  .brand-text{ min-width:0; }
  .brand-text h1{ white-space:normal; line-height:1.15; }   /* o nome quebra em 2 linhas ao lado da logo (antes era cortado com …) */
  .who-box .who-role{ display:none; }
  .controls > .tab-intro{ flex:1 1 100%; }
  .search-wrap{ flex:1 1 100%; }
  select.group-select{ max-width:100%; }
}
/* toque: alvo mínimo de 44 px; campos com 16 px para o iPhone não dar zoom */
@media (pointer:coarse){
  .btn, .btn.small, .toggle-chip, .mod-btn, .tab-btn, .login-link{ min-height:44px; }
  .btn.small{ padding:8px 14px; }
  button.pill, button.paid-badge, .p-expand-btn, button.addon-toggle, .al-chip button{ position:relative; }
  button.pill::after, button.paid-badge::after, .p-expand-btn::after, .al-chip button::after{ content:""; position:absolute; inset:-7px -3px; }
  button.addon-toggle{ min-height:40px; }
}
@media (max-width:640px), (pointer:coarse){
  input:not([type="checkbox"]):not([type="radio"]):not(#mfaCode), select, textarea{ font-size:16px !important; }
}

/* ---------- Preferências de acessibilidade do aparelho */
@media (prefers-reduced-motion: reduce){
  .anim-in, .login-wrap:not(.hidden) .login-card{ animation: fade-in 120ms ease-out !important; }
  .p-row.closing .p-detail, .group.closing .group-body, .archive-section.closing .archive-body{ animation:none !important; }
  .tab-panel.active{ animation:none; }
  .rp-bar i{ animation:none; }
  .btn:active:not([disabled]), .toggle-chip:active, button.pill:active, button.paid-badge:active, .addon-toggle:active, .home-link:active{ transform:none; }
  dialog, dialog[open]{ transform:none !important; }
  @starting-style{ dialog[open]{ transform:none; } }
  .toast.enter, .toast.leaving{ transform:translateX(-50%); }
  .p-expand-btn svg, .group-caret{ transition:none; }
  html{ scroll-behavior:auto; }
}
@media (prefers-reduced-transparency: reduce){
  .app-head{ background:var(--bg); -webkit-backdrop-filter:none; backdrop-filter:none; }
}
@media (prefers-contrast: more){
  :root{ --border:#A2A8B7; --text-muted:#3E4456; }
  .app-head{ background:var(--bg); -webkit-backdrop-filter:none; backdrop-filter:none; border-bottom:1px solid var(--text-muted); }
  .btn.ghost, .toggle-chip{ border-color:var(--text-muted); }
}

/* ---------- estilos/3-visual-apple.css ---------- */
/* =====================================================================
   REDESENHO VISUAL (30/09/2026) — aparência no estilo dos apps da Apple,
   só modo claro. Camada por cima da revisão: se não agradar, basta remover
   este bloco (e o título grande / menu lateral no JS) para voltar.
   - computador (≥1024 px): menu lateral com ícones; abas do módulo dentro do menu
   - tablet: barras no topo em forma de "cápsula" e controle segmentado
   - celular: barra de módulos embaixo (como no iPhone) e janelas que sobem de baixo
   ===================================================================== */
:root{
  --bg:#F2F2F7;
  --surface:#FFFFFF;
  --surface-muted:#F5F5F8;
  --fill:rgba(118,118,128,0.12);
  --fill-2:rgba(118,118,128,0.08);
  --fill-3:rgba(118,118,128,0.18);
  --border:#E2E2E7;
  --hair:#E9E9EE;
  --text:#1C1C1E;
  --text-muted:#6B6B72;
  --accent-soft:#E7EAF6;
  --radius-lg:16px; --radius-md:12px; --radius-sm:10px;
  --card-shadow: 0 1px 2px rgba(20,22,40,0.05), 0 0 0 0.5px rgba(20,22,40,0.06);
  --head-bg: rgba(242,242,247,0.86);
  --side-w: 252px;
}
body{ background:var(--bg); color:var(--text); }

/* ---------- ícones dos módulos (desenhados, sem imagem externa) */
.mod-btn[data-mod="inicio"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 10.5 12 3.5l8.5 7'/%3E%3Cpath d='M5.5 9v11h4.5v-6h4v6h4.5V9'/%3E%3C/svg%3E"); }
.mod-btn[data-mod="fiv"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='12' r='5.2'/%3E%3Ccircle cx='15' cy='12' r='5.2'/%3E%3C/svg%3E"); }
.mod-btn[data-mod="cancelamentos"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5' width='17' height='15.5' rx='3'/%3E%3Cpath d='M3.5 10h17M8 3v4M16 3v4M10 13.5l4 4M14 13.5l-4 4'/%3E%3C/svg%3E"); }
.mod-btn[data-mod="relatorios"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.5 20v-8M12 20V5M18.5 20v-5'/%3E%3C/svg%3E"); }
.mod-btn[data-mod="config"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7.5h9M17.5 7.5H20M4 16.5h3.5M11.5 16.5H20'/%3E%3Ccircle cx='15.5' cy='7.5' r='2.2'/%3E%3Ccircle cx='9.5' cy='16.5' r='2.2'/%3E%3C/svg%3E"); }
.mod-btn::before{ content:""; flex:none; width:19px; height:19px; background:currentColor; -webkit-mask:var(--ico) center/contain no-repeat; mask:var(--ico) center/contain no-repeat; }
.mod-btn{ display:inline-flex; align-items:center; gap:8px; position:relative; }

/* ---------- título grande de cada tela */
.page-head{ margin:6px 2px 18px; }
.page-eyebrow{ font-size:0.82rem; font-weight:600; color:var(--text-muted); margin:0 0 2px; min-height:0; }
.page-eyebrow:empty{ display:none; }
.page-title{ font-size:2.05rem; font-weight:700; letter-spacing:-0.03em; line-height:1.08; color:var(--text); margin:0; }
.tab-intro{ font-size:0.92rem; color:var(--text-muted); max-width:78ch; }
.home-hello{ margin:6px 2px 20px; }
.home-hello h2{ font-size:2.05rem; letter-spacing:-0.03em; }
.home-hello .meta-note{ font-size:0.9rem; margin-top:4px; }

/* ---------- cabeçalho: vidro fica numa camada de fundo (assim a barra de baixo do celular pode ser fixa) */
.app-head{ background:transparent; -webkit-backdrop-filter:none; backdrop-filter:none; }
.app-head::before{ content:""; position:absolute; inset:0; z-index:-1; background:var(--head-bg); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); }
.app-head .topbar{ border-bottom:0; }
.brand-mark{ --mark-h:40px; }
.brand-text h1{ font-size:1.08rem; color:var(--text); letter-spacing:-0.012em; }
.brand-text p{ color:var(--text-muted); }

/* ---------- navegação (padrão: tablet) — cápsulas e controle segmentado */
.tab-nav{ border-bottom:0; gap:4px; }
.mod-btn, .tab-btn{ border-bottom:0 !important; margin-bottom:0; border-radius:10px; }
.app-head .mod-nav{ padding:2px 0 8px; }
.mod-btn{ padding:8px 14px; font-size:0.95rem; font-weight:600; color:var(--text-muted); }
.mod-btn:hover{ color:var(--text); background:var(--fill-2); }
.mod-btn.active{ color:var(--accent-strong); background:var(--accent-soft); }
.sub-nav{ background:var(--fill); padding:3px; border-radius:11px; width:max-content; max-width:100%; margin-bottom:12px !important; gap:2px; }
.sub-nav .tab-btn{ padding:6px 14px; font-size:0.86rem; font-weight:600; color:var(--text); border-radius:8px; }
.sub-nav .tab-btn:hover{ background:rgba(255,255,255,0.55); }
.sub-nav .tab-btn.active{ background:var(--surface); color:var(--text); font-weight:650; box-shadow:0 1px 3px rgba(0,0,0,0.12), 0 0 0 0.5px rgba(0,0,0,0.04); }

/* ---------- computador: menu lateral */
@media (min-width:1024px){
  .app{ max-width:none; margin:0; padding:0 36px 72px 0; display:grid; grid-template-columns:var(--side-w) minmax(0,1fr); column-gap:40px; align-items:start; }
  .app > *:not(.app-head){ grid-column:2; width:100%; max-width:1200px; }
  .app > .page-head, .app > .tab-panel > .home-hello{ margin-top:0; }
  .app > .page-head{ padding-top:34px; }
  #tab-inicio{ padding-top:34px; }
  .app-head{ grid-column:1; grid-row:1 / span 80; position:sticky; top:0 !important; height:100vh; height:100dvh; overflow-y:auto; overflow-x:hidden; margin:0; padding:20px 12px 104px; box-shadow:none !important; border-right:0.5px solid rgba(0,0,0,0.1); }
  .app-head::before{ background:rgba(246,246,249,0.92); }
  .app-head .topbar{ padding:2px 8px 22px; margin:0; gap:10px; flex-wrap:nowrap; }
  .brand-text h1{ font-size:1.02rem; }
  .brand-text p{ display:none; }
  .brand-mark{ --mark-h:34px; }
  .who-box{ position:absolute; left:12px; right:12px; bottom:16px; display:flex; align-items:center; gap:10px; padding:10px 10px 10px 12px; border-radius:14px; background:var(--surface); box-shadow:var(--card-shadow); }
  .who-box .who-name{ flex:1; min-width:0; text-align:left; font-size:0.76rem; }
  .who-box .who-name b{ font-size:0.86rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .who-box .who-role{ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .app-head .mod-nav{ display:flex; flex-direction:column; align-items:stretch; gap:2px; padding:3px; margin:0; overflow:hidden; }
  .mod-btn{ display:flex; width:100%; gap:11px; padding:8px 10px; font-size:0.94rem; color:var(--text); text-align:left; }
  .mod-btn::before{ width:20px; height:20px; color:var(--accent); background:var(--accent); }
  .mod-btn.active::before{ background:var(--accent-strong); }
  .mod-btn:hover{ background:rgba(0,0,0,0.045); color:var(--text); }
  .mod-btn.active{ background:var(--accent-soft); color:var(--accent-strong); }
  .mod-btn .notif-badge{ margin-left:auto; transform:none; }
  .mod-nav .sub-nav{ flex-direction:column; align-items:stretch; background:none; padding:2px 0 8px 31px; margin:0 !important; width:auto; border-radius:0; gap:1px; overflow:hidden; }
  .mod-nav .sub-nav .tab-btn{ text-align:left; padding:6px 10px; font-size:0.88rem; font-weight:500; color:var(--text-muted); background:none; box-shadow:none; }
  .mod-nav .sub-nav .tab-btn:hover{ color:var(--text); background:rgba(0,0,0,0.035); }
  .mod-nav .sub-nav .tab-btn.active{ color:var(--accent-strong); font-weight:650; background:rgba(51,68,140,0.07); box-shadow:none; }
  .app-head .offline-note{ margin:0 4px 12px; font-size:0.8rem; }
  .tab-panel .table-scroll{ max-height:calc(100vh - 40px); max-height:calc(100dvh - 40px); }
}

/* ---------- cartões: sem borda, cantos arredondados, sombra leve */
.kpis{ display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:12px; background:none; border:0; border-radius:0; overflow:visible; }
.kpi{ background:var(--surface); border:0 !important; border-radius:16px; box-shadow:var(--card-shadow); padding:14px 16px 13px; }
.kpi .value{ font-size:1.9rem; }
.kpi .label{ text-transform:none; letter-spacing:0; font-size:0.82rem; font-weight:500; color:var(--text-muted); margin-top:3px; }
.home-card, .list-card, .al-card, .calc-card, .ret-box, .ac-days, .archive-section, .table-scroll{ border:0 !important; box-shadow:var(--card-shadow); border-radius:16px; background:var(--surface); }
.home-grid{ gap:16px; }
.home-card{ padding:18px 20px; border-radius:18px; }
.home-card h3{ text-transform:none; letter-spacing:-0.01em; font-size:1.02rem; font-weight:700; color:var(--text); margin-bottom:12px; }
.home-stat .l{ text-transform:none; letter-spacing:0; font-size:0.8rem; font-weight:500; }
.home-stat .v{ font-size:1.75rem; }
.home-links{ display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:8px; }
.home-link{ position:relative; background:var(--fill-2); border:0; border-radius:12px; padding:11px 34px 11px 14px; color:var(--text); font-weight:600; }
.home-link small{ color:var(--text-muted); }
.home-link::after{ content:"›"; position:absolute; right:14px; top:50%; transform:translateY(-52%); font-size:1.35rem; font-weight:400; color:#AEAEB4; }
.home-link:hover{ background:var(--fill); border-color:transparent; }
.home-alert .dot{ box-shadow:0 0 0 4px rgba(31,138,93,0.14); }
.home-alert.on .dot{ box-shadow:0 0 0 4px rgba(217,58,43,0.14); }

/* ---------- botões e campos no estilo iOS/macOS */
.btn{ border-radius:10px; font-weight:600; }
.btn.ghost{ background:var(--fill); border:0; color:var(--accent-strong); }
.btn.ghost:hover{ background:var(--fill-3); }
.btn.ghost:active:not([disabled]){ background:var(--fill-3); }
.btn.danger-soft{ background:rgba(183,64,42,0.11); }
.btn.primary-soft{ background:var(--accent-soft); }
.login-card .btn.primary, .dialog-actions .btn{ padding:10px 18px; }
.search-wrap input, select.group-select, input.group-select, .rp-controls select, .rp-controls input[type=date]{ background-color:var(--fill); border:1px solid transparent; border-radius:10px; }
.search-wrap input{ padding-top:9px; padding-bottom:9px; }
.search-wrap input:focus, select.group-select:focus, input.group-select:focus{ background-color:var(--surface); }
.form-field input, .form-field select, .form-field textarea, .calc-row select, .calc-row input, .opt-row input, .al-add input{ background:var(--fill-2); border:1px solid transparent; border-radius:10px; }
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{ background:var(--surface); }
.field input, .field textarea, .checklist-row input{ background:var(--surface); border:1px solid transparent; border-radius:9px; box-shadow:0 0 0 0.5px rgba(0,0,0,0.08); }
.field label, .form-field label, .detail-section-title, .al-grp{ text-transform:none; letter-spacing:0; font-size:0.8rem; font-weight:600; color:var(--text-muted); }
.detail-section-title{ color:var(--text); font-size:0.84rem; }
.toggle-chip{ border:0; background:var(--fill); border-radius:999px; padding:8px 14px; font-weight:500; color:var(--text); }
.toggle-chip:hover{ background:var(--fill-3); }
.toggle-chip.active, .toggle-chip[aria-pressed="true"]{ background:var(--accent); color:#fff; font-weight:600; }
.addon-toggle{ border:0; border-radius:999px; background:var(--surface); box-shadow:0 0 0 0.5px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.05); font-weight:600; }
.addon-toggle.on{ background:var(--accent); color:#fff; box-shadow:none; }
.readonly-note, .offline-note{ border:0; border-radius:12px; }
.readonly-note{ background:var(--fill-2); }
.controls{ gap:8px; }

/* ---------- listas agrupadas (pacientes por grupo) */
.group{ background:none; border:0; border-radius:0; overflow:visible; margin-bottom:24px; }
.group-header{ padding:6px 8px 9px; border-radius:10px; }
.group-header:hover{ background:rgba(0,0,0,0.03); }
.group-header h2{ font-size:1.1rem; font-weight:700; letter-spacing:-0.014em; }
.group-count{ background:var(--fill); border:0; font-weight:600; color:var(--text-muted); }
.group-body{ background:var(--surface); border:0; border-radius:16px; box-shadow:var(--card-shadow); padding:2px 6px; }
.group-empty{ padding:18px 14px; }
.p-row{ border-top:0.5px solid var(--hair); padding:13px 8px; }
.p-row.urgent{ border-radius:10px; }
.p-detail{ background:var(--surface-muted); border-radius:14px; padding:18px; }
.step{ height:5px; border-radius:999px; background:var(--fill); }
.step.done{ background:var(--accent); }
.paid-badge.no{ border:0; background:var(--fill); }
.archive-section{ margin-top:30px; }
.archive-header h2{ color:var(--text); }
.archive-body{ padding:0 12px 12px; }
.archive-row{ border-top:0.5px solid var(--hair); }
#historyDialog .group{ margin-bottom:12px; }
#historyDialog .group-header{ padding:0 2px 6px; }
#historyDialog .group-body{ background:var(--surface-muted); box-shadow:none; }

/* ---------- tabelas */
table.ngs-table th, table.fin-table th, .perm-matrix th{ background:var(--surface); text-transform:none; letter-spacing:0; font-size:0.78rem; font-weight:600; color:var(--text-muted); border-bottom:0.5px solid var(--border); }
table.ngs-table td, table.fin-table td{ border-top:0.5px solid var(--hair); }
table.ngs-table tbody tr:first-child td, table.fin-table tbody tr:first-child td{ border-top:0; }
table.ngs-table tr:hover td, table.fin-table tbody tr:hover td{ background:#F7F7FA; }
table.ngs-table input:hover, table.ngs-table select:hover{ background:var(--fill-2); border-color:transparent; }
table.rp-table tfoot td{ border-top:0.5px solid var(--border); background:var(--surface-muted); }
.ac-sec h3, .apag-title, .rp-title{ font-size:1.08rem; font-weight:700; letter-spacing:-0.012em; }
.ac-day .bar{ border-radius:6px 6px 2px 2px; }
.rp-bar{ height:7px; background:var(--fill); }
.cfg-audit-row{ border-top:0.5px solid var(--hair); }

/* ---------- janelas */
dialog{ border-radius:20px; }
.dialog-inner{ padding:24px 24px 20px; }
.dialog-inner h3{ font-size:1.25rem; letter-spacing:-0.02em; }
.dialog-actions{ gap:10px; }
.perm-matrix th{ background:var(--surface-muted); }

/* ---------- telas de entrada (login, senha, 2FA) */
.login-wrap{ background: radial-gradient(900px 480px at 50% -8%, #E3E8F8 0%, rgba(227,232,248,0) 70%), var(--bg); }
.login-card{ border:0; border-radius:24px; padding:38px 30px 28px; max-width:400px; box-shadow:0 24px 60px -28px rgba(25,35,80,0.35), 0 0 0 0.5px rgba(0,0,0,0.05); }
.login-card h1{ text-align:center; color:var(--text); font-size:1.75rem; }
.login-card h1::before{ content:""; display:block; width:96px; height:calc(96px / var(--logo-ar)); margin:0 auto 18px; background:var(--logo-img) center/contain no-repeat; }  /* logotipo: ver 0-logo.css */
.login-card p.sub{ text-align:center; margin-bottom:26px; }
.login-card .btn.primary{ padding:12px 18px; font-size:1rem; border-radius:12px; }
.login-error, .login-info{ border-radius:10px; }

/* ---------- celular: barra de módulos embaixo, janelas que sobem de baixo */
@media (max-width:640px){
  .app{ padding-bottom:calc(92px + env(safe-area-inset-bottom)); }
  html{ scroll-padding-bottom:96px; }
  .app-head .topbar{ padding:12px 0 8px; margin-bottom:0; }
  .app-head .mod-nav{ position:fixed; left:0; right:0; bottom:0; z-index:40; display:flex; justify-content:space-around; gap:0; margin:0; padding:5px 4px calc(5px + env(safe-area-inset-bottom)); overflow:hidden;
    background:rgba(249,249,251,0.9); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); box-shadow:0 -0.5px 0 rgba(0,0,0,0.18); }
  .mod-btn{ flex:1 1 0; min-width:0; flex-direction:column; justify-content:center; gap:3px; padding:4px 2px; font-size:0.64rem; font-weight:600; letter-spacing:0; color:#8A8A90; background:none !important; white-space:nowrap; }
  .mod-btn::before{ width:24px; height:24px; }
  .mod-btn.active{ color:var(--accent); }
  .mod-btn .notif-badge{ position:absolute; top:0; left:calc(50% + 4px); margin:0; transform:none; }
  .sub-nav{ margin:4px 0 10px !important; }
  .page-head{ margin:4px 2px 14px; }
  .app-head::before{ background:rgba(242,242,247,0.96); }
  .brand-mark{ --mark-h:31px; }
  .page-title, .home-hello h2{ font-size:1.7rem; }
  .kpis{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px; }
  .home-links{ grid-template-columns:1fr; }
  .toast{ bottom:calc(84px + env(safe-area-inset-bottom)); }
  dialog{ margin:auto 0 0 0; width:100% !important; max-width:100% !important; max-height:90vh; border-radius:20px 20px 0 0; padding-bottom:env(safe-area-inset-bottom); transform:translateY(48px); }
  dialog[open]{ transform:none; }
  @starting-style{ dialog[open]{ opacity:0; transform:translateY(48px); } }
  dialog .dialog-inner::before{ content:""; display:block; width:36px; height:5px; border-radius:3px; background:rgba(0,0,0,0.15); margin:-8px auto 14px; }
  .login-card{ padding:30px 22px 22px; }
}
@media (prefers-reduced-motion: reduce){
  @media (max-width:640px){ dialog, dialog[open]{ transform:none !important; } }
}
@media (prefers-reduced-transparency: reduce){
  .app-head::before{ background:var(--bg); -webkit-backdrop-filter:none; backdrop-filter:none; }
  .app-head .mod-nav{ background:#F9F9FB; -webkit-backdrop-filter:none; backdrop-filter:none; }
}
@media (prefers-contrast: more){
  .app-head::before{ background:var(--bg); -webkit-backdrop-filter:none; backdrop-filter:none; }
  .kpi, .home-card, .table-scroll, .group-body, .list-card, .al-card, .calc-card, .archive-section{ box-shadow:0 0 0 1px var(--text-muted) !important; }
}

/* ---------- estilos/4-ambiente-sessao.css ---------- */
/* ---------- Homologação: faixa fixa no topo (só existe no site de testes; o montar.py põe no HTML) */
body.amb-homologacao{ --amb-h:28px; padding-top:var(--amb-h); }
.amb-faixa{
  position:fixed; top:0; left:0; right:0; z-index:60; height:var(--amb-h, 28px);
  display:flex; align-items:center; justify-content:center; padding:0 12px;
  font-size:0.8rem; font-weight:600; letter-spacing:0.01em; color:#4A3000;
  background:repeating-linear-gradient(135deg, #FFD66B 0 14px, #FFC933 14px 28px);
  border-bottom:1px solid #C99500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.amb-faixa b{ font-weight:800; letter-spacing:0.04em; }
body.amb-homologacao .login-wrap{ min-height:calc(100vh - var(--amb-h)); min-height:calc(100dvh - var(--amb-h)); }
body.amb-homologacao .app-head{ top:calc(var(--amb-h) - var(--topbar-h)); }
@media (min-width:1024px){
  body.amb-homologacao .app-head{ top:var(--amb-h) !important; height:calc(100vh - var(--amb-h)); height:calc(100dvh - var(--amb-h)); }
}
@media (max-width:600px){ .amb-faixa .amb-extra{ display:none; } }
@media (forced-colors:active){ .amb-faixa{ border-bottom:2px solid CanvasText; } }

/* ---------- Botão "Homologação ↗" (só no oficial, para quem foi liberado) */
.homolog-btn{ text-decoration:none; white-space:nowrap; }
.homolog-btn.hidden{ display:none !important; }
@media (min-width:1024px){
  .who-box{ flex-wrap:wrap; }
  .who-box .homolog-btn{ order:3; flex:1 1 100%; justify-content:center; }
}
@media (max-width:600px){
  .who-box .homolog-btn{ padding-left:10px; padding-right:10px; }
}

/* ---------- Aviso "Você ainda está aí?" antes da saída automática */
.sessao-aviso .dialog-inner{ max-width:420px; }
.sessao-aviso #sessaoConta{ font-variant-numeric:tabular-nums; }

/* ---------- Configurações › Tempo de sessão por cargo */
#sessaoSec{ margin-top:22px; }
.sessao-grid{ flex:1 1 100%; display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:8px 18px; }
.sessao-item{ display:flex !important; align-items:center; justify-content:space-between; gap:10px; font-size:0.88rem; min-height:44px; }
.sessao-input{ display:inline-flex; align-items:center; gap:6px; color:var(--text-muted); }
.sessao-input input{ width:76px; text-align:right; font-variant-numeric:tabular-nums; }
/* celular: com o botão da homologação visível, o nome da marca sai (o logotipo fica) para caber tudo */
@media (max-width:600px){ .topbar:has(#homologBtn:not(.hidden)) .brand-text{ display:none; } }

/* ---------- estilos/5-erros.css ---------- */
/* Avisos de erro (nucleo/12-erros.js): caixa vermelha no estilo do sistema, em todas as telas */
.erro-caixa, .login-error.erro-caixa{
  display:flex; gap:10px; align-items:flex-start;
  background:#FFF1F0; color:#B4231A;
  border:1px solid rgba(215,0,21,0.16); border-radius:12px;
  padding:10px 12px; margin:12px 0 4px;
  font-size:0.88rem; line-height:1.4; font-weight:500; text-align:left;
}
.erro-ico{
  flex:none; width:20px; height:20px; border-radius:50%; margin-top:1px;
  display:grid; place-items:center;
  background:#FF3B30; color:#fff; font-size:0.74rem; font-weight:800; line-height:1;
}
.erro-txt{ flex:1; min-width:0; overflow-wrap:anywhere; white-space:pre-line; }
.erro-fechar{
  flex:none; min-width:30px; min-height:30px; margin:-5px -6px -5px 0;
  border:0; border-radius:8px; background:transparent; color:inherit; opacity:0.7;
  font-size:0.95rem; cursor:pointer;
}
.erro-fechar:hover, .erro-fechar:focus-visible{ opacity:1; background:rgba(215,0,21,0.08); }
.erro-caixa.balanca{ animation: erroBalanca 340ms cubic-bezier(0.2, 0.8, 0.2, 1); }
@keyframes erroBalanca{
  0%,100%{ transform:translateX(0); } 18%{ transform:translateX(-7px); } 38%{ transform:translateX(6px); }
  58%{ transform:translateX(-4px); } 78%{ transform:translateX(2px); }
}
/* pilha fora das janelas: no alto, centralizada, acima do conteúdo */
.erro-pilha{
  position:fixed; left:50%; transform:translateX(-50%); z-index:70;
  top:calc(12px + var(--amb-h, 0px) + env(safe-area-inset-top));
  width:min(560px, calc(100vw - 32px)); display:flex; flex-direction:column; gap:8px;
  pointer-events:none;
}
.erro-pilha:empty{ display:none; }
.erro-pilha .erro-caixa{ margin:0; pointer-events:auto; box-shadow:0 12px 32px -12px rgba(60,10,10,0.35), 0 0 0 0.5px rgba(215,0,21,0.18); }
/* campo com problema */
.campo-erro, input.campo-erro, select.campo-erro, textarea.campo-erro{
  border-color:#FF3B30 !important; box-shadow:0 0 0 3px rgba(255,59,48,0.18) !important;
}
@media (prefers-reduced-motion: reduce){ .erro-caixa.balanca{ animation:none; } }
@media (prefers-contrast: more){
  .erro-caixa{ background:#fff; border:2px solid #B4231A; color:#8A1A13; }
}
/* as caixas de erro que já existiam (login, senha, 2FA, janelas de pessoas) ganham o mesmo visual */
.login-error{ background:#FFF1F0; color:#B4231A; border:1px solid rgba(215,0,21,0.16); border-radius:12px; padding:10px 12px; font-size:0.88rem; font-weight:500; line-height:1.4; }

/* ---------- estilos/6-perfil-simulacao.css ---------- */
/* ===== Migração 21: nome + Sair no menu, Meu perfil, menu recolhido, faixa da simulação, celular bloqueado, Relatórios ===== */

/* ---------- nome no menu (abre "Meu perfil") */
.who-btn{ display:flex; align-items:center; gap:9px; min-width:0; flex:1 1 auto; padding:5px 8px 5px 5px; margin:0; border:0; border-radius:12px;
  background:none; color:var(--text); font:inherit; text-align:left; cursor:pointer; }
.who-btn:hover{ background:var(--fill-2); }
.who-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.who-avatar, .perfil-avatar{ flex:none; display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:50%;
  background:var(--accent-soft); color:var(--accent-strong); font-size:0.78rem; font-weight:700; letter-spacing:0.02em; }
.who-nome{ min-width:0; font-size:0.88rem; font-weight:650; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.who-box .who-sair{ flex:none; }
@media (max-width:640px){ .who-nome{ max-width:34vw; } .who-avatar{ width:28px; height:28px; } }

/* ---------- botão de recolher o menu (só no computador) */
.side-toggle{ display:none; }
@media (min-width:1024px){
  .side-toggle{ display:inline-flex; flex:none; margin-left:auto; width:30px; height:30px; border:0; border-radius:9px; background:none; color:var(--text-muted); cursor:pointer; align-items:center; justify-content:center; }
  .side-toggle::before{ content:""; width:16px; height:16px; background:currentColor;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 6l-6 6 6 6M19 6l-6 6 6 6'/%3E%3C/svg%3E") center/contain no-repeat;
    mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 6l-6 6 6 6M19 6l-6 6 6 6'/%3E%3C/svg%3E") center/contain no-repeat; }
  .side-toggle:hover{ background:rgba(0,0,0,0.05); color:var(--text); }
  .side-toggle:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  .who-box .who-btn{ padding:3px 6px 3px 2px; }

  /* menu recolhido: faixa de ícones */
  body.side-min{ --side-w: 76px; }
  body.side-min .app{ column-gap:28px; }
  body.side-min .app-head{ padding:16px 10px 128px; }
  body.side-min .app-head .topbar{ flex-direction:column; align-items:center; padding:2px 0 16px; gap:10px; }
  body.side-min .brand-text{ display:none; }
  body.side-min .side-toggle{ margin:0; transform:scaleX(-1); }
  body.side-min .mod-btn{ font-size:0; justify-content:center; gap:0; padding:10px 0; }
  body.side-min .mod-btn::before{ width:22px; height:22px; }
  body.side-min .mod-btn .notif-badge{ position:absolute; top:3px; left:calc(50% + 5px); margin:0; font-size:0.62rem; }
  body.side-min .who-box{ left:8px; right:8px; flex-direction:column; gap:6px; padding:8px 4px; }
  body.side-min .who-btn{ flex:none; padding:2px; justify-content:center; }
  body.side-min .who-nome{ display:none; }
  body.side-min .who-sair{ width:100%; padding-left:0; padding-right:0; font-size:0.72rem; justify-content:center; text-align:center; }
  body.side-min .app > .sub-nav{ grid-column:2; margin:30px 0 0 !important; }
  body.side-min .app > .sub-nav + .page-head{ padding-top:14px; }
}

/* ---------- Meu perfil */
.perfil-dialog .dialog-inner{ max-width:460px; }
.perfil-topo{ display:flex; align-items:center; gap:12px; margin:0 0 14px; }
.perfil-avatar{ width:44px; height:44px; font-size:1rem; }
.perfil-nome{ font-size:1.05rem; font-weight:700; }
.perfil-dialog input[readonly]{ background:var(--fill-2); color:var(--text-muted); }
.perfil-dialog .homolog-btn{ display:inline-flex; margin:0 0 6px; }
.perfil-senha{ margin-top:12px; padding-top:12px; border-top:0.5px solid var(--border); }
.perfil-senha .detail-section-title{ margin:0 0 8px; }
.perfil-senha .login-error{ display:none; }

/* ---------- faixa da simulação (fixa no alto, por cima de tudo) */
body.simulando{ --sim-h:44px; padding-top:calc(var(--amb-h, 0px) + var(--sim-h)); }
.sim-faixa{ position:fixed; left:0; right:0; top:var(--amb-h, 0px); z-index:70; min-height:var(--sim-h, 44px); display:flex; align-items:center; justify-content:center;
  gap:8px 16px; flex-wrap:wrap; padding:6px 16px; background:#1D2A5C; color:#fff; font-size:0.84rem; font-weight:600; box-shadow:0 2px 10px rgba(0,0,0,0.18); }
.sim-faixa-txt{ min-width:0; max-width:900px; line-height:1.3; }
.sim-faixa .sim-voltar{ flex:none; background:#fff; color:#1D2A5C; border:0; font-weight:700; }
.sim-faixa .sim-voltar:hover{ background:#E8ECFA; }
body.simulando .app-head{ top:calc(var(--amb-h, 0px) + var(--sim-h) - var(--topbar-h)); }
body.simulando .login-wrap{ min-height:calc(100vh - var(--amb-h, 0px) - var(--sim-h)); }
@media (min-width:1024px){
  body.simulando .app-head{ top:calc(var(--amb-h, 0px) + var(--sim-h)) !important; height:calc(100vh - var(--amb-h, 0px) - var(--sim-h)); height:calc(100dvh - var(--amb-h, 0px) - var(--sim-h)); }
}
@media (max-width:760px){ body.simulando{ --sim-h:72px; } .sim-faixa{ font-size:0.78rem; } }
@media (forced-colors:active){ .sim-faixa{ border-bottom:2px solid CanvasText; } }

/* ---------- celular/tablet bloqueado */
.movel-card .meta-note{ text-align:center; margin:-10px 0 18px; }

/* ---------- Relatórios (aba única com seções por área) */
.rp-areas{ margin:0 0 16px; }
.rp-area-nota{ margin:-6px 0 14px; }
.rp-vazio{ padding:18px 0; }
#rpCrm .crmr-filtros{ margin-top:0; }

/* ---------- Configurações › Editar acesso: celular e relatórios */
.rel-grupo{ border:0.5px solid var(--border); border-radius:12px; padding:8px 12px 10px; margin:0 0 8px; }
.rel-grupo-topo{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; font-weight:650; font-size:0.9rem; }
.rel-grupo-topo .meta-note{ font-weight:400; }
.rel-lista{ display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:2px 14px; margin-top:6px; }
.rel-lista label{ display:flex; align-items:flex-start; gap:8px; font-size:0.86rem; text-transform:none; color:var(--text); min-height:32px; padding-top:4px; }
.rel-lista input{ width:auto; margin-top:2px; }
.chip-movel{ background:var(--warn-soft); color:var(--warn); }

/* ---------- Configurações › Acessos: tentativas pelo celular/tablet */
#acMovelSec{ margin-top:22px; }

/* ---------- modulos/mensagens/mensagens.css ---------- */
/* módulo mensagens: cartões "Mensagens" e "Mensagens da equipe" (tela Início) + janelas */
.msg-card h3{ margin:0; }
.msg-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:12px; }
.msg-head .btn{ margin-top:0 !important; }
.msg-head select{ max-width:200px; }
.msg-sec{ margin-top:14px; }
.msg-sec:first-of-type{ margin-top:4px; }
.msg-sec h4, .msg-concluidas summary, .msg-sub{ font-size:0.86rem; font-weight:600; color:var(--text-muted); margin:0 0 8px; }
.msg-concluidas summary{ cursor:pointer; list-style-position:inside; padding:4px 0; min-height:32px; }
.msg-n{ display:inline-block; min-width:20px; padding:0 6px; border-radius:10px; background:var(--fill, var(--surface-muted)); color:var(--text); font-size:0.75rem; text-align:center; margin-left:4px; }
.msg-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.msg-item{ border-radius:12px; padding:12px 14px; background:var(--fill-2, var(--surface-muted)); border-left:4px solid var(--accent); min-width:0; }
.msg-item.msg-comunicado{ border-left-color:var(--warn); }
.msg-item.msg-fechada{ border-left-color:var(--border); opacity:0.92; }
.msg-top{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.msg-tipo{ font-size:0.7rem; font-weight:700; text-transform:uppercase; letter-spacing:0.04em; padding:2px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent-strong); }
.msg-comunicado .msg-tipo{ background:var(--warn-soft); color:var(--warn); }
.msg-tit{ font-size:0.95rem; overflow-wrap:anywhere; }
.msg-meta{ font-size:0.8rem; color:var(--text-muted); margin-top:4px; overflow-wrap:anywhere; }
.msg-cargo{ color:var(--text-muted); font-weight:400; }
.msg-texto{ margin-top:6px; font-size:0.92rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.msg-status{ margin-top:8px; font-size:0.82rem; }
.msg-ok{ color:var(--good); font-weight:600; }
.msg-aberto{ color:var(--text-muted); }
.msg-atrasado{ color:var(--warn); font-weight:600; }
.msg-cancel{ color:var(--text-muted); font-weight:600; }
.msg-lidos{ color:var(--text-muted); }
.msg-nota{ margin-top:3px; color:var(--text); font-style:italic; overflow-wrap:anywhere; }
.msg-acoes{ display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.msg-acoes .btn{ margin-top:0 !important; min-height:36px; }
.btn.danger-text{ color:var(--bad); }
.msg-vazio{ margin:0; font-size:0.88rem; color:var(--text-muted); }
.msg-tab{ margin-top:14px; }
.msg-tab table{ min-width:640px; }
.msg-tab tr.msg-vazia td{ color:var(--text-muted); }
.msg-sub{ margin-top:16px; }
.msg-pessoas-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:10px; }
.msg-pessoas{ background:var(--fill-2, var(--surface-muted)); border-radius:12px; padding:10px 12px; }
.msg-pessoas h5{ margin:0 0 6px; font-size:0.85rem; }
.msg-pessoas ul{ list-style:none; margin:0; padding:0; }
.msg-pessoas li{ display:flex; justify-content:space-between; gap:10px; font-size:0.85rem; padding:3px 0; }
.msg-pessoas li .meta-note{ white-space:nowrap; }

/* janela "Nova mensagem" */
#msgNovaDialog, #msgAcaoDialog{ max-width:560px; width:92vw; }
.msg-tipos, .msg-para{ border:0; padding:0; margin:0 0 12px; min-width:0; }
.msg-tipos legend, .msg-para legend{ font-size:0.8rem; font-weight:600; color:var(--text-muted); margin-bottom:6px; padding:0; }
.msg-para legend .login-link{ font-size:0.8rem; margin-left:6px; }
.msg-tipo-op{ display:flex; gap:10px; align-items:flex-start; padding:10px 12px; border-radius:12px; background:var(--fill-2, var(--surface-muted)); margin-bottom:6px; cursor:pointer; }
.msg-tipo-op input{ margin-top:3px; }
.msg-tipo-op small{ display:block; color:var(--text-muted); font-size:0.8rem; margin-top:2px; }
.msg-setores{ display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:6px; }
.msg-chk{ display:flex; gap:8px; align-items:center; padding:8px 10px; border-radius:10px; background:var(--fill-2, var(--surface-muted)); cursor:pointer; min-height:40px; font-size:0.9rem; }
.msg-acao-resumo{ margin:0 0 12px; font-size:0.88rem; color:var(--text-muted); white-space:pre-wrap; overflow-wrap:anywhere; max-height:120px; overflow:auto; }

/* alertas de login na tela inicial do administrador */
.lg-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.lg-item{ display:flex; align-items:center; gap:12px; justify-content:space-between; flex-wrap:wrap; padding:10px 12px; border-radius:12px; background:var(--fill-2, var(--surface-muted)); }
.lg-info{ min-width:0; flex:1 1 260px; font-size:0.86rem; }
.lg-info b{ font-size:0.92rem; }
.lg-info .meta-note{ display:block; margin-top:2px; overflow-wrap:anywhere; }
.lg-item .btn{ margin-top:0 !important; }
.ac-ok{ font-size:0.78rem; color:var(--good); white-space:nowrap; }

@media (max-width: 600px){
  .msg-head select{ max-width:none; width:100%; }
  .msg-setores{ grid-template-columns:1fr 1fr; }
}

/* seções recolhíveis */
.msg-sec{ margin-top:10px; }
.msg-sec > summary{ cursor:pointer; list-style:none; display:flex; align-items:center; gap:6px; min-height:40px; padding:4px 2px; font-size:0.9rem; font-weight:600; color:var(--text-muted); border-radius:10px; }
.msg-sec > summary::-webkit-details-marker{ display:none; }
.msg-sec > summary::before{ content:""; width:7px; height:7px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(-45deg); margin:0 6px 0 4px; transition:transform var(--t-fast, 150ms) ease; }
.msg-sec[open] > summary::before{ transform:rotate(45deg); }
.msg-sec > summary:hover{ color:var(--text); }
.msg-sec > summary:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.msg-sec[open] > summary{ margin-bottom:6px; }

/* imagens nas mensagens */
.msg-imgs{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.msg-img{ position:relative; width:96px; height:96px; padding:0; border:0; border-radius:10px; overflow:hidden; cursor:zoom-in; background:var(--fill, #E9E9EE); }
.msg-img img{ width:100%; height:100%; object-fit:cover; display:block; opacity:0; transition:opacity 160ms ease; }
.msg-img.ok img{ opacity:1; }
.msg-img-carregando{ position:absolute; inset:0; display:grid; place-items:center; padding:6px; font-size:0.68rem; color:var(--text-muted); text-align:center; }
.msg-img.ok .msg-img-carregando{ display:none; }
.msg-img.falhou{ cursor:default; }
.msg-img:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.msg-img-area{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin:8px 0 2px; }
.msg-img-area .btn{ margin:0 !important; }
.msg-img-area[hidden]{ display:none; }
.msg-prevs{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; flex-basis:100%; }
.msg-prevs:empty{ display:none; }
.msg-prev{ position:relative; width:72px; height:72px; border-radius:10px; overflow:hidden; background:var(--fill, #E9E9EE); }
.msg-prev img{ width:100%; height:100%; object-fit:cover; display:block; }
.msg-prev-tirar{ position:absolute; top:4px; right:4px; width:24px; height:24px; border-radius:50%; border:0; background:rgba(0,0,0,0.6); color:#fff; font-size:0.72rem; cursor:pointer; display:grid; place-items:center; }
dialog.soltando{ outline:3px dashed var(--accent); outline-offset:-10px; }
/* janela de ampliar */
dialog.msg-img-dialog{ width:min(1100px, 96vw); max-width:96vw; height:min(92vh, 900px); max-height:92vh; padding:0; border:0; border-radius:16px; background:#111; color:#fff; display:none; flex-direction:column; overflow:hidden; }
dialog.msg-img-dialog[open]{ display:flex; }
dialog.msg-img-dialog::backdrop{ background:rgba(0,0,0,0.75); }
.msg-img-barra{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; padding:10px 12px; background:rgba(255,255,255,0.06); font-size:0.88rem; }
.msg-img-botoes{ display:flex; gap:6px; flex-wrap:wrap; }
.msg-img-botoes .btn{ margin:0 !important; }
.msg-img-botoes .btn.ghost{ background:rgba(255,255,255,0.12); color:#fff; }
.msg-img-botoes .btn[hidden]{ display:none; }
.msg-img-wrap{ flex:1; min-height:0; display:grid; place-items:center; overflow:auto; padding:8px; }
.msg-img-wrap img{ max-width:100%; max-height:100%; object-fit:contain; cursor:zoom-in; touch-action:pinch-zoom; }
.msg-img-wrap.zoom{ display:block; }
.msg-img-wrap.zoom img{ max-width:none; max-height:none; cursor:zoom-out; }
@media (max-width: 600px){
  dialog.msg-img-dialog{ width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; border-radius:0; }
  .msg-img{ width:84px; height:84px; }
}

/* ---------- modulos/farmacia/farmacia.css ---------- */
/* ===== FARMÁCIA (migração 16) — estilos de todas as abas da Farmácia ===== */

/* ícone do módulo no menu (cápsula de remédio) */
.mod-btn[data-mod="farmacia"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.8' y='8.2' width='18.4' height='7.6' rx='3.8' transform='rotate(-40 12 12)'/%3E%3Cpath d='M9.6 9.1 14.4 14.9'/%3E%3C/svg%3E"); }

/* barra de cima de cada aba: controle segmentado + botões */
.farm-barra{ align-items:center; }
.farm-espaco{ flex:1 1 auto; }
.farm-seg{ display:inline-flex; flex-wrap:wrap; gap:2px; padding:3px; background:var(--fill); border-radius:11px; max-width:100%; }
.farm-seg-btn{ border:0; background:none; padding:6px 13px; border-radius:8px; font-size:0.85rem; font-weight:600; color:var(--text); cursor:pointer; white-space:nowrap; min-height:32px; }
.farm-seg-btn:hover{ background:rgba(255,255,255,0.55); }
.farm-seg-btn.ativo{ background:var(--surface); box-shadow:0 1px 3px rgba(0,0,0,0.12), 0 0 0 0.5px rgba(0,0,0,0.04); }
.farm-seg-pequeno .farm-seg-btn{ padding:4px 11px; font-size:0.8rem; min-height:28px; }
.farm-rotulo{ display:block; font-size:0.8rem; font-weight:650; color:var(--text-muted); margin:14px 0 6px; }
.farm-inline{ display:inline-flex; align-items:center; gap:6px; font-size:0.85rem; color:var(--text-muted); }

/* avisos (botões coloridos no alto da aba) */
.farm-avisos{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }
.farm-aviso{ border:0; border-radius:999px; padding:7px 13px; font-size:0.84rem; cursor:pointer; background:var(--fill); color:var(--text); }
.farm-aviso b{ font-weight:750; margin-right:2px; }
.farm-aviso.warn{ background:var(--warn-soft); color:var(--warn); }
.farm-aviso.bad{ background:var(--bad-soft); color:var(--bad); }
.farm-aviso.ok{ background:var(--good-soft); color:var(--good); }
.farm-aviso.info{ background:var(--accent-soft); color:var(--accent-strong); }
.farm-alerta{ border-radius:10px; padding:9px 12px; margin:10px 0; font-size:0.86rem; background:var(--fill-2); }
.farm-alerta.warn{ background:var(--warn-soft); color:#7A4D0B; }
.farm-alerta.bad{ background:var(--bad-soft); color:var(--bad); }
.farm-alerta.ok{ background:var(--good-soft); color:var(--good); }
.farm-aviso-txt{ color:var(--warn); }

/* etiquetas */
.farm-chip{ display:inline-block; padding:2px 8px; border-radius:999px; font-size:0.74rem; font-weight:650; white-space:nowrap; background:var(--fill); color:var(--text-muted); vertical-align:1px; }
.farm-chip.ok{ background:var(--good-soft); color:var(--good); }
.farm-chip.warn{ background:var(--warn-soft); color:var(--warn); }
.farm-chip.bad{ background:var(--bad-soft); color:var(--bad); }
.farm-chip.info{ background:var(--accent-soft); color:var(--accent-strong); }

/* tabelas */
.farm-tabela td, .farm-tabela th{ vertical-align:middle; }
.farm-tabela .num, .farm-mini .num{ text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.farm-tabela .nowrap{ white-space:nowrap; }
.farm-riscado td{ color:var(--text-muted); }
.farm-riscado td:nth-child(-n+7){ text-decoration:line-through; text-decoration-color:rgba(0,0,0,0.25); }
.farm-apagado td{ color:var(--text-muted); }
.farm-larga-tab{ min-width:1180px; }
.farm-larga-tab td:first-child{ white-space:nowrap; }
.farm-itens-resumo{ max-width:320px; font-size:0.84rem; }
.farm-temp{ font-size:0.8rem; color:var(--text-muted); white-space:nowrap; }
.farm-baixo{ color:var(--warn); font-weight:700; }
.farm-neg{ color:var(--bad); }
.farm-pos{ color:var(--good); }
.farm-mudo{ color:var(--text-muted); font-size:0.84rem; }
.farm-vazio{ padding:22px 8px; text-align:center; color:var(--text-muted); font-size:0.9rem; }
.farm-perigo{ color:var(--bad) !important; }
.farm-link{ border:0; background:none; padding:0; color:var(--accent-strong); font:inherit; cursor:pointer; text-align:left; text-decoration:underline; text-decoration-color:rgba(29,42,92,0.25); text-underline-offset:2px; }
.farm-clicavel{ cursor:pointer; }
.farm-clicavel:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
.farm-num-input{ width:88px; padding:6px 8px; border:1px solid transparent; border-radius:8px; background:var(--fill-2); text-align:right; font-size:0.88rem; }
.farm-num-curto{ width:64px; }
.farm-num-input:focus, .farm-forn-input:focus{ outline:none; border-color:var(--accent); background:var(--surface); }
.farm-forn-input{ width:150px; padding:6px 8px; border:1px solid transparent; border-radius:8px; background:var(--fill-2); font-size:0.86rem; }
.farm-select-pequeno{ padding:5px 8px; font-size:0.84rem; }
.farm-mini{ width:100%; border-collapse:collapse; font-size:0.88rem; }
.farm-mini td, .farm-mini th{ padding:6px 4px; border-top:0.5px solid var(--hair); text-align:left; }
.farm-mini tr:first-child td{ border-top:0; }

/* mapa diário: coluna do produto fixa ao rolar para o lado */
.farm-mapa .farm-dia{ min-width:30px; padding-left:4px; padding-right:4px; font-size:0.8rem; }
.farm-mapa .farm-fixa{ position:sticky; left:0; background:var(--surface); z-index:1; min-width:170px; }
.farm-ent{ display:block; color:var(--good); font-size:0.7rem; font-weight:700; }

/* cartões, listas e blocos */
.farm-cartao{ background:var(--surface); border-radius:16px; box-shadow:var(--card-shadow); padding:14px 16px; margin:0 0 12px; }
.farm-cartao > .farm-rotulo:first-child{ margin-top:0; }
.farm-lista{ margin:4px 0 8px; padding-left:18px; font-size:0.88rem; line-height:1.55; }
.farm-dl{ display:grid; grid-template-columns:max-content 1fr; gap:4px 14px; margin:0 0 12px; font-size:0.9rem; }
.farm-dl dt{ color:var(--text-muted); }
.farm-dl dd{ margin:0; }
.farm-acoes{ display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 4px; }
.farm-duas{ display:grid; grid-template-columns:1.3fr 1fr; gap:12px; margin-top:12px; }
.farm-cfg{ display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:12px; align-items:start; }
.farm-cfg textarea{ width:100%; padding:8px 10px; border:1px solid transparent; border-radius:10px; background:var(--fill-2); font-size:0.88rem; margin:4px 0 10px; }
.farm-cfg label{ display:block; font-size:0.8rem; font-weight:600; color:var(--text-muted); }
.farm-cfg small{ display:block; margin:-6px 0 10px; }
.farm-cfg .btn{ margin-top:6px; }
.farm-fh{ padding:6px 0; border-top:0.5px solid var(--hair); font-size:0.86rem; }
.farm-fh:first-child{ border-top:0; }

/* painel: indicadores em 3 colunas */
.farm-kpis{ grid-template-columns:repeat(3, minmax(0, 1fr)) !important; }
.farm-kpis .kpi .value{ font-size:1.6rem; }

/* barras do painel (12 meses) */
.farm-legenda{ display:flex; align-items:center; gap:6px; font-size:0.78rem; color:var(--text-muted); margin:-2px 0 8px; }
.farm-sw{ display:inline-block; width:10px; height:10px; border-radius:3px; margin-left:6px; }
.farm-sw.mvs, .farm-barra-seg.mvs{ background:var(--accent); }
.farm-sw.con, .farm-barra-seg.con{ background:#2FA58F; }
.farm-barra-linha{ display:grid; grid-template-columns:52px 1fr 108px; align-items:center; gap:8px; font-size:0.82rem; margin:3px 0; }
.farm-barra-rot{ color:var(--text-muted); }
.farm-barra-trilho{ display:flex; height:12px; border-radius:6px; background:var(--fill-2); overflow:hidden; }
.farm-barra-seg{ display:block; height:100%; }
.farm-barra-val{ text-align:right; font-variant-numeric:tabular-nums; }

/* janelas */
dialog.farm-janela{ overflow:auto; }
dialog.farm-larga{ max-width:880px; }
.farm-check{ display:flex !important; align-items:center; gap:8px; margin-top:8px; font-size:0.86rem !important; font-weight:500 !important; color:var(--text) !important; cursor:pointer; }
.farm-check input{ width:auto !important; }
.farm-total{ display:flex; justify-content:flex-end; align-items:baseline; gap:10px; margin:10px 0; font-size:0.92rem; color:var(--text-muted); }
.farm-total b{ font-size:1.25rem; color:var(--text); }

/* itens (venda, entrada, protocolo, tratamento) */
.farm-itens{ display:flex; flex-direction:column; gap:8px; margin-bottom:8px; }
.farm-item{ display:grid; grid-template-columns:minmax(170px, 2fr) minmax(150px, 1.7fr) repeat(3, minmax(72px, 0.8fr)) auto auto; gap:8px; align-items:end; padding:10px; border-radius:12px; background:var(--fill-2); }
.farm-item-entrada{ grid-template-columns:minmax(170px, 2fr) repeat(5, minmax(78px, 1fr)) auto; }
.farm-item label{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.farm-item label > span, .farm-item-tot > span{ font-size:0.72rem; font-weight:600; color:var(--text-muted); }
.farm-item input, .farm-item select{ width:100%; min-width:0; padding:7px 8px; border:1px solid transparent; border-radius:8px; background:var(--surface); font-size:0.88rem; }
.farm-item input:focus, .farm-item select:focus{ outline:none; border-color:var(--accent); }
.farm-item-tot{ display:flex; flex-direction:column; gap:3px; text-align:right; white-space:nowrap; padding-bottom:7px; }
.farm-item-x{ border:0; background:none; color:var(--text-muted); font-size:1rem; width:32px; height:34px; border-radius:8px; cursor:pointer; }
.farm-item-x:hover:not([disabled]){ background:var(--fill); color:var(--bad); }
.farm-item-x[disabled]{ opacity:0.3; cursor:default; }
.farm-trat-item{ margin-bottom:10px; }
.farm-trat-item .farm-item{ grid-template-columns:minmax(170px, 2fr) repeat(3, minmax(90px, 1fr)) auto auto; }
.farm-trat-item > .farm-link{ margin:6px 0 0 4px; font-size:0.84rem; }
.farm-doses{ display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0; align-items:center; }
.farm-dose{ display:flex; gap:4px; align-items:center; background:var(--fill-2); border-radius:10px; padding:4px; }
.farm-dose input{ padding:5px 6px; border:1px solid transparent; border-radius:7px; background:var(--surface); font-size:0.84rem; }
.farm-dose input[type=number]{ width:70px; }

/* sugestões de paciente */
.farm-sugestoes{ position:absolute; left:0; right:0; top:100%; z-index:20; margin-top:2px; background:var(--surface); border-radius:12px; box-shadow:var(--shadow-lg); padding:4px; max-height:260px; overflow:auto; }
.farm-sugestoes button{ display:flex; justify-content:space-between; gap:10px; width:100%; border:0; background:none; text-align:left; padding:9px 10px; border-radius:8px; font-size:0.9rem; cursor:pointer; }
.farm-sugestoes button:hover, .farm-sugestoes button:focus{ background:var(--accent-soft); outline:none; }
.farm-sug-tel{ color:var(--text-muted); font-size:0.8rem; }
.farm-sug-nova{ padding:9px 10px; font-size:0.85rem; color:var(--text-muted); }
input.farm-pac-ok{ box-shadow:inset 3px 0 0 var(--good); }

/* retorno às pacientes */
.farm-ret-lista{ display:flex; flex-direction:column; gap:8px; }
.farm-ret{ display:flex; gap:12px; justify-content:space-between; align-items:center; background:var(--surface); border-radius:14px; box-shadow:var(--card-shadow); padding:12px 14px; }
.farm-ret-info{ display:flex; flex-direction:column; gap:3px; min-width:0; font-size:0.9rem; }
.farm-ret-nome{ font-weight:700; font-size:0.98rem; }
.farm-ret-acoes{ display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; flex:0 0 auto; max-width:50%; }
.farm-whats{ background:#25A35A; color:#fff; text-decoration:none; }
.farm-whats:hover{ background:#1E8A4B; }

/* pedidos */
.farm-pedido-topo{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px 12px; margin-bottom:8px; }
.farm-pedido .table-scroll{ box-shadow:none; background:var(--fill-2); }

/* importação */
.farm-arquivo{ position:relative; overflow:hidden; }
.farm-arquivo-input{ position:absolute; inset:0; opacity:0; cursor:pointer; }
.farm-progresso{ height:8px; border-radius:4px; background:var(--fill); overflow:hidden; margin:10px 0 4px; }
.farm-progresso span{ display:block; height:100%; background:var(--accent); transition:width .2s ease; }

/* matriz de permissões: título de grupo */
.perm-matrix tr.perm-grupo td{ background:var(--fill-2); font-size:0.78rem; font-weight:700; color:var(--text-muted); padding-top:8px; padding-bottom:8px; }

/* celular */
@media (max-width:760px){
  .farm-item, .farm-item-entrada, .farm-trat-item .farm-item{ grid-template-columns:1fr 1fr; }
  .farm-item-prod{ grid-column:1 / -1; }
  .farm-item-tot{ text-align:left; padding-bottom:0; }
  .farm-item-x{ justify-self:end; }
  .farm-duas{ grid-template-columns:1fr; }
  .farm-ret{ flex-direction:column; align-items:stretch; }
  .farm-ret-acoes{ max-width:none; justify-content:flex-start; }
  .farm-seg{ display:flex; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .farm-barra .btn{ flex:1 1 auto; }
  .farm-espaco{ display:none; }
  .farm-dl{ grid-template-columns:1fr; gap:0; }
  .farm-kpis{ grid-template-columns:repeat(2, minmax(0, 1fr)) !important; }
  .farm-dl dd{ margin-bottom:6px; }
  .farm-barra-linha{ grid-template-columns:44px 1fr 92px; }
}

/* ---------- modulos/crm/crm.css ---------- */
/* ===== CRM (migrações 17 e 18) — quadro kanban, lista, tarefas, card, janelas, configuração e relatórios ===== */

/* ícone do módulo no menu (três colunas de quadro) */
.mod-btn[data-mod="crm"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='5' height='15' rx='1.6'/%3E%3Crect x='9.5' y='4' width='5' height='10' rx='1.6'/%3E%3Crect x='16' y='4' width='5' height='12.5' rx='1.6'/%3E%3C/svg%3E"); }

.crm-barra, .crm-filtros{ align-items:center; }
.crm-funis{ max-width:100%; overflow-x:auto; flex-wrap:nowrap; scrollbar-width:none; }
.crm-funis::-webkit-scrollbar{ display:none; }
.crm-filtros-campos{ display:contents; }
.crm-so-ve{ margin:0 0 10px; }
.link-btn{ border:0; background:none; padding:0; font:inherit; color:var(--accent-strong); cursor:pointer; text-align:left; font-weight:600; }
.link-btn:hover{ text-decoration:underline; }

/* ---------- quadro: colunas lado a lado; rola para o lado DENTRO do quadro (a página não rola) */
.crm-quadro{ display:flex; gap:12px; align-items:flex-start; overflow-x:auto; overscroll-behavior-x:contain;
  padding:2px 2px 14px; scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; max-width:100%; }
.crm-col{ flex:0 0 272px; width:272px; background:var(--fill-2); border-radius:var(--radius-md); padding:8px; scroll-snap-align:start;
  display:flex; flex-direction:column; max-height:calc(100vh - 230px); }
.crm-col-cab{ display:flex; align-items:center; gap:8px; padding:4px 6px 8px; }
.crm-col-nome{ flex:1; font-weight:650; font-size:0.9rem; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-col-n{ font-size:0.76rem; font-weight:650; color:var(--text-muted); background:var(--surface); border-radius:999px; padding:1px 8px; }
.crm-lista{ display:flex; flex-direction:column; gap:8px; min-height:64px; overflow-y:auto; padding:2px; border-radius:var(--radius-sm); }
.crm-col-ganho{ background:var(--good-soft); }
.crm-col-ganho .crm-col-nome{ color:var(--good); }
.crm-lista-ganho{ min-height:120px; border:1.5px dashed rgba(31,138,93,0.35); justify-content:center; }
.crm-ganho-dica{ margin:0; padding:10px; font-size:0.8rem; color:var(--good); text-align:center; line-height:1.45; }

/* ---------- card do quadro */
.crm-card{ background:var(--surface); border-radius:var(--radius-sm); box-shadow:var(--card-shadow); }
.crm-card-btn{ display:flex; flex-direction:column; gap:4px; width:100%; border:0; background:none; text-align:left; padding:10px 11px;
  font:inherit; color:var(--text); cursor:pointer; border-radius:var(--radius-sm); min-height:44px; }
.crm-card-btn:hover{ background:var(--surface-muted); }
.crm-card-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
.crm-card-nome{ font-weight:650; font-size:0.92rem; line-height:1.25; overflow-wrap:anywhere; }
.crm-card-tel{ font-size:0.8rem; color:var(--text-muted); font-variant-numeric:tabular-nums; }
.crm-card-etqs{ display:flex; flex-wrap:wrap; gap:4px; }
.crm-card-campos{ display:flex; flex-direction:column; gap:1px; font-size:0.8rem; }
.crm-card-rot{ color:var(--text-muted); }
.crm-card-badges{ display:flex; flex-wrap:wrap; gap:4px; }
.crm-card-rodape{ font-size:0.72rem; color:var(--text-muted); }
.crm-badge{ display:inline-block; font-size:0.72rem; font-weight:600; padding:2px 7px; border-radius:999px; background:var(--fill); color:var(--text-muted); }
.crm-badge-espera{ background:var(--warn-soft); color:var(--warn); }
.crm-card-fantasma{ opacity:0.35; }
.crm-card-pego{ box-shadow:0 10px 26px -10px rgba(15,20,35,0.35); }
.crm-card-arrastando{ transform:rotate(1.5deg); }

/* ---------- etiquetas (cores) */
.crm-etq{ display:inline-block; font-size:0.72rem; font-weight:650; padding:2px 8px; border-radius:999px; white-space:nowrap; border:0; }
.crm-cor-azul{ background:#E3ECFB; color:#1F4E9C; }
.crm-cor-verde{ background:#E1F3E7; color:#1C6E49; }
.crm-cor-amarelo{ background:#FBF1CF; color:#7A5A06; }
.crm-cor-laranja{ background:#FCE7D6; color:#9A4A0C; }
.crm-cor-vermelho{ background:#FBE3DC; color:#A3361F; }
.crm-cor-roxo{ background:#EFE6F8; color:#5E3591; }
.crm-cor-rosa{ background:#FBE4EF; color:#9C2B62; }
.crm-cor-cinza{ background:#ECECF0; color:#4A4A52; }
.crm-etiquetas-escolha{ display:flex; flex-wrap:wrap; gap:6px; }
.crm-etq-escolha{ cursor:pointer; padding:6px 11px; font-size:0.8rem; min-height:32px; opacity:0.6; }
.crm-etq-escolha.marcada{ opacity:1; box-shadow:0 0 0 1.5px currentColor inset; }
.crm-etq-escolha:disabled{ cursor:default; }
.crm-rotulo{ display:block; font-size:0.76rem; color:var(--text-muted); margin-bottom:6px; text-transform:uppercase; letter-spacing:0.03em; }

/* ---------- janelas */
dialog.crm-janela{ overflow:auto; }
dialog.crm-janela-card{ max-width:560px; }
.crm-card-meta{ font-size:0.82rem; color:var(--text-muted); display:flex; flex-direction:column; gap:3px; margin:-6px 0 12px; }
.crm-card-meta:empty{ display:none; }
.crm-card-meta b{ color:var(--text); font-weight:600; }
.crm-card-acoes{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; padding-top:12px; border-top:1px solid var(--hair); }
.btn.crm-ganho{ color:var(--good); }
.btn.crm-perdido{ color:var(--bad); }
.crm-lembrete{ margin:-4px 0 6px; font-size:0.78rem; }
.crm-hist-linha{ padding:9px 0; border-bottom:1px solid var(--hair); font-size:0.86rem; }
.crm-hist-linha ul{ margin:4px 0 0 18px; padding:0; }
.crm-hist-linha:last-child{ border-bottom:0; }

/* ---------- configurar funis (administrador) */
.crmc-grade{ display:grid; grid-template-columns:minmax(0,1fr); gap:16px; }
.crmc-bloco{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--card-shadow); padding:16px 18px; min-width:0; }
.crmc-bloco h3{ font-size:1rem; margin:0 0 4px; }
.crmc-bloco > .meta-note{ margin:0 0 10px; }
.crmc-linha{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--hair); }
.crmc-linha:last-child{ border-bottom:0; }
.crmc-linha input[type="text"], .crmc-linha select, .crmc-form input[type="text"], .crmc-form select, .crmc-form textarea{
  padding:7px 9px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--bg); font-size:0.88rem; min-width:0; max-width:100%; }
.crmc-linha .crmc-nome{ flex:1 1 180px; }
.crmc-linha .crmc-inativo{ opacity:0.55; }
.crmc-check{ display:inline-flex; align-items:center; gap:5px; font-size:0.84rem; color:var(--text-muted); white-space:nowrap; }
.crmc-mover{ display:inline-flex; gap:2px; }
.crmc-mover .btn{ padding:4px 8px; }
.crmc-form{ display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; margin-top:10px; }
.crmc-form .form-field{ margin:0; flex:1 1 160px; min-width:0; }
.crmc-form textarea{ width:100%; }
.crmc-lig{ font-size:0.86rem; line-height:1.5; flex:1 1 260px; min-width:0; }
.crmc-lig b{ font-weight:650; }
.crmc-equipe td, .crmc-equipe th{ vertical-align:middle; }
.crmc-topo{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:14px 0; }
.crmc-topo select{ padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.92rem; max-width:100%; }
.crmc-cor{ display:inline-block; width:14px; height:14px; border-radius:50%; vertical-align:-2px; }

/* ---------- fase 2/3 (migração 18): avisos, checklist, tarefas, lista */
.crm-col-regras{ display:block; font-size:0.7rem; color:var(--text-muted); padding:0 6px 6px; margin-top:-4px; }
.crm-card-parado{ box-shadow:var(--card-shadow), inset 3px 0 0 var(--bad); }
.crm-badge-parado{ background:var(--bad-soft, #FBE3DC); color:var(--bad); }
.crm-badge-falta{ background:var(--warn-soft); color:var(--warn); }
.crm-badge-ok{ background:var(--good-soft); color:var(--good); }
.crm-badge-tarefa{ background:#E3ECFB; color:#1F4E9C; }
.crm-visao-n{ display:inline-block; min-width:18px; padding:0 5px; margin-left:3px; border-radius:999px; background:var(--fill); font-size:0.72rem; line-height:18px; text-align:center; }
.crm-visao-n.bad{ background:var(--bad); color:#fff; }
.crm-obrig{ color:var(--bad); font-weight:700; }
.crm-checklist{ display:flex; flex-direction:column; gap:6px; }
.crm-check-item{ display:flex; align-items:flex-start; gap:8px; font-size:0.88rem; line-height:1.35; cursor:pointer; min-height:28px; }
.crm-check-item input{ margin-top:2px; width:18px; height:18px; flex:0 0 auto; }
.crm-check-item.feito > span{ color:var(--text-muted); }
.crm-check-nota{ margin:2px 0 0; font-size:0.78rem; }
.crm-lista-cresce{ display:flex; gap:6px; align-items:center; }
.crm-lista-cresce select{ flex:1 1 auto; min-width:0; }
.crm-lista-cresce .btn{ flex:0 0 auto; white-space:nowrap; }
.crm-opcao-nova{ display:flex; gap:6px; margin-top:6px; }
.crm-opcao-nova input{ flex:1 1 auto; min-width:0; }
.crm-tarefas{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.crm-tarefa{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 11px; border-radius:var(--radius-sm); background:var(--surface); box-shadow:var(--card-shadow); }
.crm-janela .crm-tarefa, .home-card .crm-tarefa{ background:var(--fill-2); box-shadow:none; }
.crm-tarefa-info{ flex:1 1 200px; min-width:0; display:flex; flex-direction:column; gap:2px; }
.crm-tarefa-titulo{ font-weight:600; font-size:0.9rem; overflow-wrap:anywhere; }
.crm-tarefa-acoes{ display:inline-flex; gap:6px; flex:0 0 auto; }
.crm-tarefa-acoes .btn{ margin-top:0 !important; }
.crm-tarefa-bad .crm-tarefa-quando{ color:var(--bad); font-weight:650; }
.crm-tarefa-warn .crm-tarefa-quando{ color:var(--warn); font-weight:650; }
.crm-tarefa-fechada{ opacity:0.7; }
.crm-tarefas-feitas{ margin-top:8px; }
.crm-tarefa-nova{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.crm-tarefa-nova input[type="text"]{ flex:1 1 200px; min-width:0; }
.crm-tarefa-nova input[type="date"]{ flex:0 1 160px; min-width:0; }
.crm-tarefas-visao{ display:flex; flex-direction:column; gap:16px; }
.crm-tarefas-grupo h3{ font-size:0.95rem; margin:0 0 8px; display:flex; align-items:center; gap:8px; }
.crm-home-tarefas{ margin-top:12px; }
.crm-lista-topo{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
.crm-lista-topo .meta-note{ margin:0; }
.crm-lista-avisos .crm-badge{ margin:1px 0; }

@media (min-width:1100px){ .crmc-grade{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .crmc-largo{ grid-column:1 / -1; } }

/* ---------- celular: colunas um pouco mais estreitas, rolando para o lado dentro do quadro */
@media (max-width:640px){
  .crm-col{ flex-basis:82vw; width:82vw; max-width:300px; max-height:none; }
  .crm-lista{ overflow-y:visible; }
  .crm-filtros .search-wrap{ flex:1 1 100%; }
  .crm-filtros select, .crm-filtros .btn{ flex:1 1 auto; }
  .crmc-bloco{ padding:14px; }
}
@media (prefers-reduced-motion: reduce){ .crm-card-arrastando{ transform:none; } }

/* ---------- configurar funis: regras, opções e automações (migração 18) */
.crmc-regras-resumo{ font-size:0.78rem; color:var(--text-muted); flex-basis:100%; }
.crmc-reg-obrig select, .crmc-reg-obrig input{ flex:1 1 140px; }
.crmc-setores{ border:0; padding:0; margin:0; display:flex; flex-wrap:wrap; gap:6px 14px; flex-basis:100%; }
.crmc-setores legend{ font-size:0.76rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.03em; margin-bottom:4px; }
.crmc-largo-campo{ flex-basis:100% !important; }
.crmc-largo-campo small{ display:block; margin-top:4px; }

/* ---------- relatórios do CRM (migração 18) */
.crmr-filtros{ align-items:flex-end; flex-wrap:wrap; gap:10px; }
.crmr-filtros .form-field{ margin:0; min-width:0; flex:0 1 auto; }
.crmr-filtros select, .crmr-filtros input{ padding:7px 9px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.9rem; max-width:100%; }
.crmr-corpo{ display:flex; flex-direction:column; gap:18px; margin-top:8px; }
.crmr-totais{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--card-shadow); padding:16px 18px; }
.crmr-secao h3{ font-size:1rem; margin:0 0 4px; }
.crmr-secao > .meta-note{ margin:0 0 8px; }
.crmr-tabela td{ vertical-align:middle; }
.crmr-col-barra{ width:28%; min-width:80px; }
.crmr-barra{ display:block; height:8px; border-radius:999px; background:var(--fill); overflow:hidden; }
.crmr-barra-v{ display:block; height:100%; border-radius:999px; background:var(--accent); }
.crmr-barra-v.bad{ background:var(--bad); }
.crmr-barra-v.ok{ background:var(--good); }
.crmr-jornada-topo{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 6px; }
.crmr-jornada-topo select{ padding:7px 9px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); font-size:0.9rem; }
@media (max-width:640px){ .crmr-filtros .form-field, .crmr-filtros .btn{ flex:1 1 100%; } }
.crmc-check-longo{ white-space:normal; flex-basis:100%; align-items:flex-start; }
/* migração 20: avisos do CRM no Início e marcação nas ligações */
.crm-aviso{ border-left:3px solid var(--accent); }
.crm-aviso-texto{ display:block; font-size:0.88rem; margin:2px 0; overflow-wrap:anywhere; }
.crmc-aviso-tag{ display:inline-block; font-size:0.78rem; padding:1px 7px; border-radius:999px; background:var(--fill); margin-left:2px; }

/* ---------- modulos/vendas/vendas.css ---------- */
/* Controle de vendas (migração 22). Usa também as classes comuns da Farmácia (farm-chip, farm-seg, farm-janela…). */
.mod-btn[data-mod="vendas"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2.4'/%3E%3Cpath d='M3 9.5h18'/%3E%3Cpath d='M7 14.5h4'/%3E%3C/svg%3E"); }
.sr-only{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.ven-controles{ flex-wrap:wrap; gap:8px; }
.ven-periodo{ display:flex; align-items:center; gap:6px; }
.ven-periodo input{ min-width:0; }
.ven-tabela td small.ven-sub{ display:block; color:var(--text-muted); font-size:0.76rem; margin-top:1px; }
.ven-tabela tr.ven-devolucao td{ background:var(--bad-soft); }
.ven-oculto{ color:var(--text-muted); letter-spacing:2px; }
.ven-kpi-moeda{ font-size:1.25rem !important; white-space:nowrap; }

.ven-confirmar{ border-left:4px solid var(--warn); margin-bottom:16px; }
.ven-conf-lista{ list-style:none; margin:8px 0 0; padding:0; }
.ven-conf-lista li{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; border-top:1px solid var(--border); }
.ven-conf-lista li:first-child{ border-top:none; }
.ven-conf-lista li > span{ min-width:0; overflow-wrap:anywhere; }

dialog.ven-janela{ max-width:860px; }
.ven-grupo{ border:1px solid var(--border); border-radius:12px; padding:10px 14px 4px; margin:0 0 12px; min-width:0; }
.ven-grupo legend{ font-weight:650; font-size:0.86rem; padding:0 6px; color:var(--text); }
.ven-grupo.ven-travado{ background:var(--fill); }
.ven-tres{ grid-template-columns:1fr 1fr 1fr; }
.ven-dica{ display:block; min-height:1.1em; margin-top:2px; }
.ven-dica.ven-ok{ color:var(--good); }
.ven-aviso{ background:var(--warn-soft); color:var(--text); border-radius:10px; padding:10px 12px; margin:6px 0 12px; font-size:0.88rem; }
.ven-alerta{ color:var(--bad) !important; font-weight:600; }
.ven-acoes{ flex-wrap:wrap; }
.ven-espaco{ flex:1 1 auto; }
.danger-text{ color:var(--bad) !important; }
.ven-parc{ min-width:420px; }
.ven-parc input[type="date"], .ven-parc .ven-parc-valor{ width:auto; min-width:0; max-width:150px; padding:4px 8px; }
.ven-parc .ven-parc-valor{ text-align:right; max-width:120px; }
.ven-parc-check{ margin-top:0 !important; }

.ven-listas{ margin-top:22px; }
.ven-listas-titulo{ margin:0 0 4px; }
.ven-lista summary{ cursor:pointer; padding:2px 0 6px; }
.ven-lista .opt-row input:not([type="checkbox"]){ flex:1 1 auto; min-width:0; }
.ven-ativo{ margin-top:0 !important; white-space:nowrap; }
.ven-lista-filtro{ width:100%; margin:4px 0 8px; }

@media (max-width: 720px){
  .ven-tres{ grid-template-columns:1fr; }
  .ven-periodo{ width:100%; }
  .ven-periodo input{ flex:1 1 0; }
  .ven-conf-lista li{ flex-direction:column; align-items:flex-start; }
  .ven-lista .opt-row{ flex-wrap:wrap; }
}

/* Configurações › Editar acesso › Controle de vendas */
.ven-acesso-marcas{ display:grid; gap:2px; margin:6px 0 0; }
.ven-acesso-marcas .meta-note{ font-weight:400; }

/* Celular: na barra de baixo o nome fica curto ("Vendas"); o nome completo continua no aria-label/title.
   Os nomes da barra não passam por cima do vizinho (corta o excesso). */
@media (max-width:640px){
  .mod-btn{ overflow:hidden; }
  .mod-btn[data-mod="vendas"]{ font-size:0 !important; }
  .mod-btn[data-mod="vendas"]::after{ content:"Vendas"; font-size:0.64rem; line-height:1.2; }
}

/* ---------- modulos/marketing/marketing.css ---------- */
/* Marketing (migração 25). Usa também as classes comuns da Farmácia e do Controle de vendas (farm-*, ven-periodo, kpi…). */
.mod-btn[data-mod="marketing"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.2 12.7 4.7 11.8 6.2 16.4 3.7 17.2zM4.7 11.8L11.7 6.0L15.3 17.0L6.2 16.4M11.4 5.0 13.9 4.2 18.1 17.2 15.6 18.0zM9.6 16.9L10.0 18.1L11.1 18.9L12.2 18.9L13.2 18.2L13.6 16.9L13.3 16.1M17.5 6.2L18.7 4.5M19.2 9.7L21.1 9.0M19.8 13.5L21.9 14.2'/%3E%3C/svg%3E"); }
.mk-controles{ flex-wrap:wrap; gap:8px; }
.mk-titulo{ margin:18px 0 8px; }
.mk-bloco{ margin-bottom:16px; }
.mk-tabela td small.mk-sub{ display:block; color:var(--text-muted); font-size:0.76rem; margin-top:1px; }
.mk-orig-linha{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
.mk-orig-linha input[type="text"], .mk-orig-linha input:not([type]){ flex:1 1 220px; min-width:0; }
.mk-orig-linha select{ flex:0 1 230px; min-width:0; }
.mk-camp-nome{ min-width:180px; width:100%; }
@media (max-width: 720px){
  .mk-orig-linha input, .mk-orig-linha select{ flex:1 1 100%; }
}
.mk-coleta{ margin:10px 0 12px; padding:10px 14px; display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.mk-cfg-grade{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:10px; margin:10px 0; }
.mk-cfg-grade label{ display:flex; flex-direction:column; gap:4px; font-size:0.85rem; color:var(--text-muted); }
.mk-cfg-grade input{ width:100%; min-width:0; }

/* ---------- Painel visual (Fase 1, 21/10/2026): cartões, gráficos em SVG, funil, ranking. Sem biblioteca de gráficos. ---------- */
.mk-comparar{ margin:0; }
.mk-card{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--card-shadow, var(--shadow)); padding:20px; min-width:0; margin-bottom:20px; }
.mk-card h3{ margin:0; font-size:1rem; font-weight:600; }
.mk-card .meta-note{ margin:4px 0 14px; }
.mk-card-cab{ display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:10px; }
.mk-linha{ display:flex; flex-wrap:wrap; gap:20px; align-items:stretch; }
.mk-linha > .mk-card{ flex:1 1 440px; }
.mk-linha > .mk-card.mk-grande{ flex:999 1 560px; }
.mk-linha > .mk-card.mk-lado{ flex:1 1 300px; }

/* cartões de indicadores */
.mk-kpis{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:8px; }
.mk-kpi{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--card-shadow, var(--shadow)); padding:16px 16px 12px; display:flex; flex-direction:column; gap:6px; min-width:0; }
.mk-kpi-rot{ font-size:0.76rem; font-weight:600; color:var(--text-muted); letter-spacing:0.02em; }
.mk-kpi-val{ font-size:1.6rem; line-height:1.1; font-weight:700; letter-spacing:-0.028em; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.mk-kpi-delta{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:0.76rem; color:var(--text-muted); min-height:22px; }
.mk-delta{ display:inline-block; padding:2px 8px; border-radius:999px; font-weight:650; background:var(--fill); color:var(--text); }
.mk-delta.bom{ background:var(--good-soft); color:#14684A; }
.mk-delta.ruim{ background:var(--bad-soft); color:#9E3523; }
.mk-spark{ width:100%; height:30px; margin-top:4px; display:block; }
.mk-spark path{ fill:none; stroke:var(--accent); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.mk-spark-vazio{ height:30px; margin-top:4px; font-size:0.72rem; color:var(--text-muted); display:flex; align-items:center; }
.mk-sec{ grid-column:1 / -1; font-size:0.82rem; color:var(--text-muted); padding:2px 4px 0; }
.mk-sec b{ color:var(--text); font-variant-numeric:tabular-nums; }

/* gráfico principal */
.mk-seg{ display:inline-flex; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.mk-seg-btn{ min-height:32px; padding:0 14px; border:0; background:var(--surface); color:var(--text-muted); font-size:0.78rem; cursor:pointer; }
.mk-seg-btn.ativo{ background:var(--accent-soft); color:var(--accent-strong); font-weight:650; }
.mk-legenda{ display:flex; gap:18px; margin:4px 0 4px; font-size:0.78rem; color:var(--text); }
.mk-legenda span{ display:inline-flex; align-items:center; gap:6px; }
.mk-leg-barra{ width:12px; height:12px; border-radius:3px; background:#7584C8; display:inline-block; }
.mk-leg-linha{ width:16px; height:3px; border-radius:2px; background:#C2570C; display:inline-block; }
.mk-svg{ width:100%; height:auto; display:block; }
.mk-svg .mk-grid{ stroke:#E9E9EE; stroke-width:1; }
.mk-svg .mk-base{ stroke:#C9C9D1; stroke-width:1; }
.mk-svg text{ font-size:11px; fill:#5E5E66; font-family:inherit; }
.mk-svg .mk-barra{ fill:#7584C8; }
.mk-svg .mk-barra:hover{ fill:#33448C; }
.mk-svg .mk-leads-linha{ fill:none; stroke:#C2570C; stroke-width:2.4; stroke-linejoin:round; stroke-linecap:round; }
.mk-svg .mk-leads-ponto{ fill:#FFFFFF; stroke:#C2570C; stroke-width:2; }
.mk-svg .mk-mes-area{ fill:var(--accent-soft); }
.mk-svg .mk-mes-linha{ fill:none; stroke:var(--accent); stroke-width:2.6; stroke-linejoin:round; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.mk-svg .mk-mes-ponto{ fill:var(--accent); }

/* leituras automáticas */
.mk-leit{ border-radius:12px; padding:12px 14px; margin-bottom:10px; background:var(--accent-soft); }
.mk-leit.bom{ background:var(--good-soft); }
.mk-leit.atencao{ background:var(--warn-soft); }
.mk-leit-t{ font-size:0.76rem; font-weight:700; color:var(--accent-strong); }
.mk-leit.bom .mk-leit-t{ color:#14684A; }
.mk-leit.atencao .mk-leit-t{ color:#7A4A0A; }
.mk-leit p{ margin:4px 0 0; font-size:0.84rem; line-height:1.45; }

/* funil e origem */
.mk-funil-linha{ margin-bottom:8px; }
.mk-funil-topo{ display:flex; align-items:center; gap:12px; }
.mk-funil-rot{ flex:0 0 150px; font-size:0.84rem; }
.mk-funil-trilho{ flex:1 1 auto; min-width:0; }
.mk-funil-barra{ height:30px; border-radius:8px; display:flex; align-items:center; padding:0 10px; box-sizing:border-box; min-width:64px; color:#FFFFFF; font-size:0.84rem; font-weight:700; font-variant-numeric:tabular-nums; }
.mk-funil-taxa{ margin:4px 0 0 162px; font-size:0.76rem; color:var(--text-muted); }
.mk-origem-linha{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.mk-origem-rot{ flex:0 0 150px; font-size:0.84rem; overflow-wrap:anywhere; }
.mk-origem-trilho{ flex:1 1 auto; min-width:0; height:14px; border-radius:7px; background:#EEEEF3; }
.mk-origem-barra{ height:14px; border-radius:7px; background:#7A83AE; }
.mk-origem-barra.pago{ background:var(--accent); }
.mk-origem-barra.vazio{ background:#8A8D9B; }
.mk-origem-val{ flex:0 0 86px; text-align:right; font-size:0.84rem; font-variant-numeric:tabular-nums; }
.mk-origem-val span{ color:var(--text-muted); }
.mk-total{ margin:14px 0 0; font-size:0.8rem; color:var(--text-muted); }

/* ranking de campanhas */
.mk-rk-cab, .mk-rk-linha{ display:grid; grid-template-columns:minmax(210px,1.7fr) minmax(150px,1.6fr) 100px 64px 70px 56px 96px; gap:14px; align-items:center; }
.mk-rk-cab{ padding:0 0 8px; border-bottom:1px solid var(--hair, var(--border)); font-size:0.76rem; color:var(--text-muted); font-weight:600; }
.mk-rk-linha{ padding:12px 0; border-bottom:1px solid var(--hair, var(--border)); font-size:0.84rem; font-variant-numeric:tabular-nums; }
.mk-rk-nome{ font-weight:600; overflow-wrap:anywhere; }
.mk-rk-cpl{ display:flex; align-items:center; gap:10px; }
.mk-rk-trilho{ position:relative; flex:1 1 auto; min-width:0; height:10px; border-radius:5px; background:#EEEEF3; }
.mk-rk-fill{ height:10px; border-radius:5px; }
.mk-rk-media{ position:absolute; top:-4px; bottom:-4px; width:2px; background:#1C1C1E; opacity:0.55; }
.mk-rk-valor{ flex:0 0 78px; text-align:right; font-weight:700; }
.mk-rk-num{ text-align:right; }
.mk-rk-pct{ text-align:right; color:var(--text-muted); }
.mk-selo{ display:inline-block; padding:3px 10px; border-radius:999px; font-size:0.74rem; font-weight:700; background:#ECECF1; color:#3A3A40; white-space:nowrap; }
.mk-selo.escalar{ background:var(--good-soft); color:#14684A; }
.mk-selo.otimizar{ background:var(--warn-soft); color:#7A4A0A; }
.mk-selo.revisar{ background:var(--bad-soft); color:#9E3523; }
.mk-fill-escalar{ background:#1F8A5D; } .mk-fill-manter{ background:#6B6F80; } .mk-fill-otimizar{ background:#B86E0A; } .mk-fill-revisar{ background:#B7402A; } .mk-fill-pouco{ background:#9A9DAB; }
.mk-rk-legenda{ margin-top:12px; }

/* mês a mês */
.mk-mes-cols{ display:flex; margin-top:6px; }
.mk-mes-col{ flex:1 1 0; min-width:0; text-align:center; font-variant-numeric:tabular-nums; }
.mk-mes-col b{ display:block; font-size:0.9rem; }
.mk-mes-col span{ display:block; font-size:0.76rem; color:var(--text-muted); }

/* detalhes recolhidos */
.mk-detalhes{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--card-shadow, var(--shadow)); padding:6px 20px 16px; margin-bottom:20px; }
.mk-detalhes > summary{ cursor:pointer; min-height:44px; display:flex; align-items:center; font-weight:600; font-size:0.9rem; }

/* grupos, palavras-chave e pesquisas (migração 27) */
.mk-ponto{ display:inline-block; flex:0 0 9px; width:9px; height:9px; border-radius:50%; margin-right:8px; background:#9A9DAB; }
.mk-ponto.on{ background:#1F8A5D; }
.mk-rk-nome{ display:grid; grid-template-columns:9px minmax(0,1fr); column-gap:8px; align-items:center; min-width:0; }
.mk-rk-nome .mk-ponto{ margin:0; }
.mk-rk-nome span{ min-width:0; overflow-wrap:anywhere; }
.mk-rk-nome small{ grid-column:2; font-size:0.72rem; font-weight:400; color:var(--text-muted); }
.mk-rk-grupo{ background:#FAFAFC; }
.mk-rk-grupo .mk-rk-nome{ padding-left:24px; font-weight:500; }
.mk-rk-pausado .mk-rk-nome{ color:var(--text-muted); }
.mk-rk-m{ display:none; }
.mk-sub-i{ color:var(--text-muted); font-weight:400; }
.mk-neg{ margin-top:14px; }
.mk-neg summary{ cursor:pointer; min-height:36px; display:flex; align-items:center; font-weight:600; font-size:0.86rem; }
.mk-chips{ display:flex; flex-wrap:wrap; gap:8px; align-content:flex-start; }
.mk-chip-neg{ display:inline-block; padding:4px 10px; border-radius:999px; background:var(--fill); font-size:0.8rem; }
.mk-chip{ min-height:36px; padding:0 14px; border-radius:999px; border:1.5px solid #BCD0F6; background:var(--surface); color:#2B2F3A; cursor:pointer; font-size:0.84rem; }
.mk-chip-g{ font-size:1rem; border-color:#4A82E8; } .mk-chip-m{ font-size:0.9rem; border-color:#8FB3F2; }
.mk-chip.ativo{ background:#1D5FD6; border-color:#1D5FD6; color:#FFFFFF; }
.mk-pq{ display:flex; flex-wrap:wrap; gap:20px; align-items:flex-start; margin-top:6px; }
.mk-pq > .mk-chips{ flex:1 1 440px; min-width:0; }
.mk-pq-painel{ flex:1 1 320px; min-width:0; border:1px solid var(--border); border-radius:14px; padding:16px; }
.mk-pq-painel .meta-note{ margin:0; }
.mk-pq-sel{ font-size:1.2rem; font-weight:700; margin:2px 0 10px; overflow-wrap:anywhere; }
.mk-pq-cab, .mk-pq-linha{ display:grid; grid-template-columns:minmax(0,1fr) 84px 60px; gap:6px 10px; font-size:0.84rem; font-variant-numeric:tabular-nums; }
.mk-pq-cab{ font-size:0.76rem; color:var(--text-muted); font-weight:600; padding-bottom:4px; }
.mk-pq-linha{ padding:6px 0; border-top:1px solid var(--hair, var(--border)); }
.mk-pq-linha small{ display:block; color:var(--text-muted); font-size:0.72rem; }
.mk-aviso-leitura{ margin-top:12px; padding:10px 12px; border-radius:10px; background:var(--accent-soft); color:var(--accent-strong); font-size:0.8rem; line-height:1.45; }
.mk-svg .mk-barra-clique{ fill:#6FA8A0; } .mk-svg .mk-barra-clique:hover{ fill:#3F7F76; }
.mk-svg .mk-cpc-linha{ fill:none; stroke:#7A3E9D; stroke-width:2.4; stroke-linejoin:round; stroke-linecap:round; }
.mk-svg .mk-cpc-ponto{ fill:#FFFFFF; stroke:#7A3E9D; stroke-width:2; }
.mk-leg-clique{ background:#6FA8A0; } .mk-leg-cpc{ background:#7A3E9D; }

@media (max-width: 1000px){ .mk-kpis{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 720px){
  .mk-card{ padding:16px; }
  .mk-kpis{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mk-kpi-val{ font-size:1.35rem; }
  .mk-funil-topo, .mk-origem-linha{ flex-wrap:wrap; gap:6px; }
  .mk-funil-rot, .mk-origem-rot{ flex:1 1 100%; }
  .mk-funil-taxa{ margin-left:0; }
  .mk-origem-trilho{ flex:1 1 0; }
  .mk-rk-cab{ display:none; }
  .mk-rk-linha{ grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"nome selo" "cpl cpl" "meta meta"; gap:8px 12px; }
  .mk-rk-nome{ grid-area:nome; } .mk-rk-selo{ grid-area:selo; } .mk-rk-cpl{ grid-area:cpl; }
  .mk-rk-d{ display:none; } .mk-rk-m{ display:block; grid-area:meta; font-size:0.78rem; color:var(--text-muted); }
  .mk-rk-grupo .mk-rk-nome{ padding-left:14px; }
  .mk-detalhes{ padding:4px 12px 12px; }
}

/* ---------- modulos/avaliacoes/avaliacoes.css ---------- */
/* Avaliações (migração 30). Usa também as classes comuns da Farmácia e do Marketing (farm-*, mk-*). */
.mod-btn[data-mod="avaliacoes"]{ --ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5l2.7 5.5 6 .9-4.4 4.2 1 6-5.3-2.8-5.3 2.8 1-6L3.3 9.9l6-.9z'/%3E%3C/svg%3E"); }
.av-nota-chip{ display:inline-block; min-width:2.2em; text-align:center; padding:2px 8px; border-radius:999px; font-weight:700; font-variant-numeric:tabular-nums; }
.av-nota-chip.promotor{ background:var(--good-soft); color:var(--good); }
.av-nota-chip.neutro{ background:var(--warn-soft); color:var(--warn); }
.av-nota-chip.detrator{ background:var(--bad-soft); color:var(--bad); }
.av-tabela td{ vertical-align:top; }
.av-resp{ max-width:46ch; overflow-wrap:anywhere; }
.av-resp small{ display:block; color:var(--text-muted); }
.av-cfg-grade{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; margin:10px 0; }
.av-cfg-grade label, .av-textos label{ display:flex; flex-direction:column; gap:4px; font-size:0.85rem; color:var(--text-muted); }
.av-cfg-grade input, .av-cfg-grade select, .av-textos input, .av-textos textarea{ width:100%; min-width:0; box-sizing:border-box; }
.av-textos{ display:grid; gap:10px; margin-top:12px; }
.av-aviso-google{ background:var(--warn-soft); color:var(--warn); border-radius:10px; padding:10px 12px; font-size:0.86rem; margin:8px 0; }
.av-perg{ border:1px solid var(--border); border-radius:12px; padding:12px; margin:0 0 10px; display:grid; gap:8px; background:var(--surface); }
.av-perg.arquivada{ opacity:.65; }
.av-perg-topo{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; justify-content:space-between; }
.av-perg-linha{ display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.av-perg textarea, .av-perg input[type="text"]{ width:100%; box-sizing:border-box; }
.av-acoes{ display:flex; flex-wrap:wrap; gap:10px; margin-top:10px; }
.av-link-linha{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:8px 0; }
.av-link-linha code{ flex:1 1 260px; min-width:0; overflow-wrap:anywhere; background:var(--surface-muted); padding:8px 10px; border-radius:8px; font-size:0.84rem; }
.av-qr-bloco{ display:flex; flex-wrap:wrap; gap:16px; align-items:center; margin-top:10px; }
.av-qr-bloco svg{ width:180px; height:180px; background:#fff; padding:8px; border:1px solid var(--border); border-radius:10px; box-sizing:content-box; }
.av-barras{ display:grid; gap:6px; margin:8px 0 14px; }
.av-barra{ display:grid; grid-template-columns:2.2em 1fr 4em; gap:8px; align-items:center; font-size:0.86rem; font-variant-numeric:tabular-nums; }
.av-barra svg{ width:100%; height:16px; display:block; }
.av-det-resp{ margin:0 0 10px; padding:10px 12px; background:var(--surface-muted); border-radius:10px; overflow-wrap:anywhere; }
.av-det-resp b{ display:block; font-size:0.84rem; color:var(--text-muted); font-weight:600; }
@media (max-width: 720px){ .av-barra{ grid-template-columns:2em 1fr 3.4em; } }
@media print{
  body.av-imprimindo > *{ display:none !important; }
  body.av-imprimindo #avCartaz{ display:block !important; }
}
.av-cartaz{ display:none; text-align:center; padding:40px; }
.av-cartaz h2{ font-size:2rem; margin:0 0 12px; }
.av-cartaz p{ font-size:1.2rem; }
.av-cartaz svg{ width:70vmin; height:70vmin; }
.av-b-promotor{ fill:var(--good); } .av-b-neutro{ fill:var(--warn); } .av-b-detrator{ fill:var(--bad); }
.av-det-resp{ white-space:pre-wrap; }
.av-tabela tr.av-nao-vista td:first-child{ box-shadow:inset 3px 0 0 var(--accent, var(--warn)); }
.av-tabela tr.av-nao-vista .av-resp{ font-weight:600; }
.av-vista-info{ display:block; color:var(--text-muted); font-size:0.76rem; margin-top:1px; }
.av-home-lista{ list-style:none; margin:8px 0 10px; padding:0; display:flex; flex-direction:column; gap:6px; }
.av-home-lista li{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
