/* ============================================================
   Impulse — Folha de estilos principal (app.css)
   Extraída do index.html sem nenhuma alteração de regra.
   Ordem preservada: 1) estilos gerais do <head>
                     2) estilos da tela de login/PIN (eram inline no <body>)
   ============================================================ */

/* ---- (1) Estilos gerais — originalmente no <head> ---- */
  html,body{overflow-x:hidden;max-width:100vw}
  :root{
    --ink:#13294B; --ink-2:#3A5573; --muted:#5E7288;
    --blue:#1F73E0; --blue-700:#1559BD; --blue-soft:#E9F2FE; --blue-line:#CBE0FB; --hub-accent:#1559BD; --blue-rgb:31,115,224; --blue-ico:#1F73E0; --ico-on-blue:#ffffff;
    --bg:#E9EFF8; --surface:#FFFFFF; --line:#E5EDF6; /* 1428 — refino do fundo das páginas (P1): mais claro e arejado que o #DFE7F2, os cards brancos saltam melhor */
    --green:#0FA47A; --green-soft:#E2F6F0;
    --amber:#C2840F; --amber-soft:#FCF1D9;
    --red:#D8392B; --red-soft:#FCE7E4;
    --purple:#6B46C1; --purple-soft:#EEE9FB;
    --radius:15px; --shadow:0 1px 2px rgba(19,41,75,.05), 0 10px 28px rgba(19,41,75,.07);
    --font:'Barlow', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
    --display:'Barlow', system-ui, sans-serif;
    /* 1338 — escala de espaçamento padrão (4/8/12/16/20/24). Régua única para
       migrar, aos poucos, os valores avulsos (11px aqui, 13px ali) sem perder o ritmo. */
    --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px;
  }
  /* 1320 — mesmo vidro-falso refinado no escuro: gloss discreto no topo, sem blobs */
  [data-theme=dark] .side{background:radial-gradient(135% 78% at 50% -12%,rgba(255,255,255,.055) 0%,transparent 58%),linear-gradient(180deg,rgba(255,255,255,.03) 0%,transparent 32%),linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 90%),color-mix(in srgb,var(--blue),#000 93%) 46%,color-mix(in srgb,var(--blue),#000 95%))!important;border-right:1px solid rgba(255,255,255,.05)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),4px 0 30px rgba(0,0,0,.35)!important}
  /* 944 — o brilho da barra vinha de um ::before com inset:0, que cobre só o
     trecho visível e rola junto com o menu: ao rolar, ele sumia e deixava uma
     emenda de cor. Agora o mesmo brilho vem no fundo do próprio elemento, que
     acompanha toda a altura rolável. O pseudo fica sem pintura. */
  [data-theme=dark] .side::before{background:none}
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;background-image:radial-gradient(ellipse 80% 50% at 0% 0%,rgba(15,50,110,.06) 0%,transparent 60%),radial-gradient(ellipse 60% 40% at 100% 100%,rgba(15,90,180,.05) 0%,transparent 60%)}
  button{font-family:inherit;cursor:pointer;border:none;background:none;font-variant-numeric:tabular-nums}
  input,select,textarea{font-family:inherit;font-size:14px;font-variant-numeric:tabular-nums}
  ::selection{background:var(--blue-soft)}

  .app{display:grid;grid-template-columns:262px 1fr;grid-template-rows:1fr;min-height:100vh;transition:grid-template-columns .22s;align-items:start;max-width:100vw}
  .app.compact{grid-template-columns:68px 1fr}
  /* 1327 — Layout "Barra no topo" (full-width), opt-in e só no computador.
     A .topbar é movida (por JS) para ser filha direta do .app; aqui ela vira
     a linha de cima do grid, atravessando as duas colunas; a sidebar encaixa
     embaixo do canto esquerdo. A barra fica grudada no topo ao rolar. */
  @media(min-width:881px){
    /* 1332 — o app trava na altura da tela: a barra (linha de cima) + a linha
       de baixo (sidebar | conteúdo) preenchem a viewport. Sidebar e conteúdo
       ficam com a MESMA altura; o conteúdo rola por dentro (não a página). */
    /* 1335 — a coluna da lateral precisa caber a sidebar (262px) + a margem
       esquerda da ilha (20px); senão ela transborda e encosta/cobre a agenda.
       Assim sobra o gap de 12px (margin-left do .main) entre as duas ilhas. */
    .app[data-shell="topo"]{ grid-template-columns:250px 1fr; grid-template-rows:auto 1fr; grid-template-areas:"top top" "side main"; height:100vh; max-height:100vh; overflow:hidden; }
    .app.compact[data-shell="topo"]{ grid-template-columns:72px 1fr; }  /* 1468: trilho fino como no Gmail */
    /* 1467 — ☰ na Agenda: a lateral SOME por completo (como no Google Agenda) */
    .app.semside[data-shell="topo"]{ grid-template-columns:0 1fr; }
    .app.semside[data-shell="topo"]>.side{ display:none; }
    .app.semside[data-shell="topo"]>.main{ grid-column:1 / -1; margin-left:20px; }
    .app[data-shell="topo"]>.topbar{ grid-area:top; margin:14px 20px 0; }
    /* 1332 — sidebar MODULAR: ilha arredondada com margem, mesma altura do conteúdo */
    .app[data-shell="topo"]>.side{ grid-area:side; position:static; align-self:stretch; min-height:0; height:auto; max-height:none; margin:12px 0 16px 20px; border-radius:16px; overflow:auto; }
    /* 1332/1333 — conteúdo casa a altura da sidebar e rola por dentro. Sem padding
       vertical (pra o container alinhar topo/base com a sidebar); respiro dos cards
       vem do #content. */
    .app[data-shell="topo"]>.main{ grid-area:main; align-self:stretch; min-height:0; max-height:none; max-width:none; overflow:auto; margin:12px 20px 16px 12px; padding:0; }
    .app[data-shell="topo"]>.main>.topbar{ display:none } /* segurança contra cópia órfã */
    /* 1333 — o #content preenche a área; cards ganham respiro lateral (16px). */
    .app[data-shell="topo"]>.main>#content{ height:100%; box-sizing:border-box; padding:0 16px; }
    /* 1333 — o CONTAINER da agenda (ilha branca já existente) preenche a área e
       fica do MESMO tamanho da sidebar (alinhado topo/base); ocupa a largura toda
       da área (cancela o respiro dos cards). */
    .app[data-shell="topo"]>.main>#content>.agenda-layout{ height:100%; min-height:0; margin:0 -16px; }
    /* 1343 — ROLAGEM SÓ POR DENTRO DA GRADE (estilo Simples Dental). Na agenda, o
       #content vira uma coluna flex: a grade ocupa o espaço e rola internamente
       (cabeçalho de dias/horas fixo), enquanto o Resumo da Semana e a legenda ficam
       ancorados embaixo. Assim a PÁGINA não se mexe mais — só a grade tem cursor. */
    .app[data-shell="topo"]>.main>#content.is-agenda{ display:flex; flex-direction:column; overflow:hidden; }
    .app[data-shell="topo"]>.main>#content.is-agenda>.agenda-layout{ flex:1 1 0; height:auto; min-height:0; }
    .app[data-shell="topo"] .gw-scroll, .app[data-shell="topo"] .gwcad-scroll, .app[data-shell="topo"] .tl-wrap{ min-height:0; }
    /* 1346 — na visão FOLHA da agenda, a folha (que é longa) estava sendo CORTADA
       sem cursor (herdou o overflow:hidden do container da 1343). Agora ela rola
       por dentro, com o cabeçalho da folha fixo no topo. */
    .app[data-shell="topo"] .agenda-grade > .folha-dia{ overflow:auto; min-height:0; }
    /* 1472 — o .fd-head saiu da folha (cabeçalho duplicado); quem gruda agora é a
       LINHA DAS COLUNAS (thead), que herdou o Repasse/Imprimir. */
    .app[data-shell="topo"] .agenda-grade > .folha-dia .fd-tab thead th{ position:sticky; top:0; z-index:3; background:var(--surface); }
    /* 1329 — com a Fusão + barra no topo (full-width), a barra já ocupa o canto
       superior esquerdo; o emblema do Impulse na sidebar fica redundante e é ocultado. */
    /* 1334 — com a sidebar virada ilha de altura cheia, o mini-calendário (e o
       rodapé logo abaixo) vão para o FUNDO da ilha: o menu fica em cima e o
       vão fica entre o menu e o calendário (respiro natural), sem "buraco" preto
       no meio quando o menu está recolhido. */
    .app[data-shell="topo"]>.side .side-cal{ margin-top:auto }
    .app[data-shell="topo"]>.side .side-foot{ margin-top:8px }
    /* 1371 — RECOLHIDO: o mini-calendário some (correto), e era ELE que empurrava
       o rodapé (engrenagem + Recolher) pra baixo com o margin-top:auto. Sem o
       calendário, o rodapé subia e ficava colado no menu. Ao recolher, devolvo o
       margin-top:auto pro próprio rodapé, então ele fica firme no fundo da ilha. */
    .app.compact[data-shell="topo"]>.side .side-foot{ margin-top:auto }
  }
  .app.compact .main{min-width:0;overflow-x:hidden;max-width:1700px}
  /* 1320 — vidro-falso da barra lateral REFINADO: gloss limpo no topo + fio de luz (rim),
     sem os antigos blobs radiais de "arte". Vale como base p/ todos os modos. */
  .side{background:radial-gradient(135% 78% at 50% -12%,rgba(255,255,255,.12) 0%,transparent 58%),linear-gradient(180deg,rgba(255,255,255,.06) 0%,transparent 34%),linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 72%) 0%,color-mix(in srgb,var(--blue),#000 78%) 46%,color-mix(in srgb,var(--blue),#000 84%) 100%);border-right:1px solid rgba(255,255,255,.08);color:#fff;padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;max-height:100vh;overflow-y:auto;overflow-x:hidden;transition:width .22s;width:262px;flex-shrink:0;box-sizing:border-box;box-shadow:inset 0 1px 0 rgba(255,255,255,.13),4px 0 30px rgba(4,14,42,.22);z-index:2}
  .app.compact .side{width:68px;padding:10px 6px}
  /* side mini calendar */
  .side-cal{margin:0 0 12px;border-radius:13px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.16);padding:12px 11px}
  .app.compact .side-cal{display:none}
  .side-cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:13px;font-weight:800;color:#fff;letter-spacing:.3px}
  .side-cal-nav button{background:rgba(255,255,255,.14);border:none;border-radius:8px;width:26px;height:26px;cursor:pointer;color:#fff;font-size:15px;display:grid;place-items:center;transition:.15s;line-height:1}
  .side-cal-nav button:hover{background:rgba(255,255,255,.28)}
  .side-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
  .side-cal-hd{text-align:center;font-size:9px;font-weight:700;color:rgba(255,255,255,.4);padding:2px 0;letter-spacing:.5px;text-transform:uppercase}
  .side-cal-day{text-align:center;font-size:12px;font-weight:500;padding:5px 1px;border-radius:7px;cursor:pointer;position:relative;color:rgba(255,255,255,.6);transition:.12s;line-height:1.25;min-height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .side-cal-day:hover{background:rgba(255,255,255,.16);color:#fff}
  .side-cal-day.hj{color:#fff;font-weight:800}
  .side-cal-day.sel{background:#fff;color:#1559BD;font-weight:900;box-shadow:0 2px 10px rgba(0,0,0,.25)}
  .side-cal-day.in-week{background:rgba(255,255,255,.09);color:rgba(255,255,255,.85)}
  .side-cal-dot{display:block;width:4px;height:4px;border-radius:50%;background:rgba(91,227,167,.85);margin:2px auto 0}
  .side-cal-day.sel .side-cal-dot{background:var(--blue)}
  .side-cal-day.hj::after{content:'';display:block;width:18px;height:2px;border-radius:1px;background:rgba(255,255,255,.5);margin:2px auto 0}
  .btn-encaixe{background:linear-gradient(135deg,#E0483A,#C0392B);color:#fff;border:none;border-radius:11px;padding:11px 18px;font-weight:800;font-size:14px;font-family:var(--font);cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.15s;box-shadow:0 2px 12px rgba(216,57,43,.32)}
  .btn-encaixe:hover{filter:brightness(1.1);transform:translateY(-1px)}
  .gw-card.is-encaixe{animation:pulse-border 2s infinite}
  @keyframes pulse-border{0%,100%{box-shadow:0 0 0 0 rgba(216,57,43,.4)}50%{box-shadow:0 0 0 3px rgba(216,57,43,.15)}}
  .side-cal-day.feriado{color:#FFD580!important;font-weight:700}
  .side-cal-day.feriado .side-cal-dot{background:#FFD580}
  .gw-dh.feriado .gw-dw{color:var(--amber)!important}
  .gw-dh.feriado:not(.today) .gw-dn{color:var(--amber)}
  .gw-dh.feriado{background:rgba(194,132,15,.08);border-radius:8px}
  .gw-mes-dia.feriado .gw-mes-num{color:#C2840F!important;font-weight:800}
  .gw-mes-dia.feriado{background:rgba(252,241,217,.5)}
  .gw-mes-fer{font-size:10px;font-weight:800;color:#9A6406;padding:1px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .feriado-tip{font-size:9px;color:#FFD580;opacity:.9;text-align:center;line-height:1;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .gw-feriado-banner{background:rgba(194,132,15,.10);border-left:3px solid var(--amber);border-radius:7px;padding:6px 11px;font-size:12px;font-weight:700;color:var(--amber);margin:8px 2px;display:flex;align-items:center;gap:6px}
  /* Fluent-style glass shimmer overlay */
  .side::before{content:'';position:absolute;inset:0;background:none;pointer-events:none;z-index:0}
  .side>*{position:relative;z-index:1}
  .side::after{content:'';position:absolute;inset:0;z-index:0;opacity:.05;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='nz'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23nz)'/%3E%3C/svg%3E");background-size:160px}
  /* 1472 — as regras do Céu Vivo da sidebar (data-ceu-side) saíram com o motor */
  .help-btn{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:50%;width:26px;height:26px;display:grid;place-items:center;cursor:pointer;flex-shrink:0;transition:.15s;color:#fff;margin-left:auto}
  .help-btn:hover{background:rgba(255,255,255,.3);border-color:rgba(255,255,255,.5);transform:scale(1.08)}
  .mono{width:42px;height:42px;border-radius:12px;background:#fff center/76% no-repeat;flex:none;box-shadow:0 2px 8px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.9);transition:.18s}
  .mono svg{width:26px;height:26px}
  .collapse-btn{position:absolute;right:-13px;top:72px;width:26px;height:26px;background:linear-gradient(135deg,#3D8BF2,#1F73E0);border-radius:50%;display:grid;place-items:center;box-shadow:0 2px 8px rgba(19,41,75,.25);z-index:10;transition:.18s;cursor:pointer}
  .collapse-btn svg{width:13px;height:13px;color:#fff;transition:.22s}
  .app.compact .collapse-btn svg{transform:rotate(180deg)}
  #dentFilter label{display:block;font-size:10.5px;color:#AFC6E2;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:0 6px 6px;white-space:nowrap;overflow:hidden}
  .app.compact #dentFilter label,.app.compact #dentFilter select{display:none}
  #dentFilter select{width:100%;background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:9px;padding:9px 10px;font-size:13px;font-weight:600;outline:none;cursor:pointer}
  #dentFilter select option{color:#15293c;background:#EBF1FB}
  ._pinBtn{border:none;border-radius:10px;background:var(--bg);color:var(--ink);font-size:20px;font-weight:700;padding:14px 0;cursor:pointer;font-family:var(--font);box-shadow:0 1px 4px rgba(0,0,0,.10);transition:.12s}
  ._pinBtn:hover{background:var(--blue-soft);color:var(--blue)}
  ._pinDot{width:14px;height:14px;border-radius:50%;background:var(--line);border:2px solid var(--line);transition:.2s}
  ._pinDot.filled{background:var(--blue);border-color:var(--blue)}

  ._lockBtn{border:1px solid rgba(255,255,255,.2);border-radius:11px;background:rgba(255,255,255,.1);color:#fff;font-size:22px;font-weight:700;padding:14px 0;cursor:pointer;font-family:var(--font);transition:.12s;}
  ._lockBtn:hover{background:rgba(255,255,255,.2)}
  #lockScreen ._pinDot{border-color:rgba(255,255,255,.4);background:transparent}
  #lockScreen ._pinDot.filled{background:#fff;border-color:#fff}
  .nav{display:flex;flex-direction:column;gap:2px}
  .nav button{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:10px;color:#C9D9EC;font-weight:600;font-size:13.5px;text-align:left;transition:.15s;white-space:nowrap;overflow:hidden;position:relative}
  .nav button svg{width:19px;height:19px;flex:none;opacity:.9}
  .app.compact .nav button span.nav-lbl{display:none}
  .app.compact .nav button{position:relative;justify-content:center;padding:10px 0;gap:0}
  .app.compact .nav .nbadge{position:absolute;top:5px;right:13px;min-width:0;width:9px;height:9px;padding:0;margin:0;font-size:0;line-height:0;border-radius:50%;border:2px solid rgba(8,24,64,.9);box-sizing:content-box}
  .nav button:hover{background:rgba(255,255,255,.1);color:#fff}
  .nav button.active{background:rgba(255,255,255,.18);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
  /* 1350 — todos os itens da barra lateral em MAIÚSCULAS
     1353 — com mais espaçamento entre as letras (respiro) */
  .side .nav .nav-lbl{text-transform:uppercase;letter-spacing:1.4px}
  .nav button.active svg{opacity:1}
  .nav .nbadge{margin-left:auto;background:rgba(255,255,255,.22);color:#fff;border-radius:999px;font-size:11px;font-weight:800;padding:2px 8px;display:none}
  .nav button.active .nbadge{background:var(--red);color:#fff}
  .side-foot{margin-top:auto;display:flex;flex-direction:column;gap:7px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}
  .side-foot .who{font-size:11.5px;color:#AFC6E2;padding:0 6px;white-space:nowrap;overflow:hidden;transition:.18s}
  .app.compact .side-foot .who{opacity:0;height:0;margin:0;padding:0}

  /* ═══ 1355 — botão de usuário/sincronização na TOPBAR (à esquerda do ☰) ═══ */
  .tb-user{display:flex;align-items:center;gap:8px;flex:none;background:linear-gradient(180deg,#FFFFFF,#F5F9FF);border:1px solid var(--blue-line);border-radius:11px;padding:3px 10px 3px 3px;cursor:pointer;transition:.14s;font-family:inherit;margin-right:2px}
  .tb-user:hover{background:#EEF5FF}
  /* 1369 — avatar sem texto: só o círculo, redondo, como um botão de conta. */
  .tb-user-ic{gap:0;padding:3px;border-radius:50%}
  .tb-user-ic:hover{box-shadow:0 0 0 3px var(--blue-soft)}
  .tb-uav{position:relative;width:30px;height:30px;flex:none}
  .tb-uav .ring{position:absolute;inset:0;border-radius:50%;padding:2px;background:#22C55E;transition:background .3s}
  .tb-uav .face{position:absolute;inset:2px;border-radius:50%;background:linear-gradient(135deg,#2a86f0,#1f63b2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;letter-spacing:.3px}
  .tb-uav .dot{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;background:#22C55E;border:2px solid #fff;transition:background .3s}
  /* 1369 — menu da conta (clique no avatar) */
  .oh-acct{margin:-4px -2px}
  .oh-acct-head{display:flex;gap:12px;align-items:center;padding:6px 4px 14px}
  .oh-acct-av{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#2a86f0,#1f63b2);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;flex:none}
  .oh-acct-id b{font-size:15px;color:var(--ink);display:block}
  .oh-acct-id small{font-size:12px;color:var(--muted)}
  .oh-acct-sync{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--ink-2);padding:9px 12px;background:var(--bg);border-radius:10px;margin-bottom:8px}
  .oh-acct-dot{width:8px;height:8px;border-radius:50%;flex:none}
  /* 1603 — espaçamento dos itens do menu "Minha conta" reduzido (pedido do dono):
     de 12px para 8px de altura — mais compacto, cabe mais sem apertar. */
  .oh-acct-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 12px;border:none;background:none;font-family:inherit;font-size:14px;color:var(--ink);cursor:pointer;text-align:left;border-radius:10px}
  .oh-acct-item:hover{background:var(--blue-soft)}
  .oh-acct-item svg{width:18px;height:18px;color:var(--ink-2);flex:none}
  .oh-acct-item .oh-acct-chev{margin-left:auto;color:var(--muted);font-size:17px}
  .oh-acct-item.danger{color:var(--red)} .oh-acct-item.danger svg{color:var(--red)}
  .oh-acct-item.danger:hover{background:var(--red-soft)}
  .oh-acct-sep{height:1px;background:var(--line);margin:3px 4px}
  .oh-acct-foot{padding:11px 4px 2px;font-size:11px;color:var(--muted);text-align:center}
  @media(max-width:1080px){ .tb-uinfo{display:none} .tb-user{padding:3px;border-radius:50%} }

  /* ═══ 1347 — rodapé refinado da sidebar ═══ */
  /* botão de usuário (estilo Firefox): avatar com anel de sync + nome + status */

  /* interruptor Céu Vivo — discreto (só ícone + legenda), no estilo do Recolher */

  /* 1356/1421 — rodapé da barra: ENGRENAGEM (Barra lateral) e Recolher agora EMPILHADOS,
     um acima do outro — como já ficavam com a barra recolhida (pedido do dono). */
  /* 1384/1421 — o divisor vertical entre os dois botões saiu (não faz sentido empilhado). */
  /* Céu Vivo Preto na sidebar */
  /* Recolher/expandir — pílula centralizada e elegante */

  /* fundo Céu Vivo na sidebar (ligável no interruptor). 1349 — as estrelas vêm do
     motor procedural original window.ohCeuSurf (camada .ohCeuSurfLayer em z-index:-1,
     com o mesmo CSS .ohc já usado nas telas de entrada). Aqui fica só a cor-base,
     como garantia enquanto a camada procedural monta. */

  /* 1280 — respiro Aero: gutters um pouco mais generosos (leve e arejado), mantendo o full-bleed alinhado via --oh-pad */
  .main{padding:20px 22px 64px;--oh-pad:22px;max-width:1400px;width:100%;min-height:100vh;min-height:100dvh;box-sizing:border-box;min-width:0;scroll-behavior:smooth}
  /* 929 — com fundo de página ativo, a .main ocupa a coluna inteira (o fundo
     cobre tudo, sem faixa à direita) e o limite de largura passa para a topbar
     e o conteúdo, que seguem centralizados. */
  .main[data-fundo-full]{max-width:none}
  .main[data-fundo-full]>.topbar,.main[data-fundo-full]>#content{max-width:1400px;margin-left:auto;margin-right:auto}
  .app.compact .main[data-fundo-full]>.topbar,.app.compact .main[data-fundo-full]>#content{max-width:1700px}
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px;flex-wrap:nowrap;min-width:0;overflow:hidden}
  .topbar h2{font-family:var(--display);font-size:27px;font-weight:800;letter-spacing:-.4px}
  .topbar p{color:var(--muted);font-size:13px;margin-top:2px}

  /* 1289 — GEL Aero Vista/7 (vidro FALSO): faixa de brilho no topo + linha de reflexo no meio + base azul. Só camadas de degradê, zero blur. */
  /* 1468 — botões FLAT (o gel Aero da 1289 saiu do código) */
  .btn{display:inline-flex;align-items:center;gap:8px;background:var(--blue);color:#fff;padding:10px 16px;border-radius:11px;font-weight:700;font-size:13.5px;transition:.15s}
  .btn:active{filter:brightness(.96)}
  .stat{animation:fadeUp .3s ease;animation-fill-mode:both}
  .stat:nth-child(2){animation-delay:.05s}
  .stat:nth-child(3){animation-delay:.1s}
  .stat:nth-child(4){animation-delay:.15s}
  .btn:hover{background:color-mix(in srgb,var(--blue),#000 10%)}
  .btn svg{width:16px;height:16px}
  .btn.ghost{background:var(--surface);color:var(--blue);border:1px solid var(--blue-line)}
  .btn.ghost:hover{background:var(--blue-soft)}
  .btn.sm{padding:7px 12px;font-size:12.5px;border-radius:9px}
  .btn.danger{background:var(--surface);color:var(--red);border:1px solid var(--red-soft);box-shadow:none}
  .btn.danger:hover{background:var(--red-soft)}
  .btn.wa{background:#22C35C;color:#fff}
  .btn.wa:hover{background:#1FB857}
  .btn.wa svg{width:17px;height:17px}
  .btn.ok{background:#0FA47A} .btn.ok:hover{background:#0d8f6b;filter:none}  /* 1468: flat */
  /* 1338 — AÇÃO PRIMÁRIA PADRÃO. O mesmo gradiente/realce que estava copiado
     inline em ~15 botões de ação vira uma classe só, disponível para reuso
     (padroniza os botões de ação num azul idêntico). */
  .btn-act-primary{background:linear-gradient(135deg,var(--blue),color-mix(in srgb,var(--blue),#000 20%))!important;color:#fff!important;box-shadow:0 3px 14px rgba(var(--blue-rgb,31,115,224),.42)!important;border:none!important}

  .grid{display:grid;gap:18px}
  .stats{grid-template-columns:repeat(4,1fr);margin-bottom:22px}
  /* Histórico: cards + seletor Lista/Linha do tempo na mesma linha (compacto) */
  .hist-topo{display:flex;align-items:stretch;gap:12px;margin-bottom:18px}
  .hist-topo .hist-stats-compact{flex:1;min-width:0}
  .hist-topo-sel{display:flex;align-items:center;flex:none}
  .hist-stats-compact .stat{padding:11px 14px}
  .hist-stats-compact .stat .val{font-size:25px}
  .hist-stats-compact .stat .lbl,.hist-stats-compact .stat .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  @media(max-width:1100px){
    .hist-topo{flex-direction:column}
    .hist-topo-sel{justify-content:flex-end}
    .hist-stats-compact .stat .val{font-size:28px}
  }
  /* Análises: seletor de ano ao lado dos 5 cards */
  .ana-anosel{display:flex;align-items:center;gap:8px}
  .ana-topo .hist-topo-sel{align-items:center}
  @media(max-width:1100px){ .ana-topo .hist-stats-compact{grid-template-columns:repeat(3,1fr)!important} }
  @media(max-width:620px){ .ana-topo .hist-stats-compact{grid-template-columns:repeat(2,1fr)!important} }
  /* Estoque: seletor | cards (meio) | botão gerar lista, tudo numa linha */
  .est-topo{display:flex;align-items:center;gap:14px;margin-bottom:16px}
  .est-topo-seg,.est-topo-btn{flex:none}
  .est-topo .est-cards{flex:1;grid-template-columns:repeat(3,1fr);margin-bottom:0;min-width:0}
  .est-topo .est-cards.est-cards-1{grid-template-columns:1fr}
  @media(max-width:1000px){
    .est-topo{flex-wrap:wrap}
    .est-topo-seg{order:1}
    .est-topo-btn{order:2;margin-left:auto}
    .est-topo .est-cards{order:3;flex:1 1 100%;grid-template-columns:repeat(3,1fr)}
  }
  @media(max-width:560px){ .est-topo .est-cards{grid-template-columns:1fr}.est-topo-btn{margin-left:0} }
  /* 1278 — refinamento Aero: aura radial colorida no canto, por cima do vidro que o card já tem */
  .stat{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;box-shadow:var(--shadow)}
  .stat::before{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(var(--blue-rgb),.10),transparent 70%);pointer-events:none;z-index:0}
  .stat.accent-green::before{background:radial-gradient(circle,rgba(15,164,122,.13),transparent 70%)}
  .stat.accent-amber::before{background:radial-gradient(circle,rgba(194,132,15,.13),transparent 70%)}
  .stat.accent-red::before{background:radial-gradient(circle,rgba(192,57,43,.12),transparent 70%)}
  .stat.accent-purple::before{background:radial-gradient(circle,rgba(107,70,193,.12),transparent 70%)}
  .stat .lbl,.stat .val,.stat .sub{position:relative;z-index:1}
  .stat .lbl{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:7px}
  .stat .lbl svg{width:15px;height:15px}
  .stat .val{font-size:26px;font-weight:800;margin-top:9px;letter-spacing:-.5px}
  .stat .sub{font-size:12px;color:var(--muted);margin-top:3px}
  .stat.accent-green .val{color:var(--green)} .stat.accent-amber .val{color:var(--amber)}
  .stat.accent-red .val{color:var(--red)} .stat.accent-blue .val{color:var(--blue)}
  .stat.accent-purple .val{color:var(--purple)}

  .panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--sh1);overflow:hidden;animation:fadeUp .28s ease;transition:box-shadow var(--dur,.18s) var(--ease,ease),transform var(--dur,.18s) var(--ease,ease)}
  @media (hover:hover){ .panel:hover{box-shadow:var(--sh2);transform:translateY(-2px)} }
  @keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
  @keyframes fadeIn{from{opacity:0}to{opacity:1}}
  @keyframes syncPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}
  ._syncpulse{animation:syncPulse 1.1s ease-in-out infinite}
  .gw-resumo{display:flex;flex-wrap:wrap;gap:5px 14px;align-items:center;padding:7px 13px;margin:0 2px 8px;background:color-mix(in srgb, var(--blue) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--blue) 32%, var(--surface));border-radius:10px;font-size:12.5px;color:var(--ink-2);font-weight:600}
  .gw-resumo strong{color:var(--ink);font-weight:800}
  .gw-resumo .r-falta{color:var(--amber)}

  /* ═══ TIMELINE VIVA do dia (desktop) ═══ */
  .tl-kpis{ display:flex; gap:10px; margin:0 2px 16px; flex:none; }
  /* 1471 — filete da prévia também nos KPIs da agenda (cartões informativos)
     1472 — filete ::before reto, sem virar colchete no canto */
  .tl-kpi{ position:relative; overflow:hidden; flex:1; background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:12px 15px 12px 18px; box-shadow:var(--sh1); }
  .tl-kpi::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--blue); }
  .tl-kpi-v{ font-size:23px; font-weight:900; line-height:1; letter-spacing:-.5px; }
  .tl-kpi-l{ font-size:11px; color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:.4px; margin-top:5px; }
  .tl-wrap{ flex:1; overflow-y:auto; overflow-x:hidden; padding:2px 2px 20px; min-height:0; }
  .tl-row{ display:flex; align-items:stretch; gap:14px; }
  .tl-time{ width:56px; flex:none; display:flex; flex-direction:column; align-items:flex-end; padding-top:15px; }
  .tl-time .tl-h{ font-size:15px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; }
  .tl-time .tl-f{ font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
  .tl-card{ flex:1; min-width:0; display:flex; align-items:center; gap:13px; background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:13px 15px; margin-bottom:12px; box-shadow:0 2px 10px rgba(19,41,75,.05); cursor:pointer; text-align:left; font-family:inherit; transition:transform .13s var(--ease,ease), box-shadow .13s var(--ease,ease); position:relative; }
  .tl-card:hover{ transform:translateY(-1px); box-shadow:0 8px 22px -8px rgba(19,41,75,.28); border-color:var(--blue-line); }
  .tl-ic{ width:46px; height:46px; border-radius:14px; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:17px; flex:none; }
  .tl-main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
  .tl-nome{ font-size:15px; font-weight:800; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .tl-meta{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .tl-proc{ font-size:12.5px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .tl-flag{ font-size:10px; font-weight:800; border-radius:5px; padding:1px 6px; white-space:nowrap; }
  .tl-flag-canc{ color:var(--red); background:rgba(216,57,43,.1); }
  .tl-flag-falt{ color:var(--amber); background:rgba(194,132,15,.1); }
  .tl-chev{ width:18px; height:18px; color:var(--muted); flex:none; }
  .tl-card-tarefa{ border-style:dashed; opacity:.9; }
  .tl-card-tarefa .tl-sub{ font-size:12px; color:var(--muted); }
  .tl-row-add .tl-time{ padding-top:0; }
  .tl-add{ flex:1; display:flex; align-items:center; justify-content:center; gap:9px; background:linear-gradient(180deg,var(--blue-soft),var(--surface)); border:1.5px dashed var(--blue-line); border-radius:14px; padding:14px; color:var(--blue-700); font-weight:700; font-size:14px; font-family:inherit; cursor:pointer; transition:.13s var(--ease,ease); }
  .tl-add:hover{ background:var(--blue-soft); border-color:var(--blue); }
  .tl-row-livre .tl-time{ padding-top:11px; }
  .tl-livre{ flex:1; display:flex; align-items:center; gap:9px; margin-bottom:12px; background:repeating-linear-gradient(135deg,transparent,transparent 6px,color-mix(in srgb,var(--green) 5%,var(--surface)) 6px,color-mix(in srgb,var(--green) 5%,var(--surface)) 12px); border:1.5px dashed color-mix(in srgb,var(--green) 35%,var(--line)); border-radius:12px; padding:10px 14px; color:var(--green); font-weight:700; font-family:inherit; cursor:pointer; transition:.13s var(--ease,ease); text-align:left; }
  .tl-livre:hover{ background:color-mix(in srgb,var(--green) 10%,var(--surface)); border-color:var(--green); transform:translateY(-1px); }
  .tl-livre-txt{ font-size:13px; }

  /* ═══ Semana: resumo + termômetro (abaixo da grade) ═══ */
  .sem-extra{ padding:14px 2px 4px; }
  /* 1343 — quando o resumo vai DENTRO da rolagem da grade, ganha respiro e um
     traço no topo pra separar das consultas (e some no modo tela cheia). */
  .sem-extra-in{ margin:6px 12px 4px; padding-top:16px; border-top:1px solid var(--line); }
  .sem-extra-lbl{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin:0 2px 10px; }
  .sem-kpis{ margin:12px 0 0; }
  .sem-term{ display:flex; gap:8px; margin:0 2px; }
  .sem-term-col{ flex:1; display:flex; flex-direction:column; align-items:center; gap:5px; padding:9px 4px; border-radius:12px; border:1px solid var(--line); background:var(--surface); cursor:pointer; transition:.12s var(--ease,ease); }
  .sem-term-col:hover{ border-color:var(--blue-line); background:var(--blue-soft); }
  .sem-term-col.hoje{ background:var(--blue-soft); border-color:var(--blue-line); }
  .sem-term-dw{ font-size:10.5px; color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:.3px; }
  .sem-term-col.hoje .sem-term-dw{ color:var(--blue-700); }
  .sem-term-dn{ font-size:16px; font-weight:800; color:var(--ink); line-height:1; }
  .sem-term-col.hoje .sem-term-dn{ color:var(--blue-700); }
  .sem-term-bar-wrap{ height:36px; display:flex; align-items:flex-end; }
  .sem-term-bar{ width:18px; border-radius:5px 5px 3px 3px; transition:height .2s var(--ease,ease); }
  .sem-term-n{ font-size:12px; font-weight:800; }

  /* ═══ Kanban: urgência por tempo de espera ═══ */
  .kb-col-sub{ font-size:11px; color:var(--muted); font-weight:600; margin:-4px 2px 10px; padding:0 2px; }
  .kb-col-sub .kb-sub-alerta{ color:var(--amber); font-weight:800; }
  .kb-card.kb-atencao{ border-color:var(--amber); box-shadow:inset 3px 0 0 -1px var(--amber); }
  .kb-card.kb-urgente{ border-color:var(--red); box-shadow:inset 3px 0 0 -1px var(--red); }
  .kb-espera-row{ display:flex; justify-content:flex-end; margin-top:6px; }
  .kb-espera{ font-size:10px; font-weight:700; color:var(--muted); }
  .kb-espera-att{ color:var(--amber); background:rgba(194,132,15,.12); padding:2px 7px; border-radius:20px; font-weight:800; }
  .kb-espera-urg{ color:#fff; background:var(--red); padding:2px 7px; border-radius:20px; font-weight:800; }

  /* ═══ Painel: personalizar a agenda ═══ */
  .ag-person-sec{ font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); margin:0 0 10px; }
  .ag-person-hint{ font-weight:600; text-transform:none; letter-spacing:0; opacity:.8; }
  .ag-person-row{ display:flex; align-items:center; gap:12px; width:100%; text-align:left; background:var(--surface); border:1px solid var(--line); border-radius:13px; padding:12px 13px; margin-bottom:9px; cursor:pointer; transition:.13s var(--ease,ease); font-family:inherit; }
  .ag-person-row:hover{ border-color:var(--blue-line); }
  .ag-person-ic{ width:40px; height:40px; border-radius:11px; display:flex; align-items:center; justify-content:center; flex:none; }
  .ag-person-ic svg{ width:20px; height:20px; }
  .ag-person-tx{ flex:1; min-width:0; }
  .ag-person-t{ display:block; font-size:14.5px; font-weight:800; color:var(--ink); }
  .ag-person-d{ display:block; font-size:12px; color:var(--muted); margin-top:2px; }
  .ag-person-sw{ width:46px; height:27px; border-radius:20px; background:var(--line); flex:none; position:relative; transition:background .18s var(--ease,ease); }
  .ag-person-sw.on{ background:var(--green); }
  .ag-person-knob{ position:absolute; top:3px; left:3px; width:21px; height:21px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:left .18s var(--ease,ease); }
  .ag-person-sw.on .ag-person-knob{ left:22px; }
  /* sub-toggle recuado (faixa de números dentro do Resumo da Semana) */
  .ag-person-sub{ margin-left:26px; padding-left:18px; position:relative; }
  .ag-person-sub .ag-person-subline{ position:absolute; left:0; top:-9px; bottom:50%; width:14px; border-left:2px solid var(--line); border-bottom:2px solid var(--line); border-bottom-left-radius:8px; }
  .ag-person-sub.disabled{ opacity:.45; cursor:not-allowed; }
  /* 1144 — trava de dependência numa linha PRINCIPAL (não só nas recuadas) */
  .ag-person-row.disabled{ opacity:.45; cursor:not-allowed; }
  .ag-person-row.disabled:hover{ border-color:var(--line); }
  .ag-person-nota{ font-size:12px; color:var(--muted); background:var(--blue-soft); border:1px solid var(--blue-line); border-radius:11px; padding:11px 13px; margin-top:6px; line-height:1.5; }
  .ag-person-nota b{ color:var(--ink-2); }
  .ag-cor-grid{ display:flex; flex-wrap:wrap; gap:9px; margin-bottom:14px; }
  /* toggles do card "Recursos das visualizações" em Configurações › Agenda */
  .ag-vext-row{ display:flex; align-items:center; gap:11px; width:100%; text-align:left; background:var(--surface); border:1px solid var(--line); border-radius:11px; padding:10px 12px; margin-bottom:8px; cursor:pointer; transition:.13s var(--ease,ease); font-family:inherit; }
  .ag-vext-row:hover{ border-color:var(--blue-line); }
  .ag-vext-ic{ width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex:none; }
  .ag-vext-ic svg{ width:18px; height:18px; }
  .ag-vext-tx{ flex:1; min-width:0; }
  .ag-vext-t{ display:block; font-size:13.5px; font-weight:800; color:var(--ink); }
  .ag-vext-d{ display:block; font-size:11.5px; color:var(--muted); margin-top:1px; }
  .ag-vext-sw{ width:42px; height:25px; border-radius:20px; background:var(--line); flex:none; position:relative; transition:background .18s var(--ease,ease); }
  .ag-vext-sw.on{ background:var(--green); }
  .ag-vext-knob{ position:absolute; top:3px; left:3px; width:19px; height:19px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:left .18s var(--ease,ease); }
  .ag-vext-sw.on .ag-vext-knob{ left:20px; }
  .ag-vext-sub{ margin-left:24px; padding-left:16px; position:relative; }
  .ag-vext-sub .ag-vext-subline{ position:absolute; left:0; top:-8px; bottom:50%; width:12px; border-left:2px solid var(--line); border-bottom:2px solid var(--line); border-bottom-left-radius:7px; }
  .ag-vext-sub.disabled{ opacity:.45; cursor:not-allowed; }
  /* 1144 — trava de dependência numa linha PRINCIPAL (não só nas recuadas) */
  .ag-vext-row.disabled{ opacity:.45; cursor:not-allowed; }
  .ag-vext-row.disabled:hover{ border-color:var(--line); }
  /* ═══ 1146 — o plano dentro da janela de consulta e da baixa ═══ */
  .pa-box{ border:1.5px solid var(--blue-line); border-radius:11px; background:var(--blue-soft); padding:4px; }
  .pa-lin{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; padding:9px 11px; border-radius:9px;
           background:transparent; border:none; cursor:pointer; font-family:inherit; margin:2px 0; transition:.12s var(--ease,ease); }
  .pa-lin:hover{ background:color-mix(in srgb, var(--surface) 60%, transparent); }
  .pa-lin.on{ background:var(--surface); box-shadow:0 1px 3px rgba(19,41,75,.07); }
  .pa-lin.pa-lock{ opacity:.55; cursor:not-allowed; }
  .pa-lin.pa-lock:hover{ background:transparent; }
  .pa-chk{ width:17px; height:17px; border-radius:5px; flex:none; display:inline-flex; align-items:center; justify-content:center;
           font-size:11px; font-weight:900; border:1.5px solid var(--line); color:transparent; }
  .pa-lin.on .pa-chk{ background:var(--blue); border-color:var(--blue); color:#fff; }
  .pa-lin.on .pa-chk.pa-ok{ background:var(--green,#0FA47A); border-color:var(--green,#0FA47A); }
  .pa-dente{ width:34px; text-align:center; font-weight:800; color:var(--blue-700); flex:none; font-size:12.5px; }
  .pa-tx{ flex:1; min-width:0; }
  .pa-t{ display:block; font-size:13px; font-weight:700; color:var(--ink); }
  .pa-d{ display:block; font-size:11px; color:var(--muted); margin-top:1px; }
  .pa-val{ font-size:13px; white-space:nowrap; }
  .pa-rod{ display:flex; align-items:center; gap:9px; padding:8px 11px; border-top:1px solid var(--blue-line); margin-top:3px; flex-wrap:wrap; }
  /* botões segmentados (tamanho do avatar, limite do modo compacto) */
  .ag-seg{ display:inline-flex; background:color-mix(in srgb, var(--blue) 7%, var(--bg)); border-radius:10px; padding:3px; gap:2px; flex-wrap:wrap; }
  .ag-seg-b{ padding:7px 13px; border:none; background:none; border-radius:8px; font-weight:700; font-size:12.5px; color:var(--ink-2); cursor:pointer; font-family:inherit; transition:.12s var(--ease,ease); }
  .ag-seg-b:hover{ color:var(--blue-700); }
  .ag-seg-b.on{ background:var(--surface); color:var(--blue-700); box-shadow:0 1px 3px rgba(15,42,67,.12); }

  /* ═══ 1372 — GUIAS & SUB-GUIAS padronizadas (prévia aprovada) ═══════════
     Uma cara só em todo o app. O ativo muda por COR, nunca por MOVIMENTO
     (translateY é proibido — era ele que fazia as abas "pularem"). Dois níveis:
       .oh-guia    = trilho segmentado, ativo em superfície branca (nível 1)
       .oh-subguia = sublinhado azul que cresce do centro (nível 2)
     A .ag-seg da agenda já nasceu com esta cara; agora ela é a norma. As telas
     vão migrando pra cá, uma por build. */
  .oh-guia{ display:inline-flex; background:color-mix(in srgb, var(--blue) 7%, var(--bg)); border-radius:12px; padding:4px; gap:3px; flex-wrap:wrap; max-width:100%; }
  .oh-guia>button{ padding:9px 16px; border:none; background:none; border-radius:9px; font-weight:700; font-size:13px; color:var(--muted); cursor:pointer; font-family:inherit; display:inline-flex; align-items:center; gap:7px; white-space:nowrap; transition:color .15s var(--ease,ease), background .15s var(--ease,ease); }
  .oh-guia>button:hover:not(.on){ color:var(--blue-700); background:rgba(var(--blue-rgb),.06); }
  .oh-guia>button.on{ background:var(--surface); color:var(--blue-700); box-shadow:0 1px 3px rgba(15,42,67,.14); }
  .oh-guia>button svg{ width:16px; height:16px; flex:none; }
  .oh-subguia{ display:inline-flex; gap:22px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
  .oh-subguia>button{ padding:10px 1px 11px; border:none; background:none; font-weight:700; font-size:13.5px; color:var(--muted); cursor:pointer; font-family:inherit; position:relative; transition:color .15s var(--ease,ease); }
  .oh-subguia>button:hover:not(.on){ color:var(--ink-2); }
  .oh-subguia>button::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:2.5px; border-radius:3px; background:var(--blue); transform:scaleX(0); transition:transform .18s var(--ease,ease); }
  .oh-subguia>button.on{ color:var(--blue-700); }
  .oh-subguia>button.on::after{ transform:scaleX(1); }
  .gw-resumo .r-canc{color:#D8392B}
  @keyframes slideIn{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}
  .main{animation:fadeIn .22s ease}
  .panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);gap:10px;flex-wrap:wrap}
  .panel-head h3{font-size:15px;font-weight:800;display:flex;align-items:center;gap:9px}
  .panel-head h3 svg{width:18px;height:18px;color:var(--blue)}
  .oh-head-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
  .panel-head .hint{font-size:12px;color:var(--muted)}
  .panel-body{padding:6px 0}
  /* ⚠ 1171→1172 — `.scroll-x` existia SÓ como `.panel-body.scroll-x` dentro
     do @media mobile, e nunca era aplicada em lugar nenhum: classe morta.
     Promovida a utilitário de verdade, em qualquer tela e qualquer
     elemento — para as tabelas largas que hoje repetem `overflow-x:auto`
     inline (implantes, relatórios). No mobile ela ainda vence o
     `overflow-x:hidden` do .panel-body (regra abaixo, no @media). */
  .scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;align-items:start}
  /* 1324 — Início: Bom dia + Acompanhamento pós-atendimento lado a lado */
  .inicio-duo{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-bottom:16px}
  .inicio-duo>*{margin-bottom:0 !important}
  /* 1409 — Início: faixa de mini-cards com os "números do dia" (lado a lado). */
  .inicio-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
  /* 1466 — o card da PRÉVIA: faixa colorida em cima (ícone + número grande) e
     rodapé com título, subtítulo e a setinha de ir. Flat (1465): tinta chapada. */
  .inicio-tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:0;overflow:hidden;cursor:pointer;transition:.12s;min-width:0}
  .inicio-tile:hover{border-color:var(--blue-line)}
  .inicio-tile .cap{height:72px;display:flex;align-items:center;gap:12px;padding:0 16px}
  .inicio-tile .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#fff;flex:none}
  .inicio-tile .ic svg{width:22px;height:22px}
  .inicio-tile .big{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .inicio-tile .foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 16px;border-top:1px solid var(--line)}
  .inicio-tile .t{font-size:13px;font-weight:700;color:var(--ink)}
  .inicio-tile .s{font-size:11.5px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .inicio-tile .go{width:26px;height:26px;border-radius:50%;background:var(--blue-soft);color:var(--blue-700);display:grid;place-items:center;flex:none}
  .inicio-tile .go svg{width:15px;height:15px}
  .inicio-tile.blue .cap{background:color-mix(in srgb,var(--blue) 10%,var(--surface))} .inicio-tile.blue .ic{background:var(--blue)} .inicio-tile.blue .big{color:var(--blue-700)}
  .inicio-tile.green .cap{background:color-mix(in srgb,var(--green,#0FA47A) 10%,var(--surface))} .inicio-tile.green .ic{background:var(--green,#0FA47A)} .inicio-tile.green .big{color:var(--green,#0FA47A)}
  .inicio-tile.amber .cap{background:color-mix(in srgb,var(--amber,#C2840F) 12%,var(--surface))} .inicio-tile.amber .ic{background:var(--amber,#C2840F)} .inicio-tile.amber .big{color:var(--amber,#C2840F)}
  .inicio-tile.red .cap{background:color-mix(in srgb,var(--red,#D8392B) 10%,var(--surface))} .inicio-tile.red .ic{background:var(--red,#D8392B)} .inicio-tile.red .big{color:var(--red,#D8392B)}
  /* 1466 — saudação plana (prévia) + título de seção + lista estilo Drive */
  .hero-saud{font-size:24px;font-weight:500;color:var(--ink);letter-spacing:-.2px;line-height:1.2}
  .hero-saud b{font-weight:800}
  .hero-sub{font-size:13.5px;color:var(--muted);margin-top:4px}
  .hero-sub b{color:var(--ink-2)}
  .hero-flat{padding:8px 4px 0}
  .g-tit{padding:14px 2px 8px;font-size:12.5px;font-weight:800;color:var(--muted);letter-spacing:.4px;text-transform:uppercase}
  .g-head{display:grid;grid-template-columns:2.4fr 1.2fr 1.6fr 32px;gap:14px;align-items:center;padding:8px 12px;color:var(--muted);font-size:12.5px;font-weight:600;border-bottom:1px solid var(--line)}
  .oh-recentes{margin-bottom:16px}
  .oh-recentes .oh-rec-row{display:grid;grid-template-columns:2.4fr 1.2fr 1.6fr 32px;gap:14px;align-items:center;padding:9px 12px;border-bottom:none;border-radius:12px}
  .oh-rec-nome{display:flex;align-items:center;gap:13px;min-width:0;font-weight:600}
  .oh-rec-tel{color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  @media(max-width:680px){ .g-head,.oh-recentes .oh-rec-row{grid-template-columns:2fr 1.2fr 32px} .g-head span:nth-child(3){display:none} }

  .row{display:flex;align-items:center;gap:14px;padding:13px 20px;border-bottom:1px solid var(--line);transition:.15s ease;min-width:0;overflow:hidden}
  .row.clickable:hover{background:var(--blue-soft);transform:translateX(3px)}
  .row.clickable:active{transform:scale(.995)}
  .row:last-child{border-bottom:none}
  .row:hover{background:#FAFCFE}
  .row .time{font-weight:800;font-size:14px;width:54px;color:var(--blue-700);flex:none}
  .row .who{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .row.row-overdue{background:rgba(239,68,68,.04);border-left:3px solid var(--red)}
  .row.row-paid{background:rgba(16,185,129,.03)}
  .row .meta{font-size:12.5px;color:var(--muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .row .grow{flex:1;min-width:0;overflow:hidden}
  .avatar{width:38px;height:38px;border-radius:50%;background:var(--blue-soft);color:var(--blue-700);display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}

  /* ===== Anti-transbordamento dos cards no celular ===== */
  @media(max-width:560px){
    /* BALA DE PRATA: o container de conteúdo corta qualquer transbordamento
       horizontal, e todo card ocupa no máximo a largura disponível. Independe
       da causa específica — nada passa da borda da tela. */
    #content, .main{ overflow-x:clip; max-width:100vw; }
    .main .panel{ width:100%; max-width:100%; box-sizing:border-box; }
    .two-col, .two-col > div{ min-width:0; max-width:100%; }
    .panel-head{ max-width:100%; box-sizing:border-box; flex-wrap:wrap; }
    /* títulos longos cortam com reticências em vez de vazar */
    .panel-head h3{ min-width:0; overflow:hidden; flex-shrink:1; }
    .panel-head h3 > span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .panel-head .hint{ flex:none; white-space:nowrap; }
    /* linhas mais justas para caber avatar + nome + tag + ação sem cortar */
    .row{ gap:9px; padding:11px 14px; max-width:100%; box-sizing:border-box; }
    .row .time{ width:auto; min-width:44px; }
    .row .btn.sm, .row .btn.wa.sm{ padding:7px 9px; font-size:0; flex:none; gap:0; }
    .row .btn.sm svg, .row .btn.wa.sm svg{ margin:0; }
    .row .tag{ flex:none; }
  }

  /* ===== Lista de pacientes — card compacto (uma linha por paciente) ===== */
  .pac-row{display:grid;grid-template-columns:34px minmax(0,1.6fr) 108px 80px 150px 160px 40px;gap:18px;align-items:center;padding:11px 20px;border-bottom:1px solid var(--line);transition:.15s ease}
  .pac-head{display:grid;grid-template-columns:34px minmax(0,1.6fr) 108px 80px 150px 160px 40px;gap:18px;align-items:center;padding:9px 20px;border-bottom:1px solid var(--line);background:var(--blue-soft)}
  .pac-head span{font-size:10.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);text-align:center}
  .pac-c-nome{display:flex;flex-direction:column;justify-content:center;min-width:0}
  .pac-esp{margin-top:3px;display:flex;gap:5px;flex-wrap:wrap;align-items:center;overflow:hidden}
  .pac-c-tel,.pac-c-email{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:6px;min-width:0}
  .pac-c-tel svg,.pac-c-email svg{color:var(--muted);flex:none}
  .pac-c-tel span,.pac-c-email span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pac-vazio{color:var(--muted);font-style:italic;font-size:12px}
  /* 1458 — coluna Marcadores (idioma Google Contatos): etiquetas coloridas do paciente (categorias) */
  .pac-c-marc{display:flex;flex-wrap:wrap;gap:5px;align-items:center;overflow:hidden;max-height:46px;min-width:0}
  .pac-c-marc .tag{font-size:11px;font-weight:700;padding:2px 9px;white-space:nowrap}
  /* 1459 — "Abertos recentemente" na Início (idioma Google Drive) */
  .oh-rec-marc{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-start;align-items:center;overflow:hidden}  /* 1466: virou coluna da grade (Drive) */
  .oh-rec-marc .tag{font-size:11px;font-weight:700;padding:2px 9px;white-space:nowrap}
  @media(max-width:680px){ .oh-rec-marc{display:none} }
  /* 1461 — "Recortes rápidos" em pastas (idioma Google Drive), como na prévia aprovada */
  .pac-recortes{margin-bottom:16px}
  .pac-grp-tit{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:2px 21px 8px}
  .pac-rec-head{display:grid;grid-template-columns:2.4fr 1.2fr 1fr 1fr 40px;gap:14px;align-items:center;padding:6px 21px;color:var(--muted);font-size:12.5px;font-weight:600;border-bottom:1px solid var(--line)}
  .pac-rec-row{display:grid;grid-template-columns:2.4fr 1.2fr 1fr 1fr 40px;gap:14px;align-items:center;padding:11px 21px;border-bottom:1px solid var(--line);cursor:pointer;transition:.13s;font-size:13.5px}
  .pac-rec-row:hover{background:var(--hover,color-mix(in srgb,var(--blue) 5%,transparent))}
  .pac-rec-nome{display:flex;align-items:center;gap:12px;min-width:0}
  .pac-rec-nome .nm{font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pac-rec-cnt{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:20px;background:var(--blue-soft);color:var(--blue-700);white-space:nowrap}
  @media(max-width:880px){ .pac-rec-head{display:none} .pac-rec-row{grid-template-columns:1fr auto;gap:8px} .pac-rec-row>.muted{display:none} }
  /* 1462/1463 — topo do design novo: a linha de filtros em chips abre a tela; a trilha
     "Impulse › Pacientes" vive no omnibox do topo (sem repetição — prévia refinada). */
  .pac-filtros{ display:flex; align-items:center; gap:10px; padding:8px 21px 14px; flex-wrap:wrap; }
  .pac-filtros-topo{ padding-top:18px; }
  /* 1473 — o chip "Pedir ao Assistente" (e a divisória .pac-vbar) SAIU do código,
     a pedido do dono. A busca universal segue no topo (omnibox e Ctrl+K). */
  .pac-filtros-sp{ flex:1; min-width:12px; }
  .pac-filtros-right{ display:inline-flex; align-items:center; gap:8px; }
  .pac-filtros .pac-search-sm{ display:inline-flex; align-items:center; gap:8px; background:var(--surface); border:1px solid var(--line); border-radius:20px; padding:7px 14px; color:var(--muted); min-width:200px; }
  .pac-filtros .pac-search-sm svg{ width:16px; height:16px; flex:none; }
  .pac-filtros .pac-search-sm input{ border:none; background:none; outline:none; flex:1; font-family:inherit; font-size:13.5px; color:var(--ink); min-width:0; }
  .pac-filtros .pac-sit-btn{ border-radius:20px; }
  .pac-grp-tit .pac-total-chip{ margin-left:8px; }
  @media(max-width:900px){ .pac-filtros-sp{ display:none; } .pac-filtros-right{ width:100%; } .pac-filtros .pac-search-sm{ flex:1; } }
  .pac-row:last-child{border-bottom:none}
  .pac-row.clickable{cursor:pointer}
  .pac-row.clickable:hover{background:var(--blue-soft)}
  .pac-row.clickable:active{transform:scale(.997)}
  .pac-row .avatar{width:34px;height:34px;font-size:12.5px}
  .pac-row .who{font-weight:700;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pac-row .meta{min-width:0}
  .pac-row .tag{font-size:10px;padding:3px 8px;flex:none}
  .pac-acts{display:inline-flex;align-items:center;gap:6px;flex:none}
  .pac-ic{width:34px;height:34px;border-radius:9px;border:1px solid var(--blue-line);background:var(--surface);color:var(--blue);display:grid;place-items:center;cursor:pointer;transition:.12s;flex:none}
  .pac-ic:hover{background:var(--blue-soft);border-color:var(--blue)}
  .pac-ic:active{transform:scale(.92)}
  /* menu "⋯" do card compacto */
  .pac-menu{position:relative;display:inline-flex}
  /* 943 — enquanto o menu "Ações ao Paciente" está aberto, o card para de
     recortar, senão o menu fica cortado na borda. Só nesse momento: fechado,
     o overflow:hidden volta e os cantos arredondados seguem intactos. */
  .panel.oh-menu-solto{overflow:visible;position:relative;z-index:100}
  .pac-menu-pop{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:170px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(19,41,75,.2);padding:5px}
  .pac-menu-pop.show{display:block;animation:dpIn .13s ease}
  .pac-menu-pop button{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border:none;background:none;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;transition:background .1s}
  .pac-menu-pop button:hover{background:var(--blue-soft)}
  .pac-menu-pop button svg{color:var(--muted);flex:none}
  .pac-menu-pop button.danger{color:var(--red,#DC2626)}
  .pac-menu-pop button.danger svg{color:var(--red,#DC2626)}
  .pac-menu-pop button.danger:hover{background:var(--red-soft,#FEF2F2)}
  /* Por padrão (PC): ícones soltos visíveis; itens repetidos do menu escondidos */
  /* 1415 — os 5 ícones soltos viraram um menu ⋯ único, no PC e no celular. */
  .pac-acts .pac-menu{display:inline-flex}
  .pac-ic.wa{color:var(--green);border-color:color-mix(in srgb, var(--green) 32%, var(--line))}
  .pac-ic.wa:hover{background:color-mix(in srgb, var(--green) 10%, var(--surface));border-color:var(--green)}
  .pac-ic.danger{color:var(--red);border-color:color-mix(in srgb, var(--red) 32%, var(--line))}
  .pac-ic.danger:hover{background:var(--red-soft,#FEF2F2);border-color:var(--red)}
  /* No celular: some com os ícones soltos e revela tudo dentro do menu "⋯" */
  @media(max-width:880px){
    .pac-acts .so-pc{display:none}
    .pac-acts .pac-menu{display:inline-flex}
    .pac-menu-pop .so-mobile{display:flex}
    .pac-head{display:none}
    .pac-row{grid-template-columns:auto 1fr auto;grid-template-areas:'av nome acts' 'av marc acts' 'av tel acts' 'av email acts';column-gap:11px;row-gap:2px;padding:11px 14px}
    .pac-row>.avatar{grid-area:av;align-self:center}
    .pac-c-nome{grid-area:nome}
    .pac-c-marc{grid-area:marc}
    .pac-c-tel{grid-area:tel}
    .pac-c-email{grid-area:email}
    .pac-acts{grid-area:acts;align-self:center}
    .pac-c-marc:empty{display:none}
  }

  /* 1284 — pills/tags viram vidrinho: um fio de brilho no topo (leve, sem custo) */
  .tag{font-size:11px;font-weight:700;padding:4px 9px;border-radius:20px;white-space:nowrap;flex:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.5)}
  .t-blue{background:var(--blue-soft);color:var(--blue-700)}
  .t-green{background:var(--green-soft);color:var(--green)}
  .t-amber{background:var(--amber-soft);color:var(--amber)}
  .t-red{background:var(--red-soft);color:var(--red)}
  .t-gray{background:#EEF2F6;color:var(--ink-2)}

  .empty{padding:40px 20px;text-align:center;color:var(--muted)}
  .empty svg{width:38px;height:38px;opacity:.4;margin-bottom:10px}
  .empty-ic{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
  .empty-ic svg{width:27px;height:27px;opacity:.85;margin:0}
  .empty p{font-size:14px;font-weight:600;color:var(--ink-2)}
  .empty span{font-size:12.5px}

  .toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
/* Pacientes: no PC tudo numa linha (busca + Docs + filtros + total); no celular quebra */
@media(max-width:820px){
}
  .search{flex:1;min-width:220px;position:relative}
  .search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted)}
  .search input{width:100%;padding:11px 12px 11px 40px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);outline:none}
  .search input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
  .topbar-act{background:none;border:none;color:var(--ink-2);cursor:pointer;padding:7px;border-radius:9px;display:flex;align-items:center;justify-content:center;transition:.15s}
  .topbar-act svg{width:19px;height:19px}
  .topbar-act:hover{background:var(--blue-soft);color:var(--blue-700)}
  .topbar-act.on{background:var(--blue);color:#fff}
  .topbar-act.on:hover{background:var(--blue-700);color:#fff}
  .topbar-act-danger:hover{background:var(--red-soft);color:var(--red)}
  /* 1279 — Vidro Lite nas abas: trilho com sulco suave, pílula ativa com brilho de vidro */
  .seg{display:inline-flex;background:color-mix(in srgb,var(--blue) 7%,var(--bg));border-radius:calc(var(--radius, 10px) + 3px);padding:3px;flex-wrap:wrap;box-shadow:inset 0 1px 2px rgba(19,41,75,.06)}
  .seg button{padding:8px 13px;border-radius:var(--radius, 8px);font-size:12.5px;font-weight:700;color:var(--ink-2);transition:all var(--dur,.16s) var(--ease,ease)}
  .seg button:not(.on):hover{color:var(--blue-700);background:rgba(255,255,255,.5)}
  .seg button.on{background:linear-gradient(180deg,#FFFFFF,#F6FAFF);color:var(--blue-700);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 3px rgba(19,41,75,.12)}

  /* ===== Barra de abas do Financeiro: Visão geral em destaque + grid de chips ===== */
  .fintab-bar{margin-bottom:16px}
  .fintab-hero{width:100%;display:flex;align-items:center;gap:11px;padding:13px 15px;border-radius:14px;border:none;cursor:pointer;font-family:inherit;font-weight:800;font-size:14px;margin-bottom:10px;transition:all .15s var(--ease,ease);background:var(--surface);border:1px solid var(--line);color:var(--ink)}
  .fintab-hero:hover{border-color:var(--blue-line);background:var(--blue-soft)}
  .fintab-hero.on{background:linear-gradient(135deg,#1F73E0,#1559BD);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(31,115,224,.28)}
  .fintab-hero-ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none;background:var(--blue-soft);color:var(--blue-700)}
  .fintab-hero-ic svg{width:16px;height:16px}
  .fintab-hero.on .fintab-hero-ic{background:rgba(255,255,255,.18);color:#fff}
  .fintab-hero-tx{flex:1;text-align:left}
  .fintab-hero-sub{font-size:11px;font-weight:600;opacity:.7}
  .fintab-hero.on .fintab-hero-sub{opacity:.85}
  .fintab-grid{display:flex;flex-wrap:wrap;gap:7px}
  .fintab-chip{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font-family:inherit;font-weight:700;font-size:12.5px;text-align:left;cursor:pointer;transition:all .13s var(--ease,ease);white-space:nowrap}
  .fintab-chip:hover{border-color:var(--blue-line);background:var(--blue-soft)}
  .fintab-chip.on{background:var(--blue-soft);border-color:var(--blue-line);color:var(--blue-700)}
  .fintab-chip-ic{color:var(--blue);flex:none;display:inline-flex}
  .fintab-chip-ic svg{width:15px;height:15px}
  .fintab-chip.on .fintab-chip-ic{color:var(--blue-700)}
  .fintab-chip-tx{white-space:nowrap}
  .fintab-dd{display:none;position:relative}
  .fintab-dd-btn{display:flex;align-items:center;gap:11px;width:100%;padding:12px 15px;border-radius:13px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font-weight:800;font-size:15px;cursor:pointer;font-family:inherit}
  .fintab-dd-ic{color:var(--blue);display:flex;flex:none}
  .fintab-dd-ic svg{width:19px;height:19px}
  .fintab-dd-tx{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fintab-dd-chev{color:var(--muted);flex:none;width:18px;height:18px;transition:transform .18s}
  .fintab-dd-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:60;background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;overflow-y:auto;max-height:62vh;box-shadow:0 16px 48px rgba(19,41,75,.22)}
  .fintab-opt{display:flex;align-items:center;gap:11px;width:100%;padding:12px 15px;border:none;background:none;color:var(--ink-2);font-weight:700;font-size:14px;cursor:pointer;border-bottom:1px solid var(--line);font-family:inherit;text-align:left}
  .fintab-opt:last-child{border-bottom:none}
  .fintab-opt-ic{color:var(--blue);display:flex;flex:none}
  .fintab-opt-ic svg{width:18px;height:18px}
  .fintab-opt-tx{flex:1}
  .fintab-opt.on{background:var(--blue-soft);color:var(--blue-700)}
  .fintab-opt-ck{color:var(--blue-700);flex:none;display:flex}
  /* Sub-abas dentro dos grupos do Financeiro (Especialidades, Profissionais, Gestão) */
  .finsub-bar{display:flex;flex-wrap:wrap;gap:6px;padding:9px 10px;background:color-mix(in srgb,var(--blue) 7%,var(--surface));border:1px solid var(--blue-line);border-radius:12px;margin:-6px 0 20px}
  .finsub{padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--ink-2);background:transparent;border:1px solid transparent;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .13s var(--ease,ease)}
  .finsub:hover{color:var(--blue-700)}
  .finsub.on{background:var(--surface);color:var(--blue-700);border-color:var(--blue-line)}
  @media(max-width:880px){ .finsub-bar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin} .finsub{flex:none} }
  /* 1417 — GUIAS do Financeiro (grupos): .oh-subguia com ícone, rolando na horizontal */
  .oh-subguia.fin-guias{ flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; margin-bottom:16px; scrollbar-width:thin; }
  .oh-subguia.fin-guias::-webkit-scrollbar{ height:0 }
  .oh-subguia.fin-guias>button{ display:inline-flex; align-items:center; gap:7px; white-space:nowrap; flex:none; }
  .fin-guia-ic{ display:inline-flex; color:var(--muted); transition:color .15s; }
  .fin-guia-ic svg{ width:16px; height:16px; }
  .oh-subguia.fin-guias>button.on .fin-guia-ic{ color:var(--blue-700); }
  .oh-subguia.fin-guias>button:hover:not(.on) .fin-guia-ic{ color:var(--ink-2); }
  /* 1417 — SUB-GUIAS do Financeiro (sub-abas): sublinhado mais leve, rola na horizontal */
  .finsub-guias{ display:flex; align-items:center; gap:20px; overflow-x:auto; -webkit-overflow-scrolling:touch; border-bottom:1px solid var(--line); margin:2px 0 18px; scrollbar-width:thin; }
  .finsub-guias::-webkit-scrollbar{ height:0 }
  .finsub-guias>button{ position:relative; padding:8px 1px 9px; border:none; background:none; font-weight:700; font-size:13px; color:var(--muted); cursor:pointer; font-family:inherit; white-space:nowrap; flex:none; transition:color .15s; }
  .finsub-guias>button:hover:not(.on){ color:var(--ink-2); }
  .finsub-guias>button.on{ color:var(--blue-700); }
  .finsub-guias>button.on::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; border-radius:2px; background:var(--blue-700); }
  /* No celular: chips mais compactos, para as abas ocuparem menos altura e o conteúdo subir */
  @media(max-width:880px){
    .fintab-bar{margin-bottom:14px}
    .fintab-grid{gap:6px}
    .fintab-chip{padding:6px 10px;font-size:11.5px;gap:5px;border-radius:9px}
    .fintab-dd{display:block}
    .fintab-grid{display:none}
    .fintab-chip-ic svg{width:13px;height:13px}
  }
  .datebar{display:flex;align-items:center;gap:10px}
  .datebar input{padding:10px 12px;border:1px solid var(--line);border-radius:10px}
  .datebar .nav-day{width:38px;height:38px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;background:var(--surface);color:var(--ink-2)}
  .datebar .nav-day:hover{background:var(--blue-soft);color:var(--blue-700)}
  .datebar .nav-day svg{width:18px;height:18px}

  /* agenda — slots dia */
  .slot{display:flex;align-items:center;gap:14px;padding:10px 18px;border-bottom:1px solid var(--line);border-left:4px solid transparent}
  .slot-time{font-weight:800;color:var(--blue-700);width:50px;font-size:13px;flex:none}
  .slot.empty{cursor:pointer;color:var(--muted)}
  .slot.empty .slot-free{font-size:12.5px}
  .slot.empty .slot-time{color:var(--muted);font-weight:700}
  .slot.filled{background:#FCFDFF}
  .slot-body{flex:1;min-width:0;cursor:pointer}
  .slot-name{font-weight:700;font-size:14px}

  /* agenda — grade semanal */
  .chip{border-radius:7px;padding:3px 7px;font-size:10.5px;font-weight:700;border-left:3px solid;line-height:1.3;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .chip b{font-weight:800}
  .chip.cancel{opacity:.45;text-decoration:line-through}

  .legend{display:flex;flex-wrap:wrap;gap:7px;padding:14px 2px 2px;align-items:center}
  .legend .lg{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-2);font-weight:600;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:4px 11px 4px 9px;line-height:1.2}
  .legend .sw{width:11px;height:11px;border-radius:50%;flex:none}
  .legend-tit{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);padding:14px 4px 0;width:100%}
  .legend-tit svg{width:14px;height:14px;flex:none;color:var(--blue)}

  /* detalhe paciente */
  .detail-head{display:flex;gap:16px;align-items:center;padding:20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
  .detail-head .avatar{width:54px;height:54px;font-size:19px}
  .detail-head h3{font-size:19px;font-weight:800}
  .detail-head .meta{font-size:13px;color:var(--muted);margin-top:2px}
  .kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;padding:18px 20px;overflow:hidden}
  @media(max-width:560px){ .pac-acoes{justify-content:flex-start} }
  .kv .v{word-break:break-word}
  .kv .k{font-size:11px;color:var(--muted);text-transform:uppercase;font-weight:700;letter-spacing:.4px}
  .kv .v{font-weight:600;margin-top:3px;font-size:14px}

  /* timeline mensalidades */
  .timeline{display:flex;flex-wrap:wrap;gap:8px;padding:6px 20px 20px}
  .mchip{min-width:74px;border:1px solid var(--line);border-radius:11px;padding:9px 10px;text-align:center;background:var(--surface);cursor:pointer;transition:.12s;position:relative}
  .mchip:hover{border-color:var(--blue);box-shadow:0 3px 10px rgba(30,91,168,.12)}
  .mchip .mn{font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
  .mchip .mv{font-size:13px;font-weight:800;margin-top:3px}
  .mchip .ms{font-size:10px;font-weight:700;margin-top:5px}
  .mchip.paid{background:var(--green-soft);border-color:#BFE6D8}.mchip.paid .ms{color:var(--green)}
  .mchip.pending .ms{color:var(--amber)}
  .mchip.overdue{background:var(--red-soft);border-color:#F2C9C3}.mchip.overdue .ms{color:var(--red)}
  .mchip .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%}
  .mchip.paid .dot{background:var(--green)}.mchip.pending .dot{background:var(--amber)}.mchip.overdue .dot{background:var(--red)}

  .sec-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-2);padding:18px 20px 4px;display:flex;align-items:center;justify-content:space-between}

  /* odontograma */
  .odo{padding:10px 18px 8px;overflow-x:auto}
  .arcada{display:flex;justify-content:center;gap:3px;margin:5px 0;min-width:560px}
  .dente{width:30px;height:44px;border:1px solid var(--line);border-radius:6px;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;font-size:11px;font-weight:800;color:var(--ink-2);position:relative;transition:.12s}
  .dente:hover{border-color:var(--blue);box-shadow:0 2px 8px rgba(30,91,168,.18);transform:translateY(-1px)}
  .dente .bar{position:absolute;bottom:0;left:0;right:0;height:5px;border-radius:0 0 5px 5px}
  .dente.s-concluido{background:var(--green-soft);border-color:#BFE6D8;color:var(--green)} .dente.s-concluido .bar{background:var(--green)}
  .dente.s-andamento{background:var(--amber-soft);border-color:#EAD3A8;color:var(--amber)} .dente.s-andamento .bar{background:var(--amber)}
  .dente.s-planejado{background:var(--blue-soft);border-color:var(--blue-line);color:var(--blue-700)} .dente.s-planejado .bar{background:var(--blue)}
  .dente .badge{position:absolute;top:-7px;right:-7px;background:var(--blue);color:#fff;border-radius:50%;width:17px;height:17px;font-size:9.5px;display:grid;place-items:center;font-weight:800;box-shadow:0 1px 3px rgba(0,0,0,.2)}
  .quad-sep{width:2px;background:var(--line);margin:0 5px;border-radius:2px}
  .arcada-svg{display:flex;justify-content:center;align-items:stretch;gap:4px;margin:6px 0;min-width:680px}
  .dt-cell{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;border-radius:8px;padding:3px 1px;transition:.12s}
  .dt-cell:hover{background:var(--blue-soft);transform:translateY(-2px)}
  .odo-legend{display:flex;gap:16px;flex-wrap:wrap;padding:8px 20px 16px;font-size:11.5px;color:var(--muted);font-weight:600}
  .odo-legend span{display:flex;align-items:center;gap:6px}
  .odo-legend i{width:12px;height:12px;border-radius:4px;display:inline-block}
  .arch-label{text-align:center;font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:8px}
  /* ── Odontograma clínico (build 581) ── */
  .odo-paleta{background:var(--blue-soft);border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin:6px 0 12px}
  .odo-paleta-ativo{font-size:12.5px;color:var(--ink-2);font-weight:600;margin-bottom:9px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .odo-paleta-dica{font-size:11px;color:var(--muted);font-weight:500}
  .odo-paleta-sec{font-size:10.5px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:8px 0 5px}
  .odo-chips{display:flex;gap:6px;flex-wrap:wrap}
  .odo-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:9px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;font-size:11.5px;font-weight:700;color:var(--ink-2);transition:.12s;font-family:var(--font)}
  .odo-chip:hover{border-color:var(--blue);transform:translateY(-1px)}
  .odo-chip.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-700);box-shadow:0 2px 8px rgba(var(--blue-rgb,31,115,224),.18)}
  .odo2{padding:8px 18px 4px;overflow-x:auto}
  .odo2-arch-label{text-align:center;font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:6px 0}
  .odo-arcada{display:flex;justify-content:center;align-items:flex-start;gap:3px;margin:4px 0;min-width:720px}
  .odo-quad-sep{width:2px;background:var(--line);margin:0 6px;border-radius:2px;align-self:stretch}
  .odo-cell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:2px 1px}
  .odo-num{font-size:10.5px;font-weight:800;line-height:1}
  /* 1328 — a coroa (38×38) fica numa caixa própria; cervical + raízes abaixo */
  .odo-face-wrap{position:relative;width:38px;display:flex;flex-direction:column;align-items:center;transition:.12s}
  .odo-face-wrap:hover{transform:scale(1.06)}
  .odo-crown-box{position:relative;width:38px;height:38px}
  .odo-face-svg{width:38px;height:38px;display:block}
  .odo-cervical{width:34px;height:6px;margin-top:1px;border:1px solid #C4CEDC;border-radius:3px;background:#fff;box-sizing:border-box;transition:.12s}
  .odo-cerv-click{cursor:pointer}
  .odo-cerv-click:hover{filter:brightness(.96);outline:1.5px solid var(--blue-line);outline-offset:1px}
  .odo-cerv-plan{border-style:dashed}
  .odo-raiz{width:32px;height:19px;display:block;margin-top:-1px;pointer-events:none}
  .odo-esmaecido{opacity:.4}
  .odo-det-btn{width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;border-radius:5px;transition:.12s}
  .odo-det-btn:hover{background:var(--blue-soft);color:var(--blue-700)}
  .odo-det-btn svg{width:14px;height:14px}
  .odo-resumo{display:flex;gap:14px;flex-wrap:wrap;padding:6px 20px 4px;font-size:12px;color:var(--ink-2);font-weight:600}
  .odo-resumo-item{display:flex;align-items:center;gap:6px}
  .odo-resumo-item i{width:12px;height:12px;border-radius:4px;display:inline-block}
  .odo2-hint{padding:8px 20px 16px;font-size:11.5px;color:var(--muted);line-height:1.5}
  /* planejado × realizado */
  .odo-plano-barra{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin:2px 18px 4px;padding:12px 16px;background:linear-gradient(135deg,var(--blue-soft,#EAF2FE),#F4FBFA);border:1px solid var(--blue-line,#CFE0FA);border-radius:14px}
  .odo-plan-leg{display:flex;gap:18px;flex-wrap:wrap;padding:2px 20px 2px;font-size:12px;color:var(--ink-2)}
  .odo-pl{display:flex;align-items:center;gap:7px}
  .odo-pl-sw{width:26px;height:17px;border-radius:5px;flex:none}
  .odo-pl-sw.plan{background:color-mix(in srgb,var(--blue,#1F73E0) 20%,#fff);border:1.5px dashed var(--blue,#1F73E0)}
  .odo-pl-sw.feito{background:var(--blue-soft,#E9F2FE);border:1.6px solid var(--blue,#1F73E0)}
  .odo-chip-proc-tag{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;background:#EAF2FE;color:#1858B8;padding:2px 7px;border-radius:999px;margin:0 8px}
  .odo-badge{display:inline-block;font-size:10px;font-weight:800;padding:2px 8px;border-radius:999px;margin-left:6px;vertical-align:middle}
  .odo-badge.plan{background:color-mix(in srgb,var(--blue,#1F73E0) 12%,#fff);color:#1858B8;border:1px dashed var(--blue,#1F73E0)}
  .odo-badge.feito{background:color-mix(in srgb,var(--green,#16A34A) 12%,#fff);color:#15803D;border:1px solid color-mix(in srgb,var(--green,#16A34A) 45%,#fff)}
  .odo-proc-lista{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
  .odo-proc-linha{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:var(--bg,#F4F8FD)}
  .odo-proc-dot{width:15px;height:15px;border-radius:5px;flex:none}
  .odo-proc-nome{flex:1;min-width:140px;font-size:13px;color:var(--ink)}
  .odo-proc-val{display:flex;align-items:center;gap:2px;font-size:12.5px;color:var(--ink-2);font-weight:700}
  .odo-val-inp{width:92px;padding:5px 8px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-variant-numeric:tabular-nums}
  .odo-proc-acao{flex:none;display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
  .odo-proc-foot{font-size:11.5px;color:var(--muted);margin:2px 0 10px}
  /* 1039 — estado "em andamento" + lista única dente ⇄ Plano de Tratamento */
  .odo-pl-sw.and{background:color-mix(in srgb,var(--blue,#1F73E0) 34%,#fff);border:2px solid var(--blue,#1F73E0)}
  .odo-badge.and{background:color-mix(in srgb,var(--amber,#C2840F) 14%,#fff);color:#8A5D06;border:1px solid color-mix(in srgb,var(--amber,#C2840F) 50%,#fff)}
  .odo-sec-sub{font-weight:600;color:var(--muted);letter-spacing:0;text-transform:none}
  .odo-proc-sub{display:block;font-size:11px;color:var(--muted);margin-top:2px}
  .odo-proc-sub.alerta{color:#8A5D06}
  .odo-proc-linha.semmarca{background:repeating-linear-gradient(135deg,transparent,transparent 7px,rgba(148,168,193,.09) 7px,rgba(148,168,193,.09) 14px);border-style:dashed}
  .odo-pend-box{margin:8px 18px 4px;padding:11px 14px;border:1.5px dashed var(--amber,#C2840F);border-radius:13px;background:color-mix(in srgb,var(--amber,#C2840F) 7%,#fff)}
  .odo-pend-tit{font-size:12.5px;font-weight:800;color:#8A5D06;margin-bottom:7px}
  .odo-pend-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
  .odo-pend-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 9px}
  .odo-pend-chip i{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}
  .odo-pend-foot{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--ink-2)}
  .trat-odo-tag{cursor:pointer}
  .trat-odo-tag:hover{filter:brightness(.96)}
  @media(max-width:560px){.odo-proc-nome{min-width:100%}.odo-plano-barra{margin:2px 12px}.odo-pend-box{margin:8px 12px}.odo-proc-acao{width:100%;justify-content:flex-start}}
  /* modal detalhe do dente */
  .odo-big{width:120px;height:120px;margin:0 auto 14px;position:relative}
  .odo-big .odo-face-svg{width:120px;height:120px}
  .odo-faces-resumo{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
  .odo-fl{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:7px}
  .odo-fl i{width:13px;height:13px;border-radius:4px;flex:none}
  .odo-di{background:var(--surface);border-radius:9px;padding:9px 12px;font-size:13px;color:var(--ink-2);margin-bottom:12px}
  .odo-sec-tit{font-size:12px;font-weight:800;color:var(--blue-700);margin:16px 0 8px;letter-spacing:.2px}
  .odo-nota{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:13px;font-family:var(--font);background:var(--surface);color:var(--ink);resize:vertical}
  .odo-hist{max-height:240px;overflow:auto;display:flex;flex-direction:column;gap:8px}
  .odo-hist-item{border-left:2.5px solid var(--blue-line);padding:6px 0 6px 12px}
  .odo-hist-top{display:flex;align-items:center;gap:10px;margin-bottom:2px}
  .odo-hist-data{font-size:11.5px;font-weight:800;color:var(--ink-2)}
  .odo-hist-quem{font-size:11px;color:var(--muted);font-weight:700;background:var(--blue-soft);padding:1px 8px;border-radius:999px}
  .odo-hist-txt{font-size:13px;color:var(--ink);line-height:1.45}
  .odo-vazio{font-size:12.5px;color:var(--muted);padding:10px;text-align:center;background:var(--surface);border-radius:9px}

  /* 1358 — as janelas (modais) precisam ficar ACIMA da barra do topo. A .topbar tem
     z-index:100 (e o brilho decorativo #ohJanelas, 200); com o overlay em 50, a barra
     do topo cobria o CABEÇALHO colorido do modal (a "Lista de espera" aparecia cortada).
     Subindo o overlay para 210, o modal flutua limpo sobre a tela escurecida. */
  /* 1580 — TRANSIÇÕES SUAVES das janelas: abrir E fechar. O overlay fica sempre
     no DOM (display:flex), mas invisível e sem capturar clique quando fechado;
     a opacidade + a visibilidade transicionam nos dois sentidos, então fechar
     deixou de ser instantâneo. O cartão entra/sai com um leve deslize+escala. */
  .overlay{position:fixed;inset:0;background:rgba(15,42,67,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:210;overflow:auto;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease, visibility .2s ease}
  .overlay.show{opacity:1;visibility:visible;pointer-events:auto}
  .modal{position:relative;background:#fff;border-radius:18px;width:100%;max-width:560px;box-shadow:0 24px 60px rgba(15,42,67,.3);opacity:0;transform:translateY(14px) scale(.985);transition:transform .24s cubic-bezier(.34,1.28,.5,1), opacity .18s ease}
  .overlay.show .modal{opacity:1;transform:none}
  @keyframes pop{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
  @media (prefers-reduced-motion: reduce){ .overlay,.modal{transition:none} }
  /* 1117 — moldura compacta (prévia aprovada): a janela devolve ~36px verticais ao conteúdo */
  /* 1365 — barra de título das janelas SEM o vidro falso (o gloss Vista/7 do 1290
     saiu — estava estranho). Fica limpa: só a cor da barra + o traço inferior. */
  .modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--line)}
  .modal-head h3{font-size:15px;font-weight:800;display:flex;align-items:center;gap:8px;letter-spacing:.1px}
  .modal-head h3 svg{width:24px;height:24px;padding:5px;border-radius:8px;background:var(--blue);color:#fff;flex-shrink:0;box-sizing:border-box}
  .x{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}
  /* 1377 — o X de FECHAR no cabeçalho das janelas fica vermelho e num quadrado
     que o isola (caixa vermelha suave, opção A da prévia): fundo vermelho clarinho
     + contorno; no hover fica vermelho cheio. Vale para todas as janelas. */
  .modal-head .x{margin:-4px 0;width:32px;height:32px;border-radius:8px;color:var(--red);border:1.5px solid var(--red-line,#F3C9C4);background:var(--red-soft);transition:background .14s,color .14s,border-color .14s}
  .modal-head .x:hover{background:var(--red);color:#fff;border-color:var(--red)}
  .x:hover{background:#EEF2F6;color:var(--ink)}
  .modal-body{padding:20px 22px;max-height:76vh;overflow:auto}
  /* 1365 — rodapé da janela sem o fio de luz de vidro (saiu com o gloss). */
  .modal-foot{display:flex;gap:9px;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--line);flex-wrap:wrap}
  .modal-foot .btn{padding-top:8px;padding-bottom:8px;font-size:12.5px} /* 1117 — só no rodapé das janelas; o .btn global fica como é */
  .modal-foot .btn.danger{margin-right:auto}
  .field{margin-bottom:15px}
  .field label{display:block;font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
  .lbl-ic{display:inline-block;width:14px;height:14px;vertical-align:-2px;margin-right:6px;color:var(--blue)}
  .field input,.field select,.field textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;outline:none;background:var(--surface);color:var(--ink)}
  .field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
  .field textarea{resize:vertical;min-height:60px}
  /* 1076 — ".help" existia em 311 lugares do app, mas SÓ TINHA ESTILO
     dentro de .field (e em .cfg-wrap). Fora deles — nos corpos de painel —
     ele saía como texto de corpo, do mesmo tamanho do conteúdo, e o
     cartão parecia de outro app. Esta regra global dá a ele o visual que
     o nome sempre prometeu; a regra de .field abaixo continua vencendo
     por especificidade, então nada que já estava certo muda. */
  .help{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:5px}
  .panel-body > .help:first-child{margin-top:0}
  .field .help{font-size:11.5px;color:var(--muted);margin-top:5px}
  .frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .frow3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
  .calc-box{background:var(--blue-soft);border-radius:11px;padding:12px 14px;font-size:13px;color:var(--blue-700);font-weight:600;margin-bottom:5px}

  .toast{pointer-events:none;position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:11px;font-weight:600;font-size:13.5px;opacity:0;transition:.25s;z-index:100005;box-shadow:0 10px 30px rgba(0,0,0,.25)} /* 17.01 — acima do véu das janelas (80 ficava ATRÁS do overlay 210: toda mensagem com modal aberto era invisível) */
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  /* 1284 — FAB com brilho gel no topo (Aero), mantendo leve */
  .fab-sup{position:fixed;right:22px;bottom:22px;width:52px;height:52px;border-radius:50%;background:radial-gradient(120% 90% at 50% 0%,rgba(255,255,255,.5) 0%,rgba(255,255,255,.12) 34%,rgba(255,255,255,0) 55%),linear-gradient(180deg,#3B8CF0,#1F73E0);color:#fff;border:none;display:grid;place-items:center;cursor:pointer;z-index:45;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -2px 4px rgba(0,0,0,.12),0 6px 20px rgba(31,115,224,.42);transition:transform .15s,box-shadow .15s}
  .fab-sup svg{width:24px;height:24px}
  .fab-sup:hover{transform:translateY(-2px) scale(1.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 10px 28px rgba(31,115,224,.52)}
  .fab-sup:active{transform:scale(.96)}
  body:has(.overlay.show) .fab-sup{display:none}
  /* 1482 — sem a barra inferior, o FAB e o toast voltam pro pé da tela */
  @media(max-width:880px){ .fab-sup{width:46px;height:46px;right:14px;bottom:calc(18px + env(safe-area-inset-bottom,0px))}
  .toast{bottom:calc(18px + env(safe-area-inset-bottom,0px))} .fab-sup svg{width:21px;height:21px} }
  @media(max-width:620px){
    .gw-toolbar{flex-wrap:wrap;gap:6px 5px;padding:5px 8px;justify-content:center}
    .gw-toolbar .kb-toggle{order:0}
    .gw-toolbar .seg{display:none}
    .gw-toolbar .nav-day{width:34px;height:30px;min-width:34px}
    .gw-toolbar .nav-day svg{width:18px;height:18px}
    .gw-toolbar input[type=date]{flex:1 1 auto!important;min-width:0!important;font-size:12.5px;padding:4px 4px}
    .gw-toolbar .btn.ghost.sm{padding:4px 10px;font-size:12.5px;white-space:nowrap;flex:none}
    .modal-foot{gap:8px;padding:11px 14px}
    .modal-foot .btn{padding-left:13px;padding-right:13px}
  }
  .banner{background:var(--amber-soft);color:var(--amber);border:1px solid #EAD3A8;border-radius:11px;padding:11px 15px;font-size:12.5px;font-weight:600;margin-bottom:18px;display:flex;gap:10px;align-items:center}
  .banner svg{width:18px;height:18px;flex:none}
  .clickable{cursor:pointer}
  .hide{display:none!important}
  .menu-btn{display:none;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;place-items:center;background:var(--surface)}

  /* ============================================================
     RESPONSIVIDADE MOBILE — reescrita completa
     ============================================================ */
  @media(max-width:880px){
  #loginColDir{display:none!important}
  .row .tag{font-size:10px;padding:3px 7px}
  .row strong{font-size:13px;white-space:nowrap;flex:none}
  .stat .val,.finsum .v,.row strong,.calc-box,.calc-box strong,.finsum .v,.gw-card-hora{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
    /* layout base — sidebar completamente fora da tela */
    .app{display:block!important;grid-template-columns:unset!important}
    .side{position:fixed!important;left:-300px!important;z-index:60;width:280px!important;top:0;height:100vh;height:100dvh;padding-top:calc(16px + env(safe-area-inset-top,0px));transition:.26s cubic-bezier(.4,0,.2,1);box-shadow:none}
    .side.open{left:0!important;box-shadow:4px 0 24px rgba(0,0,0,.3)}
    .main{display:block;width:100%;max-width:100vw;box-sizing:border-box;padding:calc(12px + env(safe-area-inset-top,0px)) 12px calc(80px + env(safe-area-inset-bottom,0px));overflow-x:hidden;overflow-y:auto} /* 80px bottom for tab bar */

    /* --- topbar mobile --- */
    .topbar-act-desktop{display:none!important} /* botões exclusivos de desktop (ex.: rádio) somem no mobile */
    .topbar{margin-bottom:12px;padding:0;gap:8px}
    .topbar h2{font-size:18px}
    .topbar p{font-size:11.5px}
    /* botões da topbar: só ícone no mobile */
    .btn-act .act-lbl{display:none}
    .btn-act{padding:9px 11px!important;min-width:40px;min-height:40px}
    .btn-act svg{width:20px;height:20px;flex:none}
    [data-theme=dark] .menu-btn{background:var(--surface);border-color:var(--line)}
    [data-theme=dark] .menu-btn svg{stroke:#C9D9EC}
    /* 1430 — TOPBAR MOBILE (Fusão): a pista "Pesquisar" (.vnext-hint) virava um quadradão
       alto (lupa gigante empilhada, ~104px) porque o tamanho do SVG só era definido no
       modo "Barra de endereço" (data-nav=vnext). No celular ela vira uma BARRA DE BUSCA
       SLIM de uma linha só — pílula clara com lupa + "Pesquisar", ocupando a largura.
       Continua sem capturar o clique (pointer-events:none): tocar abre a busca do card. */
    .topbar-card .vnext-hint{
      margin-left:auto!important; display:flex!important; align-items:center; gap:9px;
      flex:1 1 auto; min-width:0; max-width:none; width:auto; height:40px;
      padding:0 13px!important; border-radius:12px;
      background:var(--surface); border:1px solid var(--line);
      box-shadow:0 2px 8px rgba(20,50,90,.05);
      color:var(--muted)!important; opacity:1!important; font-size:14px; font-weight:600;
      white-space:nowrap; pointer-events:none }
    .topbar-card .vnext-hint svg{ width:19px!important; height:19px!important; flex:none; opacity:1; color:var(--blue); stroke:var(--blue) }
    .topbar-card .vnext-hint span{ display:inline!important; overflow:hidden; text-overflow:ellipsis }
    /* a topbar-card em si ocupa a largura pra pílula esticar; sem o quadradão */
    html.app .topbar > div:first-child .topbar-card{ flex:1 1 auto; min-width:0 }
    /* 1432 — SEM "caixa dentro de caixa" no celular: o cartão de vidro da topbar fica
       transparente (sem fundo/borda/sombra/padding), deixando à mostra SÓ a barra de
       busca (a pílula .vnext-hint). Antes, a pílula ficava dentro do cartão de vidro e
       parecia uma caixa dentro de outra. Casa a especificidade das regras de vidro. */
    html .topbar-card,
    html[data-glass-topbar="on"] .topbar-card,
    html[data-glass-topbar="poupar"] .topbar-card{
      background:none!important; background-image:none!important; border:none!important; box-shadow:none!important; padding:0!important; }

    /* --- tab bar --- */
    /* 1443 — DESAFOGA a topbar no celular. O cluster da direita tinha ícones demais (nenhum
       encolhe), espremendo a barra de busca — a lupa solta e o sino "grudavam" nela. Some com
       o redundante e o que já mora em outro lugar: a LUPA separada (#buscaBtn — a própria barra
       é a busca), o TEMA (#temaBtnTop — está em Config), a ⚙ da topbar (#topbarCfgBtn — no ☰) e
       as Tarefas (#tarefasBtnTop). Sobram: busca + sino + avatar + ☰. ⚠ o hide do tema usava
       #temasBtnWrap, que NÃO existe (o certo é #temaBtnTop) — por isso o tema não sumia. */
    /* 1514 — as TAREFAS voltaram à topbar do celular (pedido do dono):
       o hide da 1443 escondia o botão junto com os redundantes. */
    #buscaBtn,#temaBtnTop,#topbarCfgBtn{display:none!important}

    /* --- modais como bottom-sheet --- */
    .overlay{padding:0!important;align-items:flex-end}
    .modal{border-radius:20px 20px 0 0;max-width:100%!important;width:100%;margin:0;max-height:88vh;max-height:88dvh}
    .modal-body{max-height:calc(88vh - 120px);max-height:calc(88dvh - 120px);overflow-y:auto;-webkit-overflow-scrolling:touch}
    .scrim{position:fixed;inset:0;background:rgba(15,42,67,.45);z-index:55;display:none}
    .scrim.show{display:block}
    /* alça do bottom-sheet + rodapé acima da barra de gestos */
    .modal::before{content:"";width:38px;height:4px;border-radius:99px;background:var(--line);margin:9px auto 1px;align-self:center;flex:none}
    .modal-foot{padding-bottom:calc(11px + env(safe-area-inset-bottom,0px))}

    /* --- grids --- */
    .stats{grid-template-columns:1fr 1fr}
    .two-col{grid-template-columns:1fr}
    .inicio-duo{grid-template-columns:1fr}
    .inicio-tiles{grid-template-columns:1fr 1fr}
    .frow{grid-template-columns:1fr 1fr}
    .frow3{grid-template-columns:1fr 1fr}

    /* --- campos --- */
    .field input,.field select,.field textarea{padding:12px 11px;font-size:16px!important} /* 16px evita zoom iOS/Android */
    .selx-trigger{padding:12px 11px;font-size:16px}
    .btn{padding:11px 16px;min-height:44px;font-size:13.5px}
    .btn.sm{padding:9px 13px;min-height:40px;font-size:13px}
    /* ⚠ 1172 — o ✕ / botão de excluir (.x) era o ÚNICO alvo de toque abaixo
       de 40px no celular (34px) — todos os outros botões são bumpados aqui.
       `min-width/height:40px` vence o `width/height:34px` fixo sem mexer no
       ícone (grid centraliza), então a área de toque cresce e o visual fica. */
    .x{min-width:40px;min-height:40px}

    /* --- painéis --- */
    .panel{max-width:100%;overflow:hidden}
    /* Padrão no mobile: NÃO rolar horizontal — as rows usam flex-wrap e ellipsis.
       Isso elimina o corte de texto ("Aten...", "Procedim...", datas) na borda direita. */
    .panel-body{overflow-x:hidden;-webkit-overflow-scrolling:touch}
    /* Painéis que de fato precisam de scroll horizontal (tabelas largas) usam esta classe */
    .panel-body.scroll-x{overflow-x:auto}
    .row{padding:11px 12px;gap:8px;min-width:0;overflow:hidden;max-width:100%;box-sizing:border-box}
    .row .who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    /* aniversariantes e rows: botões compactos no mobile */
    .row .btn.wa.sm{padding:8px 10px!important;font-size:0!important;min-width:40px;justify-content:center}
    .row .btn.wa.sm svg{width:20px!important;height:20px!important;margin:0}
    .row .tag{max-width:80px;overflow:hidden;text-overflow:ellipsis}
    .slot{padding:11px 13px}
    .stat{padding:13px}
    .stat .val{font-size:20px}
    .panel-head{flex-wrap:wrap;gap:8px;min-width:0}
    .panel-head h3{min-width:0;overflow:hidden;text-overflow:ellipsis}
    .kv{grid-template-columns:1fr 1fr}
    .detail-head{flex-wrap:wrap;gap:10px}

    /* --- agenda mobile --- */
    .agenda-layout{border-radius:12px;height:calc(100vh - 132px);height:calc(100dvh - 132px);min-height:360px}
    .gw-toolbar{padding:5px 10px;gap:6px;flex-wrap:wrap}
    /* Forçar dia no mobile — semana é inutilizável */
    .gw-toolbar .seg{display:none}
    /* esconder rotulo de data longa */
    .gw-rotulo-semana{display:none}
    /* input de data menor */
    .gw-toolbar input[type=date]{width:auto;flex:1 1 152px;min-width:152px;font-size:13px;padding:5px 6px}
    /* grade dia — sem scroll horizontal, régua estreita */
    .gw-scroll{overflow-x:hidden}
    .gw-head{grid-template-columns:38px 1fr!important;min-width:0!important}
    .gw-dias{grid-template-columns:1fr!important;min-width:0!important;width:100%!important}
    .gw-ruler{min-width:38px!important;width:38px!important}
    .gw-corner{min-width:38px!important;width:38px!important}
    .gw-hora{font-size:9px!important;right:4px!important}
    .gw-body{padding-left:38px!important;min-width:0!important}
    .gw-col{min-width:0!important;width:100%!important}
    /* cards no mobile */
    .gw-card{padding:6px 10px 6px 12px}
    .gw-card-nome{font-size:13px}
    .gw-card-hora{font-size:11.5px}
  }

  /* 1482 — a gaveta "Mais" saiu junto com a barra inferior */

  @media(max-width:480px){
    .main{padding:8px 8px 16px} /* 1482 — sem a barra inferior, sem o vão de 78px */
    .stats{grid-template-columns:1fr 1fr}
    .frow{grid-template-columns:1fr}
    .frow3{grid-template-columns:1fr}
    .stat .val{font-size:19px}
    .kv{grid-template-columns:1fr}
    .topbar h2{font-size:18px}
    /* extras móveis pequenos */
    .seg{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;padding-bottom:2px}
    .seg button{flex-shrink:0}
    #pageAction{overflow-x:auto;white-space:nowrap;padding-bottom:4px}
    .btn-encaixe.btn-act,.btn.btn-act,.btn.ghost.btn-act{flex-shrink:0}
    .panel-head h3{font-size:13.5px!important}
    .sem-bar-label{font-size:9px!important}
    .hero-painel{padding:16px 14px!important}
  }
  /* ---- mini calendário lateral ---- */
  .mcal{padding:14px 12px;border-right:1px solid var(--line);min-width:172px;background:var(--surface)}
  .mcal-hd{text-align:center;font-size:9.5px;font-weight:700;color:var(--muted);padding:3px 0}
  /* ---- layout agenda ---- */
  .agenda-layout{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow);overflow:hidden;min-height:640px;width:100%;height:calc(100vh - 150px);height:calc(100dvh - 150px)}
  /* 1363 — a Área da agenda é sempre a "aumentada" (−150px, definida acima); as
     opções "menor"/"max" (data-ag-area) saíram do código. */
  .agenda-grade{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}
  /* 1457/1463 — DESIGN NOVO (idioma Google Calendar): chrome claro e arejado */
  .gw-toolbar{display:flex;align-items:center;justify-content:center;gap:8px;padding:5px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;position:relative;z-index:30;background:var(--surface)}
  .gw-nav{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}
  .gw-actions{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}
  /* 1457/1463 — Rótulo de data limpo, estilo título do Google Calendar */
  .ag-rotulo-aero{ display:inline-flex; align-items:center; gap:8px; padding:6px 12px; border-radius:10px; white-space:nowrap; flex:none; margin:0 2px;
    background:transparent;
    border:1px solid transparent;
    box-shadow:none;
    color:var(--ink); transition:.15s; }
  .ag-rot-main{ font-size:15px; font-weight:800; color:var(--ink); letter-spacing:-.2px; }
  .ag-rot-selo{ font-size:11px; font-weight:800; background:color-mix(in srgb, var(--blue) 14%, transparent); color:var(--blue-700); padding:2px 8px; border-radius:20px; }
  .ag-rot-sec{ font-size:12px; font-weight:600; color:var(--muted); }
  .gw-toolbar .nav-day{width:36px;height:30px;min-width:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);color:var(--blue-700);cursor:pointer;transition:.15s}
  .gw-toolbar .nav-day svg{width:19px;height:19px}
  /* ── Compactação vertical da toolbar da agenda (largura preservada) ── */
  .gw-toolbar .seg button{padding-top:5px;padding-bottom:5px}
  .gw-toolbar .dp-btn{padding-top:5px;padding-bottom:5px}
  .gw-toolbar .btn.ghost.sm{padding-top:5px;padding-bottom:5px}
  .gw-toolbar .gw-act,.gw-toolbar .gw-actions .btn.ghost.sm{height:30px}
  .gw-toolbar .nav-day:hover{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-700)}
  .gw-scroll{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;width:100%;min-height:400px}
  .gw-head{display:grid;grid-template-columns:58px repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:10;width:100%}
  .gw-dh{padding:3px 6px;text-align:center;cursor:pointer;transition:.15s;border-left:1px solid var(--line);container-type:inline-size}
  .gw-dh:hover{background:rgba(var(--blue-rgb),.13)}
  .gw-dh-in{display:inline-flex;align-items:baseline;gap:6px;padding:3px 9px;border-radius:11px;transition:.15s;max-width:100%}
  .gw-dh.today{background:transparent}
  .gw-dh.today .gw-dh-in{background:var(--agh-cor,var(--blue))}
  .gw-dh.today .gw-dw,.gw-dh.today .gw-dn{color:#fff}
  .gw-dh.today .gw-dw{opacity:.88}
  .gw-dh.sel:not(.today){background:rgba(var(--blue-rgb),.10)}
  .gw-dw{display:inline;font-size:10.5px;font-weight:800;color:var(--blue-700);text-transform:uppercase;letter-spacing:.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .gw-dn{display:inline;font-size:16px;font-weight:800;color:var(--ink);margin-top:0}

  /* ═══════════════════════════════════════════════════════════════
     CONFIGURAÇÕES OPCIONAIS DA AGENDA — escolhas independentes
     Padrão (sem atributo): Compacto + Pílula + barra Compacta + Manter + área Aumentada.
     data-ag-head = tamanho (med/esp) · data-ag-headst = estilo (emp)
     data-ag-bar = altura da barra (med/esp) · data-ag-barx = horizontal
     ═══════════════════════════════════════════════════════════════ */
  /* ── CABEÇALHO · TAMANHO (padrão comp já está acima) ── */
  [data-ag-head="med"] .gw-dh{padding:6px 6px}
  [data-ag-head="med"] .gw-dw{font-size:11px}
  [data-ag-head="med"] .gw-dn{font-size:19px}
  [data-ag-head="esp"] .gw-dh{padding:10px 6px}
  [data-ag-head="esp"] .gw-dw{font-size:10.5px;letter-spacing:.6px}
  [data-ag-head="esp"] .gw-dn{font-size:22px}
  /* ── CABEÇALHO · ESTILO "empilhado" (dia sobre número + círculo do hoje) ── */
  [data-ag-headst="emp"] .gw-dh-in{display:contents}
  [data-ag-headst="emp"] .gw-dw{display:block;letter-spacing:.6px}
  [data-ag-headst="emp"] .gw-dn{display:block;margin-top:1px}
  /* 1361 — "Nome do dia · Por extenso" ENCOLHE SOZINHO: quando a coluna do dia
     aperta, a fonte do rótulo diminui em degraus (o cabeçalho é um container).
     Assim "SEXTA-FEIRA" aparece inteiro onde cabe e vai afinando onde não cabe;
     as reticências do .gw-dw são só o último recurso. Vale nos 3 tamanhos. */
  @container (max-width:118px){ [data-ag-head] .gw-dw, .gw-dw{font-size:9px;letter-spacing:.2px} }
  @container (max-width:94px){ [data-ag-head] .gw-dw, .gw-dw{font-size:8px;letter-spacing:0} }
  [data-ag-headst="emp"] .gw-dh.today{background:rgba(var(--blue-rgb),.16)}
  [data-ag-headst="emp"] .gw-dh.today .gw-dw{color:var(--blue-700);opacity:1}
  [data-ag-headst="emp"] .gw-dh.today .gw-dn{background:var(--agh-cor,var(--blue));color:#fff;border-radius:50%;width:26px;height:26px;display:grid;place-items:center;margin:1px auto 0}
  [data-ag-headst="emp"][data-ag-head="med"] .gw-dh.today .gw-dn{width:30px;height:30px;margin:2px auto 0}
  [data-ag-headst="emp"][data-ag-head="esp"] .gw-dh.today .gw-dn{width:32px;height:32px;margin:2px auto 0}
  /* ── BARRA · ALTURA (padrão comp já está acima) ── */
  [data-ag-bar="med"] .gw-toolbar{padding-top:7px;padding-bottom:7px}
  [data-ag-bar="med"] .gw-toolbar .nav-day{height:33px}
  [data-ag-bar="med"] .gw-toolbar .seg button{padding-top:6px;padding-bottom:6px}
  [data-ag-bar="med"] .gw-toolbar .dp-btn{padding-top:6px;padding-bottom:6px}
  [data-ag-bar="med"] .gw-toolbar .btn.ghost.sm{padding-top:6px;padding-bottom:6px}
  [data-ag-bar="med"] .gw-toolbar .gw-act,[data-ag-bar="med"] .gw-toolbar .gw-actions .btn.ghost.sm{height:33px}
  [data-ag-bar="esp"] .gw-toolbar{padding-top:10px;padding-bottom:10px}
  [data-ag-bar="esp"] .gw-toolbar .nav-day{height:36px}
  [data-ag-bar="esp"] .gw-toolbar .seg button{padding-top:8px;padding-bottom:8px}
  [data-ag-bar="esp"] .gw-toolbar .dp-btn{padding-top:8px;padding-bottom:8px}
  [data-ag-bar="esp"] .gw-toolbar .btn.ghost.sm{padding-top:7px;padding-bottom:7px}
  [data-ag-bar="esp"] .gw-toolbar .gw-act,[data-ag-bar="esp"] .gw-toolbar .gw-actions .btn.ghost.sm{height:36px}
  /* ── BARRA · ORGANIZAÇÃO HORIZONTAL ──
     1363 — os ícones da barra são sempre "Adaptar" (encolhe o gap se estreito),
     fixo desde a 1361; as outras opções (red/aum/fill) saíram do código. */
  [data-ag-barx="adap"] .gw-toolbar{gap:clamp(3px,1.4vw,12px)}
  /* Área da agenda: "menor" (o antigo −180px) e "max" (−128px). Padrão = aumentada (−150px, definido no container). */
  .gw-corner{border-right:1px solid var(--line);min-width:58px;width:58px}
  .gw-body{display:flex;padding-top:4px;width:100%}
  .gw-ruler{position:relative;min-width:58px;width:58px;flex:none}
  .gw-hora{position:absolute;right:8px;font-size:12px;font-weight:700;color:var(--muted);transform:translateY(-8px);white-space:nowrap}
  .gw-dias{position:relative;flex:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));width:100%;min-width:0}
  .gw-linha{position:absolute;left:0;right:0;border-top:1px solid var(--line);pointer-events:none}
  .gw-linha.meia{border-top:1px dashed rgba(0,0,0,.06);pointer-events:none}
  .gw-col{position:relative;border-left:1px solid var(--line);cursor:crosshair}
  .gw-col-bg{position:absolute;inset:0;z-index:0;cursor:crosshair}
  .gw-col:hover{background:rgba(31,115,224,.018)}
  /* 1605 — coluna do DIA CORRENTE com um azul levíssimo (como o Simples Dental),
     além da linha do horário atual. Sutil para não competir com os cards. A cor
     vem de uma variável (--gw-hoje-bg) que o tema escuro sobrescreve — sem
     selector [data-theme] extra aqui. */
  .gw-col-hoje{ background:var(--gw-hoje-bg, rgba(31,115,224,.055)); }
  .gw-col-hoje:hover{ background:var(--gw-hoje-bg-h, rgba(31,115,224,.075)); }
  /* 1457/1463 — cards estilo Google Calendar: arredondados, chapados, filete de cor (inline no JS) */
  .gw-card{position:absolute;border-radius:7px;padding:5px 9px 5px 12px;overflow:hidden;cursor:pointer;z-index:2;
    border:1px solid color-mix(in srgb,var(--ink) 7%,transparent);
    box-shadow:0 1px 2px rgba(19,41,75,.07);
    transition:transform .13s cubic-bezier(.34,1.56,.64,1),box-shadow .13s}
  /* 1613 — filete vira PÍLULA flutuante (recuada em cima/baixo, cantos arredondados
     à direita), como na prévia do card. Cor vem do --gw-fx que o JS injeta. */
  .gw-card::before{content:"";position:absolute;left:0;top:5px;bottom:5px;width:4px;
    border-radius:0 3px 3px 0;background:var(--gw-fx,var(--blue));z-index:1}
  .gw-card:hover{transform:translateY(-1px);z-index:5;
    box-shadow:0 4px 12px rgba(19,41,75,.16)}
  .gw-card:active{transform:translateY(0) scale(.99)}
  /* 1574 — card ENXUTO do leque (consulta curta): só selo + 1ª linha do nome */
  .gw-card-1l{padding:3px 8px 3px 11px}
  .gw-card-1l .gw-card-nome{font-size:11.5px}
  .gw-card-nome{font-size:12px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .gw-card-hora{font-size:10.5px;font-weight:600;color:var(--ink-2);margin-top:2px;opacity:.85}
  .gw-card-tipo{font-size:10px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* ⚰️ 1492 — o quadradinho de iniciais e seus tamanhos configuráveis saíram. */
  /* ⚰️ 1492 — o quadradinho de iniciais dos cards e seus tamanhos saíram com o avatar. */
  /* modo mini: card espremido = avatar central + iniciais (também escala) */
  /* ⚰️ 1497 — o modo estreito (iniciais grandes) foi expurgado: limite fixo em NUNCA. */
  /* indicadores do card (retorno/primeira, convênio/particular) */
  /* ⚰️ 1497 — os selos de indicador do card saíram; o popup mostra por padrão. */
  /* zonas */
  .gw-fechado{position:absolute;left:0;right:0;background:repeating-linear-gradient(45deg,transparent,transparent 5px,rgba(0,0,0,.025) 5px,rgba(0,0,0,.025) 10px);pointer-events:none;z-index:1}
  .gw-almoco{position:absolute;left:0;right:0;background:rgba(194,132,15,.06);border-top:1px dashed rgba(194,132,15,.22);border-bottom:1px dashed rgba(194,132,15,.22);pointer-events:none;z-index:1}
  .gw-agora{position:absolute;left:0;right:0;z-index:6;pointer-events:none}
  .gw-agora-dot{width:10px;height:10px;border-radius:50%;background:var(--red);position:absolute;left:-5px;top:-5px;box-shadow:0 0 0 3px rgba(216,57,43,.2)}
  /* dot de status estilo Android notification */
  .status-dot{display:inline-block;border-radius:50%;flex:none;position:relative}
  .status-dot.pulse::after{content:'';position:absolute;inset:-3px;border-radius:50%;animation:sdpulse 2s ease-out infinite}
  @keyframes sdpulse{0%{box-shadow:0 0 0 0 var(--sdcolor,rgba(59,130,246,.5))}70%{box-shadow:0 0 0 5px transparent}100%{box-shadow:0 0 0 0 transparent}}
  .gw-agora-line{border-top:2px solid var(--red)}
  /* ===== Agenda — visão por cadeira (Fase 2) ===== */
  .gwcad-scroll{flex:1;overflow:auto;position:relative;width:100%;min-height:400px}
  .gwcad-head{display:grid;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:12;background:var(--surface)}
  .gwcad-corner{border-right:1px solid var(--line);width:58px;position:sticky;left:0;z-index:2;background:var(--surface)}
  .gwcad-chead{padding:8px 6px;text-align:center;border-left:1px solid var(--line);min-width:0;overflow:hidden}
  .gwcad-chead .cn{font-size:13px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}
  .gwcad-chead .cd{font-size:9.5px;font-weight:700;margin-top:2px;display:inline-flex;align-items:center;gap:4px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .gwcad-chead .cd .dot{width:7px;height:7px;border-radius:50%;flex:none}
  .gwcad-body{display:flex;padding-top:4px}
  .gwcad-ruler{position:sticky;left:0;width:58px;flex:none;z-index:5;background:var(--surface)}
  .gwcad-cols{position:relative;display:grid;flex:1 1 0}
  .gwcad-col{position:relative;border-left:1px solid var(--line);cursor:crosshair}
  .gwcad-col:hover{background:rgba(31,115,224,.018)}
  .gwcad-col.semcad{background:repeating-linear-gradient(45deg,transparent,transparent 7px,rgba(124,146,171,.045) 7px,rgba(124,146,171,.045) 14px)}
  .gwcad-band{position:absolute;left:0;right:0;z-index:1;border-left:3px solid;pointer-events:none;overflow:hidden;border-radius:0 4px 4px 0}
  .gwcad-bandtag{position:absolute;top:3px;left:5px;font-size:9px;font-weight:800;border-radius:5px;padding:1px 6px;max-width:calc(100% - 10px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.55;display:inline-flex;align-items:center}
  /* mês */
  .gw-mes-grid{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--line)}
  .gw-mes-hd{text-align:center;font-size:10.5px;font-weight:700;color:var(--muted);padding:8px 4px;border-right:1px solid var(--line);text-transform:uppercase;letter-spacing:.4px}
  .gw-mes-hd:last-child{border-right:none}
  .gw-mes-dia{min-height:90px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 6px;cursor:pointer;transition:.1s;position:relative}
  .gw-mes-dia:nth-child(7n){border-right:none}
  .gw-mes-dia:hover{background:var(--blue-soft)}
  .gw-mes-dia.heat-on:hover{ background:none; box-shadow:inset 0 0 0 2px var(--blue-line); }
  .gw-mes-pend{ position:absolute; top:6px; right:6px; width:7px; height:7px; border-radius:50%; background:var(--red); box-shadow:0 0 0 2px var(--surface); }
  .gw-mes-cnt{ position:absolute; bottom:5px; right:7px; font-size:10px; font-weight:800; color:var(--ink-2); opacity:.7; }
  .gw-mes-cnt.sobre-heat{ color:rgba(255,255,255,.92); opacity:1; }
  .gw-mes-legenda{ display:flex; align-items:center; gap:7px; padding:12px 4px 2px; font-size:11px; color:var(--muted); font-weight:600; flex-wrap:wrap; }
  .gw-mes-legenda .hm-sw{ width:20px; height:13px; border-radius:3px; border:1px solid var(--line); }
  .gw-mes-legenda .hm-pend-lg{ display:inline-flex; align-items:center; gap:5px; margin-left:12px; }
  .gw-mes-dia.outro-mes{opacity:.4}
  .gw-mes-num{font-size:12.5px;font-weight:700;color:var(--ink);width:24px;height:24px;display:grid;place-items:center;border-radius:50%;margin-bottom:3px}
  .gw-mes-dia.hoje-mes .gw-mes-num{background:var(--blue);color:#fff}
  .gw-mes-chip{font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:5px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;
    box-shadow:0 1px 3px rgba(19,41,75,.1),inset 0 1px 0 rgba(255,255,255,.4);border:1px solid rgba(255,255,255,.3)}
  .gw-mes-mais{font-size:10px;color:var(--muted);font-weight:600;padding:1px 4px}
  /* ===== DARK MODE TOTAL ===== */
  [data-theme=dark] body,[data-theme=dark] .main{background:var(--bg)}
  /* Cantos arredondados: o cabeçalho/corpo/rodapé herdam o fundo do .modal (que tem border-radius),
     evitando a sobreposição quadrada nos cantos no tema escuro. */
  [data-theme=dark] .modal-head,[data-theme=dark] .modal-foot,[data-theme=dark] .modal-body{background:transparent}
  html{color-scheme:light}

  /* ===== Seletor de data próprio (calendário no estilo do app) ===== */
  .dp-wrap{position:relative;display:inline-flex}
  .dp-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;transition:.15s;white-space:nowrap}
  .dp-btn:hover{border-color:var(--blue-line);box-shadow:var(--sh1)}
  .dp-btn svg{width:16px;height:16px;color:var(--blue)}
  .dp-pop{display:none;position:absolute;top:calc(100% + 7px);left:0;z-index:99999;width:268px;max-width:calc(100vw - 24px);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 44px rgba(19,41,75,.22);padding:13px}
  .dp-pop.show{display:block;animation:dpIn .14s ease}
  @keyframes dpIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
  .dp-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .dp-mes{font-weight:800;font-size:14px;color:var(--ink);text-transform:capitalize}
  .dp-arw{width:30px;height:30px;border:1px solid var(--line);background:var(--surface);border-radius:9px;cursor:pointer;color:var(--blue);font-size:18px;line-height:1;display:grid;place-items:center;transition:.15s}
  .dp-arw:hover{background:var(--blue-soft);border-color:var(--blue-line)}
  .dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
  .dp-head{margin-bottom:4px}
  .dp-hd{text-align:center;font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;padding:2px 0}
  .dp-day{text-align:center;font-size:13px;font-weight:600;color:var(--ink);padding:7px 0;border-radius:9px;cursor:pointer;transition:.12s;font-variant-numeric:tabular-nums;user-select:none}
  .dp-day:hover{background:var(--blue-soft)}
  .dp-day.out{color:var(--muted);opacity:.5}
  .dp-day.hj{color:var(--blue);font-weight:800;box-shadow:inset 0 0 0 1.5px var(--blue)}
  .dp-day.sel{background:var(--blue);color:#fff;font-weight:800;box-shadow:0 3px 10px rgba(31,115,224,.4)}
  .dp-day.sel:hover{background:var(--blue-700)}
  .dp-day.fer{color:var(--amber)}
  .dp-day.dp-dis{color:var(--muted);opacity:.32;cursor:default;pointer-events:none}
  .dp-day.dp-dis:hover{background:transparent}
  .dp-foot{display:flex;justify-content:flex-end;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
  .dp-hoje{background:transparent;border:none;color:var(--blue);font-weight:800;font-size:13px;cursor:pointer;padding:4px 10px;border-radius:7px;transition:.15s}
  .dp-hoje:hover{background:var(--blue-soft)}
  /* seletor de data em formulários */
  .dpf-wrap{display:block;width:100%}
  .dpf-btn{width:100%;justify-content:flex-start;font-size:14px;font-weight:600;padding:10px 12px;background:var(--surface)}
  .dpf-btn:hover{border-color:var(--blue-line)}
  .dpf-lbl{flex:1;text-align:left}
  .dpf-ph{color:var(--muted);font-weight:500}
  .dp-foot2{justify-content:space-between!important}
  .dp-limpar{color:var(--muted)!important}
  .dp-limpar:hover{background:var(--line)!important;color:var(--ink)!important}
  /* campo de telefone com selo +55 */
  .tel-wrap{display:flex;align-items:stretch;width:100%}
  .tel-ddi{display:flex;align-items:center;padding:0 11px;background:var(--blue-soft);border:1px solid var(--line);border-right:none;border-radius:10px 0 0 10px;color:var(--blue-700);font-weight:700;font-size:14px;white-space:nowrap;user-select:none}
  .tel-input{flex:1;min-width:0;border-top-left-radius:0!important;border-bottom-left-radius:0!important}

  /* dark mode - fix inline hardcoded colors in JS-generated content */
  [data-theme=dark] .calc-box{background:var(--bg)!important;border-color:var(--line)!important;color:var(--ink-2)!important}

  /* ════ FLUENT DESIGN CORE ═══════════════════════════════════ */
  :root{--radius:10px;--radius-lg:14px;--radius-xl:18px;--sh1:0 2px 8px rgba(19,41,75,.07),0 1px 2px rgba(0,0,0,.04);--sh2:0 4px 18px rgba(19,41,75,.11),0 2px 4px rgba(0,0,0,.05);--sh3:0 10px 40px rgba(19,41,75,.14),0 4px 8px rgba(0,0,0,.07);--ease:cubic-bezier(.4,0,.2,1);--dur:.18s}
  .stat{border-radius:var(--radius-lg)!important;box-shadow:var(--sh1);border:1px solid var(--line);transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
  .stat:hover{box-shadow:var(--sh2);transform:translateY(-1px)}
  /* 1279 — Aero/Vista: cantos mais macios nos campos, foco com halo aqua e leve profundidade de vidro */
  input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]),select,textarea{border-radius:var(--radius-lg)!important;border:1.5px solid var(--line)!important;box-shadow:inset 0 1px 2px rgba(19,41,75,.045);transition:border-color var(--dur),box-shadow var(--dur);outline:none!important}
  input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{border-color:var(--blue)!important;box-shadow:0 0 0 3px rgba(var(--blue-rgb),.16),inset 0 1px 2px rgba(19,41,75,.03)!important}
  .btn{border-radius:var(--radius-lg)!important;transition:all var(--dur) var(--ease)!important;font-weight:700}
  .btn:hover:not(:disabled){box-shadow:var(--sh2);transform:translateY(-1px)}
  .btn:active:not(:disabled){transform:translateY(0)!important;box-shadow:var(--sh1)!important}
  .btn.ghost:hover{background:var(--blue-soft);color:var(--blue)}
  #modalOverlay.show{}
  /* 1290 — moldura da janela: borda de vidro interna (fio de luz em toda a volta) + rim no topo */
  #modalOverlay .modal-box{border-radius:var(--radius-xl)!important;box-shadow:var(--sh3),inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35);border:1px solid var(--line);animation:fluentIn var(--dur) var(--ease)}
  @keyframes fluentIn{from{opacity:0;transform:scale(.97) translateY(6px)}to{opacity:1;transform:none}}
  @keyframes slideUpFluent{from{transform:translateY(100%)}to{transform:none}}
  .nav button{transition:all var(--dur) var(--ease)!important}
  .nav button.active{background:rgba(255,255,255,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 2px 8px rgba(0,0,0,.08)!important}
  .topbar{background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:var(--radius-lg)!important;box-shadow:var(--sh1)!important}
  .topbar-act{border-radius:var(--radius)!important;transition:all var(--dur) var(--ease)!important}
  .topbar-act:hover{background:var(--blue-soft);color:var(--blue)}
  /* 1283 — popovers/menus com vidro lite: rim de luz no topo + cantos Vista + hover gel (efeitos baratos, sem blur) */
  #agendaDialItems,#estoqueDialItems{position:fixed;z-index:9500;background:linear-gradient(180deg,#FFFFFF,#FBFDFF);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--sh3),inset 0 1px 0 rgba(255,255,255,.75);min-width:210px;max-width:calc(100vw - 16px);max-height:calc(100vh - 72px);overflow-x:hidden;overflow-y:auto;animation:fluentIn .16s var(--ease)}
  .agenda-dial-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 15px;border:none;background:transparent;color:var(--ink);font-size:13.5px;font-weight:700;font-family:var(--font);cursor:pointer;text-align:left;transition:background var(--dur)}
  .agenda-dial-item:hover{background:linear-gradient(180deg,var(--blue-soft),color-mix(in srgb,var(--blue) 14%,var(--surface)));color:var(--blue-700)}
  .agenda-dial-item+.agenda-dial-item{border-top:1px solid var(--line)}
  /* janelinhas flutuantes (menu sanduíche + popover de temas) com melhor separação no escuro */
  [data-theme=dark] #mainMenuPanel, [data-theme=dark] #temasTopbarPop{ border-color:var(--blue-line)!important; box-shadow:0 16px 48px rgba(0,0,0,.62)!important; }
  /* 1444: os discadores no escuro migraram p/ o bloco de auditoria no fim do arquivo
     (a vírgula aqui vazava o #estoqueDialItems p/ o tema claro também). */
  /* ═══ fim Fluent ════════════════════════════════════════════ */

  /* Sidebar minimalista */
  .side-foot{padding:8px 10px 10px}
  #perfilAtivoLabel{padding:6px 10px!important;font-size:11.5px!important;margin-bottom:4px!important;border-radius:9px!important}
  .side-cal{padding:6px 8px!important}
  /* Topbar compacta */
  .topbar{padding:12px 18px 13px!important;height:auto!important;min-height:52px!important}
  .page-title{font-size:18px!important;font-weight:900!important}
  .page-sub{font-size:12px!important}

  /* Compact sidebar: ocultar textos (mostrar só ícones) */
  .app.compact #perfilAtivoLabel{opacity:0;height:0;overflow:hidden;margin:0;padding:0;pointer-events:none}
  .app.compact #dentFilter{opacity:0;height:0;overflow:hidden;margin:0;padding:0}
  .app.compact .side-cal{opacity:0;height:0;overflow:hidden;margin:0;padding:0}
  .app.compact .collapse-btn svg{transform:rotate(180deg)}
  /* Sidebar compacta: centralizar ícones */

  .app.compact .side{width:68px}
  /* Transições suaves */
  #statusBar,#perfilAtivoLabel,#dentFilter,.side-cal{transition:opacity .2s,height .2s}
  /* Topbar: ocultar brand em mobile (já no sidebar compacto) */

  /* ════ SIDEBAR FLUENT — Chamatativo e sem quebrar layout ════ */

  /* Nav items — reveal hover + active glow */
  .nav button{
    transition:background .16s,color .16s,box-shadow .16s,transform .12s !important;
    border-radius:11px !important;
  }
  .nav button:hover{
    background:rgba(255,255,255,.14) !important;
    color:#fff !important;
    transform:translateX(2px);
  }
  .nav button.active{
    background:linear-gradient(135deg,rgba(var(--side-acc-rgb,31,115,224),.55) 0%,rgba(var(--side-acc-rgb,31,115,224),.28) 100%) !important;
    color:#fff !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 2px 12px rgba(var(--side-acc-rgb,31,115,224),.25) !important;
    border:1px solid rgba(var(--side-acc-rgb,31,115,224),.35) !important;
  }
  .nav button.active svg{opacity:1;filter:none}
  .nav button svg{transition:filter .16s,opacity .16s}
  .nav button:hover svg{opacity:1;filter:none}

  /* 1379 — o bloco da marca da sidebar (.brand) saiu do código. */

  /* Side-cal — glass card */
  /* 1286 — mini-calendário com sheen de vidro (brilho no topo), leve — na regra que de fato vence */
  .side-cal{
    background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(0,0,0,.22)) !important;
    border:1px solid rgba(255,255,255,.12) !important;
    box-shadow:0 4px 20px rgba(0,0,0,.15),inset 0 1px 0 rgba(255,255,255,.14) !important;
  }

  /* Perfil badge — Fluent highlight */
  #perfilAtivoLabel{
    background:linear-gradient(135deg,rgba(var(--side-acc-rgb,31,115,224),.22) 0%,rgba(var(--side-acc-rgb,31,115,224),.10) 100%) !important;
    border:1px solid rgba(var(--side-acc-rgb,31,115,224),.30) !important;
    box-shadow:0 2px 8px rgba(var(--side-acc-rgb,31,115,224),.15) !important;
    transition:background .16s,box-shadow .16s !important;
    color:#EAF1FB !important;
  }
  /* A sidebar é escura nos dois temas, então o nome/papel precisam de cor clara fixa
     (não podem seguir --ink/--muted, que ficam escuros no tema claro e somem). */
  #perfilAtivoLabel strong{color:#EAF1FB !important;}
  #perfilAtivoLabel span{color:#AFC6E2 !important;}
  #perfilAtivoLabel:hover{
    background:linear-gradient(135deg,rgba(var(--side-acc-rgb,31,115,224),.35) 0%,rgba(var(--side-acc-rgb,31,115,224),.18) 100%) !important;
    box-shadow:0 3px 14px rgba(var(--side-acc-rgb,31,115,224),.25) !important;
  }

  /* Botão Configurações — fluent glass */
  .backup-btns button{
    background:rgba(255,255,255,.09) !important;
    border:1px solid rgba(255,255,255,.14) !important;
    transition:all .16s !important;
  }
  .backup-btns button:hover{
    background:rgba(var(--side-acc-rgb,31,115,224),.30) !important;
    border-color:rgba(var(--side-acc-rgb,31,115,224),.50) !important;
    box-shadow:0 2px 10px rgba(var(--side-acc-rgb,31,115,224),.20) !important;
  }

  /* Collapse button glow */
  .collapse-btn{
    box-shadow:0 2px 12px rgba(19,41,75,.30),0 0 0 1px rgba(var(--side-acc-rgb,31,115,224),.25) !important;
    transition:transform .18s,box-shadow .18s !important;
  }
  .collapse-btn:hover{
    box-shadow:0 4px 18px rgba(var(--side-acc-rgb,31,115,224),.45),0 0 0 2px rgba(var(--side-acc-rgb,31,115,224),.40) !important;
    transform:scale(1.12) !important;
  }

  /* ════ FIM SIDEBAR FLUENT ════════════════════════════════════ */

  /* Topbar não deve cortar dropdowns */
  .topbar{overflow:visible!important;z-index:100}
  #quickActMenu,#agendaDialItems,#estoqueDialItems{z-index:9500!important}

  /* WhatsApp Speed Dial */
  .wa-sdial{position:relative;display:inline-flex}
  .wa-sdial-btn{display:inline-flex;align-items:center;gap:6px;background:#25D366;color:#fff;border:none;border-radius:9px;padding:7px 11px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:var(--font);transition:filter .15s,transform .15s;box-shadow:0 2px 8px rgba(37,211,102,.3)}
  .wa-sdial-btn:hover{filter:brightness(1.1);transform:translateY(-1px)}
  .wa-sdial-btn svg{width:15px;height:15px;flex-shrink:0}
  .wa-sdial-menu{display:none;position:fixed;z-index:9500;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:0 10px 40px rgba(19,41,75,.18);min-width:200px;overflow:hidden;animation:fluentIn .16s var(--ease)}
  .wa-sdial-item{display:flex;align-items:center;gap:10px;width:100%;padding:11px 16px;border:none;background:transparent;color:var(--ink);font-size:13px;font-weight:700;font-family:var(--font);cursor:pointer;text-align:left;transition:background .14s;white-space:nowrap}
  .wa-sdial-item:hover{background:rgba(37,211,102,.1);color:#1A9E52}
  .wa-sdial-item+.wa-sdial-item{border-top:1px solid var(--line)}
  .wa-sdial-item svg{width:16px;height:16px;flex-shrink:0;color:#25D366}

  /* ── Busca universal (command palette) ── */
  /* 1474 — #buscaOverlay saiu do código (a pesquisa é a barra) */
  .busca-grp{font-size:10.5px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;padding:10px 12px 4px}
  .busca-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;cursor:pointer;transition:background .1s}
  .busca-item.sel{background:linear-gradient(180deg,var(--blue-soft),color-mix(in srgb,var(--blue) 13%,var(--surface)))}
  .busca-ic{width:34px;height:34px;border-radius:9px;background:var(--blue-soft);color:var(--blue-700);display:grid;place-items:center;flex:none}
  .busca-ic svg{width:18px;height:18px}
  .busca-txt{flex:1;min-width:0}
  .busca-label{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .busca-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
  .busca-go{font-size:14px;color:var(--blue-700);opacity:0;flex:none;font-weight:700}
  .busca-item.sel .busca-go{opacity:1}
  .busca-dica{font-size:12.5px;color:var(--muted);padding:14px 12px 4px;line-height:1.5}
  .busca-vazio{text-align:center;color:var(--muted);font-size:13px;padding:30px 16px}
  .busca-kbd{font-size:10px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:3px 7px;font-family:var(--font);flex:none}
  .busca-kbs{margin-left:auto;display:flex;gap:3px;flex:none;align-items:center}

/* ---- (2) Tela de login / seleção de usuário / PIN — eram inline no <body> ---- */
    /* TRAVA pré-login: enquanto o usuário não entrou, o app (grelha,
       barra de abas e botão +) fica totalmente oculto. Isso impede que
       o app "vaze" por baixo da tela de login antes de autenticar e que
       o FAB/tab-bar apareçam sobre/atrás da entrada. A classe sai do
       <body> só quando iniciarApp() conclui (_mostrarTudoNav). */
    body.pre-login .app,
    body.pre-login #fabAdd,
    body.pre-login .fab-sup{ display:none !important; }
    /* Durante o login, o body recebe o mesmo gradiente cosmos como base. Assim,
       como o #loginScreen agora é absolute e cresce com o conteúdo, o fundo cobre
       tudo — e isto se aplica SÓ ao pre-login, saindo automaticamente após entrar. */
    body.pre-login{ background:linear-gradient(135deg,#091F4B 0%,#0C3172 45%,#0B2550 100%) !important; min-height:100dvh; }
    @keyframes usrCardIn{from{opacity:0;transform:translateY(24px) scale(.93)}to{opacity:1;transform:none}}
    @keyframes usrPinSlide{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
    @keyframes usrShake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
    @keyframes usrPulse{0%,100%{box-shadow:0 0 0 0 rgba(31,115,224,.4)}50%{box-shadow:0 0 0 8px rgba(31,115,224,0)}}
    /* 1428 — LÁPIDE: .usrBlob (bolhas coloridas flutuantes das telas de entrada) removido.
       As quatro telas usam agora o fundo claro "Aurora" (var --ent-bg), sem blobs. */
    .usr2-card{
      position:relative;width:140px;padding:24px 14px 18px;border-radius:22px;
      cursor:pointer;text-align:center;
      border:1.5px solid rgba(255,255,255,.07);
      background:rgba(255,255,255,.04);
      
      transition:all .24s cubic-bezier(.4,0,.2,1);
      animation:usrCardIn .4s cubic-bezier(.4,0,.2,1) both;
    }
    .usr2-card:hover{
      background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.18);
      transform:translateY(-6px) scale(1.02);
      box-shadow:0 20px 48px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.1);
    }
    .usr2-card.sel{
      border-color:rgba(31,115,224,.7)!important;
      box-shadow:0 0 0 3px rgba(31,115,224,.25),0 20px 48px rgba(31,115,224,.3)!important;
    }
    .usr2-card.dim{opacity:.35;transform:scale(.95);pointer-events:none}
    /* ── Responsivo: evita o relógio/logo sobreporem o título em telas estreitas ── */
    @media(max-width:560px){
      #usrClock{top:14px!important;right:14px!important}
      #usrTime{font-size:24px!important;letter-spacing:1px!important}
      #usrDate{font-size:11px!important;margin-top:2px!important}
      #userSelectScreen .mono#usrBrandMono2{width:28px!important;height:28px!important}
      /* 1443 — empurra o conteúdo central para baixo do header absoluto (logo + relógio +
         "Conta <email>" + Sair). Era 120px e o "Trocar de clínica" (1º item do centro)
         colava no bloco da conta; 158px limpa o header inteiro com folga. */
      #usrMain{justify-content:flex-start!important;padding-top:158px!important;height:100%!important;overflow-y:auto!important}
      #usrAcctBox{margin-top:8px!important;gap:5px!important}
      #usrAcctBox span{max-width:44vw!important;font-size:9.5px!important}
      #usrClinicaName{max-width:60%;text-align:center}
      .usr2-card{width:128px!important}
    }
    @media(max-width:380px){
      #usrTime{font-size:20px!important}
      .usr2-card{width:118px!important;padding:18px 10px 14px!important}
      .usr2-avatar{width:60px!important;height:60px!important;font-size:20px!important}
    }
    .usr2-avatar{
      width:72px;height:72px;border-radius:50%;margin:0 auto 12px;
      display:flex;align-items:center;justify-content:center;
      font-size:24px;font-weight:900;color:#fff;
      box-shadow:0 6px 20px rgba(0,0,0,.4);
      transition:all .24s;
    }
    .usr2-card:hover .usr2-avatar{transform:scale(1.08)}
    .usr2-card.sel .usr2-avatar{animation:usrPulse 2s infinite}
    .usr2-name{font-size:13px;font-weight:800;color:#fff;line-height:1.3;margin-bottom:2px}
    .usr2-role{font-size:10.5px;color:rgba(255,255,255,.45);font-weight:600;margin-top:4px}
    .usr2-pin-status{font-size:9.5px;margin-top:5px;font-weight:700}
    /* ── Tela de escolha de clínica (login) — mesma linguagem da tela de perfis ── */
    #clinicaSelectScreen .csBrand{position:absolute;top:26px;left:30px;display:flex;align-items:center;gap:11px;z-index:2}
    #clinicaSelectScreen .csBrandName{font-size:18px;font-weight:800;letter-spacing:.3px;color:#fff}
    #clinicaSelectScreen .csBrandName b{color:var(--hub-emblema,#8FC0FF)}
    #clinicaSelectScreen .csClock{position:absolute;top:24px;right:32px;text-align:right;z-index:2}
    #clinicaSelectScreen .csTime{font-size:36px;font-weight:200;color:#fff;letter-spacing:2px;line-height:1}
    #clinicaSelectScreen .csDate{font-size:13px;color:rgba(255,255,255,.42);margin-top:4px;font-weight:500}
    #clinicaSelectScreen .csWrap{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}
    #clinicaSelectScreen .csEyebrow{font-size:12px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(255,255,255,.45);font-weight:600;margin-bottom:14px}
    #clinicaSelectScreen .csTitle{font-size:30px;font-weight:800;color:#fff;margin-bottom:8px;letter-spacing:.2px}
    #clinicaSelectScreen .csSub{font-size:15px;color:rgba(255,255,255,.6);margin-bottom:40px}
    #clinicaSelectScreen .csCards{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;max-width:760px}
    #clinicaSelectScreen .csCard{position:relative;width:225px;padding:28px 20px 22px;border-radius:22px;cursor:pointer;text-align:center;border:1.5px solid rgba(255,255,255,.12);background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.035));box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 10px 30px rgba(0,0,0,.24);transition:all .24s cubic-bezier(.4,0,.2,1);animation:usrCardIn .5s cubic-bezier(.4,0,.2,1) both}
    #clinicaSelectScreen .csCard:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.2);transform:translateY(-6px) scale(1.02);box-shadow:0 22px 50px rgba(0,0,0,.42),0 0 0 1px rgba(255,255,255,.1)}
    #clinicaSelectScreen .csAvatar{width:72px;height:72px;border-radius:20px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:900;color:#fff;box-shadow:0 8px 22px rgba(0,0,0,.42);transition:all .24s}
    #clinicaSelectScreen .csCard:hover .csAvatar{transform:scale(1.07)}
    #clinicaSelectScreen .csName{font-size:15px;font-weight:700;line-height:1.32;color:#fff;min-height:40px;display:flex;align-items:center;justify-content:center}
    #clinicaSelectScreen .csGo{margin-top:12px;font-size:12px;font-weight:700;color:rgba(255,255,255,.4);display:inline-flex;align-items:center;gap:5px;transition:all .2s;letter-spacing:.3px}
    #clinicaSelectScreen .csCard:hover .csGo{color:#8FC0FF;gap:8px}
    #clinicaSelectScreen .csGo svg{width:14px;height:14px}
    #clinicaSelectScreen .csFoot{margin-top:38px;text-align:center}
    #clinicaSelectScreen .csConn{font-size:12px;color:rgba(255,255,255,.4);margin-bottom:14px}
    #clinicaSelectScreen .csSwitch{display:inline-flex;align-items:center;gap:8px;color:rgba(255,255,255,.62);font-size:13px;font-weight:700;cursor:pointer;padding:10px 20px;border:1px solid rgba(255,255,255,.16);border-radius:11px;background:rgba(255,255,255,.04);transition:all .18s}
    #clinicaSelectScreen .csSwitch:hover{background:rgba(239,68,68,.16);border-color:rgba(239,68,68,.4);color:#fff}
    #clinicaSelectScreen .csSwitch svg{width:15px;height:15px}
    @media(max-width:560px){
      #clinicaSelectScreen .csTime{font-size:24px;letter-spacing:1px}
      #clinicaSelectScreen .csBrandName{display:none}
      #clinicaSelectScreen .csTitle{font-size:24px}
      #clinicaSelectScreen .csCard{width:calc(50% - 10px);min-width:150px;padding:22px 14px 18px}
      #clinicaSelectScreen .csAvatar{width:60px;height:60px;font-size:24px}
    }
    /* PIN panel */
    #usrPinPanel{
      position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
      width:100%;max-width:320px;padding:0 20px;
      animation:usrPinSlide .28s cubic-bezier(.4,0,.2,1);
      z-index:2;
    }
    #usrPinCard{
      background:rgba(8,18,42,.85);
      border:1px solid rgba(255,255,255,.10);border-radius:24px;
      padding:28px 28px 22px;
      box-shadow:0 32px 80px rgba(0,0,0,.6),0 0 0 1px rgba(31,115,224,.12);
    }
    ._up2Btn{
      border:1px solid rgba(255,255,255,.12);border-radius:11px;
      background:rgba(255,255,255,.06);color:#fff;
      font-size:22px;font-weight:700;padding:14px 0;
      cursor:pointer;transition:all .12s;width:100%;
      font-family:var(--font);
    }
    ._up2Btn:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.25)}
    ._up2Btn:active{transform:scale(.94);background:rgba(31,115,224,.3)}
    #usrClk{font-size:13px;color:rgba(255,255,255,.35);letter-spacing:.3px}
    /* Dots grandes para PIN */
    /* 877: transition:all faz o navegador vigiar TODAS as propriedades
   animaveis a cada frame. So tres mudam aqui. */
.usr2-dot{
      width:16px;height:16px;border-radius:50%;
      border:2px solid rgba(255,255,255,.3);background:transparent;
      transition:background-color .16s,border-color .16s,box-shadow .16s;
    }
    .usr2-dot.filled{background:#fff;border-color:#fff;box-shadow:0 0 8px rgba(255,255,255,.6)}
  /* Combobox custom (substitui datalist nativo) */
  .combo{position:relative;display:block}
  .combo-input{padding-right:32px}
  .combo-arrow{position:absolute;right:11px;top:0;height:100%;display:flex;align-items:center;color:var(--muted);font-size:11px;cursor:pointer;pointer-events:auto}
  .combo-pop{display:none;position:fixed;z-index:10050;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px rgba(19,41,75,.18);overflow-y:auto;padding:5px;min-width:150px}
  .combo-pop.show{display:block;animation:fluentIn .14s var(--ease)}
  .combo-item{display:block;width:100%;text-align:left;padding:9px 12px;border:none;background:transparent;color:var(--ink);font-size:13.5px;font-weight:600;font-family:var(--font);cursor:pointer;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .combo-item:hover,.combo-item.hl{background:var(--blue-soft);color:var(--blue-700)}
  .combo-empty{padding:10px 12px;color:var(--muted);font-size:12.5px}
  /* Select custom (substitui popup nativo do <select>) */
  .selx{position:relative;display:block}
  .selx-native{position:absolute!important;width:1px;height:1px;padding:0!important;margin:0;opacity:0;pointer-events:none;left:-9999px;border:0!important}
  .selx-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font-size:14px;font-weight:500;font-family:var(--font);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}
  .selx-trigger:hover{border-color:var(--blue-line)}
  .selx-trigger.open{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
  .selx-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
  .selx-label.selx-ph{color:var(--muted)}
  .selx-arrow{color:var(--muted);flex-shrink:0;transition:transform .18s var(--ease,ease),color .15s;display:grid;place-items:center}
  .selx-arrow svg{width:17px;height:17px;display:block}
  .selx-trigger.open .selx-arrow{transform:rotate(180deg);color:var(--blue)}
  .selx-pop{display:none;position:fixed;z-index:10050;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(19,41,75,.20), 0 3px 10px rgba(19,41,75,.08);overflow-y:auto;padding:6px;min-width:150px}
  .selx-pop.show{display:block;animation:fluentIn .14s var(--ease)}
  .selx-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:10px 12px;border:none;background:transparent;color:var(--ink);font-size:13.5px;font-weight:600;font-family:var(--font);cursor:pointer;border-radius:9px}
  .selx-itx{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .selx-ck{flex:none;color:var(--blue);font-weight:900}
  .selx-item:hover{background:var(--blue-soft);color:var(--blue-700)}
  .selx-item.on{background:var(--blue-soft);color:var(--blue-700);font-weight:800}
  .selx-item:disabled{opacity:.4;cursor:not-allowed}
  /* 16.93 — no celular o seletor é FOLHA DE BAIXO (prévia aprovada) */
  #selxVeu{display:none;position:fixed;inset:0;z-index:10040;background:rgba(6,13,26,.45)}
  .selx-pop.selx-folha{border-radius:18px 18px 0 0;border-left:none;border-right:none;border-bottom:none;box-shadow:0 -14px 44px rgba(10,25,60,.28);padding:10px 14px calc(12px + env(safe-area-inset-bottom,0px));animation:agfsUp .22s cubic-bezier(.34,1.1,.5,1)}
  .selx-pop.selx-folha .selx-item{padding:12px 10px;font-size:14.5px}
  .selx-alca{width:40px;height:4px;border-radius:3px;background:color-mix(in srgb,var(--ink) 16%,transparent);margin:2px auto 8px}
  .selx-sh{display:flex;align-items:center;justify-content:space-between;margin:0 2px 8px}
  .selx-sh b{font-size:14.5px;color:var(--ink)}
  .selx-shx{width:28px;height:28px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-size:15px;cursor:pointer}
  /* Filtro de profissional no header escuro */
  #dentFilter .selx-trigger{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.18);padding:9px 11px;border-radius:9px;font-weight:600}
  #dentFilter .selx-trigger:hover{border-color:rgba(255,255,255,.35)}
  #dentFilter .selx-trigger.open{border-color:rgba(255,255,255,.5);box-shadow:0 0 0 3px rgba(255,255,255,.12)}
  #dentFilter .selx-arrow{color:rgba(255,255,255,.7)}
  #dentFilter .selx-label.selx-ph{color:rgba(255,255,255,.6)}

/* 1419 — CSS do welcome-card/Primeiros Passos removido junto com o card (onboarding). */

/* ===== Crash guard (recuperação de erro de tela) ===== */
.crash-card{ max-width:440px; margin:60px auto; padding:32px 28px; text-align:center; background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:0 8px 30px rgba(19,41,75,.10); }
.crash-ico{ width:56px; height:56px; margin:0 auto 16px; border-radius:50%; display:grid; place-items:center; background:var(--amber-soft); color:var(--amber); }
.crash-ico svg{ width:28px; height:28px; }
.crash-title{ font-size:17px; font-weight:800; color:var(--ink); margin-bottom:6px; }
.crash-sub{ font-size:13.5px; color:var(--ink-2); margin-bottom:22px; line-height:1.5; }
.crash-actions{ display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }

/* ===== Novidades / Changelog ===== */
.nov-dot{ width:7px; height:7px; border-radius:50%; background:var(--red); display:inline-block; margin-left:auto; vertical-align:middle; }
.nov-btn-dot{ position:absolute; top:1px; right:1px; width:9px; height:9px; border-radius:50%; background:var(--red); border:2px solid var(--surface); pointer-events:none; }
.nov-build-foot{ padding:9px 14px; font-size:11px; color:var(--muted); cursor:pointer; border-top:1px solid var(--line); margin-top:4px; text-align:center; transition:color .15s; }
.nov-build-foot:hover{ color:var(--blue); }
.chg-winver{ text-align:center; padding:18px 16px 20px; background:linear-gradient(140deg,var(--blue-soft),var(--surface) 75%); border-radius:12px; margin-bottom:18px; border:1px solid var(--blue-line); }
.chg-logo{ font-size:21px; font-weight:900; color:var(--ink); letter-spacing:-.5px; }
.chg-logo b{ color:var(--hub-accent); font-weight:inherit; }
.chg-build{ font-size:32px; font-weight:900; color:var(--blue); letter-spacing:-1px; line-height:1.15; margin:2px 0; }
.chg-ver{ font-size:12.5px; color:var(--ink-2); font-weight:600; }
.chg-list{ display:flex; flex-direction:column; gap:18px; }
.chg-rel-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.chg-rel-build{ font-size:13px; font-weight:800; color:var(--ink); }
.chg-rel-date{ font-size:11.5px; color:var(--muted); }
.chg-rel-title{ font-size:13px; color:var(--ink-2); margin-bottom:11px; font-weight:600; }
.chg-changes{ display:flex; flex-direction:column; gap:9px; }
.chg-item{ display:flex; align-items:flex-start; gap:9px; }
.chg-tag{ flex:none; font-size:10.5px; font-weight:700; padding:2px 9px; border-radius:99px; white-space:nowrap; margin-top:1px; }
.chg-txt{ font-size:13px; color:var(--ink); line-height:1.45; }

/* ===== Central de Ajuda ===== */
.ajuda-hero{ text-align:center; padding:16px 16px 18px; background:linear-gradient(140deg, var(--blue-soft), var(--surface) 82%); border:1px solid var(--blue-line); border-radius:14px; margin-bottom:16px; }
.ajuda-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(258px,1fr)); gap:12px; }
.ajuda-card{ display:flex; gap:12px; align-items:flex-start; padding:14px; border:1px solid var(--line); border-radius:14px; background:var(--surface); cursor:pointer; transition:transform .12s ease, box-shadow .15s ease, border-color .15s ease; text-align:left; font-family:inherit; width:100%; }
.ajuda-card:hover{ transform:translateY(-2px); box-shadow:0 10px 24px -10px rgba(19,41,75,.28); border-color:var(--blue-line); }
.ajuda-card:active{ transform:translateY(0); }
.ajuda-ico{ width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex:none; }
.ajuda-ico svg{ width:22px; height:22px; }
.ajuda-card h4{ margin:0 0 3px; font-size:14px; font-weight:800; color:var(--ink); }
.ajuda-card p{ margin:0; font-size:12.5px; color:var(--ink-2); line-height:1.45; }

/* ===== Fluxo de atendimento (presenca) no card da agenda ===== */
.gw-card.is-chegou{ box-shadow:0 0 0 2px #16A34A inset, 0 2px 8px rgba(22,163,74,.22); }
.gw-card.is-atendendo{ box-shadow:0 0 0 2px #2563EB inset, 0 3px 12px rgba(37,99,235,.30); animation:ohPresPulse 2s ease-in-out infinite; }
@keyframes ohPresPulse{ 0%,100%{ box-shadow:0 0 0 2px #2563EB inset, 0 2px 8px rgba(37,99,235,.22); } 50%{ box-shadow:0 0 0 2px #2563EB inset, 0 3px 16px rgba(37,99,235,.5); } }

/* ===== Agenda · Quadro (Kanban) ===== */
.kb-toggle{ display:inline-flex; align-items:center; gap:6px; padding:8px 12px; border-radius:10px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-size:13px; font-weight:700; font-family:inherit; cursor:pointer; white-space:nowrap; transition:all .12s; flex:none; }
.kb-toggle svg{ width:17px; height:17px; }
.kb-toggle:hover{ border-color:var(--blue); color:var(--blue-700); background:var(--blue-soft); }
.kb-toggle.on{ background:linear-gradient(180deg,#3B8CF0,#1F73E0); border-color:var(--blue-700); color:#fff; box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 8px rgba(31,115,224,.32); }

.kb-wrap{ flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; padding:14px 14px 0; }
.kb-resumo{ flex:none; display:flex; gap:10px; margin-bottom:14px; }
/* 1471 — o cartão do kanban entra na linguagem da prévia: FILETE à esquerda
   (como os .stat informativos), não mais a barra grossa no topo.
   1472 — o filete vira ::before RETO (a borda acompanhava o canto e virava colchete). */
.kb-stat{ position:relative; overflow:hidden; flex:1; min-width:0; background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:9px 13px 9px 16px; }
.kb-stat::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--kbc,var(--line)); }
.kb-stat-num{ font-size:21px; font-weight:800; line-height:1; }
.kb-stat-lbl{ font-size:11px; color:var(--ink-2); font-weight:600; margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kb-board{ flex:1; min-height:0; display:flex; gap:12px; align-items:stretch; overflow-x:auto; overflow-y:hidden; padding-bottom:14px; }
.kb-col{ flex:1 0 250px; min-width:240px; max-width:360px; display:flex; flex-direction:column; min-height:0; background:var(--blue-soft); border:1px solid var(--line); border-radius:14px; }
.kb-col-head{ flex:none; display:flex; align-items:center; gap:8px; padding:11px 13px; border-bottom:1px solid var(--line); }
.kb-col-ico{ width:27px; height:27px; border-radius:8px; display:flex; align-items:center; justify-content:center; flex:none; }
.kb-col-ico svg{ width:15px; height:15px; }
.kb-col-tit{ font-size:13px; font-weight:800; color:var(--ink); flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kb-col-cnt{ font-size:12px; font-weight:800; border-radius:20px; min-width:23px; text-align:center; padding:1px 7px; flex:none; }
.kb-col-body{ flex:1; min-height:0; overflow-y:auto; padding:10px; display:flex; flex-direction:column; gap:9px; }
.kb-vazio{ text-align:center; color:var(--muted); font-size:12.5px; padding:20px 0; opacity:.7; }
.kb-card{ background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--line); border-radius:11px; padding:10px 11px; cursor:pointer; transition:transform .1s, box-shadow .15s; }
.kb-card:hover{ transform:translateY(-1px); box-shadow:0 7px 18px -9px rgba(19,41,75,.32); }
.kb-card.is-inativo{ opacity:.55; filter:grayscale(.35); }
.kb-card[draggable="true"]{ cursor:grab; }
.kb-card.kb-dragging{ opacity:.45; cursor:grabbing; transform:scale(.98); }
.kb-col-body.kb-over{ background:color-mix(in srgb, var(--blue) 8%, var(--surface)); outline:2px dashed color-mix(in srgb, var(--blue) 45%, transparent); outline-offset:-4px; border-radius:10px; }
.kb-card-top{ display:flex; align-items:center; gap:7px; margin-bottom:4px; }
.kb-hora{ font-size:12px; font-weight:800; color:var(--ink-2); }
.kb-tag{ font-size:10px; font-weight:800; border-radius:5px; padding:1px 6px; }
.kb-wa{ margin-left:auto!important; padding:2px 7px!important; min-height:22px!important; min-width:22px!important; }
.kb-nome{ font-size:13.5px; font-weight:700; color:var(--ink); line-height:1.25; }
.kb-proc{ font-size:11.5px; color:var(--ink-2); margin-top:2px; line-height:1.3; }
.kb-acoes{ margin-top:9px; }
.kb-act{ width:100%; display:inline-flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:var(--c); border:1px solid var(--line); border-radius:9px; padding:7px; cursor:pointer; font-family:inherit; transition:all .12s; }
.kb-act:hover{ background:var(--c)!important; color:#fff!important; border-color:var(--c)!important; }
@media(max-width:640px){ .kb-toggle-lbl{ display:none; } .kb-toggle{ padding:0; width:38px; height:38px; justify-content:center; } .kb-wrap{ padding:10px 10px 0; } .kb-resumo{ gap:7px; } .kb-stat{ padding:8px 9px; } .kb-stat-num{ font-size:18px; } }

/* ===== Linha-fantasma do clique-pra-agendar (planner) ===== */
.gw-ghost{ position:absolute; left:0; right:0; display:none; height:0; border-top:2px dashed var(--blue); z-index:1; pointer-events:none; }
.gw-ghost-lbl{ position:absolute; left:5px; top:-10px; background:var(--blue); color:#fff; font-size:9.5px; font-weight:800; padding:1px 8px; border-radius:7px; box-shadow:0 2px 7px rgba(31,115,224,.42); white-space:nowrap; letter-spacing:.2px; }
/* (1)+(2) Feedback do arrasto no PC */
.gw-col-alvo{ background:rgba(31,115,224,.07)!important; box-shadow:inset 3px 0 0 var(--blue); }
.gw-drag-ghost{ position:absolute; left:2px; right:2px; border:2px dashed var(--blue); background:rgba(31,115,224,.10); border-radius:8px; z-index:6; pointer-events:none; box-sizing:border-box; }
.gw-drag-tip{ pointer-events:none; position:fixed; z-index:10000; background:var(--blue); color:#fff; font-size:12.5px; font-weight:800; padding:4px 11px; border-radius:9px; box-shadow:0 5px 16px rgba(31,115,224,.45); pointer-events:none; white-space:nowrap; letter-spacing:.3px; }
/* Estado de dia vazio (acolhedor + atalhos) */
.dia-vazio{ max-width:420px; margin:10px auto 26px; padding:20px 18px 16px; text-align:center; }
.dv-ilu{ width:104px; height:104px; margin:2px auto 14px; border-radius:26px; display:flex; align-items:center; justify-content:center; filter:drop-shadow(0 12px 24px rgba(11,31,75,.45)); }
.dv-ilu svg{ width:104px; height:104px; border-radius:26px; }
.dv-tit{ font-size:17px; font-weight:800; color:var(--ink); }
.dv-sub{ font-size:13px; color:var(--muted); margin:5px auto 0; line-height:1.45; max-width:300px; }
.dv-lbl{ font-size:10.5px; font-weight:800; letter-spacing:.6px; color:var(--muted); margin:18px 2px 9px; text-align:left; }
.dv-acts{ display:flex; flex-direction:column; gap:9px; }
.dv-act{ display:flex; align-items:center; gap:11px; width:100%; text-align:left; background:var(--surface); border:1px solid var(--line); border-radius:13px; padding:11px 12px; cursor:pointer; font-family:inherit; transition:all .14s; }
.dv-act:hover{ border-color:var(--blue-line); transform:translateY(-1px); box-shadow:0 6px 16px -8px rgba(31,115,224,.3); }
.dv-act-primaria{ border-color:var(--blue-line); background:linear-gradient(180deg,var(--blue-soft),var(--surface)); }
.dv-act-primaria b{ color:var(--blue-700); }
.dv-act:active{ transform:scale(.99); }
.dv-act-azul{ background:var(--blue-soft); border-color:var(--blue-line); }
.dv-ic{ width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex:none; }
.dv-ic svg{ width:19px; height:19px; }
.dv-ic-vermelho{ background:rgba(216,57,43,.12); color:var(--red); }
.dv-ic-verde{ background:rgba(22,184,166,.14); color:#16B8A6; }
.dv-tx{ flex:1; min-width:0; }
.dv-tx b{ display:block; font-size:13px; font-weight:700; color:var(--ink); }
.dv-tx i{ display:block; font-size:11px; font-style:normal; color:var(--muted); margin-top:1px; }
.dv-badge{ display:inline-block; background:var(--red); color:#fff; font-size:9px; font-weight:800; padding:1px 6px; border-radius:99px; margin-left:3px; vertical-align:1px; }
.dv-chev{ width:17px; height:17px; color:var(--muted); opacity:.55; flex:none; }
.dv-foot{ font-size:11px; color:var(--muted); opacity:.7; margin-top:15px; }

/* ===== Controle unificado de Situação e fluxo (stepper) ===== */
.est-stepper{ display:flex; gap:0; margin:2px 0; }
.est-step{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; gap:5px; background:none; border:none; cursor:pointer; padding:0 1px; font-family:inherit; position:relative; }
.est-step:not(:first-child)::before{ content:''; position:absolute; top:13px; left:-50%; width:100%; height:2px; background:#E2E8F0; z-index:0; }
.est-step.on:not(:first-child)::before{ background:var(--c); }
.est-node{ width:28px; height:28px; border-radius:50%; border:2px solid; display:flex; align-items:center; justify-content:center; position:relative; z-index:1; transition:transform .15s, box-shadow .15s; }
.est-node svg{ width:15px; height:15px; }
.est-step.now .est-node{ transform:scale(1.06); }
.est-step:hover .est-node{ transform:scale(1.1); }
.est-lbl{ font-size:9.5px; font-weight:700; text-align:center; line-height:1.15; }
.est-encaixe{ display:flex; align-items:center; gap:9px; margin-top:12px; padding:10px 12px; border-radius:11px; background:color-mix(in srgb,#147C8B 10%,var(--surface)); border:1px solid color-mix(in srgb,#147C8B 32%,var(--line)); }
.est-encaixe-ic{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:8px; background:#147C8B; color:#fff; font-size:13px; flex:none; }
.est-encaixe b{ display:block; font-size:13px; font-weight:800; color:#0F5C68; }
.est-encaixe span{ font-size:11px; color:var(--muted); font-weight:600; }
.est-chips{ display:flex; gap:7px; margin-top:12px; }
.est-chip{ flex:1; padding:7px 6px; border-radius:9px; border:1.5px solid; background:var(--surface); font-size:11.5px; font-weight:700; cursor:pointer; font-family:inherit; transition:all .12s; }
.est-chip:hover{ filter:brightness(.97); }
.est-cta{ width:100%; margin-top:12px; display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px; border-radius:10px; border:1px dashed var(--blue); background:var(--blue-soft); color:var(--blue-700); font-size:12.5px; font-weight:700; cursor:pointer; font-family:inherit; transition:all .12s; }
.est-cta:hover{ background:var(--blue); color:#fff; border-style:solid; }

/* ===== Legenda + filtro rápido por dentista (topo da agenda) ===== */
/* ⚰️ 1489 — a fileira .dl-bar/.dl-chip saiu com o dentLegendaFiltro:
   o filtro de dentistas do celular agora é o menu suspenso da barra. */

/* ===== Resumo do fluxo de hoje (painel) ===== */
.pf-bar{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0 0 16px; }
/* 1472 — PRÉVIA 7 APROVADA: o fluxo do dia vira o card de FILETE RETO da prévia —
   deitado (ícone colorido à esquerda, número e rótulo), filete ::before de 4px
   que não vira "colchete" acompanhando o canto. */
.pf-card{ position:relative; overflow:hidden; display:flex; flex-direction:row; align-items:center; gap:12px; padding:12px 14px 12px 17px; border-radius:14px; border:1px solid var(--line); background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--blue) 3%,var(--surface))); cursor:pointer; font-family:inherit; transition:all .14s; text-align:left; }
.pf-card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--c,var(--blue)); }
.pf-card:hover{ border-color:var(--blue-line); box-shadow:0 4px 14px rgba(19,41,75,.08); }
.pf-ic{ width:34px; height:34px; border-radius:10px; display:flex; align-items:center; justify-content:center; background:color-mix(in srgb,var(--c,var(--blue)) 10%,var(--surface)); flex:none; }
.pf-ic svg{ width:17px; height:17px; }
.pf-tx{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.pf-n{ font-size:22px; font-weight:800; color:var(--ink); line-height:1; font-family:var(--display); }
.pf-l{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:640px){ .pf-bar{ gap:7px; } .pf-card{ padding:10px 8px 10px 13px; gap:8px; } .pf-n{ font-size:19px; } .pf-l{ font-size:9.5px; } .pf-ic{ width:28px; height:28px; } }

/* ===== Arrastar / redimensionar cards ===== */
.gw-dragging{ box-shadow:0 14px 32px rgba(0,0,0,.30)!important; }
.gw-card::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:8px; cursor:ns-resize; }
.gw-card:hover::after{ background:rgba(0,0,0,.045); }  /* 1468: flat */
.gw-act{ display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
@media (max-width:640px){ .gw-act-lbl{ display:none; } }

/* ===== Lista de espera ===== */
.esp-wrap{ display:flex; flex-direction:column; gap:14px; }
.esp-list{ display:flex; flex-direction:column; gap:8px; max-height:46vh; overflow-y:auto; }
.esp-item{ display:flex; align-items:center; gap:10px; padding:11px 13px; border-radius:12px; border:1px solid var(--line); background:var(--surface); }
.esp-info{ flex:1; min-width:0; }
.esp-nome{ font-size:14px; font-weight:700; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.esp-meta{ font-size:11.5px; color:var(--muted); display:flex; align-items:center; gap:5px; flex-wrap:wrap; margin-top:2px; }
.esp-sep{ opacity:.5; }
.esp-acts{ display:flex; gap:6px; flex-shrink:0; }
.esp-btn{ display:inline-flex; align-items:center; gap:5px; padding:7px 11px; border-radius:9px; border:1px solid var(--line); background:var(--surface); font-size:12px; font-weight:700; cursor:pointer; font-family:inherit; transition:all .12s; }
.esp-btn svg{ width:14px; height:14px; }
.esp-btn.go{ color:var(--blue-700); border-color:var(--blue); background:var(--blue-soft); }
.esp-btn.go:hover{ background:var(--blue); color:#fff; }
.esp-btn.del{ padding:7px 9px; color:var(--muted); }
.esp-btn.del:hover{ color:var(--red); border-color:var(--red); }
.esp-form{ border-top:1px solid var(--line); padding-top:12px; }
.esp-form-row{ display:flex; gap:8px; }
.esp-form input{ flex:1; min-width:0; padding:10px 12px; border-radius:10px; border:1px solid var(--line); background:var(--surface); font-size:13.5px; font-family:inherit; color:var(--ink); margin-bottom:8px; }
.esp-form input:focus{ outline:none; border-color:var(--blue); }
.esp-vazio{ text-align:center; padding:22px 12px; color:var(--muted); font-size:13px; display:flex; flex-direction:column; align-items:center; gap:10px; }
.esp-tel{ font-weight:600; } .esp-obs{ font-style:italic; }

/* ===== Glass-lite na topbar (destaque ao título, descrição e ícone da guia) =====
   Mesmo efeito do emblema do Impulse: gradiente translúcido + borda suave + brilho
   superior + texto com gradiente. Sem backdrop-filter (não pesa). */
.topbar-card{
  display:flex; align-items:center; gap:11px; min-width:0; flex:1;
  padding:7px 15px 7px 8px; border-radius:15px;
  background:linear-gradient(135deg, rgba(31,115,224,.08) 0%, rgba(31,115,224,.025) 55%, rgba(255,255,255,0) 100%);
  border:1px solid rgba(31,115,224,.13);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65), 0 1px 4px rgba(31,115,224,.05);
}
.topbar-ic{
  width:42px; height:42px; border-radius:12px; flex:none;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, color-mix(in srgb,var(--blue),#fff 22%) 0%, var(--blue) 100%);
  box-shadow:0 4px 12px rgba(var(--blue-rgb,31,115,224),.30), inset 0 1px 0 rgba(255,255,255,.3);
}
.topbar-ic svg{ width:23px; height:23px; color:#fff; stroke:#fff; }
.topbar-card h2{
  background:linear-gradient(110deg, var(--ink) 35%, var(--blue-700) 130%);
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
}
.topbar-card #pageSub{ margin-top:1px; }
@media (max-width:640px){
  .topbar-card{ gap:9px; padding:6px 11px 6px 6px; border-radius:13px; }
  .topbar-ic{ width:34px; height:34px; border-radius:10px; }
  .topbar-ic svg{ width:19px; height:19px; }
}

/* ===== Glass-lite também nos botões de ação da topbar (busca, tema, menu) =====
   Combina com o card de glass do título: moldura sutil + brilho, sem peso. */
.topbar-act{
  color:var(--muted);
  background:linear-gradient(135deg, rgba(31,115,224,.06) 0%, rgba(31,115,224,.015) 100%);
  border:1px solid rgba(31,115,224,.11);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55);
}
.topbar-act:hover{ background:var(--blue-soft); border-color:rgba(31,115,224,.30); color:var(--blue-700); }

/* 929/930 — ÍCONES DA TOPBAR COM CONTRASTE GARANTIDO.
   Os ícones (busca, tarefas, temas, menu) usam color:var(--blue) inline. Quando
   a cor da marca OU a cor de zona da topbar é clara, eles somem sobre a topbar
   clara. --blue-ico é a mesma cor escurecida só o quanto for preciso p/
   contraste >=3.5 (gerado em _brandVarsCss, então vale para marca, época E zona
   de cor). No tema padrão --blue-ico == --blue, nada muda. */
.topbar .topbar-act[style*="--blue"], .topbar #tarefasBtnTop, .topbar #buscaBtn, .topbar #temasBtn, .topbar #mainMenuBtn{ color:var(--blue-ico,var(--blue))!important; }
.topbar .topbar-act:hover{ color:var(--blue-700)!important; }
/* 930 — botões de ação por aba (Financeiro, Histórico…) usam fundo com
   gradiente da cor do tema + texto branco. Com cor clara o branco some.
   --ico-on-blue é branco ou escuro conforme a luminância (nada muda nos
   temas de cor escura, onde --ico-on-blue continua branco). */
#pageAction .btn-act[style*="linear-gradient"]{ color:var(--ico-on-blue,#fff)!important; }
#pageAction .btn-act[style*="linear-gradient"] svg{ color:var(--ico-on-blue,#fff)!important; }

/* ===== Topbar INTEIRA como uma única superfície glass-lite (coerente, sem blur) =====
   A barra deixa de ser superfície sólida e vira o vidro; o card do título e as molduras
   dos botões somem (a barra É o vidro agora). Uma superfície só = mais leve. */
.topbar{
  background:linear-gradient(180deg, rgba(31,115,224,.07) 0%, rgba(31,115,224,.02) 100%), var(--surface) !important;
  border:1px solid rgba(31,115,224,.13) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 2px 12px rgba(31,115,224,.06) !important;
}
/* Remove o "vidro dentro do vidro": card e botões ficam sem moldura própria */
.topbar-card{ background:none; border:none; box-shadow:none; padding:0; }
.topbar-act{ background:none; border:none; box-shadow:none; }
.topbar-act:hover{ background:rgba(31,115,224,.10); }

/* ===== Ícones de ação COLORIDOS (resgatando o charme dos emojis da 1ª prévia) =====
   Os SVGs usam currentColor, então basta colorir cada botão por ID. Lupa/menu azul,
   tema (sol/lua) em âmbar/dourado — como o 🌙 amarelinho do emoji. */
#mainMenuBtn{ color:var(--blue); }

/* ===== Botão de ação da topbar (#pageAction): vira ícone limpo, sem o "2º quadrado azul" =====
   O único destaque colorido em caixa passa a ser o ícone da guia (à esquerda). */
#pageAction .btn, #pageAction .btn-act{
  background:none; border:none; box-shadow:none;
  color:var(--blue);
  padding:7px!important; min-width:0; min-height:0; border-radius:9px;
}
#pageAction .btn svg, #pageAction .btn-act svg{ width:19px; height:19px; }
#pageAction .btn:hover, #pageAction .btn-act:hover{ background:rgba(31,115,224,.10); box-shadow:none; transform:none; }

/* ===== Emojis reais nos ícones de sistema (lupa 🔍, sol/lua ☀️🌙) ===== */

/* Menu = três pontinhos ⋯ (igual ao preview aprovado), em tom suave */
.tb-dots{ font-size:23px; color:var(--muted); }

/* ===== Molduras sutis nos ícones de ação da topbar (divisão/exibição do print) =====
   Só borda + fundo translúcido + sombra mínima. SEM backdrop-filter/blur => custo zero. */
.topbar-act, #pageAction .btn, #pageAction .btn-act{
  border:none;
  background:none;
  border-radius:9px;
  padding:7px!important;
  box-shadow:none;
}
.topbar-act:hover, #pageAction .btn:hover, #pageAction .btn-act:hover{
  background:rgba(var(--blue-rgb,31,115,224),.10); border-color:transparent; transform:none;
  box-shadow:none;
}

/* ============================================================
   LAYOUT DO PRINT + FAB DE ADICIONAR (Build 104)
   ============================================================ */

/* (1) Barra superior transparente — quem dá o "vidro" é o cartão do título */
.topbar{ background:transparent!important; border:none!important; box-shadow:none!important; padding:0!important; }

/* (2) Cartão de vidro no título (ícone + nome juntos) — valores do print aprovado */
.topbar-card{
  background:linear-gradient(135deg,rgba(var(--blue-rgb,31,115,224),.10) 0%,rgba(var(--blue-rgb,31,115,224),.03) 55%,transparent 100%)!important;
  border:1px solid rgba(var(--blue-rgb,31,115,224),.18)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 1px 4px rgba(var(--blue-rgb,31,115,224),.07)!important;
  padding:7px 15px 7px 8px!important;
}

/* (3) MOBILE: some os botões de "adicionar" da topbar (foco no conteúdo; usa-se o FAB) */
@media(max-width:880px){ #pageAction{ display:none!important; } }
/* Mobile: aproxima os botões de ação da barra do topo (vão 4px → 2px),
   liberando ~10px de folga para o título da página respirar. Só o VÃO
   entre os botões muda — o respiro interno (padding) de cada um fica
   intacto, então a área de toque continua a mesma. Vence o gap inline
   via !important. No computador (acima de 880px) nada se altera. */
@media(max-width:880px){ #topbarAcoes{ gap:2px!important; } }

/* (4) FAB de adicionar: rotação do "+" ao abrir + menu de opções (reusa .agenda-dial-item) */
#fabAdd svg{ transition:transform .2s var(--ease); }
#fabAdd.fab-add-open svg{ transform:rotate(135deg); }
#fabAddItems{
  position:fixed; z-index:9500; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-lg); box-shadow:var(--sh3); min-width:212px; max-width:calc(100vw - 16px);
  overflow:hidden; animation:fluentIn .16s var(--ease);
}

/* ============================================================
   MOBILE: ícones SVG nas ações da topbar (no PC ficam os emoji que você curtiu)
   ============================================================ */
.tb-ico{ display:none; }
.tb-ico svg{ width:18px; height:18px; display:block; }
/* PC: ícones glossy (lupa de vidro + sol/lua 3D). Mobile mantém o traço de linha. */
.tb-ico-pc{ display:flex; align-items:center; justify-content:center; }
.tb-ico-pc svg{ width:22px; height:22px; display:block; }
@media(max-width:880px){
  .topbar-act .tb-ico-pc{ display:none!important; }
  .topbar-act .tb-ico{ display:flex; align-items:center; justify-content:center; color:var(--blue); }
}

/* ============================================================
   PC: botões "Novo X" da topbar — vibrantes, maiores e chamativos
   (no mobile o #pageAction fica oculto, então isto é só desktop)
   ============================================================ */
#pageAction .act-protese{ background:linear-gradient(135deg,var(--blue),color-mix(in srgb,var(--blue),#000 20%))!important; color:#fff!important; border:none!important; box-shadow:0 3px 14px rgba(var(--blue-rgb,31,115,224),.42)!important; }
#pageAction .act-campanha{ background:linear-gradient(135deg,var(--blue),color-mix(in srgb,var(--blue),#000 20%))!important; color:#fff!important; border:none!important; box-shadow:0 3px 14px rgba(var(--blue-rgb,31,115,224),.42)!important; }
#pageAction .act-estoque{ background:linear-gradient(135deg,var(--blue),color-mix(in srgb,var(--blue),#000 20%))!important; color:#fff!important; border:none!important; box-shadow:0 3px 14px rgba(var(--blue-rgb,31,115,224),.42)!important; }

@media(min-width:881px){
  #pageAction .btn-act{ padding:10px 11px!important; transition:transform .15s var(--ease), box-shadow .15s, filter .15s!important; }
  #pageAction .btn-act svg{ width:21px!important; height:21px!important; }
  #pageAction .btn-act:hover{ transform:translateY(-2px) scale(1.06); filter:saturate(1.18) brightness(1.06); }
  #pageAction .btn-act:active{ transform:scale(.97); }
}

/* 1341 — o cabeçalho de ação no container (do 1337) foi revertido a pedido:
   a ação volta a morar na topbar. */

/* ===== Agenda mobile: rótulos visíveis nos botões da toolbar (clareza — Encaixe/Espera/Quadro deixam de ser ícones soltos) ===== */
@media(max-width:640px){
  /* Agenda no celular: barra em UMA linha — botões compactos, só ícone */
  .gw-toolbar{ gap:4px; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; justify-content:flex-start; scrollbar-width:none; }
  .gw-toolbar::-webkit-scrollbar{ display:none; }
  .gw-toolbar .seg{ flex:none; }
  .gw-toolbar .gw-nav, .gw-toolbar .gw-actions{ gap:4px; }
  .gw-toolbar .gw-act-lbl, .gw-toolbar .kb-toggle-lbl, .gw-hoje-lbl{ display:none!important; }
  .gw-toolbar .nav-day{ width:34px; height:30px; min-width:34px; }
  .gw-toolbar .nav-day svg{ width:18px; height:18px; }
  .gw-toolbar .gw-act, .gw-toolbar .btn.ghost.sm{ width:34px; height:30px; padding:0!important; justify-content:center; flex:none; }
  .gw-toolbar .kb-toggle{ width:34px!important; height:30px!important; padding:0!important; }
  .gw-toolbar .dp-btn{ padding:5px 8px; }
  .gw-toolbar .dp-btn span{ font-size:12px; }
}

/* ===== Linha do tempo do tratamento (sessões) ===== */
.trat-wrap{display:flex;flex-direction:column}
.trat-ses-btn{display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:4px 9px;font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.trat-ses-btn:hover{background:var(--blue-soft);color:var(--blue-700);border-color:var(--blue-700)}
.trat-tl{position:relative;padding:10px 18px 14px;background:var(--bg);border-radius:0 0 12px 12px;margin:-4px 0 8px}
.trat-tl::before{content:'';position:absolute;left:31px;top:18px;bottom:18px;width:2px;background:var(--line)}
.trat-tl-item{display:flex;gap:12px;position:relative;padding:6px 0}
.trat-tl-dot{flex:none;width:28px;height:28px;border-radius:50%;background:var(--blue-soft);color:var(--blue-700);font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;z-index:1;border:2px solid var(--card)}
.trat-tl-body{flex:1;min-width:0;padding-top:3px}
.trat-tl-head{font-size:12.5px;font-weight:800;color:var(--ink)}
.trat-tl-date{font-weight:600;color:var(--ink-2)}
.trat-tl-procs{font-size:11.5px;color:var(--blue-700);font-weight:700;margin-top:2px}
.trat-tl-note{font-size:12px;color:var(--ink-2);line-height:1.55;margin-top:3px;white-space:pre-wrap}
.tf-esp{font-size:12px;font-weight:600;padding:5px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);cursor:pointer;max-width:210px}
.tf-esp:focus{outline:none;border-color:var(--blue)}
/* 939 — Cards da ficha do paciente empilhados, um abaixo do outro.
   Antes: grid de 336px fixos + o resto. Com odontograma, tabelas e painéis
   largos, as duas colunas se espremiam e chegavam a se sobrepor. Agora cada
   card ocupa a largura inteira. A ordem segue a que o app já usava no celular
   (vg-main primeiro), então computador e celular mostram a mesma sequência —
   e os alertas de saúde continuam no cabeçalho fixo da ficha, acima das abas. */
.ficha-vg{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}
.ficha-vg .vg-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.ficha-vg .vg-main{min-width:0;order:-1}
.ficha-row{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start;margin-bottom:18px}
.ficha-row > .fr-cell{flex:1 1 340px;min-width:0}
.ficha-row > .fr-cell > *{margin-bottom:0 !important}
.anam-grid{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow:auto;padding:2px}
.anam-opt{display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;transition:border-color .12s,background .12s;text-align:left}
.anam-opt:hover{border-color:var(--blue);background:var(--blue-soft)}
.anam-dot{width:13px;height:13px;border-radius:4px;flex:none}
.ficha-trilho{position:sticky;top:8px;z-index:40;display:flex;gap:6px;overflow-x:auto;padding:6px;margin:2px 0 16px;-webkit-overflow-scrolling:touch;background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh1)}
.ficha-trilho::-webkit-scrollbar{height:0}

/* ===== Estética de cartões (estilo Codental) na ficha do paciente ===== */
.ficha-pac .panel{border:1px solid #ECF1F7;border-radius:18px;box-shadow:0 1px 2px rgba(19,41,75,.04),0 8px 26px rgba(19,41,75,.06)}
.ficha-pac .panel-head h3 svg{opacity:.72}
.ficha-pac .panel-head h3{letter-spacing:-.15px}

/* ===== Cabeçalho da ficha: dados + financeiro lado a lado ===== */
.ficha-cab{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start;margin-bottom:18px}
.ficha-cab>.panel{margin-bottom:0}
@media(max-width:980px){.ficha-cab{grid-template-columns:1fr}}

.ficha-pac .vg-main{display:flex;flex-direction:column;gap:18px}
.ficha-pac .vg-side>*{margin-bottom:0!important}
.ficha-pac .vg-main>*{margin-bottom:0!important}
.ficha-pac .ficha-vg + .ficha-vg{margin-top:18px}

/* ===== Personalização de categorias/procedimentos (build 186) ===== */
.cfgb{ font-size:10px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; padding:2px 7px; border-radius:6px; white-space:nowrap; }
.cfgb-pad{ background:#EEF2F6; color:#5B7088; }
.cfgb-ed{ background:var(--blue-soft); color:var(--blue-700); }
.cfgb-seu{ background:#E2F4EE; color:#0FA47A; }
.cfgIt-sec{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--ink-2); margin:14px 2px 6px; padding-top:8px; border-top:1px solid var(--line); }
/* Configurações — modo compacto e centrado (menos "espalhado e esticado") */
.cfg-wrap{ max-width:1020px; margin:0 auto; }
.cfg-wrap .field{ margin-bottom:11px; }
.cfg-wrap .field label{ margin-bottom:4px; font-size:12px; }
.cfg-wrap .field input,.cfg-wrap .field select,.cfg-wrap .field textarea{ padding:9px 11px; }
.cfg-wrap .help{ font-size:12px; }
.cfg-wrap .hint{ font-size:11.5px; }
.cfg-wrap .seg button{ padding:7px 11px; font-size:12px; }
.cfg-wrap .panel-head{ padding:12px 16px; }
.cfg-wrap .row{ padding:10px 16px; }
.cfg-wrap .cfg-seg{ display:flex; flex-wrap:wrap; justify-content:center; gap:3px; width:max-content; max-width:100%; margin-left:auto; margin-right:auto; }
.cfg-wrap .cfg-seg button{ flex:0 0 auto; }
.cfg-wrap .cfg-seg-sub button{ padding:6px 10px; font-size:11.5px; }
.cfgIt-sec:first-child{ border-top:none; padding-top:0; margin-top:4px; }
.cfgIt-b{ width:30px; height:30px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; }
.cfgIt-b:hover{ border-color:var(--blue-line); color:var(--blue-700); }
.cfgIt-b svg{ width:15px; height:15px; }
.cfgIt-b.cfgIt-off{ color:var(--muted); background:#F7FAFE; }
.cfgIt-b.cfgIt-del:hover{ border-color:#F3C9C2; color:#C0392B; background:#FDF1EF; }
.cfgMenuIco{ width:30px; height:30px; border-radius:8px; background:var(--blue-soft); color:var(--blue-700); display:flex; align-items:center; justify-content:center; flex:none; }
.cfgMenuIco svg{ width:16px; height:16px; }
.cfgIt-b[disabled]{ opacity:.3; cursor:default; }
.pe-chips{ display:flex; gap:7px; overflow-x:auto; padding:2px 2px 10px; margin-bottom:4px; scrollbar-width:thin; }
.pe-chip{ display:inline-flex; align-items:center; gap:7px; white-space:nowrap; border:1px solid var(--line); background:var(--surface); border-radius:999px; padding:7px 13px; font-family:inherit; font-size:13px; font-weight:700; color:var(--ink-2); cursor:pointer; flex:none; transition:border-color .12s, background .12s; }
.pe-chip:hover{ border-color:var(--blue-line); background:var(--blue-soft); }
.pe-chip.on{ border-color:var(--blue); background:var(--blue-soft); color:var(--blue-700); box-shadow:0 0 0 1px var(--blue); }
.pe-dot{ width:11px; height:11px; border-radius:4px; flex:none; }
.pe-ficha{ font-size:9px; font-weight:800; color:var(--ink-2); background:rgba(0,0,0,.05); padding:1px 5px; border-radius:20px; text-transform:uppercase; letter-spacing:.2px; }
.pe-mark{ width:6px; height:6px; border-radius:50%; background:var(--blue); flex:none; }
.pe-cnt{ font-size:11.5px; color:var(--muted); font-weight:600; margin:8px 2px 4px; }
.pe-nm{ font-size:13.5px; font-weight:700; color:var(--ink); }
.pe-off{ opacity:.55; }
.pe-off .pe-nm{ text-decoration:line-through; text-decoration-color:#C9B0AC; }
.pe-boff{ background:#F2EAEA; color:#9A6A63; }
.pe-precoff{ font-size:13px; color:var(--muted); text-align:right; }

/* ===== Modelos de documento editáveis (build 189) ===== */
.doc-card{ border:1px solid var(--line); border-radius:13px; padding:13px; margin-bottom:14px; background:var(--surface); }
.doc-card-h{ display:flex; align-items:center; gap:9px; margin-bottom:9px; }
.doc-card-t{ font-weight:800; font-size:14.5px; }
.doc-vars{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.doc-vars .var{ font-family:ui-monospace,Menlo,monospace; font-size:11.5px; background:#EEF4FC; color:var(--blue-700); border:1px solid var(--blue-line); border-radius:7px; padding:4px 8px; cursor:pointer; font-weight:600; }
.doc-vars .var:hover{ background:var(--blue); color:#fff; }
.doc-ta{ width:100%; min-height:96px; border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-family:inherit; font-size:13.5px; line-height:1.55; resize:vertical; color:var(--ink); }
.doc-ta:focus{ outline:none; border-color:var(--blue-line); }
.doc-prev-lbl{ font-size:10.5px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--ink-2); margin:11px 0 5px; }
.doc-prev{ background:#FAFCFF; border:1px solid var(--line); border-radius:10px; padding:11px 13px; font-size:12.5px; line-height:1.6; color:var(--ink-2); white-space:pre-wrap; }

/* ===== Régua de relacionamento (build 191) ===== */
.regua-term{ display:grid; grid-template-columns:repeat(5,1fr); gap:9px; margin-bottom:6px; }
@media (max-width:760px){ .regua-term{ grid-template-columns:repeat(2,1fr); } }
.regua-faixa{ text-align:left; border:1.5px solid var(--line); background:var(--surface); border-radius:13px; padding:11px 12px; cursor:pointer; font-family:inherit; display:flex; flex-direction:column; gap:5px; transition:transform .14s, box-shadow .14s, border-color .14s; }
.regua-faixa:hover{ transform:translateY(-2px); box-shadow:0 6px 16px -8px rgba(19,41,75,.28); }
.regua-faixa.on{ border-color:var(--rc); background:var(--rb); box-shadow:0 4px 14px -8px var(--rc); }
.regua-faixa .rf-top{ display:flex; align-items:center; gap:7px; }
.regua-faixa .rf-dot{ width:11px; height:11px; border-radius:50%; background:var(--rc); flex:none; }
.regua-faixa .rf-nome{ font-weight:800; font-size:13.5px; color:var(--ink); }
.regua-faixa .rf-n{ margin-left:auto; font-weight:800; font-size:18px; color:var(--rc); line-height:1; }
.regua-faixa .rf-sub{ font-size:11px; color:var(--muted); font-weight:600; }
.regua-faixa .rf-bar{ height:5px; border-radius:3px; background:var(--line); overflow:hidden; margin-top:2px; }
.regua-faixa .rf-bar>span{ display:block; height:100%; background:var(--rc); border-radius:3px; min-width:2px; }

/* ===== Campos personalizados de anamnese (build 192) ===== */
.fcampo{ display:flex; align-items:center; gap:9px; padding:9px 11px; border:1px solid var(--line); border-radius:10px; margin-bottom:6px; background:var(--surface); }
.fcampo-t{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px; color:var(--blue-700); background:var(--blue-soft); padding:3px 8px; border-radius:6px; flex:none; }
.fcampo-n{ font-weight:700; font-size:13.5px; color:var(--ink); flex:1; min-width:0; }
.fcampo-x{ width:28px; height:28px; border:none; background:none; color:var(--muted); cursor:pointer; border-radius:7px; display:inline-flex; align-items:center; justify-content:center; flex:none; }
.fcampo-x:hover{ background:#FDF1EF; color:var(--red); }

/* ===== Visão de lista do dia (mobile) ===== */
/* 1673 — RÉGUA DE ROLAGEM (prévia aprovada): coluna livre à esquerda dos cards
   com pontinhos discretos — o dedo desliza ali sem risco de tocar num card.
   É só padding no container (área do scroll), com o trilho desenhado no fundo. */
.agl-list{ display:flex; flex-direction:column; gap:11px; position:relative; padding-left:30px;
  background-image:radial-gradient(circle, color-mix(in srgb, var(--muted) 38%, transparent) 2px, transparent 2.4px);
  background-size:14px 16px; background-repeat:repeat-y; background-position:8px 8px; }
.agl-card{ display:flex; gap:11px; background:var(--surface); border:1px solid var(--line); border-radius:13px; padding:12px 14px; cursor:pointer; transition:transform .1s; box-shadow:0 1px 3px rgba(0,0,0,.05); }
.agl-card:active{ transform:scale(.992); }
.agl-time{ flex:none; width:48px; text-align:center; padding-right:11px; border-right:1px solid var(--line); }
.agl-time .agl-h{ font-size:15px; font-weight:800; color:var(--ink); line-height:1.15; }
.agl-time .agl-h2{ font-size:11px; font-weight:600; color:var(--muted); margin-top:1px; }
.agl-body{ flex:1; min-width:0; }
.agl-top{ display:flex; align-items:center; gap:8px; }
.agl-nome{ font-size:15px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.agl-meta{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:6px; }
.agl-proc{ font-size:12px; color:var(--muted); margin-top:6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* ═══════════════════════════════════════════════════════════════════
   1103 — a observação da marcação, no card da Lista.

   Faixa própria porque o card já tem o fundo tintado pelo procedimento,
   e texto solto ali se confunde com o resto.

   ⚠ E SEM CORTE, de propósito. A primeira versão cortava em duas linhas
   (`-webkit-line-clamp:2`) para a lista ficar compacta. Só que o recado
   da recepção é justamente onde mora "ATENÇÃO: alergia a látex" — e
   cortar isso some com o aviso EM SILÊNCIO, que é o que a regra nº 1
   deste projeto proíbe. Card que cresce um pouco é um custo; aviso
   clínico invisível é um risco. O card só cresce quando HÁ observação.
   ═══════════════════════════════════════════════════════════════════ */
.agl-obs{ display:flex; gap:6px; align-items:flex-start; margin-top:7px; padding:7px 9px;
  background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--blue);
  border-radius:9px; font-size:12px; line-height:1.4; color:var(--ink-2); }
.agl-obs svg{ width:13px; height:13px; flex:none; margin-top:1px; color:var(--blue); opacity:.9; }
.agl-obs span{ min-width:0; overflow-wrap:anywhere; white-space:pre-line; }

/* ===== Folha de ações da agenda (menu ⋯ no celular) ===== */
.ag-menu{ display:flex; flex-direction:column; gap:8px; }
.ag-mit{ display:flex; align-items:center; gap:13px; width:100%; background:var(--surface); border:1px solid var(--line); border-radius:13px; padding:13px 14px; cursor:pointer; text-align:left; transition:transform .1s; }
.ag-mit:active{ transform:scale(.99); }
.ag-mic{ flex:none; width:38px; height:38px; border-radius:11px; display:grid; place-items:center; }
.ag-mic svg{ width:20px; height:20px; }
.ag-mtx{ flex:1; min-width:0; display:flex; flex-direction:column; }
.ag-mt{ font-size:14.5px; font-weight:700; color:var(--ink); }
.ag-ms{ font-size:12px; color:var(--muted); margin-top:1px; }
.ag-mchev{ flex:none; width:18px; height:18px; color:var(--muted); opacity:.5; }

/* ===== Barra da agenda no celular: TUDO numa linha, com seletor de visões (Grade/Lista) visível ===== */
@media(max-width:880px){
  /* a barra inteira numa única linha; rola só em telas minúsculas (rede de segurança) */
  .gw-toolbar{ flex-wrap:nowrap!important; overflow-x:auto; justify-content:flex-start!important; gap:4px!important; padding:5px 8px!important; scrollbar-width:none; }
  .gw-toolbar::-webkit-scrollbar{ display:none; }
  /* REVELA o seletor de visões (sobrescreve o display:none herdado) e o deixa compacto */
  .gw-toolbar .seg{ display:inline-flex!important; flex:none; flex-wrap:nowrap!important; overflow:visible!important; padding:2px!important; gap:2px!important; }
  .gw-toolbar .seg button{ padding:4px 9px!important; font-size:12px!important; flex:none; }
  .gw-toolbar .seg button svg{ margin-right:4px!important; width:14px!important; height:14px!important; }
  .gw-toolbar .gw-nav{ gap:4px!important; }
  .gw-toolbar .gw-nav, .gw-toolbar .gw-actions{ flex:none; }
  .gw-toolbar .gw-actions{ gap:4px!important; }
  /* elementos compactos para caber sem rolagem em telas de celular comuns */
  .gw-toolbar .nav-day{ width:32px!important; height:30px!important; min-width:32px!important; }
  .gw-toolbar .dp-btn{ padding:5px 9px!important; gap:5px!important; font-size:12px!important; }
  .gw-toolbar .gw-act, .gw-toolbar .gw-actions .btn.ghost.sm{ width:32px!important; height:30px!important; }
  /* badge do Confirmar ancorado no canto do ícone (não alarga o botão) */
  .gw-conf-btn{ position:relative; overflow:visible; }
  .gw-conf-btn .gw-conf-badge{ position:absolute!important; top:-5px; right:-5px; margin:0!important; padding:0 3px!important; min-width:15px; height:15px; line-height:15px!important; text-align:center; box-shadow:0 0 0 2px var(--surface); }
}

/* ===== Botão "Profissionais" (filtro de dentista na toolbar — desktop) ===== */
.gw-prof{ position:relative; flex:none; }
.gw-prof-btn{ display:inline-flex; align-items:center; gap:7px; padding:8px 12px; border-radius:10px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-size:13px; font-weight:700; font-family:inherit; cursor:pointer; white-space:nowrap; transition:all .12s; }
.gw-prof-ic{ width:18px; height:18px; flex:none; }
.gw-prof-cv{ width:13px; height:13px; opacity:.65; transition:transform .16s; flex:none; }
.gw-prof-lbl{ line-height:1; }
.gw-prof-btn:hover{ border-color:var(--blue); color:var(--blue-700); background:var(--blue-soft); }
.gw-prof.open .gw-prof-btn{ border-color:var(--blue); background:var(--blue-soft); color:var(--blue-700); box-shadow:0 2px 10px rgba(31,115,224,.18); }
.gw-prof.open .gw-prof-cv{ transform:rotate(180deg); }
.gw-prof-btn.filt{ border-color:var(--dc); color:var(--dc); }
.gw-prof-btn.filt:hover{ background:var(--blue-soft); }
.gw-prof-dot{ width:11px; height:11px; border-radius:50%; flex:none; }
.gw-prof-dot.gw-prof-all{ background:conic-gradient(#1F73E0,#0FA47A,#C2840F,#D8392B,#1F73E0); }
.gw-prof-menu{ position:absolute; top:calc(100% + 7px); left:0; min-width:226px; background:var(--surface); border:1px solid var(--line); border-radius:13px; box-shadow:0 18px 44px -12px rgba(11,59,102,.34), 0 3px 10px rgba(11,59,102,.08); padding:6px; z-index:70; display:none; }
.gw-prof.open .gw-prof-menu{ display:block; animation:gwProfIn .15s ease; }
@keyframes gwProfIn{ from{opacity:0; transform:translateY(-5px)} to{opacity:1; transform:translateY(0)} }
.gw-prof-item{ display:flex; align-items:center; gap:10px; width:100%; padding:9px 11px; border:none; background:none; border-radius:9px; font-family:inherit; font-size:13.5px; font-weight:600; color:var(--ink); cursor:pointer; text-align:left; transition:background .1s; }
.gw-prof-item .gw-prof-dot{ width:12px; height:12px; }
.gw-prof-itx{ flex:1; white-space:nowrap; }
.gw-prof-ck{ width:16px; height:16px; color:var(--blue); opacity:0; flex:none; }
.gw-prof-item:hover{ background:var(--blue-soft); }
.gw-prof-item.on{ background:var(--blue-soft); color:var(--blue-700); font-weight:800; }
.gw-prof-item.on .gw-prof-ck{ opacity:1; }

/* layout desktop: barra da agenda em UMA linha, elegante (abas com texto; ações em ícone) */
@media(min-width:881px){
  .gw-toolbar{ flex-wrap:nowrap!important; justify-content:flex-start!important; gap:9px; }
  .gw-toolbar > *{ flex:0 0 auto; }
  /* rótulo de data (vidro Aero) ocupa o meio e se centraliza; nunca quebra */
  /* 896 — o CONTAINER e que apertava. O 895 pos flex:none no ano e no selo,
     mas isso so impede o FILHO de encolher: o pai, com min-width:0, continuava
     podendo apertar ate zero — e o overflow:hidden cortava o que nao coubesse,
     inclusive o ano inteiro. Protegi o filho e deixei o pai fechar a porta.
     min-width:min-content = o container nao encolhe abaixo do que o conteudo
     minimo exige (selo + ano + as reticencias do periodo). Quem cede continua
     sendo o periodo, que tem text-overflow e sabe ceder. */
  .gw-toolbar .ag-rot-main{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  /* Full HD / desktop: barra do calendário em UMA linha, sem sobreposição (só o rótulo cede) */
  @media(min-width:881px){
    .gw-toolbar{ flex-wrap:nowrap; gap:6px; padding:5px 12px; }
    /* 895 — O ANO ERA CORTADO NO MEIO: "2026" virava "20".
       A intencao da linha acima esta certa e escrita no comentario: "so o
       rotulo cede". Mas o .ag-rotulo-aero e flex, e com overflow:hidden e
       min-width:0 ele encolhe TODOS os filhos quando aperta — nao so o
       periodo. O .ag-rot-main tem text-overflow:ellipsis e cede com
       elegancia; o ano e o selo nao tinham flex:none, entao eram espremidos
       e cortados na metade do glifo.
       Quem cede e o periodo, que sabe ceder. O ano e o selo sao curtos,
       fixos, e nao negociam largura. */
    .gw-toolbar .ag-rot-sec,
    .gw-toolbar .ag-rot-selo,
    .gw-toolbar .ag-rot-selo-wrap{ flex:none!important; white-space:nowrap; }
    .gw-toolbar .ag-rot-main{ flex:0 1 auto; min-width:0; }
  }
  /* abas Dia/Semana/Mês — refinadas, nunca quebram */
  .gw-toolbar .seg{ flex-wrap:nowrap; padding:4px; border-radius:12px; gap:2px; }
  .gw-toolbar .seg button{ flex:none; white-space:nowrap; padding:5px 15px; font-size:13px; border-radius:9px; }
  .gw-toolbar .seg button.on{ box-shadow:0 1px 4px rgba(15,42,67,.14); }
  /* ações (Confirmar/Livre/Fluxo/Espera) = ícone + texto, com divisória à esquerda */
  .gw-toolbar .gw-act-lbl, .gw-toolbar .kb-toggle-lbl{ display:inline; }
  .gw-toolbar .gw-actions{ gap:6px; padding-left:11px; border-left:1px solid var(--line); }
  .gw-toolbar .gw-act, .gw-toolbar .gw-actions .btn.ghost.sm{ display:inline-flex; align-items:center; gap:5px; padding:5px 12px!important; white-space:nowrap; flex:none; }
  .gw-toolbar .gw-actions .kb-toggle{ display:inline-flex; align-items:center; gap:5px; padding:5px 12px!important; white-space:nowrap; }
  .gw-toolbar .gw-conf-btn{ position:relative; }
  .gw-toolbar .gw-conf-btn .gw-conf-badge{ position:absolute!important; top:-5px; right:-5px; margin:0!important; padding:0 3px!important; min-width:15px; height:15px; line-height:15px!important; text-align:center; box-shadow:0 0 0 2px var(--surface); }
}

/* Mobile do app (≤880px, igual ao isMobile do JS): textos dos botões da barra
   ficam SEMPRE ocultos — só ícone. Os textos "Confirmar/Livre/Fluxo/Espera" são
   exclusivos do computador. Cobre a faixa 641–880px que o bloco de 640px não pegava. */
@media(max-width:880px){
  .gw-toolbar .gw-act-lbl, .gw-toolbar .kb-toggle-lbl, .gw-toolbar .gw-hoje-lbl{ display:none!important; }
}

/* Acessibilidade (PC): contorno de foco visível ao navegar por teclado (Tab). Não aparece em toque/mobile. */
@media(min-width:881px){
  button:focus-visible,[role="button"]:focus-visible,summary:focus-visible,a[href]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
  input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]):focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--blue)!important;outline-offset:2px!important}
  .topbar :focus-visible,.sidebar :focus-visible,.rHead :focus-visible,.pchDockHead :focus-visible,.pchConvHead :focus-visible{outline-color:#fff!important}
  [data-theme=dark] button:focus-visible,[data-theme=dark] [role="button"]:focus-visible,[data-theme=dark] summary:focus-visible,[data-theme=dark] a[href]:focus-visible{outline-color:var(--blue-line)}
}

/* ═══════════════════════════════════════════════════════
   TEMAS TOTAIS — Branco (Full White) e Preto (Full Dark/AMOLED)
   Camada data-tone por cima do data-theme. Cor da marca = só destaques.
   ═══════════════════════════════════════════════════════ */

/* ── Branco: base neutra clara ── */
[data-tone="white"]{
  --bg:#F6F7F9; --surface:#FFFFFF; --line:#ECEEF1;
  --shadow:0 1px 2px rgba(20,40,75,.04), 0 8px 22px rgba(20,40,75,.05);
}
/* sidebar branca: textos/ícones escuros, item ativo na cor da marca */
[data-tone="white"] .mono{ box-shadow:0 1px 4px rgba(20,40,75,.12); border:1px solid #ECEEF1; }
[data-tone="white"] #brandName b{ color:var(--blue-700)!important; }
[data-tone="white"] .nav button{ color:#42566F; }
[data-tone="white"] .nav button svg{ opacity:1; }
[data-tone="white"] .nav button:hover{ background:rgba(20,40,75,.05); color:var(--blue-700); }
[data-tone="white"] .nav button.active{ background:var(--blue-soft); color:var(--blue-700); box-shadow:inset 0 0 0 1px var(--blue-line); }
[data-tone="white"] .nav button.active svg{ opacity:1; }
[data-tone="white"] .side-cal{ background:#F4F6F9; border-color:#ECEEF1; }
[data-tone="white"] .side-cal-nav{ color:#42566F; }
[data-tone="white"] .side-cal-nav button{ background:rgba(20,40,75,.06); color:#42566F; }
[data-tone="white"] .side-cal-nav button:hover{ background:rgba(20,40,75,.12); }
[data-tone="white"] .side-cal-hd{ color:#9AA9BB; }
[data-tone="white"] .side-cal-day{ color:#42566F; }
[data-tone="white"] .side-cal-day:hover{ background:rgba(20,40,75,.06); color:var(--blue-700); }
[data-tone="white"] .side-cal-day.hj{ color:var(--blue-700); }
[data-tone="white"] .side-cal-day.hj::after{ background:var(--blue-line); }
[data-tone="white"] .side-cal-day.sel{ background:var(--blue); color:#fff; }
[data-tone="white"] .side-cal-day.in-week{ background:var(--blue-soft); color:var(--blue-700); }
[data-tone="white"] #dentFilter label{ color:#6B7E93; }
[data-tone="white"] #dentFilter select{ background:#fff; color:var(--ink); border-color:#DFE5EC; }
[data-tone="white"] #dentFilter select option{ color:#15293c; background:#fff; }
[data-tone="white"] .side-foot{ border-top-color:rgba(20,40,75,.10); }
[data-tone="white"] .side-foot .who{ color:#6B7E93; }

/* ── LÁPIDE 1433 — os tons Cinza neutro (gray) e Preto/AMOLED (black) foram REMOVIDOS
   do código (a pedido do dono, higiene). O modo escuro é UM só: o Escuro Azulado (navy),
   abaixo, aplicado a [data-theme=dark] sem tom. Quem estava no cinza/preto migra para o
   navy automaticamente (o data-tone antigo é ignorado/removido no boot). ── */
/* ── Escuro Azulado (NAVY) — o ÚNICO modo escuro (1431/1433). Azul-marinho profundo e
   aconchegante, coerente com o Hub in Blue; o azul da marca continua saltando. Contrastes
   conferidos: --ink #E4ECF8 / --ink-2 #A6B8D6 / --muted #8093B2 sobre #0A1220 passam o AA. ── */
[data-theme="dark"]{
  --bg:#0A1220; --surface:#131E32; --line:#253750;
  --ink:#E4ECF8; --ink-2:#A6B8D6; --muted:#8093B2;
  --blue-soft:#16233A; --blue-line:#2B3E5C;
  --shadow:0 1px 2px rgba(0,0,0,.5), 0 14px 34px rgba(0,0,0,.55);
  --gw-hoje-bg:rgba(90,160,255,.10); --gw-hoje-bg-h:rgba(90,160,255,.13); /* 1605 — coluna de hoje no escuro */
}

/* ── Branco: completa a sidebar (elementos que assumiam fundo escuro) ── */
[data-tone="white"] .nav button:hover{ background:rgba(20,40,75,.05)!important; color:var(--blue-700)!important; transform:none!important; }
[data-tone="white"] .nav button.active{ background:var(--blue-soft)!important; color:var(--blue-700)!important; box-shadow:inset 0 0 0 1px var(--blue-line)!important; border:1px solid var(--blue-line)!important; }
[data-tone="white"] .nav button.active svg{ filter:none!important; }
[data-tone="white"] .nav button:hover svg{ filter:none!important; }
[data-tone="white"] .side-cal{ background:#F4F6F9!important; border-color:#ECEEF1!important; box-shadow:none!important; }
[data-tone="white"] #perfilAtivoLabel{ background:var(--blue-soft)!important; border-color:var(--blue-line)!important; box-shadow:none!important; }
[data-tone="white"] #perfilAtivoLabel strong{ color:var(--blue-700)!important; }
[data-tone="white"] #perfilAtivoLabel span{ color:#6B7E93!important; }
[data-tone="white"] #perfilAtivoLabel:hover{ background:var(--blue-line)!important; box-shadow:none!important; }

/* ===== Aero Glass Lite — vidro suave nos cartões (brilho topo + filete + sombra macia, SEM backdrop-filter) ===== */
:root{ --glass-sheen:transparent; --glass-shade:rgba(19,41,75,.03); --glass-rim:rgba(255,255,255,.9); --glass-drop:var(--shadow); }
/* 1436 — no Escuro Azulado o filete de 90% de branco (--glass-rim) virava um traço branco
   gritante no topo de cada card ("cards malucos" no efeito de vidro). No escuro ele passa a
   ser um brilho discreto (~7% de branco), com um leve sheen no topo e um sombreado suave
   embaixo para dar profundidade sem estourar. Fica ENTRE o :root e o [data-aero-cards="off"]
   de propósito: assim quem desliga o vidro (aero off) continua ganhando (vem depois). */
[data-theme="dark"]{ --glass-sheen:rgba(255,255,255,.03); --glass-shade:rgba(0,0,0,.13); --glass-rim:rgba(255,255,255,.07); }
[data-aero-cards="off"]{ --glass-sheen:transparent; --glass-shade:transparent; --glass-rim:transparent; --glass-drop:var(--sh1); }
.panel, .stat{
  background-image:linear-gradient(180deg, var(--glass-sheen) 0%, var(--glass-shade) 100%);
  box-shadow:inset 0 1px 0 var(--glass-rim), var(--glass-drop);
}
@media (hover:hover){
  .panel:hover, .stat:hover{ box-shadow:inset 0 1px 0 var(--glass-rim), var(--sh2); }
}

/* 1322 - removido: CSS Tamanho da interface (data-escala) */

/* ===== Configurações: seções agrupadas em cards sutis (disposição + espaçamento) ===== */
.modal-body .field-group{ background:var(--surface); border:1px solid var(--line); border-radius:14px; margin-bottom:14px; }
.modal-body .field-group:last-child{ margin-bottom:6px; }

/* ═══════════════ SISTEMA AERO — níveis por superfície (Desativado / Leve / Médio / Forte) ═══════════════ */
/* CARTÕES · completo = vidro fosco com desfoque (mostra o fundo borrado) */

/* TOPBAR · básico = plano · completo = fosco translúcido */
[data-aero-topbar="off"] .topbar{ box-shadow:none!important; }

/* BARRA LATERAL · básico = navy chapado · completo = brilho intenso (sem desfoque, é opaca/branding) */
[data-aero-sidebar="off"] .side::before{ opacity:0; }
[data-aero-sidebar="off"] .side::after{ opacity:0; }
/* 946 — o brilho da barra saiu do ::before e passou a viver no fundo do
   elemento (944, para acompanhar a rolagem). Só que quem desligava o brilho
   com o Aero desativado era a regra do ::before acima — que ficou sem efeito.
   Aqui o fundo volta a ser só o gradiente base quando o Aero está desligado. */
[data-aero-sidebar="off"] .side{background-image:linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 72%) 0%,color-mix(in srgb,var(--blue),#000 78%) 46%,color-mix(in srgb,var(--blue),#000 84%) 100%)!important}
[data-theme=dark][data-aero-sidebar="off"] .side,[data-aero-sidebar="off"] [data-theme=dark] .side{background-image:linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 90%),color-mix(in srgb,var(--blue),#000 93%) 46%,color-mix(in srgb,var(--blue),#000 95%))!important}

/* JANELAS (modais) · básico = sem desfoque · completo = desfoque forte + janela translúcida fosca */
[data-aero-modais="off"] .overlay, [data-aero-modais="off"] #overlay2{   }

/* Ao arrastar uma janela flutuante, suspende o backdrop-filter dela: durante o
   movimento o desfoque captura o próprio conteúdo e o deixa embaçado/ilegível.
   Assim que solta, o vidro volta. (Cobre o .modal-head e o corpo da janela.) */
.oh-arrastando-win .oh-arrastando,
.oh-arrastando-win .oh-arrastando .modal-head,
.oh-arrastando-win .oh-arrastando .modal-body,
.oh-arrastando .modal-head, .oh-arrastando .modal-body,
.oh-arrastando.modal-head{
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}

/* ═══════════════ Nível MÉDIO (entre Leve e Forte) — vidro/brilho moderado ═══════════════ */

/* 1322 - removido: CSS Alto contraste (data-contraste) */

/* Correção de empilhamento: enquanto o menu lateral está aberto, suspende o desfoque (Aero
   Completo) do conteúdo — o backdrop-filter cria contexto que deixaria o menu atrás dos cartões */
body.menu-aberta .topbar,
body.menu-aberta .panel,
body.menu-aberta .stat{   }

/* ═══════════════ OPÇÕES AVANÇADAS DO TEMA — sombras + liga/desliga geral do Aero ═══════════════ */
/* Intensidade das sombras */
[data-sombra="suave"]{ --shadow:0 1px 2px rgba(19,41,75,.04); --sh1:0 1px 3px rgba(19,41,75,.05); --sh2:0 3px 10px rgba(19,41,75,.07); --sh3:0 6px 22px rgba(19,41,75,.10); }
[data-sombra="forte"]{ --shadow:0 2px 6px rgba(19,41,75,.10),0 16px 44px rgba(19,41,75,.16); --sh1:0 3px 10px rgba(19,41,75,.13); --sh2:0 7px 26px rgba(19,41,75,.20); --sh3:0 18px 52px rgba(19,41,75,.26); }
[data-sombra="nenhuma"]{ --shadow:none; --sh1:none; --sh2:none; --sh3:none; }
/* Liga/desliga geral do Aero (preserva os níveis por superfície ao religar) */
[data-aero-off]{ --glass-sheen:transparent!important; --glass-shade:transparent!important; --glass-rim:transparent!important; }
[data-aero-off] .panel, [data-aero-off] .stat, [data-aero-off] .topbar, [data-aero-off] .modal, [data-aero-off] .overlay, [data-aero-off] #overlay2{   }
[data-aero-off] .side::before, [data-aero-off] .side::after{ opacity:.3!important; }

/* ═══════════════ EMISSOR DE DOCUMENTOS — segmento "Emitir no nome de" ═══════════════ */
.emit-seg{display:flex;gap:8px;margin-bottom:6px}
.emit-seg label{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink-2);transition:.15s;user-select:none}
.emit-seg label:has(input:checked){border-color:var(--blue);background:var(--blue-soft);color:var(--blue-700)}
.emit-seg input{accent-color:var(--blue);margin:0}
.dent-logo-prev{width:120px;height:54px;border:1px solid var(--line);border-radius:9px;background:var(--surface);display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none}
.dent-logo-prev img{max-width:100%;max-height:100%;object-fit:contain}
/* == 379 - hero do Sobre/Novidades compacto no celular == */
@media(max-width:480px){
  .chg-winver{padding:10px 12px 12px;margin-bottom:12px}
  .chg-logo{font-size:17px}
  .chg-ver{font-size:11.5px}
  .chg-build{font-size:26px}
}
/* == 380 - botao Mais: estado aberto visivel (gira em X e acende) == */
/* == 387 - atalhos premium da tela de login == */
.qk-card{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;margin-bottom:8px;text-decoration:none;color:var(--ink);background:var(--surface);transition:transform .14s var(--ease), box-shadow .14s var(--ease), border-color .14s}
.qk-card:hover{transform:translateY(-1px);border-color:var(--blue);box-shadow:0 8px 22px rgba(31,115,224,.14)}
.qk-card:active{transform:scale(.985)}
.qk-tile{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.qk-tile svg{width:21px;height:21px}
.qk-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.qk-tx b{font-size:12.8px;font-weight:800;line-height:1.25}
.qk-tx small{font-size:10.8px;color:var(--muted);line-height:1.3}
.qk-go{flex:none;color:var(--blue);font-size:20px;font-weight:800;opacity:.7}
/* == 394 - login split: vitrine do paciente na lateral esquerda == */
.login-eco{flex:1 1 300px;max-width:340px;align-self:center;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.22);border-radius:20px;padding:22px 20px;box-shadow:0 12px 40px rgba(0,0,0,.22)}
.le-eyebrow{font-size:10.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:rgba(255,255,255,.75);margin-bottom:4px}
.le-title{font-size:22px;font-weight:900;color:#fff;font-family:var(--display);text-shadow:0 2px 8px rgba(0,0,0,.35);margin-bottom:6px}
.le-sub{font-size:12.5px;line-height:1.55;color:rgba(255,255,255,.92);text-shadow:0 1px 4px rgba(0,0,0,.3);margin:0 0 14px}
.login-eco .qk-card{margin-bottom:9px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.le-foot{font-size:10.5px;color:rgba(255,255,255,.7);text-align:center;margin-top:12px;text-shadow:0 1px 3px rgba(0,0,0,.3)}
/* 1434 — TELA PÚBLICA CLARA (Aurora): a vitrine "Meu Impulse" e a coluna de vantagens
   eram desenhadas p/ fundo escuro (texto branco, painel translúcido). No claro viram
   cartões limpos com texto escuro legível. Escopo #loginScreen, não toca nada de dentro. */
#loginScreen .login-eco,
#loginScreen #loginColDir > div:first-child{
  background:linear-gradient(180deg,rgba(255,255,255,.80),rgba(255,255,255,.52))!important;
  border:1px solid var(--ent-line,#D9E2F0)!important;
  box-shadow:0 12px 34px rgba(20,50,90,.10)!important;
}
#loginScreen .le-eyebrow{ color:var(--ent-ink3,#8A97AC)!important; }
#loginScreen .le-title{ color:var(--ent-ink,#16273F)!important; text-shadow:none!important; }
#loginScreen .le-sub{ color:var(--ent-ink2,#51617B)!important; text-shadow:none!important; }
#loginScreen .le-foot{ color:var(--ent-ink3,#8A97AC)!important; text-shadow:none!important; }
#loginScreen .login-eco .qk-card{ background:var(--surface,#fff)!important; box-shadow:0 4px 14px rgba(20,50,90,.06)!important; }
#loginScreen #loginColDir [style*="color:rgba(255,255,255"]{ color:var(--ent-ink2,#51617B)!important; text-shadow:none!important; }
@media (max-width:900px){
  #loginScreen .login-eco{order:2;max-width:380px;width:100%;align-self:auto}
  #loginScreen > div{flex-direction:column;align-items:center}
}

/* Chat com paciente (estilo mensageiro) — build 427 */
.cchBody{background-color:var(--blue-soft);background-image:radial-gradient(rgba(var(--blue-rgb),.06) 1.2px,transparent 1.2px);background-size:18px 18px}
.cchRow{display:flex;margin:3px 0}
.cchRow.me{justify-content:flex-end}
.cchRow.them{justify-content:flex-start}
.cchB{position:relative;max-width:82%;padding:6px 11px 5px;border-radius:12px;font-size:13.5px;line-height:1.42;box-shadow:0 1px 1.5px rgba(11,31,75,.1)}
.cchB.them{background:#fff;color:#16233B;border-top-left-radius:3px}
.cchB.me{background:linear-gradient(135deg,var(--blue),var(--blue-700));color:#fff;border-top-right-radius:3px}
.cchB .who{font-size:10px;font-weight:800;opacity:.75;margin-bottom:1px}
.cchB.them .who{color:#1F73E0;opacity:1}
.cchB .para{font-size:10px;font-weight:700;color:#1F73E0;margin:-1px 0 3px}
.cchB .tx{white-space:pre-wrap;word-break:break-word}
.cchB .tm{font-size:9.5px;opacity:.55;text-align:right;margin-top:1px;line-height:1}
.cchB.them::after{content:"";position:absolute;top:0;left:-5px;border:6px solid transparent;border-top-color:#fff;border-right-width:0}
.cchB.me::after{content:"";position:absolute;top:0;right:-5px;border:6px solid transparent;border-top-color:#1F73E0;border-left-width:0}

/* Abas do hub de mensagens (WhatsApp-like) — build 428 */
.pchTabs{display:flex;background:var(--blue);background:linear-gradient(135deg,color-mix(in srgb,var(--blue),#000 45%),var(--blue))}
.pchTab{flex:1;border:none;background:none;color:rgba(255,255,255,.72);font-weight:800;font-size:12.5px;padding:11px 4px;cursor:pointer;border-bottom:3px solid transparent}
.pchTab.on{color:#fff;border-bottom-color:#fff}

/* Barra inferior do Impulse Messenger (WhatsApp mobile) — build 432 */
.pchTabsBottom{display:flex;background:var(--surface);border-top:1px solid var(--line);flex:none}
.pchTabB{flex:1;border:none;background:none;color:var(--muted);font-weight:700;font-size:10.5px;padding:8px 4px 7px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px}
.pchTabB .ic{font-size:18px;line-height:1}
.pchTabB.on{color:var(--blue)}

/* Impulse Messenger docado (widget modeless) — build 434 */
#pchDock{position:fixed;right:18px;bottom:88px;width:372px;max-width:calc(100vw - 24px);height:min(74vh,600px);background:var(--surface,#fff);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 50px rgba(11,31,75,.30);z-index:60;display:flex;flex-direction:column;overflow:hidden}
#pchDock.min{height:auto}
#pchDock.min #pchatInbox{display:none}
.pchDockHead{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--blue);background:linear-gradient(135deg,color-mix(in srgb,var(--blue),#000 45%),var(--blue));color:#fff;flex:none}
.pchDockBtn{border:none;background:rgba(255,255,255,.18);color:#fff;width:26px;height:26px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:800;display:grid;place-items:center;line-height:1}
#pchatInbox{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
@media(max-width:520px){ #pchDock{right:0;left:0;bottom:0;width:auto;max-width:none;height:86vh;border-radius:16px 16px 0 0} }

/* Título minimizado do Messenger — build 435 */
#pchDock.min .pchDockOral{display:none}
@media(max-width:520px){ #pchDock.min .pchDockTitle{display:none} }

@media(max-width:520px){
  #pchDock.min{left:auto;right:10px;width:auto;max-width:none;bottom:calc(92px + env(safe-area-inset-bottom,0px));border-radius:16px;box-shadow:0 10px 28px rgba(11,31,75,.34)}
  #pchDock.min .pchDockEq,#pchDock.min .pchDockMinB{display:none}
  #pchDock.min .pchDockHead{padding:10px 13px;gap:10px;font-size:16px}
}

/* Sala Rede (Messenger entre filiais) — badge da filial de origem — build 448 */
.pchRedeFil{font-size:9px;font-weight:800;border-radius:99px;padding:1px 7px;margin-left:6px;vertical-align:1px;letter-spacing:.2px}
.cchB.them .pchRedeFil{background:var(--blue-soft,#E7F0FF);color:var(--blue-700,#1559BD)}
.cchB.me .pchRedeFil{background:rgba(255,255,255,.25);color:#fff}

/* Barra de título do Messenger + cabeçalho da conversa adaptam ao tema escuro — build 449 */
[data-theme=dark] #pchDock .pchDockHead{background:var(--blue)!important;background:linear-gradient(135deg,color-mix(in srgb,var(--blue),#000 45%),var(--blue))!important}

/* Balão do messenger some no mobile (o drawer "Mais" já o oferece); no desktop permanece */
@media(max-width:880px){ #chatDock{display:none!important} }

.skip-link{position:fixed;left:8px;top:-64px;z-index:100000;background:var(--blue);color:#fff;padding:10px 18px;border-radius:0 0 12px 12px;font-weight:800;font-size:14px;text-decoration:none;box-shadow:0 6px 20px rgba(0,0,0,.28);transition:top .18s ease}
.skip-link:focus{top:0;outline:2px solid #fff;outline-offset:-5px}
#content:focus{outline:none}


/* ═══════════ GLASS-LITE NAS TELAS DE ENTRADA (build 552) ═══════════
   Vidro leve e legível sobre as artes dos Fundos abstratos.
   Receita: translucidez moderada + blur médio + saturação CONTIDA
   (o saturate(180%) antigo virava neon sobre artes azuis — era o
   "PIN completamente azul") + filete de luz no topo (rim light). */
/* Janela do PIN — de neon a vidro fosco elegante */
#usrPinCard{
  background:rgba(10,18,36,.92)!important;
  
  
  border:1px solid rgba(255,255,255,.16)!important;
  box-shadow:0 24px 64px rgba(0,0,0,.5),
             inset 0 1px 0 rgba(255,255,255,.18)!important;
}
/* Cards de usuário — vidro um tico mais presente e com rim light */
.usr2-card{
  background:linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.06))!important;
  border:1.5px solid rgba(255,255,255,.16)!important;
  
  
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 8px 26px rgba(0,0,0,.28);
}
.usr2-card:hover{
  background:rgba(255,255,255,.13)!important;
  border-color:rgba(255,255,255,.26)!important;
}
/* Card do login (e-mail/senha) — de branco chapado a vidro claro */
#loginCard{
  background:color-mix(in srgb, var(--surface) 95%, transparent)!important;
  
  
  border:1px solid rgba(255,255,255,.45)!important;
  box-shadow:0 8px 32px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.55)!important;
}
/* Teclado do PIN: teclas de vidro coerentes */
._up2Btn{
  background:rgba(255,255,255,.08)!important;
  border:1px solid rgba(255,255,255,.15)!important;
}
._up2Btn:hover{ background:rgba(255,255,255,.17)!important; }

/* ═══════ RODAPÉ DAS JANELAS — cor da faixa Salvar/Cancelar (build 554) ═══════
   Seletor por atributo (0,2,0) vence o transparent!important da cor de janela. */
[data-modalfoot="cinza"] .modal-foot{ background:color-mix(in srgb, var(--ink) 6%, var(--surface))!important; border-top-color:color-mix(in srgb, var(--ink) 14%, var(--surface))!important; }
[data-modalfoot="tema"] .modal-foot{ background:color-mix(in srgb, var(--blue) 11%, var(--surface))!important; border-top-color:color-mix(in srgb, var(--blue) 30%, var(--surface))!important; }
[data-modalfoot="comp"] .modal-foot,
[data-modalfoot="auto"] .modal-foot{ background:color-mix(in srgb, var(--mf-cor,#0FA47A) 12%, var(--surface))!important; border-top-color:color-mix(in srgb, var(--mf-cor,#0FA47A) 32%, var(--surface))!important; }
[data-modalfoot="branco"] .modal-foot{ background:#FFFFFF!important; border-top-color:#E5EDF6!important; }

/* ═══════ Linha do "agora" cruzando a semana inteira (build 555) ═══════
   Na visão semana a linha vive no nível do .gw-dias (não mais por coluna),
   então atravessa todos os dias. O dot fica à esquerda, no fio da régua,
   estilo Google Agenda; a linha some suave nos cantos. */
.gw-agora-full{ z-index:6; pointer-events:none; }
.gw-agora-full .gw-agora-line{ border-top:2px solid var(--red); opacity:.9; }
.gw-agora-full .gw-agora-dot{ left:-4px; top:-5px; }

/* ═══════════════════════════════════════════════════════════════════
   VIDRO FALSO PREMIUM — "Aero Glass Lite" turbinado (build 556)
   Simula vidro fosco de verdade SEM backdrop-filter (custo ~zero GPU).
   A ilusão do vidro real vem de 5 pistas ópticas empilhadas:
     1. Realce especular diagonal (a luz correndo pela face do vidro)
     2. Hotspot radial no topo (o "brilho" concentrado do Fresnel)
     3. Filete de luz na borda superior (rim light — a quina iluminada)
     4. Sombra de profundidade ampla e macia (o vidro "flutua")
     5. Micro-textura de ruído (vidro real não é liso — dá corpo)
   Cada superfície liga isso via [data-glass-<surf>="on"].
   ═══════════════════════════════════════════════════════════════════ */
:root{
  --gl-spec: linear-gradient(135deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.12) 22%, rgba(255,255,255,0) 46%);
  --gl-hot:  radial-gradient(120% 80% at 50% -10%, rgba(255,255,255,.34) 0%, rgba(255,255,255,0) 55%);
  --gl-rim:  rgba(255,255,255,.85);
  --gl-rim-bottom: rgba(255,255,255,.14);
  --gl-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
  --gl-drop: 0 8px 30px rgba(19,41,75,.14), 0 2px 6px rgba(19,41,75,.08);
}
/* 1436 — o vidro premium (--gl-*) foi desenhado para superfícies CLARAS: sobre o branco,
   um specular de 55% e um rim de 85% ficam sutis. No Escuro Azulado eles estouravam — viravam
   um brilho e um traço brancos gritantes sobre o navy ("vários cards malucos"). No escuro os
   reflexos ficam discretos e a sombra escurece de verdade (profundidade), então o vidro
   continua, só que coerente com o fundo. Como todos os --gl-* moram aqui, isto também acerta
   a topbar e os modais no escuro. Fica DEPOIS do :root (mesma especificidade → vence por ordem). */
[data-theme="dark"]{
  /* 1438 — o "vidro estranho no cabeçalho" era o --gl-hot: um brilho RADIAL no topo que, sobre
     o navy, pintava uma faixa clara cobrindo ~1/4 do card (parecia um cabeçalho de vidro
     quebrado). No escuro ele é DESLIGADO; o specular vira só um fio de luz no topo (12% de
     altura). O card fica um navy uniforme e limpo. Vale p/ cards, topbar e modais. */
  --gl-spec: linear-gradient(180deg, rgba(255,255,255,.03) 0%, rgba(255,255,255,0) 12%);
  --gl-hot:  none;
  --gl-rim:  rgba(255,255,255,.08);
  --gl-rim-bottom: rgba(255,255,255,.02);
  --gl-drop: 0 8px 30px rgba(0,0,0,.40), 0 2px 6px rgba(0,0,0,.28);
}
/* Utilitário: aplica a face de vidro premium a um elemento via ::before
   (as camadas) + box-shadow (rim + profundidade). Requer position e um
   background sólido/base no próprio elemento — a face fica POR CIMA. */
.oh-glass{ position:relative; isolation:isolate; }
.oh-glass::before{
  content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  border-radius:inherit;
  background:var(--gl-spec), var(--gl-hot);
}
.oh-glass::after{
  content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  border-radius:inherit;
  background-image:var(--gl-noise); background-size:120px 120px;
  opacity:.035; /* 877: mix-blend-mode:overlay removido — com opacity .03-.05 o efeito e imperceptivel, mas obriga o navegador a RECOMPOR a camada inteira a cada mudanca interna. No card do PIN, cada bolinha preenchida (transition:all + box-shadow) recompunha o card todo: era o flash a cada numero tocado. A textura de ruido continua; so o blend saiu. */
}
.oh-glass > *{ position:relative; z-index:1; }

/* ═══════ Vidro premium POR SUPERFÍCIE — mixer "onde aplicar" (build 556) ═══════
   Cada superfície liga/desliga via atributo no <html>. O vidro é
   desenhado com gradientes sobre a cor sólida da superfície (nunca
   transparência de verdade — leve e legível). Padrão: cards+topbar ON. */

/* ── CARTÕES e painéis ── */
[data-glass-cards="on"] .panel,
[data-glass-cards="on"] .stat{
  background-image:
    var(--gl-spec),
    var(--gl-hot),
    linear-gradient(180deg, color-mix(in srgb,var(--surface) 100%,transparent) 0%, color-mix(in srgb,var(--surface) 100%,transparent) 100%);
  box-shadow:inset 0 1px 0 var(--gl-rim), inset 0 -1px 0 var(--gl-rim-bottom), var(--gl-drop);
  position:relative;
}
[data-glass-cards="on"] .panel::after,
[data-glass-cards="on"] .stat::after{
  content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit;
  background-image:var(--gl-noise); background-size:120px 120px; opacity:.03; /* 877: mix-blend-mode:overlay removido — com opacity .03-.05 o efeito e imperceptivel, mas obriga o navegador a RECOMPOR a camada inteira a cada mudanca interna. No card do PIN, cada bolinha preenchida (transition:all + box-shadow) recompunha o card todo: era o flash a cada numero tocado. A textura de ruido continua; so o blend saiu. */
}
@media (hover:hover){
  [data-glass-cards="on"] .panel:hover,
  [data-glass-cards="on"] .stat:hover{ box-shadow:inset 0 1px 0 var(--gl-rim), inset 0 -1px 0 var(--gl-rim-bottom), var(--sh2); }
}

/* ── BARRA DO TOPO ── */
/* Vidro da barra do topo — UNIFICADO: o efeito vive EXCLUSIVAMENTE no
   cartão do título (.topbar-card); a borda do cartão é o limite. Nada é
   pintado na barra: sem brilho, sem sombra atravessando os ícones ou seus
   arredores. ('poupar' legado = mesmo comportamento de 'on'.) */
[data-glass-topbar="on"] .topbar,
[data-glass-topbar="poupar"] .topbar{ box-shadow:none !important; }
[data-glass-topbar="on"] .topbar-card,
[data-glass-topbar="poupar"] .topbar-card{
  position:relative;
  background-image:var(--gl-spec), var(--gl-hot) !important;
  box-shadow:inset 0 1px 0 var(--gl-rim), inset 0 -1px 0 var(--gl-rim-bottom), 0 2px 12px rgba(19,41,75,.08) !important;
}

/* ── BARRA LATERAL ── (escura nos dois temas; brilho azulado suave) */
[data-glass-sidebar="on"] .side::before{
  opacity:1 !important;
  background:
    radial-gradient(ellipse 180% 62% at 18% -4%, rgba(150,190,255,.22) 0%, rgba(150,190,255,.05) 40%, transparent 66%),
    linear-gradient(135deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.02) 26%, transparent 52%) !important;
}
[data-glass-sidebar="on"] .side{
  box-shadow:inset -1px 0 0 rgba(255,255,255,.08), inset 0 1px 0 rgba(255,255,255,.10), 4px 0 32px rgba(4,14,42,.28) !important;
}

/* ── JANELAS (modais) ── */
[data-glass-modais="on"] .modal{
  background-image:var(--gl-spec), var(--gl-hot);
  box-shadow:inset 0 1px 0 var(--gl-rim), 0 24px 60px rgba(15,42,67,.32);
  position:relative; isolation:isolate;
}
[data-glass-modais="on"] .modal::after{
  content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit; z-index:0;
  background-image:var(--gl-noise); background-size:120px 120px; opacity:.03; /* 877: mix-blend-mode:overlay removido — com opacity .03-.05 o efeito e imperceptivel, mas obriga o navegador a RECOMPOR a camada inteira a cada mudanca interna. No card do PIN, cada bolinha preenchida (transition:all + box-shadow) recompunha o card todo: era o flash a cada numero tocado. A textura de ruido continua; so o blend saiu. */
}
[data-glass-modais="on"] .modal > *{ position:relative; z-index:1; }

/* ═══════ TELAS DE ENTRADA — vidro SÓLIDO (sem transparência) (build 556) ═══════
   O Altair pediu: nada de transparência aqui. Fundo 100% opaco + as
   camadas de vidro premium por cima (brilho, hotspot, rim, textura).
   Fica com cara de vidro fosco de verdade, mas totalmente legível
   sobre qualquer arte de fundo. */
#usrPinCard{
  background:#0E1B33 !important;         /* navy sólido, zero alpha */
  background-image:
    linear-gradient(135deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.03) 24%, transparent 50%),
    radial-gradient(130% 90% at 50% -8%, rgba(150,190,255,.16) 0%, transparent 56%) !important;
  border:1px solid rgba(255,255,255,.18) !important;
  box-shadow:0 26px 70px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.20) !important;
  position:relative; isolation:isolate;
}
#usrPinCard::after{
  content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit; z-index:0;
  background-image:var(--gl-noise); background-size:120px 120px; opacity:.05; /* 877: mix-blend-mode:overlay removido — com opacity .03-.05 o efeito e imperceptivel, mas obriga o navegador a RECOMPOR a camada inteira a cada mudanca interna. No card do PIN, cada bolinha preenchida (transition:all + box-shadow) recompunha o card todo: era o flash a cada numero tocado. A textura de ruido continua; so o blend saiu. */
}
#usrPinCard > *{ position:relative; z-index:1; }

.usr2-card{
  background:#16233C !important;         /* sólido */
  background-image:
    linear-gradient(135deg, rgba(255,255,255,.09) 0%, rgba(255,255,255,.02) 26%, transparent 52%),
    radial-gradient(120% 80% at 50% -10%, rgba(150,190,255,.12) 0%, transparent 58%) !important;
  border:1.5px solid rgba(255,255,255,.15) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 10px 30px rgba(0,0,0,.34) !important;
}
.usr2-card:hover{
  background:#1B2B48 !important;
  border-color:rgba(255,255,255,.28) !important;
}

#loginCard{
  background:var(--surface) !important;  /* sólido, sem color-mix transparente */
  background-image:
    linear-gradient(135deg, rgba(255,255,255,.50) 0%, rgba(255,255,255,.12) 22%, transparent 48%),
    radial-gradient(120% 80% at 50% -10%, rgba(255,255,255,.30) 0%, transparent 56%) !important;
  border:1px solid rgba(255,255,255,.55) !important;
  box-shadow:0 10px 36px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.65) !important;
  position:relative; isolation:isolate;
}
._up2Btn{
  background:rgba(255,255,255,.10) !important;   /* teclas: leve translucidez interna tolerável (dentro do card sólido) */
  background-image:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,0)) !important;
  border:1px solid rgba(255,255,255,.18) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20) !important;
}
._up2Btn:hover{ background:rgba(255,255,255,.20) !important; }

/* ═══════════════════════════════════════════════════════════════════
   MIXER DE DESTAQUE (build 557) — "onde a cor de destaque aparece"
   Inspirado no Windows 11 ("Mostrar cor de destaque em barras de título
   e bordas") e no Linux Mint-Y (cor de realce em seleção/itens). A cor
   da marca (--blue) já pinta botões e ícones; aqui o usuário decide se
   ela também INVADE, com força, pontos específicos da interface.
   Cada alvo liga/desliga por atributo no <html>. ═══════════════════════ */

/* ── ITEM ATIVO DO MENU LATERAL — a "aba selecionada" ganha a cor cheia ── */
/* 1470 — regras do accent-menu removidas (o motor de acento saiu do código) */

/* ── BARRA DO TOPO — UNIFICADO: o tingimento vive EXCLUSIVAMENTE no
   cartão do título (.topbar-card); a borda do cartão é o limite. Nada é
   pintado na barra: sem fundo, sem borda inferior atravessando os ícones
   ou seus arredores. ('poupar' legado = mesmo comportamento de 'on'.) ── */
[data-accent-topbar="on"] .topbar,
[data-accent-topbar="poupar"] .topbar{ border-bottom:none !important; }
[data-accent-topbar="on"] .topbar-card,
[data-accent-topbar="poupar"] .topbar-card{
  background:linear-gradient(135deg, color-mix(in srgb, var(--blue) 16%, var(--surface)) 0%, color-mix(in srgb, var(--blue) 7%, var(--surface)) 100%) !important;
  border:1px solid color-mix(in srgb, var(--blue) 30%, transparent) !important;
}

/* ── LINKS E DESTAQUES DE TEXTO — a cor toma conta de links e valores ── */
[data-accent-links="on"] a:not(.btn),
[data-accent-links="on"] .link,
[data-accent-links="on"] .stat .num,
[data-accent-links="on"] .stat b{
  color:var(--blue-700) !important;
}
[data-accent-links="on"] a:not(.btn){ text-decoration-color:color-mix(in srgb, var(--blue) 45%, transparent); }

/* ── BORDA DE FOCO / SELEÇÃO — inputs e cartões selecionados puxam a cor ── */
[data-accent-selecao="on"] input:focus,
[data-accent-selecao="on"] select:focus,
[data-accent-selecao="on"] textarea:focus{
  border-color:var(--blue) !important;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 22%, transparent) !important;
}
[data-accent-selecao="on"] ::selection{ background:color-mix(in srgb, var(--blue) 32%, transparent); }

/* ═══════════════════════════════════════════════════════════════════
   BUILD 558 — 4 refinamentos de acabamento
   ═══════════════════════════════════════════════════════════════════ */

/* ── (2) BORDA DAS JANELAS FLUTUANTES — on/off + mixer de cor ──
   Padrão do app = sem borda explícita (o modal se define pela sombra).
   Quando ligada, o usuário escolhe a cor. --mb-cor guarda a escolhida. */
[data-modalborda="on"] .modal{
  position:relative; /* ancora o ::before NA janela (sem isto ele se ancorava no overlay e a borda 'vazava' para além da janela) */
  border:1.5px solid var(--mb-cor, var(--line)) !important;
}
[data-modalborda="on"] .modal::before{ /* leve realce interno para a borda “assentar” */
  content:''; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--mb-cor, transparent) 22%, transparent);
}

/* ── (3) CABEÇALHO DO CALENDÁRIO (grade da agenda) — mixer de cor ──
   .gw-head é a faixa com os dias da semana. Cada opção pinta o fundo
   e a borda inferior. --agh-cor guarda a cor derivada (comp/auto). */
/* 1360 — a cor da marca no cabeçalho estava LAVADA demais (14%→26% da marca sobre
   o branco). Subindo para 28%→46%, a faixa fica FIEL à cor da marca sem perder a
   leitura (o texto escuro continua legível nessa faixa). */
[data-aghead="tema"] .gw-head{
  background:linear-gradient(180deg, color-mix(in srgb,var(--blue) 28%,var(--surface)), color-mix(in srgb,var(--blue) 46%,var(--surface))) !important;
  border-bottom-color:var(--blue) !important;
}
[data-aghead="comp"] .gw-head,
[data-aghead="auto"] .gw-head{
  background:linear-gradient(180deg, color-mix(in srgb,var(--agh-cor,#0FA47A) 28%,var(--surface)), color-mix(in srgb,var(--agh-cor,#0FA47A) 46%,var(--surface))) !important;
  border-bottom-color:var(--agh-cor,#0FA47A) !important;
}
[data-aghead="cinza"] .gw-head{
  background:linear-gradient(180deg, color-mix(in srgb,var(--ink) 5%,var(--surface)), color-mix(in srgb,var(--ink) 11%,var(--surface))) !important;
  border-bottom-color:color-mix(in srgb,var(--ink) 26%,var(--surface)) !important;
}
[data-aghead="branco"] .gw-head{
  background:#FFFFFF !important;
  border-bottom-color:#E5EDF6 !important;
}

/* ── (3b) BARRA DE CONTROLES DO CALENDÁRIO (.gw-toolbar) — mixer de cor ──
   A faixa com Dia/Semana/Mês, navegação de data e atalhos. Espelha as
   mesmas opções do cabeçalho; --calbar-cor guarda a derivada (comp/auto).
   O texto/ícones se apoiam em --ink, que os botões .gw-toolbar já usam. */
/* 1360 — a barra do calendário acompanha o cabeçalho, um tico mais leve: sobe de
   12%→22% para 24%→40% (≈4 pontos abaixo do cabeçalho), com a borda mais firme. */
[data-calbar="tema"] .gw-toolbar{
  background:linear-gradient(180deg, color-mix(in srgb,var(--blue) 24%,var(--surface)), color-mix(in srgb,var(--blue) 40%,var(--surface))) !important;
  border-color:color-mix(in srgb,var(--blue) 42%,var(--line)) !important;
}
[data-calbar="comp"] .gw-toolbar,
[data-calbar="auto"] .gw-toolbar{
  background:linear-gradient(180deg, color-mix(in srgb,var(--calbar-cor,#0FA47A) 24%,var(--surface)), color-mix(in srgb,var(--calbar-cor,#0FA47A) 40%,var(--surface))) !important;
  border-color:color-mix(in srgb,var(--calbar-cor,#0FA47A) 42%,var(--line)) !important;
}
[data-calbar="cinza"] .gw-toolbar{
  background:linear-gradient(180deg, color-mix(in srgb,var(--ink) 4%,var(--surface)), color-mix(in srgb,var(--ink) 9%,var(--surface))) !important;
  border-color:color-mix(in srgb,var(--ink) 20%,var(--surface)) !important;
}
[data-calbar="branco"] .gw-toolbar{
  background:#FFFFFF !important; border-color:#E5EDF6 !important;
}

/* ── (4) CANTOS DO RODAPÉ DA JANELA — redondo (padrão) vs. quadrado ──
   Quando o rodapé recebe cor, o fundo preenche até a quina e “vaza” o
   arredondamento do .modal — o Altair gostou desse visual quadrado.
   Aqui damos as DUAS opções explícitas via data-modalfootcanto. */
[data-modalfootcanto="redondo"] .modal-foot{
  border-bottom-left-radius:17px; border-bottom-right-radius:17px;
}
[data-modalfootcanto="quadrado"] .modal-foot{
  border-bottom-left-radius:0; border-bottom-right-radius:0;
}
/* no mobile o modal encosta embaixo — mantém reto de qualquer forma */
@media (max-width:640px){
  [data-modalfootcanto="redondo"] .modal-foot{ border-bottom-left-radius:0; border-bottom-right-radius:0; }
}

/* ═══════════════════════════════════════════════════════════════════
   BUILD 560 — Vidro/base da topbar desligável + poupar ícones no vidro
   ═══════════════════════════════════════════════════════════════════ */

/* ── VIDRO PADRÃO DA TOPBAR desligável ──
   A topbar tem, de fábrica, um "cartão" com fundo, borda e sombra (o
   visual Fluent). Agora dá para deixá-la CHAPADA — útil quando se aplica
   a cor de destaque nela ou se quer um topo minimalista. Ordem no CSS
   garante precedência sobre a regra-base (ambas com !important, esta vem
   depois). O tingimento de destaque (accent) continua funcionando. */
[data-topbar-base="off"] .topbar{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  border-radius:0 !important;
}
/* mas se a cor de destaque estiver ligada na topbar, respeitamos o
   tingimento dela mesmo com a base desligada (accent tem prioridade) */
/* barra chapada + cor: NADA na barra — o tingimento já vive no cartão do título */
[data-topbar-base="off"][data-accent-topbar="on"] .topbar,
[data-topbar-base="off"][data-accent-topbar="poupar"] .topbar{ background-color:transparent !important; border-bottom:none !important; }

/* ═══ 1472 — LÁPIDE: o CÉU ESTRELADO saiu do código por inteiro (a pedido do
   dono: telas de entrada sem efeitos nem fundos). Aqui moravam os keyframes
   ohcos*/ohcPisca*/ohcFlut*/ohcCad*, as classes .ohc-1..6, os meteoros
   .ohc-met, o .mini.cosmos e a miniatura .ohfundo-thumb-ceu. O motor JS
   (ohCeuSurf) saiu do login-fundo.js e do relatorios.js na mesma build. */

/* ═══ COPILOTO · balão de evento/sistema no Messenger (Camada 1) ═══ */
.ohEvRow{ display:flex; justify-content:center; margin:8px 0; }
.ohEvCard{ width:100%; max-width:92%; background:linear-gradient(160deg,#fff,#F7FAFE); border:1px solid var(--line);
  border-left:4px solid var(--ev,#1F73E0); border-radius:13px; padding:11px 13px 10px;
  box-shadow:0 2px 10px rgba(11,31,75,.09), inset 0 1px 0 rgba(255,255,255,.6); }
.ohEvHead{ display:flex; align-items:center; gap:8px; margin-bottom:5px; }
.ohEvIco{ width:26px; height:26px; border-radius:8px; flex:none; display:grid; place-items:center; font-size:15px;
  background:color-mix(in srgb, var(--ev,#1F73E0) 14%, transparent); }
.ohEvTit{ font-size:12px; font-weight:800; color:var(--ev,#1F73E0); letter-spacing:.2px; flex:1; }
.ohEvHora{ font-size:10.5px; color:var(--muted); flex:none; }
.ohEvTxt{ font-size:13.5px; color:var(--ink); line-height:1.45; }
.ohEvTxt b{ color:var(--ink); font-weight:800; }
.ohEvDet{ font-size:11.5px; color:var(--ink-2); margin-top:4px; padding:5px 9px; border-radius:8px;
  background:color-mix(in srgb, var(--ev,#1F73E0) 6%, var(--surface)); border:1px solid color-mix(in srgb,var(--ev,#1F73E0) 16%,transparent); }
.ohEvAcoes{ display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
.ohEvBtn{ font-family:inherit; font-size:12px; font-weight:800; cursor:pointer; padding:7px 12px; border-radius:9px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-2); transition:.14s; }
.ohEvBtn:hover{ border-color:var(--ev,#1F73E0); color:var(--ev,#1F73E0); transform:translateY(-1px); }
.ohEvBtn.pri{ border-color:transparent; color:#fff;
  background:linear-gradient(150deg, color-mix(in srgb,var(--ev,#1F73E0) 82%,#fff), var(--ev,#1F73E0));
  box-shadow:0 3px 10px color-mix(in srgb,var(--ev,#1F73E0) 40%,transparent); }
.ohEvBtn.pri:hover{ color:#fff; filter:brightness(1.06); }

/* ===== Impulse Topbar — breadcrumb + config da aba "Topbar" ===== */
.page-crumb{margin-bottom:2px;max-width:100%}
.oh-crumb{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;font-size:12px;overflow:hidden;line-height:1.2}
.oh-crumb .ohc-a{color:var(--blue-700);font-weight:600;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
.oh-crumb .ohc-a:hover{text-decoration:underline}
.oh-crumb .ohc-cur{color:var(--ink);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oh-crumb .ohc-sep{color:var(--muted);display:inline-flex;flex:none}
@media(max-width:640px){ .oh-crumb .ohc-a{max-width:26vw} .oh-crumb{font-size:11.5px;gap:4px} }

.ohtb-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:10px;margin-bottom:4px}
.ohtb-card{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:12px;padding:12px 13px;cursor:pointer;font-family:inherit;transition:.15s}
.ohtb-card:hover{border-color:var(--blue-line)}
.ohtb-card.on{border-color:var(--blue);background:var(--blue-soft)}
.ohtb-card-h{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.ohtb-radio{width:16px;height:16px;border-radius:50%;border:2px solid var(--muted);flex:none}
.ohtb-radio.on{border-color:var(--blue);background:radial-gradient(circle,var(--blue) 42%,transparent 47%)}
.ohtb-card-n{font-size:13.5px;font-weight:800;color:var(--ink)}
.ohtb-card-d{font-size:11.5px;color:var(--muted);line-height:1.4}
.ohtb-sec{margin-top:16px}
.ohtb-sec-t{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-2);margin-bottom:8px}
.ohtb-chips{display:flex;flex-wrap:wrap;gap:7px}
.ohtb-chip{padding:7px 13px;border-radius:99px;font-size:12.5px;font-weight:700;border:1.5px solid var(--blue-line);background:transparent;color:var(--muted);cursor:pointer;font-family:inherit}
.ohtb-chip.on{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-700)}
.ohtb-telas{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.ohtb-check{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:9px;font-size:12.5px;font-weight:600;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;font-family:inherit}
.ohtb-check.on{border-color:var(--blue);color:var(--blue-700)}
.ohtb-box{width:15px;height:15px;border-radius:4px;border:2px solid var(--muted);flex:none}
.ohtb-check.on .ohtb-box,.ohtb-box.on{border-color:var(--blue);background:var(--blue)}
.ohtb-tgs{display:flex;flex-direction:column}
.ohtb-tg{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border:none;border-bottom:1px solid var(--line);background:none;cursor:pointer;font-family:inherit;width:100%}
.ohtb-tg-dep{opacity:.45;cursor:not-allowed}
.ohtb-tg-dep .ohtb-tg-l{position:relative}
.ohtb-tg-dep .ohtb-tg-l::after{content:" 🔒";font-size:10px;opacity:.7}
.ohtb-tg:last-child{border-bottom:none}
.ohtb-tg-l{font-size:13px;color:var(--ink);font-weight:600;text-align:left}
.ohtb-sw{width:38px;height:22px;border-radius:99px;position:relative;flex:none;box-shadow:inset 0 1px 2px rgba(19,41,75,.22)}
.ohtb-sw.on{background:linear-gradient(180deg,#3B8CF0,#1F73E0)}
.ohtb-sw.off{background:linear-gradient(180deg,#3d516b,#2c3c50)}
.ohtb-sw::after{content:"";position:absolute;top:3px;width:16px;height:16px;border-radius:50%;background:linear-gradient(180deg,#fff,#eef3f9);box-shadow:0 1px 2px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.9);transition:.18s var(--ease,ease)}
.ohtb-sw.on::after{left:19px}
.ohtb-sw.off::after{left:3px}
.ohtb-pv{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.ohtb-pv-bar{display:flex;align-items:center;gap:11px}
.ohtb-pv-ic{width:34px;height:34px;border-radius:10px;background:linear-gradient(150deg,var(--blue),var(--blue-700));flex:none}
.ohtb-pv-tit{font-size:16px;font-weight:800;color:var(--ink);line-height:1.1;margin-top:2px}
.ohtb-pv-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.ohtb-pv-acts{display:flex;gap:6px;flex:none}
.ohtb-pill{padding:5px 10px;border-radius:8px;font-size:11.5px;font-weight:700;border:1px solid var(--blue-line);color:var(--ink-2)}
.ohtb-pill.on{background:var(--blue);color:#fff;border-color:var(--blue)}

/* faixa de trilha (largura total) e trilha compacta — comportamento mobile */
.page-crumb-bar{padding:1px 2px 11px;margin-bottom:2px}
.page-crumb-bar .oh-crumb{font-size:12.5px;overflow:visible;flex-wrap:wrap;row-gap:3px}
.page-crumb-bar .oh-crumb .ohc-a{max-width:none}
.oh-crumb .ohc-back{color:var(--blue-700);font-weight:700;display:inline-flex;align-items:center;gap:3px}
.oh-crumb.oh-crumb-compact{font-size:13px}

/* ===== Filtro "Situação" (dropdown multi-seleção da aba de pacientes) ===== */
.pac-sit{position:relative;display:inline-flex}
.pac-sit-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border-radius:9px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.pac-sit-btn.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-700)}
.pac-sit-btn svg{flex:none}
.pac-sit-chev{opacity:.7}
.pac-sit-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:200px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(19,41,75,.22);padding:5px;animation:dpIn .13s ease}
.pac-sit-opt{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border:none;background:none;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left}
.pac-sit-opt:hover{background:var(--blue-soft)}
.pac-sit-opt svg{color:var(--muted);flex:none;width:15px;height:15px}
.pac-sit-opt.on,.pac-sit-opt.on svg{color:var(--blue-700)}
.pac-sit-box{width:16px;height:16px;border-radius:5px;border:2px solid var(--muted);flex:none;position:relative}
.pac-sit-opt.on .pac-sit-box{border-color:var(--blue);background:var(--blue)}
.pac-sit-opt.on .pac-sit-box::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}

/* ===== Dock de janelas minimizadas (rádio / Messenger) — tipo taskbar ===== */
.minChip{position:fixed;z-index:38;width:212px;display:inline-flex;align-items:center;gap:9px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 7px 8px 11px;box-shadow:0 8px 26px rgba(0,0,0,.4);cursor:move;touch-action:none}
.minChip .mcIco{color:var(--hub-emblema,#8FC0FF);display:inline-flex;flex:none}
.minChip .mcNome{font-size:12.5px;font-weight:800;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.15}
.minChip .mcSub{font-size:10px;color:var(--muted);font-weight:600;display:flex;align-items:center;margin-top:1px}
.minChip .mcDot{width:6px;height:6px;border-radius:50%;background:var(--hub-emblema,#8FC0FF);display:inline-block;margin-right:5px;flex:none}
.minChip .mcBtns{display:flex;gap:2px;margin-left:2px}
.minChip .mcB{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:var(--ink-2);cursor:pointer;background:var(--bg);border:none}
.minChip .mcB:hover{background:var(--blue-soft);color:var(--blue-700)}
.minChip .mcB.danger:hover{background:var(--red-soft,#3a2530);color:var(--red)}

/* Topbar — subtítulo ao lado do título (com separador vertical) */
#pageTitleWrap.tb-sublado{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:0}
#pageTitleWrap.tb-sublado #pageCrumb{flex-basis:100%}
#pageTitleWrap.tb-sublado #pageTitle{flex:0 1 auto;max-width:100%}
#pageTitleWrap.tb-sublado #pageSub{position:relative;margin-left:13px;padding-left:14px;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#pageTitleWrap.tb-sublado #pageSub::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:14px;background:var(--line)}

/* Texto no botão de ação (build 838 → completado no 926): quando ligado, o botão
   principal de cada tela mostra seu rótulo curto (data-al) ao lado do ícone.
   Só no computador — no celular o botão continua só o ícone. */
.tb-acao-com-texto #pageAction .btn-act[data-al]::after{content:attr(data-al);font-weight:800;font-size:13.5px;white-space:nowrap;margin-left:2px}
.tb-acao-com-texto #pageAction .btn-act[data-al]{gap:7px!important;padding-left:15px!important;padding-right:15px!important}
@media(max-width:760px){
  .tb-acao-com-texto #pageAction .btn-act[data-al]::after{display:none}
  .tb-acao-com-texto #pageAction .btn-act[data-al]{gap:0!important;padding-left:11px!important;padding-right:11px!important}
}

/* 1326 — Fusão ✦: o cartão de título vira um OMNIBOX (barra de endereço + busca).
   Clicável (abre a busca universal / Ctrl+K); o breadcrumb dentro segue navegável. */
.topbar.tb-fusao .topbar-card{
  background:#F1F6FD; border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6);
  border-radius:12px; padding:9px 13px; cursor:text;
  transition:background .15s ease, border-color .15s ease;
}
.topbar.tb-fusao .topbar-card:hover{ background:#EAF2FD; border-color:var(--blue-line); }
.topbar.tb-fusao .oh-crumb{ font-size:13.5px; overflow:visible; }
/* 1331 — emblema do Impulse como ícone-raiz do omnibox (no lugar da casinha) */
.oh-crumb .ohc-emblema{ width:18px; height:18px; border-radius:5px; margin-right:6px; vertical-align:-4px; flex:none; display:inline-block; }
.topbar.tb-fusao .oh-crumb .ohc-cur{ font-weight:800; }
.topbar.tb-fusao .oh-crumb .ohc-a{ max-width:none; }
/* dica de atalho à direita do omnibox */
.topbar.tb-fusao .topbar-card::after{
  content:"Ctrl+K"; margin-left:auto; padding:2px 8px; border:1px solid var(--line);
  border-bottom-width:2px; border-radius:6px; background:#fff;
  font-size:10.5px; font-weight:800; color:var(--muted); white-space:nowrap; flex:none; align-self:center;
}
@media(max-width:760px){ .topbar.tb-fusao .topbar-card::after{ display:none } .topbar.tb-fusao .topbar-card{ padding:8px 11px } }
/* 1330 — cluster de navegação (Voltar/Avançar/Atualizar/Início) à esquerda, na Fusão */
.tb-navcluster{ display:flex; align-items:center; gap:3px; flex:none }
/* 1342 — cluster de navegação (Voltar/Avançar/Atualizar/Início) no estilo Impulse:
   mesma linguagem do botão "fantasma" (.btn.ghost) — leve gradiente branco→azulado,
   borda azul-clara e ícone azul — pra combinar com o omnibox da Fusão. */
.tb-navbtn{ width:34px; height:34px; border-radius:10px; border:1px solid var(--blue-line); background:linear-gradient(180deg,#FFFFFF,#F5F9FF); color:var(--blue); box-shadow:inset 0 1px 0 rgba(255,255,255,.6); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background .14s, color .14s, border-color .14s, transform .1s; flex:none; padding:0 }
.tb-navbtn:hover{ background:var(--blue-soft); color:var(--blue-700); border-color:var(--blue-line) }
.tb-navbtn:active{ transform:scale(.9) }
.tb-navbtn svg{ width:16px; height:16px }
/* 1447 — Voltar/Avançar à moda de celular: apagados (sem alvo) nas pontas da história.
   Ficam translúcidos, sem cursor de clique e sem reagir ao hover/press — como o
   chevron cinza do topo de um app de celular quando não há pra onde ir. */
.tb-navbtn.tb-nav-off{ opacity:.34; cursor:default; pointer-events:none; box-shadow:none }
.tb-nav-spin svg{ animation:tbNavSpin .45s linear }
@keyframes tbNavSpin{ from{transform:rotate(0)} to{transform:rotate(360deg)} }
@media(max-width:760px){ .tb-navcluster{ display:none } }

/* Topbar — ocultar retângulo (flat) e divisor opcional */
.topbar-card.tb-flat{background:none!important;background-image:none!important;border:none!important;box-shadow:none!important;padding:0!important}
.topbar.tb-divisor{border-bottom:1px solid var(--line)!important;padding-bottom:11px!important}

/* Sidebar — separadores opcionais (emblema e botões) */
.nav.sb-sep-botoes > button + button{border-top:1px solid rgba(255,255,255,.055)}

/* Topbar — prévia ao vivo reflete as opções (retângulo, divisor, subtítulo ao lado) */
.ohtb-pv-bar.pv-card{padding:7px 13px 7px 7px;border-radius:13px;border:1px solid var(--blue-line);background:linear-gradient(135deg,rgba(74,142,194,.10),rgba(74,142,194,.03))}
.ohtb-pv.pv-divisor::after{content:"";display:block;height:1px;background:var(--line);margin:12px -15px -13px}
.ohtb-pv-lado{display:flex;align-items:baseline;flex-wrap:wrap}
.ohtb-pv-lado .ohtb-pv-sub{position:relative;margin-left:11px;padding-left:12px;margin-top:0}
.ohtb-pv-lado .ohtb-pv-sub::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:11px;background:var(--line)}


/* ===== HOF — Faceograma (mapa facial clicável) ===== */
.hfx-wrap{border:1px solid var(--line);border-radius:14px;padding:11px 12px 9px;margin-bottom:13px;background:var(--bg)}
.hfx-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.hfx-tit{font-size:12px;font-weight:900;color:var(--hub-emblema,#8FC0FF);letter-spacing:.4px;text-transform:uppercase}
.hfx-seg{display:flex;gap:5px}
.hfx-sg{padding:5px 11px;border-radius:8px;border:1.5px solid var(--blue-line);background:transparent;color:var(--ink-2);font-size:11.5px;font-weight:800;font-family:var(--font);cursor:pointer;transition:.15s}
.hfx-sg.on{background:var(--blue-soft);color:var(--blue-700);border-color:var(--blue)}
#hofFaceBox{display:flex;justify-content:center}
.hfx-svg{width:100%;max-width:290px;display:block;border-radius:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 7%,transparent),transparent)}
.hfx-traco{color:var(--ink-2)}
.hfx-traco .hfx-t{fill:none;stroke:var(--ink-2);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.hfx-traco .hfx-f{fill:none;stroke:var(--muted);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.hfx-traco .hfx-d{fill:none;stroke:var(--muted);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;opacity:.7}
.hfx-rg{fill:rgba(143,192,255,.001);stroke:var(--hub-emblema,#8FC0FF);stroke-opacity:.32;stroke-width:1;stroke-dasharray:3 3;cursor:pointer;transition:.15s}
.hfx-rg:hover{fill:color-mix(in srgb,var(--hub-emblema,#8FC0FF) 16%,transparent);stroke-opacity:1;stroke-width:1.6;stroke-dasharray:none}
.hfx-rg.on{fill:color-mix(in srgb,var(--hub-emblema,#8FC0FF) 26%,transparent);stroke-opacity:1;stroke-width:2;stroke-dasharray:none}
.hfx-rg.tox.on{fill:color-mix(in srgb,var(--blue) 34%,transparent);stroke:var(--blue-700)}
.hfx-rg.pre.on{fill:color-mix(in srgb,var(--green) 30%,transparent);stroke:var(--green)}
.hfx-lbl{font-size:9px;font-weight:800;fill:var(--muted);pointer-events:none;opacity:.8}
.hfx-leg{display:flex;align-items:center;gap:12px;margin-top:8px;font-size:10.5px;color:var(--muted);font-weight:700;flex-wrap:wrap}
.hfx-leg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.hfx-leg i.tox{background:color-mix(in srgb,var(--blue) 60%,transparent)}
.hfx-leg i.pre{background:color-mix(in srgb,var(--green) 60%,transparent)}
.hfx-hint{margin-left:auto;font-weight:600;opacity:.85}
@media(max-width:520px){ .hfx-hint{display:none} }

/* ===== HOF — Faceograma consolidado (mapa do paciente na ficha) ===== */
.hfc-wrap{display:flex;gap:16px;align-items:flex-start;padding:14px 20px 4px;flex-wrap:wrap}
.hfc-face{flex:none;width:190px}
.hfc-face .hfx-svg{max-width:190px}
.hfc-side{flex:1;min-width:200px}
.hfc-tit{font-size:12px;font-weight:900;color:var(--hub-emblema,#8FC0FF);letter-spacing:.4px;text-transform:uppercase}
.hfc-sub{font-size:12.5px;color:var(--muted);font-weight:600;margin:3px 0 10px}
.hfc-chips{display:flex;gap:6px;flex-wrap:wrap}
.hfc-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:5px 9px;border-radius:99px;border:1px solid var(--line);color:var(--ink-2);background:var(--bg)}
.hfc-chip b{font-size:10.5px;font-weight:900;padding:1px 6px;border-radius:99px;background:var(--line);color:var(--ink)}
.hfc-chip.tox{border-color:color-mix(in srgb,var(--blue) 45%,transparent);color:var(--blue-700)}
.hfc-chip.tox b{background:color-mix(in srgb,var(--blue) 30%,transparent);color:var(--blue-700)}
.hfc-chip.pre{border-color:color-mix(in srgb,var(--green) 45%,transparent);color:var(--green)}
.hfc-chip.pre b{background:color-mix(in srgb,var(--green) 25%,transparent);color:var(--green)}
.hfc-leg{display:flex;align-items:center;gap:11px;margin-top:11px;font-size:10.5px;color:var(--muted);font-weight:700;flex-wrap:wrap}
.hfc-leg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.hfc-leg i.tox{background:color-mix(in srgb,var(--blue) 60%,transparent)}
.hfc-leg i.pre{background:color-mix(in srgb,var(--green) 60%,transparent)}
.hfc-hint{font-weight:600;opacity:.8}
/* regiões do mapa consolidado: cor = tipo, intensidade = nº de sessões */
.hfc-rg{stroke-width:1;cursor:default;transition:.15s}
.hfc-rg.vazio{fill:transparent;stroke:var(--line);stroke-opacity:.5;stroke-dasharray:2 3}
.hfc-rg.on{stroke-width:1.6}
.hfc-rg.on.tox{stroke:var(--blue-700)}
.hfc-rg.on.pre{stroke:var(--green)}
.hfc-rg.on.tox.i1{fill:color-mix(in srgb,var(--blue) 18%,transparent)}
.hfc-rg.on.tox.i2{fill:color-mix(in srgb,var(--blue) 34%,transparent)}
.hfc-rg.on.tox.i3{fill:color-mix(in srgb,var(--blue) 52%,transparent)}
.hfc-rg.on.pre.i1{fill:color-mix(in srgb,var(--green) 16%,transparent)}
.hfc-rg.on.pre.i2{fill:color-mix(in srgb,var(--green) 30%,transparent)}
.hfc-rg.on.pre.i3{fill:color-mix(in srgb,var(--green) 46%,transparent)}
.hfc-rg.on:hover{stroke-width:2.4}
@media(max-width:640px){ .hfc-wrap{gap:12px;padding:12px 14px 2px} .hfc-face{width:140px} .hfc-face .hfx-svg{max-width:140px} }

/* HOF — atalhos no cabeçalho (anamnese própria + comparador) */
.hof-acts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.hof-pend{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:var(--amber,#E08A2B);color:#1a1206;font-size:10px;font-weight:900;margin-left:5px;line-height:1}
@media(max-width:640px){ .hof-acts{width:100%;justify-content:flex-start;margin-top:8px} }

/* Faceograma — foco visível para navegação por teclado (acessibilidade) */
.hfx-rg:focus{outline:none}
.hfx-rg:focus-visible{fill:color-mix(in srgb,var(--hub-emblema,#8FC0FF) 20%,transparent);stroke:var(--hub-emblema,#8FC0FF);stroke-opacity:1;stroke-width:2.6;stroke-dasharray:none}

/* Topbar — interruptor travado pelo estilo (ex.: título no Minimalista) */
.ohtb-tg-off{opacity:.5;cursor:not-allowed}


/* ===== Topbar — divisor reto: a barra se estica até as bordas da página e a linha
   atravessa tudo. (O ::after não serve: .topbar tem overflow:hidden e recorta.) ===== */
.topbar.tb-divisor-reto{border-bottom:1px solid var(--line)!important;padding-bottom:11px!important;margin-left:calc(-1 * var(--oh-pad, 34px))!important;margin-right:calc(-1 * var(--oh-pad, 34px))!important;padding-left:var(--oh-pad, 34px)!important;padding-right:var(--oh-pad, 34px)!important}
/* Quando o reto está ativo junto do comum, o reto vence: uma única linha, sem borda/padding duplicado. */
.topbar.tb-divisor.tb-divisor-reto{padding-bottom:11px!important}
/* Barra oculta (modo só-ícones): os divisores não se aplicam — a barra não existe como faixa,
   então qualquer borda/margem viraria fragmento solto (o "pontinho" no canto). */
.topbar[data-so-icones="1"].tb-divisor,
.topbar[data-so-icones="1"].tb-divisor-reto{border-bottom:none!important;margin-left:0!important;margin-right:0!important;padding-bottom:0!important}
@media(max-width:880px){ .main{--oh-pad:12px} }
@media(max-width:480px){ .main{--oh-pad:8px} }

/* Agenda semanal — as colunas precisam poder encolher (1fr = minmax(auto,1fr) trava no
   tamanho do conteúdo e faz um dia invadir o outro). minmax(0,1fr) libera. */
.gw-head > *, .gw-dias > *{min-width:0}
.gw-col{min-width:0}
.gw-dw, .gw-dn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}

/* ===== Topbar — botão Voltar: 6 estilos (escolhidos em Configurações › Topbar) ===== */

/* Pacientes — colunas Idade, Sexo, Convênio (se o módulo estiver ligado) e RG */
/* 1538 — a vitrine travada tem 7 trilhas (Foto·Nome·Prontuário·Idade·CPF·Telefone·⋮);
   Convênio e Marcadores saíram da grade, então com-conv usa o mesmo template. O JS
   OHPacCols.aplicar() ainda manda no desktop com !important; isto é só o retrato fixo. */
.pac-row.com-conv, .pac-head.com-conv{grid-template-columns:34px minmax(0,1.6fr) 108px 80px 150px 160px 40px}
.pac-c-idade, .pac-c-sexo, .pac-c-rg{font-size:12.5px;color:var(--ink-2);font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pac-c-codigo{font-size:12.5px;color:var(--blue-700);font-weight:800;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;letter-spacing:.2px}
.pac-c-conv{text-align:center;min-width:0;overflow:hidden}
.pac-conv-tag{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800;padding:3px 9px;border-radius:99px;background:color-mix(in srgb,var(--blue) 16%,transparent);color:var(--blue-700);border:1px solid var(--blue-line)}
.pac-conv-tag.part{background:transparent;color:var(--muted);border-color:var(--line)}
.pac-head span{text-align:center}
.pac-head span:nth-child(2){text-align:left}
@media(max-width:1200px){
  .pac-row, .pac-head, .pac-row.com-conv, .pac-head.com-conv{grid-template-columns:34px minmax(0,1.5fr) 100px 74px 138px 148px 40px;gap:16px}
  .pac-c-rg, .pac-head span.h-rg{display:none}
}
@media(max-width:880px){
  /* 1484 — o cartão do paciente no celular SEM sobreposição (print do dono):
     as colunas novas da 1471 (Última consulta e Marcadores) não tinham área
     no empilhado e caíam por cima do vizinho. Agora cada uma tem casa:
     avatar | nome+situação / última consulta / telefone / marcadores, e as
     ações à direita. */
  .pac-row, .pac-row.com-conv{grid-template-columns:34px minmax(0,1fr) auto;grid-template-areas:'av nome acts' 'av meta acts' 'av cons acts' 'av tel acts' 'av email acts' 'av marc marc';column-gap:11px;row-gap:2px}
  .pac-c-idade, .pac-c-sexo, .pac-c-conv, .pac-c-codigo{grid-area:meta;text-align:left;display:inline-block;margin-right:8px}
  .pac-c-cons{grid-area:cons;text-align:left}
  .pac-c-cons .cons-l{justify-content:flex-start}
  .pac-c-marc{grid-area:marc;text-align:left;margin-top:4px}
  .pac-c-marc:empty{display:none}
  .pac-c-rg{display:none}
  .pac-acts{grid-area:acts;align-self:center}
  .pac-hov{display:none!important} /* no celular as ações moram no menu ⋯ */
}

/* ═══ Ficha do paciente — faixa de identificação (gruda abaixo do trilho) ═══ */
.ficha-faixa{position:sticky;top:52px;z-index:39;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:8px 13px;margin:-8px 0 15px;border-radius:11px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 14%,var(--surface)),color-mix(in srgb,var(--blue) 4%,var(--surface)));
  border:1px solid var(--blue-line);box-shadow:0 4px 16px -8px rgba(0,0,0,.5)}  /* 1291: sem blur */
.ficha-faixa .ff-av{width:26px;height:26px;border-radius:8px;background:linear-gradient(150deg,var(--blue),var(--blue-700));
  color:#fff;font-size:10px;font-weight:900;display:grid;place-items:center;flex:none}
.ficha-faixa .ff-nome{font-size:13.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38%}
.ficha-faixa .ff-meta{font-size:11px;font-weight:600;color:var(--ink-2);display:flex;gap:7px;flex-wrap:wrap;min-width:0}
.ficha-faixa .ff-meta i{font-style:normal;color:var(--muted);opacity:.5}
@media(max-width:640px){ .ficha-faixa .ff-meta{display:none} .ficha-faixa .ff-nome{max-width:100%} }
@media print{ .ficha-faixa{display:none} }

/* ═══ Ficha do paciente — refino estético (sem mexer nos momentos) ═══ */
.ficha-momento .kv{gap:0;padding:6px 20px 14px}
.ficha-momento .kv > div{padding:11px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 50%,transparent);transition:padding .15s}
.ficha-momento .kv > div:last-child{border-bottom:none}
.ficha-momento .kv > div:hover{padding-left:6px}
.ficha-momento .kv .k{font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;opacity:.85;margin-bottom:4px}
.ficha-momento .kv .v{font-size:14px;font-weight:600;line-height:1.35}
.ficha-momento .kv .k svg{opacity:.75;transition:.16s}
.ficha-momento .kv > div:hover .k svg{opacity:1;transform:scale(1.08)}
.ficha-momento .panel{border-radius:15px;box-shadow:0 1px 2px rgba(0,0,0,.14), 0 8px 22px -14px rgba(0,0,0,.45)}
.ficha-momento .panel-head{padding:14px 20px 12px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
.ficha-momento .panel-head h3{font-size:12px;font-weight:900;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-2)}
.ficha-momento .panel-head h3 svg{color:var(--blue);width:15px;height:15px}

/* Pacientes — coluna Consultas (última / próxima) e as demais opcionais */
.pac-c-cons{min-width:0;text-align:center;line-height:1.25}
.pac-c-cons .cons-l{display:flex;align-items:center;justify-content:center;gap:5px;font-size:11px;font-weight:700;white-space:nowrap}
.pac-c-cons .cons-l .ic{width:10px;height:10px;flex:none;opacity:.8}
.pac-c-cons .cons-l.ult{color:var(--ink-2)}
.pac-c-cons .cons-l.ult.atras{color:var(--amber,#E08A2B)}
.pac-c-cons .cons-l.prox{color:var(--blue-700);margin-top:2px}
.pac-c-cons .cons-l.prox.hoje{color:var(--green);font-weight:800}
.pac-c-cons .cons-l.prox.vazio{color:var(--muted);opacity:.7;font-weight:600}
.pac-c-dent, .pac-c-cpf, .pac-c-saldo{font-size:12.5px;color:var(--ink-2);font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pac-c-saldo .sd-ok{font-size:11px;font-weight:700;color:var(--muted);opacity:.75}
.pac-c-saldo .sd-dev{font-size:11.5px;font-weight:800;color:var(--red)}
@media(max-width:880px){
  .pac-c-cons, .pac-c-dent, .pac-c-cpf, .pac-c-saldo{grid-area:meta;text-align:left;display:inline-flex;margin-right:8px}
  .pac-c-cons{flex-direction:row;gap:9px}
}

/* ═══════════════════════════════════════════════════════════════
   FICHA EM ABAS (852)
   Reusa .fintab-* e .finsub-* do Financeiro. O .ficha-trilho e o
   .fm-chip continuam definidos acima — nada foi removido.
   Cores derivadas de --fmc via color-mix: adaptam ao tema sozinhas,
   sem hex fixo que quebra no dark.
   ═══════════════════════════════════════════════════════════════ */
.ficha-cab-clin{display:flex;flex-direction:column;gap:8px;margin:2px 0 12px}
.ficha-abas{margin:2px 0 14px}
/* 1265 — cabeçalho da ficha como CARD: identidade + Editar em cima, guias como
   abas de texto embaixo. (Aposentou os chips/pontinho da 1264.) */
.ficha-head{background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 2px rgba(19,41,75,.04),0 6px 20px rgba(19,41,75,.05);padding:18px 22px 0;overflow:hidden;margin:2px 0 16px}
.fh-top{display:flex;align-items:flex-start;gap:16px;padding-bottom:16px;flex-wrap:wrap}
.fh-av{position:relative;flex:none;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--blue-soft),color-mix(in srgb,var(--blue) 12%,var(--surface)));border:1px solid var(--blue-line);display:flex;align-items:center;justify-content:center;color:var(--blue-700);font-weight:800;font-size:20px;letter-spacing:.5px;padding:0;cursor:pointer;font-family:inherit;overflow:visible}
.fh-av img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.fh-av-cam{position:absolute;right:-2px;bottom:-2px;width:19px;height:19px;border-radius:50%;background:var(--blue);color:#fff;border:2px solid var(--surface);display:flex;align-items:center;justify-content:center}
.fh-acts{flex:none;display:flex;align-items:center;gap:8px}
.fh-linkbtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;background:var(--surface);border:1px solid var(--line);color:var(--muted);cursor:pointer}
.fh-linkbtn:hover{border-color:var(--blue-line);color:var(--blue-700);background:var(--blue-soft)}
.fh-id{flex:1;min-width:180px;padding-top:1px}
.fh-nome{display:block;font-size:23px;font-weight:800;line-height:1.15;color:var(--ink);margin:0 0 8px;word-break:break-word}
.fh-idade{font-size:13px;font-weight:700;color:var(--muted);vertical-align:middle;margin-left:4px}
.fh-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.fh-fone{display:inline-flex;align-items:center;gap:8px;color:var(--ink-2);font-size:15px;font-weight:600;background:none;border:0;font-family:inherit;cursor:pointer;padding:0}
.fh-fone:hover{color:var(--green)}
.fh-wa{width:22px;height:22px;border-radius:50%;background:var(--green-soft);color:var(--green);display:inline-flex;align-items:center;justify-content:center;flex:none}
.fh-esp-wrap{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap}
.fh-esp{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12.5px;font-weight:800;cursor:pointer;border:1px solid transparent;font-family:inherit}
.fh-esp-add{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1px dashed var(--line);color:var(--muted);background:none;cursor:pointer}
.fh-esp-add:hover{border-color:var(--blue-line);color:var(--blue-700)}
.fh-cat{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:13.5px;font-weight:600;background:none;border:1px dashed var(--line);border-radius:20px;padding:5px 12px;font-family:inherit;cursor:pointer}
.fh-cat:hover{color:var(--blue-700);border-color:var(--blue-line)}
.fh-editar{flex:none;display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:11px;padding:9px 15px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:all .14s}
.fh-editar:hover{border-color:var(--blue-line);color:var(--blue-700);background:var(--blue-soft)}
/* 1386 — as 7 guias da Ficha migraram de .fh-tab para o padrão .oh-subguia.
   A .fh-tabs vira a linha-mãe (borda embaixo, largura toda, rolagem no estreito);
   a .oh-subguia dentro dela não duplica a borda e não quebra linha (rola). */
.fh-tabs{display:flex;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line)}
.fh-tabs::-webkit-scrollbar{display:none}
.fh-tabs .oh-subguia{ border-bottom:none; flex-wrap:nowrap; }
.fh-tab{position:relative;flex:none;background:none;border:0;border-bottom:3px solid transparent;font-family:inherit;font-size:15px;font-weight:600;color:var(--muted);padding:14px 12px;cursor:pointer;white-space:nowrap;transition:color .15s;margin-bottom:-1px}
.fh-tab:hover{color:var(--ink-2)}
.fh-tab.on{color:var(--blue);font-weight:700;border-bottom-color:var(--blue)}
@media(max-width:720px){ .fh-editar{order:3} .fh-tab{font-size:14px;padding:13px 10px} .fh-nome{font-size:21px} }
/* 1270 — CONSERTO do cabeçalho: o div é `.ficha-head .ficha-abas`, e as regras
   antigas de `.ficha-abas` (a barra compacta pré-1265, com .fa-*) zeravam o
   padding do card e trocavam o fundo por um vidro — por isso parecia "de outro
   app". Reafirmamos o CARD aqui, com especificidade maior (0,2,0 > 0,1,0),
   mantendo só o sticky. Fundo sólido, cantos 18, sombra elevada e uma faixa de
   marca no topo. */
.ficha-head.ficha-abas{display:block;padding:18px 22px 0;gap:0;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 1px 2px rgba(19,41,75,.05),0 10px 30px rgba(19,41,75,.07);align-items:stretch;backdrop-filter:none;-webkit-backdrop-filter:none}
/* 1421 — a faixa azul→verde no topo do card do paciente saiu (pedido do dono). */
.ficha-head::before{content:none}
.ficha-head .fh-top{padding-top:6px}
.ficha-head .fh-av{width:64px;height:64px;box-shadow:0 0 0 4px color-mix(in srgb,var(--blue) 9%,transparent)}
.ficha-head .fh-tab.on{border-bottom-width:3px}
/* 1271 — cabeçalho mais denso, aproveitando o espaço: identidade em 2 linhas
   (fone · especialidade), um chip de SALDO à direita e a faixa de ALERTAS
   clínicos dentro do próprio card (full-bleed, tom âmbar-vermelho). */
.ficha-head.ficha-abas{padding-top:15px}
.fh-sub{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:3px}
.fh-dot{width:4px;height:4px;border-radius:50%;background:var(--muted);opacity:.5;flex:none}
.fh-acts{align-items:center}
.fh-saldo{display:inline-flex;flex-direction:column;align-items:flex-start;border:1px solid color-mix(in srgb,#C0392B 22%,var(--line));border-radius:12px;padding:6px 13px;background:linear-gradient(180deg,color-mix(in srgb,#C0392B 9%,var(--surface)),var(--surface));cursor:pointer;font-family:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 1px 2px rgba(19,41,75,.05)}
.fh-saldo:hover{border-color:color-mix(in srgb,#C0392B 42%,var(--line))}
.fh-saldo-l{font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#B23A2B;line-height:1.1}
.fh-saldo-v{font-size:15px;font-weight:900;color:#A33526;line-height:1.15}
.fh-alertas{display:flex;align-items:center;gap:7px 8px;flex-wrap:wrap;margin:4px -22px 0;padding:9px 22px;background:linear-gradient(180deg,#FEF4F4,#FEECEC);border-top:1px solid #F3D2D2}
.fh-alertas-t{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#B42318;flex:none}
.fh-alerta{display:inline-flex;align-items:center;gap:5px;background:linear-gradient(180deg,#fff,#FEF2F2);border:1.5px solid #F1C4C4;color:#B42318;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:700;max-width:100%;box-shadow:0 1px 1px rgba(180,35,24,.06)}
.fh-alerta svg{color:#D64545}
.fh-alerta-mais{cursor:pointer;font-family:inherit;background:var(--surface);border-color:var(--line);color:var(--muted)}
.fh-alerta-mais:hover{border-color:var(--blue-line);color:var(--blue-700)}
@media(max-width:720px){ .fh-alertas{margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px} }
/* 1271 — permissão por tipo (serviço × marketing): controle segmentado no
   estilo Frutiger Aero — pílula de vidro, opção ativa em gradiente lustroso
   com brilho no topo. Clona a ideia dos dois toggles do Simples Dental, mas
   com a nossa cara aqua. */
.cs-perm{padding:10px 0;border-top:1px dashed var(--line)}
.cs-perm:first-of-type{border-top:0;padding-top:2px}
.cs-perm-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.cs-perm-t{font-size:13px;font-weight:800;color:var(--ink)}
.cs-perm-a{font-size:11.5px;color:var(--muted);line-height:1.4;margin:3px 0 0;max-width:560px}
.cs-seg{display:inline-flex;gap:2px;padding:3px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--blue-soft) 55%,var(--surface)),var(--surface));box-shadow:inset 0 1px 2px rgba(19,41,75,.06),0 1px 0 rgba(255,255,255,.5)}  /* 1291: sem blur */
.cs-opt{appearance:none;border:0;background:none;font-family:inherit;font-size:12px;font-weight:800;color:var(--muted);padding:6px 12px;border-radius:9px;cursor:pointer;white-space:nowrap;transition:all .15s var(--ease,ease);line-height:1}
.cs-opt:hover{color:var(--ink-2)}
.cs-opt.on{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 2px 6px rgba(19,41,75,.16)}
.cs-opt.on.sim{background:linear-gradient(180deg,#1fb583,#12805A)}
.cs-opt.on.nao{background:linear-gradient(180deg,#F0A93A,#D98218)}
.cs-opt.on.sr{background:linear-gradient(180deg,#9AA7B6,#71808F)}
.cs-det{font-size:11.5px;color:var(--muted);margin-top:7px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cs-via{font-family:inherit;font-size:11.5px;font-weight:700;border:1px solid var(--line);border-radius:8px;padding:3px 7px;background:var(--surface);color:var(--ink-2);cursor:pointer}
@media(max-width:520px){ .cs-perm-h{align-items:flex-start} .cs-seg{width:100%;justify-content:space-between} }
/* 1264 — sub-guias achatadas: cada grupo da guia vira uma secao empilhada,
   com um rotulo discreto no lugar do que era a sub-aba. */
.ficha-secao{margin:0 0 22px}
.ficha-secao:last-child{margin-bottom:0}
.ficha-secao-tit{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.ficha-secao-tit::before{content:"";width:4px;height:15px;border-radius:3px;background:var(--blue-line);flex:none}

/* indicadores do paciente — rotulo acima + divisoria */
.ficha-kpi{display:flex;flex-wrap:wrap;background:color-mix(in srgb,var(--blue) 3%,var(--surface));border:1px solid var(--line);border-radius:12px;margin:0 0 16px}
.fk-g{flex:1 1 auto;min-width:0;padding:9px 15px;border-left:1px solid var(--line)}
.fk-g:first-child{border-left:none}
.fk-lbl{font-size:9px;font-weight:800;color:var(--muted);letter-spacing:.7px;text-transform:uppercase;margin-bottom:4px}
.fk-vals{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.fk-n{display:inline-flex;align-items:baseline;gap:4px}
.fk-n b{font-size:15px;font-weight:800;color:var(--ink)}
.fk-n span{font-size:11.5px;color:var(--muted)}
.fk-n.al b,.fk-n.al span{color:var(--amber)}
.fk-sep{color:var(--blue-line);font-style:normal;font-size:11px}
@media(max-width:760px){ .ficha-kpi .fk-g{flex:1 1 100%;border-left:none;border-top:1px solid var(--line)} .ficha-kpi .fk-g:first-child{border-top:none} }

/* rodape: o excluir vivia no fim da pagina; com abas, fim de pagina nao existe */
.ficha-rodape{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);text-align:right}

/* toolbar de tratamentos: dois rotulos — dois filtros e uma vista */
.trat-tool{padding:12px 20px 4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.trat-tool .tt-lbl{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}
.trat-tool .tt-lbl svg{width:13px;height:13px;flex:none}
.trat-tool .tt-r{margin-left:auto}
.trat-tool .tt-vista{font-size:11.5px}
@media(max-width:880px){ .trat-tool .tt-r{margin-left:0} }

/* ── Cabecalho fundido + abas fixas (853) ───────────────────────────
   A .ficha-cab deixou de ser 2 colunas: o card financeiro virou grupo
   dos indicadores. minmax(0,1fr), nunca 1fr puro. */
.ficha-cab{grid-template-columns:minmax(0,1fr)}
/* 1476 — DESTRAVADO a pedido do dono: o cabeçalho da ficha rolava "imóvel"
   (position:sticky;top:8px;z-index:41) e ficava plantado sobre o conteúdo.
   Agora ele rola junto com a página, como qualquer card. */
.ficha-abas{position:static;background:color-mix(in srgb,var(--surface) 96%,transparent);border:1px solid var(--line);border-radius:14px;padding:7px 9px;box-shadow:0 1px 3px rgba(19,41,75,.05);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ficha-abas .fa-id{display:inline-flex;align-items:center;gap:7px;flex:none;min-width:0}
.ficha-abas .fa-av{width:23px;height:23px;border-radius:50%;background:var(--blue-soft);color:var(--blue-700);display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;flex:none}
.ficha-abas .fa-nome{font-size:12.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.ficha-abas .fa-idade{font-size:10.5px;color:var(--muted);flex:none}
.ficha-abas .fa-sep{width:1px;height:19px;background:var(--line);flex:none}
.ficha-abas .fintab-grid{flex:1;min-width:0}
@media(max-width:880px){ .ficha-abas .fa-sep{display:none} .ficha-abas .fa-nome{max-width:130px} .ficha-abas .fintab-dd{flex:1;min-width:0} }

/* Identificacao fluida — dois niveis */
.ficha-ident{padding:14px 20px 16px}
.ficha-ident .fi-l1{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ficha-ident .fi-l2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.ficha-ident .fi-it{display:inline-flex;align-items:center;gap:6px;min-width:0}
.ficha-ident .fi-it+.fi-it::before{content:'\00b7';color:var(--blue-line);margin-right:7px}
.ficha-ident .fi-ic{display:inline-flex;color:var(--muted);opacity:.75;flex:none}
.ficha-ident .fi-ic svg{width:14px;height:14px}
.ficha-ident .fi-r{font-size:10px;font-weight:700;color:var(--muted);letter-spacing:.3px;text-transform:uppercase;flex:none}
.ficha-ident .fi-v{font-size:12.5px;color:var(--ink-2);min-width:0}
.ficha-ident .forte .fi-ic svg{width:16px;height:16px}
.ficha-ident .forte .fi-v{font-size:14px;font-weight:700;color:var(--ink)}
.ficha-ident .vazio{opacity:.45}
.ficha-ident .vazio .fi-v{color:var(--muted);font-weight:400}

/* Menu Acoes ao Paciente (853, escopado no 862) ─────────────────────
   COLISAO DE NOMES: .pac-menu e .pac-menu-pop JA EXISTIAM desde a linha
   397 — sao o menu "..." do card compacto da LISTA de pacientes. Eu
   reusei os mesmos nomes na ficha sem conferir. Toda regra abaixo esta
   escopada em .pac-acoes (que so existe no cabecalho da ficha), senao o
   menu da lista herda tudo: min-width, ancoragem e ate o lado para o
   qual ele abre — e la o botao fica a DIREITA, onde left:0 vazaria.
   Grep antes de construir. Vale para nome de classe tambem. */
/* o menu abre para o lado onde HA espaco: no PC o botao esta a direita
   (margin-left:auto), entao ancora pela direita e cresce para a esquerda. */
/* no celular o botao encosta na esquerda: ancora pela esquerda e cresce
   para a direita. Era isto que estava invertido e jogava o menu p/ fora. */
@media(max-width:640px){
}

/* indicador financeiro dentro dos KPIs */
.fk-n.ok b{color:var(--green)}
.fk-n b{white-space:nowrap}

/* ── Migracao de regioes HOF (853) ────────────────────────────────── */
.hfc-mig{display:flex;align-items:center;gap:9px;width:100%;margin:0 0 12px;padding:10px 13px;border-radius:11px;border:1px solid var(--amber);background:var(--amber-soft);color:var(--amber);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer;text-align:left}
.hfc-mig svg{width:16px;height:16px;flex:none}
.hfc-mig span{flex:1;min-width:0}
.hfc-mig b{font-size:11.5px;padding:3px 10px;border-radius:99px;background:var(--surface);color:var(--amber);flex:none}
.hfc-mig:hover{filter:brightness(.97)}
.hmg-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:0;margin-bottom:12px}
.hmg-tab{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border:1px solid transparent;border-radius:10px 10px 0 0;background:transparent;color:var(--muted);font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer;margin-bottom:-1px}
.hmg-tab i{width:7px;height:7px;border-radius:50%;flex:none;display:inline-block}
.hmg-tab b{font-size:11px;font-weight:700;color:var(--muted)}
.hmg-tab.on{background:var(--surface);border-color:var(--line);border-bottom-color:var(--surface);color:var(--ink)}
.hmg-body{max-height:44vh;overflow-y:auto}
.hmg-row{display:flex;align-items:center;gap:9px;padding:9px 2px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.hmg-row:last-child{border-bottom:none}
.hmg-row input[type=checkbox]{width:auto;margin:0;flex:none}
.hmg-row code{font-size:11.5px;color:var(--muted);background:var(--bg);padding:3px 7px;border-radius:6px;min-width:110px;font-family:var(--font-mono,monospace)}
.hmg-row .hmg-ar{color:var(--blue-line);flex:none}
.hmg-row b{font-size:12.5px;font-weight:800;color:var(--green);min-width:0}
.hmg-row select{font-size:12px;padding:6px 9px;border:1px solid var(--amber);border-radius:8px;background:var(--surface);color:var(--ink);font-family:inherit;width:auto}
.hmg-row .hmg-por{font-size:11px;color:var(--muted);flex:1;min-width:110px}
.hmg-row .hmg-proc{font-size:10.5px;color:var(--muted);opacity:.8;white-space:nowrap}
.hmg-row.a{align-items:flex-start}
.hmg-row .hmg-tit{font-size:12.5px;font-weight:700;color:var(--ink)}
.hmg-row .hmg-sub{font-size:11.5px;color:var(--red);margin-top:2px}
.hmg-vazio{padding:26px 10px;text-align:center;font-size:12.5px;color:var(--muted)}

/* ── Barra de abas com sub-abas dentro (859) ────────────────────────
   As sub-abas sao a SEGUNDA LINHA da barra: feixe vasculo-nervoso, nao
   adjacencia. Nada consegue se meter entre a aba e a sub-aba. */
/* 861: overflow:hidden (859) arredondava a 2a linha mas CORTAVA o popover
   do seletor de aba, que e position:absolute aqui dentro. O arredondamento
   passou para a propria .fa-l2. */
.ficha-abas{display:block;padding:0;overflow:visible}
.ficha-abas .fa-l1{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:7px 9px}
.ficha-abas .fa-l2{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:6px 9px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--fmc) 7%,transparent)}
.ficha-abas .fa-l2 .finsub{border-radius:8px;padding:6px 12px;font-size:12px}
.ficha-abas .fa-l2 .finsub.on{color:var(--fmc);border-color:color-mix(in srgb,var(--fmc) 30%,transparent)}
/* subtitulo do momento, a direita — herdou o icone e o texto do .fm-head */
.ficha-abas .fa-dir{display:inline-flex;align-items:center;gap:6px;margin-left:auto;min-width:0;padding-left:9px;border-left:1px solid var(--line)}
.ficha-abas .fa-dir svg{width:14px;height:14px;color:var(--fmc);flex:none}
.ficha-abas .fa-dir span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
@media(max-width:1100px){ .ficha-abas .fa-dir{display:none} }
/* no celular o subtitulo desce para dentro do proprio botao do dropdown */
.fintab-dd-tx{display:flex;flex-direction:column;align-items:flex-start;min-width:0;flex:1}
.fintab-dd-tx b{font-size:13.5px;font-weight:800;line-height:1.2}
.fintab-dd-tx i{font-style:normal;font-size:10.5px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fintab-opt-tx{display:flex;flex-direction:column;align-items:flex-start;min-width:0;flex:1}
.fintab-opt-tx b{font-size:13px;font-weight:800;line-height:1.2}
.fintab-opt-tx i{font-style:normal;font-size:10.5px;color:var(--muted);font-weight:600}

/* ── .pac-meta (861) ────────────────────────────────────────────────
   SETE elementos dividiam grid-area:meta — e no CSS Grid item na mesma
   area NAO fica lado a lado: empilha um sobre o outro. Era o "Masculino"
   impresso em cima do "22/08/07" no celular. O display:inline-block nao
   resolvia porque cada um era um grid item independente da mesma celula.
   Agora existe um wrapper: no computador ele DESAPARECE (display:contents)
   e os filhos seguem sendo grid items da .pac-row — as colunas configuraveis
   continuam funcionando igual. No celular ele vira flex e os metas fluem. */
.pac-meta{display:contents}
@media(max-width:880px){
  .pac-row .pac-meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 9px;grid-area:meta;min-width:0}
  .pac-row .pac-meta>*{margin-right:0}
  .pac-row .pac-meta .pac-c-rg{display:none}
}
/* cantos da 2a linha da barra de abas, agora que a mae e overflow:visible */
.ficha-abas .fa-l2{border-radius:0 0 13px 13px}

/* ═══ 1474 — LÁPIDE: os módulos JANELAS (#ohJanelas/.oh-jan*) e GUIAS
   (.oh-guias/.oh-guia-ic/tx/x/add/plus/pop, no #pageCrumbBar) foram
   EXPURGADOS do código, a pedido do dono — pesavam demais e não voltam.
   De quebra, morreu o conflito que o .oh-guia de ABA (3689) criava com o
   .oh-guia de SEGMENTO (481, o trilho Minhas/Equipe da Central) — era ele
   a "faixa cinza quebrada" do print de Tarefas. ═══ */

/* ── Painel em abas (867) ───────────────────────────────────────────
   Reusa .fintab-* do Financeiro. Nada de componente novo. */
.painel-abas{margin:0 0 16px}
.pn-tab .pn-ic{display:inline-flex;color:var(--muted);flex:none;transition:color .14s}
.pn-tab .pn-ic svg{width:15px;height:15px}
.pn-tab.on{background:color-mix(in srgb,var(--fmc) 11%,var(--surface));border-color:color-mix(in srgb,var(--fmc) 32%,transparent);color:var(--fmc)}
.pn-tab.on .pn-ic{color:var(--fmc)}
.pn-tab:hover .pn-ic{color:var(--fmc)}
.fintab-dd-btn .pn-ic,.fintab-opt .pn-ic{display:inline-flex;color:var(--fmc);flex:none}
.fintab-dd-btn .pn-ic svg,.fintab-opt .pn-ic svg{width:16px;height:16px}
.painel-aba-corpo{animation:fadeIn .16s ease}
@keyframes fadeIn{from{opacity:.6}to{opacity:1}}

/* ── Saudacao na topbar (868) ───────────────────────────────────────
   ATENCAO: o app.css tem 83 regras .topbar, 28 delas com !important.
   Por isso tudo aqui usa [data-saud=on] + !important, senao nao vence. */
.topbar-card[data-saud=on]{background:linear-gradient(135deg,var(--blue),var(--blue-700))!important;border-color:transparent!important}
.topbar-card[data-saud=on] #pageTitle{color:#fff!important}
.topbar-card[data-saud=on] #pageSub{color:rgba(255,255,255,.74)!important;font-style:italic}
.topbar-card[data-saud=on] #pageIcon{background:rgba(255,255,255,.18)!important;border-color:rgba(255,255,255,.25)!important}
.topbar-card[data-saud=on] #pageCrumb{color:rgba(255,255,255,.6)!important}
/* os botoes da direita: so o contraste muda — nada de estrutura */
.topbar-card[data-saud=on] .topbar-ic{background:rgba(255,255,255,.14)!important;border-color:rgba(255,255,255,.22)!important;color:#fff!important}
.topbar-card[data-saud=on] .topbar-ic:hover{background:rgba(255,255,255,.26)!important}
.topbar-card[data-saud=on] .topbar-ic svg{color:#fff!important}
.topbar-card[data-saud=on] .menu-btn{color:#fff!important}
@media(max-width:640px){ .topbar-card[data-saud=on] #pageSub{font-size:10.5px!important} }

/* contador da aba de pos-atendimento (869) — o numero avisa com a aba fechada */
.pn-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-left:1px;border-radius:99px;background:var(--fmc);color:#fff;font-size:9px;font-weight:800;flex:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--fmc) 26%,transparent)}
.fintab-opt .pn-badge{margin-left:6px}

/* ── Versiculo fundido na saudacao (870) ────────────────────────────
   O versiculo vem do cartao original e nao pode se perder so porque o
   espaco encolheu. */
.hero-vers{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--hvb,var(--line))}
.hero-vers .hv-tx{flex:1;min-width:160px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.hero-vers .hv-t{font-size:12.5px;font-style:italic;color:var(--hvc,var(--ink-2));line-height:1.45}
.hero-vers .hv-r{font-size:11px;color:var(--hvc2,var(--muted));font-weight:600;white-space:nowrap}
.hero-vers .hv-lit{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:var(--hvc2,var(--muted));white-space:nowrap}
.hero-vers .hv-lit i{width:6px;height:6px;border-radius:50%;flex:none;display:inline-block}

/* ── Saudacao na topbar (872) ──────────────────────────────────────
   O versiculo vive junto da saudacao, dentro do retangulo. */
.topbar-card[data-saud=on] #pageSub{display:flex!important;align-items:center;gap:9px;flex-wrap:wrap}
.topbar-card[data-saud=on] .saud-tx{min-width:0;overflow:hidden;text-overflow:ellipsis}

/* ── Canto da saudacao: sync + badge (881) ──────────────────────────
   Migram da topbar quando ela e ocultada no Painel. Mesma posicao
   relativa de onde vieram: canto superior direito. */
.hero-canto{position:absolute;top:18px;right:20px;display:flex;align-items:center;gap:10px;z-index:2}
.hero-sync{width:10px;height:10px;border-radius:50%;background:var(--hsc,#22C55E);flex:none;cursor:pointer;transition:.18s}
.hero-sync:hover{transform:scale(1.25)}
.hero-tar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.24);color:#fff;cursor:pointer;flex:none;padding:0;transition:.14s}
.hero-tar svg{width:16px;height:16px}
.hero-tar:hover{background:rgba(255,255,255,.28)}
.hero-tar i{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--red,#D8392B);color:#fff;font-size:9px;font-weight:800;font-style:normal;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px rgba(0,0,0,.18)}
@media(max-width:640px){ .hero-canto{top:14px;right:14px;gap:8px} .hero-tar{width:27px;height:27px} .hero-tar svg{width:14px;height:14px} }

/* ⚰️ 1492 — o CSS do avatar do card do DIA saiu com o avatar. */

/* ── 887: a topbar como PORTA-ICONES ────────────────────────────────
   Com a barra "oculta" no Painel do computador, ela nao some: o cartao do
   titulo some e ela vira uma faixa transparente com os icones, flutuando
   sobre o cartao da saudacao. Assim o #topbarAcoes NUNCA sai da .topbar —
   e o innerHTML do #content (21 lugares) nao o alcanca.
   Precisa de !important: sao 28 regras .topbar com !important no arquivo. */
/* 888: os icones vazavam do cartao. Eles estavam absolute em right:0 do
   #content — mas o cartao da saudacao tem o padding do content ao redor,
   entao a borda dele fica ANTES do right:0. O menu caia no fundo branco.
   Agora o pai posicionado e o proprio cartao (.hero-host), nao o content:
   right:0 passa a ser a borda do cartao, que e o que a gente quer. */
/* 890 — ALINHAMENTO PELO CENTRO OPTICO, nao pela borda.
     O cartao tem padding:22px 24px e o icone do periodo (lua/sol) tem 44px
     de altura — o centro dele fica em 22+22 = 44px do topo. Os icones tem
     30px: para o centro deles bater na mesma linha, o topo vai em
     44 - 15 = 29px.
     Alinhar pelo TOPO (22px) seria correto e visualmente errado: peca de
     30px ao lado de peca de 44px, encostadas pela borda de cima, ficam
     empurradas para o canto. O olho procura o centro num bloco horizontal.
     A lateral vira 24px — o mesmo padding do cartao. Antes era 18/20, que
     nao batia com nada. */
.topbar[data-so-icones="1"]{background:none!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important;position:absolute!important;top:29px;right:0;left:auto!important;width:auto!important;z-index:12;padding:0 24px 0 0!important;min-height:0!important}
.topbar[data-so-icones="1"] .topbar-card{display:none!important}
/* os icones ficam sobre o gradiente azul do cartao: contraste invertido */
.topbar[data-so-icones="1"] .topbar-act,.topbar[data-so-icones="1"] .topbar-ic{background:var(--so-pill,rgba(255,255,255,.14))!important;border-color:var(--so-pillbd,rgba(255,255,255,.22))!important;color:var(--so-ink,#fff)!important}
.topbar[data-so-icones="1"] .topbar-act:hover,.topbar[data-so-icones="1"] .topbar-ic:hover{background:rgba(255,255,255,.28)!important}
.topbar[data-so-icones="1"] .topbar-act svg,.topbar[data-so-icones="1"] .topbar-ic svg,.topbar[data-so-icones="1"] .menu-btn{color:var(--so-ink,#fff)!important}
.topbar[data-so-icones="1"] #pageAction,.topbar[data-so-icones="1"] #pageActSep{display:none!important}
/* 889 — O ANCORAMENTO. A .topbar e filha do <main class="main">, e NENHUM
   ancestral tinha position — entao o position:absolute dela se ancorava no
   VIEWPORT: right:34px virava "34px da borda da janela". Com a sidebar de
   ~280px ocupando a esquerda, os icones iam parar bem a direita do cartao,
   no fundo cinza. Era o menu vazando do print.
   O pai posicionado tem de ser o .main — que e quem tem a largura do cartao
   e o padding de 34px. Com ele relativo, right:34px encosta exatamente na
   borda do cartao, porque e o mesmo padding que afasta o cartao da borda. */
/* escopo MINIMO: o .main so vira posicionado quando a topbar esta em modo
   porta-icones. Fora do Inicio (ou com a opcao desligada) nada muda — e um
   position:relative global no .main mudaria a ancora de TODO absolute que
   hoje se apoia no viewport, o que e risco desnecessario por um alinhamento. */
.main:has(.topbar[data-so-icones="1"]){position:relative}
.hero-host{position:relative}
/* right = padding do .main (22px na 1280); o padding-right:24px acima e o do cartao */
.topbar[data-so-icones="1"]{right:22px!important}
@media(max-width:900px){ .topbar[data-so-icones="1"]{right:8px!important} }

/* 893 — o z-index do .welcome-card SAIU. Ele foi posto no 891 como cinto e
   suspensorio: o JS ja posiciona a topbar no cartao certo (892), entao ela nao
   flutua mais sobre o welcome. E o suspensorio custou caro — a .topbar tem
   z-index:4, e z-index CRIA CONTEXTO DE EMPILHAMENTO: o #mainMenuPanel, que
   vive dentro dela, tem z-index:9500 e mesmo assim nao escapa. Para quem esta
   de fora, ele vale 4. O .welcome-card com 5 cobria o menu inteiro ao abrir.
   Sem o z-index no welcome, a ordem do documento resolve: quem vem depois
   ganha, e o menu (position:absolute, dentro da topbar) fica por cima. */

/* ── 894: o menu sanduiche mais compacto ────────────────────────────
   Sao 13 itens + 5 titulos de secao. Com padding:10px 15px e border-top
   entre cada um, o menu passava de 700px e virava um rolo — coisas que
   voce usa junto (Radio, Notes, Telefones) ficavam a uma tela de distancia.
   ESCOPADO em #mainMenuPanel: a classe .agenda-dial-item tambem monta o
   speed dial da agenda e do estoque, onde sao poucos itens e o respiro faz
   sentido. Mexer na classe afetaria os tres. */
#mainMenuPanel .agenda-dial-item{padding:7px 12px!important;font-size:13px!important;gap:9px}
#mainMenuPanel .agenda-dial-item svg{width:16px!important;height:16px!important}
/* a linha entre CADA item vira separador so entre SECOES: 13 linhas viram 4 */
#mainMenuPanel .agenda-dial-item+.agenda-dial-item{border-top:none!important}
/* 894: os titulos de secao ("Ferramentas", "Conta", "Sistema") tem estilo
   INLINE — nao ha classe para mirar. Eu tinha escrito .menu-sec, que nao
   existe: o CSS seria ignorado em silencio. O seletor de atributo pega o
   que esta la, e o !important vence o inline (que e a unica coisa que
   vence, fora outro !important). */
#mainMenuPanel div[style*="letter-spacing"]{padding:8px 12px 3px!important;font-size:9.5px!important;border-top:1px solid var(--line);margin-top:4px}
#mainMenuPanel > div[style*="letter-spacing"]:first-child{border-top:none;margin-top:0}
/* o rotulo de estado (On/Off, "3 notas") encolhe junto */
#mainMenuPanel #radioMenuState,#mainMenuPanel #notesMenuState{font-size:10px!important;padding:2px 7px!important}

/* ── 897: o botao de data virou o rotulo ────────────────────────────
   O dpBtn agora mostra o periodo da visao (13 - 19 jul · 29ª sem · 2026)
   em vez de repetir a data que o rotulo ao lado ja dizia. Ele herda o
   visual do rotulo aero e ganha a setinha, porque continua clicavel. */
.dp-btn .ag-rot-main{font-size:13px;font-weight:800;color:var(--blue-700);letter-spacing:-.1px;white-space:nowrap;flex:none}
.dp-btn .ag-rot-selo{font-size:10.5px;font-weight:800;background:color-mix(in srgb,var(--blue) 14%,transparent);color:var(--blue-700);padding:2px 7px;border-radius:20px;white-space:nowrap;flex:none}
.dp-btn .ag-rot-sec{font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap;flex:none}
.dp-btn .dp-chev{width:13px;height:13px;color:var(--muted);flex:none;opacity:.7;transition:transform .16s}
.dp-wrap.open .dp-btn .dp-chev{transform:rotate(180deg)}
.dp-btn{gap:7px}

/* ── 899: a semana do ano, com barra ────────────────────────────────
   O selo virou "29/53ª sem" e ganhou uma barra de 3px EMBAIXO — ela nao
   rouba largura nenhuma, que era o aperto da barra da agenda. A leitura
   e instantanea: da para ver que e julho sem ler numero. */
.ag-rot-selo-wrap{display:inline-flex;flex-direction:column;gap:3px;flex:none;cursor:help}
.ag-rot-selo-wrap .ag-rot-selo{line-height:1.3}
.ag-rot-ano{display:block;height:3px;border-radius:2px;background:color-mix(in srgb,var(--blue) 16%,transparent);overflow:hidden;position:relative}
.ag-rot-ano i{position:absolute;left:0;top:0;bottom:0;border-radius:2px;background:linear-gradient(90deg,var(--blue),color-mix(in srgb,var(--blue) 55%,#fff));transition:width .3s var(--ease)}

/* ── 901: o versiculo veste a cor liturgica ─────────────────────────
   O _liturgiaDia() calcula o calendario inteiro (Pascoa, Advento, Quaresma,
   Triduo) e devolve a cor: roxo, branco, verde, vermelho, rosa. Isso pintava
   so uma bolinha de 6px. Agora a --hvlit chega aqui e veste o bloco.
   Escopado em .com-lit: sem liturgia (modo "versiculo fixo"), nada muda. */
.hero-vers.com-lit{
  margin-top:13px;padding:11px 13px;border-top:none!important;border-radius:11px;
  /* 1402 — o hero virou card claro: o bloco do versículo usa uma tinta suave da
     cor litúrgica sobre a superfície (antes era rgba(0,0,0,.16), pensado para o
     fundo azul — num card branco virava uma caixa cinza pesada). */
  background:color-mix(in srgb, var(--hvlit,#1F73E0) 8%, var(--surface));border-left:3px solid var(--hvlit,var(--blue));
  align-items:center;
}
/* a aspa serifada: marca a citacao sem roubar a primeira letra do texto */
.hero-vers.com-lit .hv-aspa{
  font-family:Georgia,'Times New Roman',serif;font-size:19px;line-height:1;
  color:var(--hvlit,var(--blue));opacity:.9;flex:none;align-self:flex-start;margin-top:2px;
}
.hero-vers:not(.com-lit) .hv-aspa{display:none}
.hero-vers.com-lit .hv-tx{flex-direction:column;align-items:flex-start;gap:5px}
.hero-vers.com-lit .hv-t{font-size:12.5px;line-height:1.5}
.hero-vers.com-lit .hv-r{font-weight:800;font-size:10.5px}
/* o selo do tempo: a cor liturgica de verdade, nao um cinza com bolinha */
.hero-vers.com-lit .hv-lit{
  color:var(--hvlit,var(--blue));background:color-mix(in srgb,var(--hvlit,#1F73E0) 18%,transparent);
  border:1px solid color-mix(in srgb,var(--hvlit,#1F73E0) 45%,transparent);
  border-radius:99px;padding:2px 8px;font-weight:700;
}
.hero-vers.com-lit .hv-lit i{background:var(--hvlit,var(--blue))!important;width:5px;height:5px;border-radius:50%;flex:none}
/* a referencia e o selo na mesma linha, separados por um fio */
.hv-meta{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap}
.hero-vers:not(.com-lit) .hv-meta{gap:6px}
.hero-vers.com-lit .hv-r+.hv-lit{position:relative}
.hero-vers.com-lit .hv-r+.hv-lit::before{content:'';position:absolute;left:-5px;top:50%;transform:translateY(-50%);width:1px;height:10px;background:var(--hvb,rgba(255,255,255,.2))}
@media(max-width:640px){ .hero-vers.com-lit{padding:10px 11px;margin-top:11px} }

/* ═══════════════ NFS-e — Financeiro › Gestão › Notas Fiscais ═══════════════ */
.nfse-head{margin-bottom:16px}
.nfse-subtabs{display:flex;gap:8px;flex-wrap:wrap}
.nfse-st{padding:8px 15px;border-radius:11px;background:var(--surface);border:1px solid var(--line);font-weight:700;font-size:13px;color:var(--muted);cursor:pointer;font-family:inherit;transition:all .13s var(--ease,ease)}
.nfse-st.on{background:var(--blue);color:var(--ico-on-blue,#fff);border-color:var(--blue);box-shadow:0 2px 7px rgba(var(--blue-rgb,31,115,224),.28)}
.nfse-panel{padding:20px}
.nfse-panel h3{font-size:15px;font-weight:800;margin-bottom:2px}
.nfse-panel .ph-sub{font-size:12.5px;color:var(--muted);margin-bottom:16px}
.nfse-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.nfse-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.nfse-grid .full,.nfse-grid3 .full{grid-column:1/-1}
.nfse-note{display:flex;gap:10px;background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:11px;padding:12px 14px;font-size:12.5px;color:var(--ink-2);margin-bottom:16px}
.nfse-note .i{font-size:16px;flex:none}
.nfse-upload{border:2px dashed var(--blue-line);border-radius:12px;padding:22px;text-align:center;background:var(--blue-soft);cursor:pointer;transition:.15s}
.nfse-upload:hover{border-color:var(--blue)}
.nfse-upload .ic{font-size:26px}
.nfse-upload .t{font-weight:700;font-size:13.5px;margin-top:6px}
.nfse-upload .s{font-size:12px;color:var(--muted);margin-top:2px}
.nfse-cert-ok{display:flex;align-items:center;gap:10px;background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 35%,transparent);border-radius:12px;padding:12px 14px}
.nfse-cert-ok .dot{width:34px;height:34px;border-radius:9px;background:var(--green);color:#fff;display:grid;place-items:center;font-size:16px;flex:none}
.nfse-cert-ok b{font-size:13.5px}.nfse-cert-ok small{color:var(--muted);font-size:11.5px}
.nfse-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}
.nfse-stats{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.nfse-stat{flex:1;min-width:150px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.nfse-stat .n{font-size:22px;font-weight:800}.nfse-stat .l{font-size:12px;color:var(--muted)}
.nfse-emitir-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(135deg,var(--blue-soft),var(--surface));border:1px solid var(--blue-line);border-radius:12px;padding:13px 15px;margin-bottom:10px}
.nfse-emitir-row:last-child{margin-bottom:0}
.nfse-emitir-row .info b{font-size:14px}.nfse-emitir-row .info small{color:var(--muted);font-size:12px;display:block;margin-top:1px}
.nfse-vazio{text-align:center;color:var(--muted);font-size:13px;padding:16px}
.nfse-filtros{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.nfse-chip{padding:6px 13px;border-radius:20px;background:var(--surface);border:1px solid var(--line);font-size:12.5px;font-weight:600;cursor:pointer;color:var(--muted);font-family:inherit}
.nfse-chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.nfse-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.nfse-table{width:100%;border-collapse:collapse}
.nfse-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:8px 12px;border-bottom:2px solid var(--line);font-weight:700;white-space:nowrap}
.nfse-table td{padding:12px;border-bottom:1px solid var(--line);font-size:13.5px;white-space:nowrap}
.nfse-table tr:last-child td{border-bottom:none}
.nfse-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap}
.nfse-badge.b-ok{background:var(--green-soft);color:var(--green)}
.nfse-badge.b-pend{background:var(--amber-soft);color:var(--amber)}
.nfse-badge.b-err{background:var(--red-soft);color:var(--red)}
.nfse-acts{display:flex;gap:6px}
.nfse-ic{width:30px;height:30px;border-radius:8px;background:var(--blue-soft);border:none;color:var(--blue);cursor:pointer;font-size:13px;display:grid;place-items:center;transition:.13s}
.nfse-ic:hover{background:var(--blue-line)}
/* 1338 — as variantes "BEM" (.btn-ghost/.btn-sm) passam a bater com as
   adjacentes (.ghost/.sm): o .btn-sm ganha o raio que faltava e o .btn-ghost
   ganha o mesmo leve gradiente do .ghost — duas grafias, um visual só. */
.btn.btn-ghost{background:linear-gradient(180deg,#FFFFFF,#F5F9FF);color:var(--blue);border:1px solid var(--blue-line);box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
.btn.btn-sm{padding:7px 12px;font-size:12.5px;border-radius:9px}
@media(max-width:640px){.nfse-grid,.nfse-grid3{grid-template-columns:1fr}.nfse-emitir-row{flex-direction:column;align-items:stretch}.nfse-emitir-row .btn{width:100%;justify-content:center}}

/* ═══════════════ 947 — INTENSIDADE DO AERO POR SUPERFÍCIE ═══════════════
   Volta o controle que existia (Desativado · Leve · Médio · Forte), agora
   com os níveis realmente implementados. NADA de desfoque: o vidro real foi
   aposentado de propósito por consumir GPU e bateria. O que gradua aqui é
   brilho, contorno e sombra — barato em qualquer máquina.
   'leve' é o padrão e não precisa de regra: é o visual que já existe. */

/* ── CARTÕES ── */
[data-aero-cards="medio"] .panel,[data-aero-cards="medio"] .stat{
  background-image:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0) 46%);
  border-color:color-mix(in srgb,var(--line),#fff 55%);
  box-shadow:0 2px 5px rgba(19,41,75,.07),0 12px 30px rgba(19,41,75,.11)}
[data-aero-cards="forte"] .panel,[data-aero-cards="forte"] .stat{
  background-image:linear-gradient(180deg,rgba(255,255,255,.98),rgba(255,255,255,0) 58%);
  border-color:#fff;
  box-shadow:0 3px 7px rgba(19,41,75,.10),0 20px 46px rgba(19,41,75,.17)}

/* ── BARRA DO TOPO ── */
[data-aero-topbar="medio"] .topbar-card{
  background-image:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0) 46%);
  box-shadow:0 2px 5px rgba(19,41,75,.07),0 12px 30px rgba(19,41,75,.11)}
[data-aero-topbar="forte"] .topbar-card{
  background-image:linear-gradient(180deg,rgba(255,255,255,.98),rgba(255,255,255,0) 58%);
  box-shadow:0 3px 7px rgba(19,41,75,.10),0 20px 46px rgba(19,41,75,.17)}

/* ── BARRA LATERAL ── (gradua o brilho que vive no fundo do elemento) ── */
[data-aero-sidebar="medio"] .side{
  background-image:radial-gradient(ellipse 200% 70% at 15% 0%,rgba(var(--blue-rgb,80,140,255),.30) 0%,transparent 55%),
    radial-gradient(ellipse 140% 60% at 85% 100%,rgba(var(--blue-rgb,40,100,220),.20) 0%,transparent 55%),
    linear-gradient(180deg,rgba(255,255,255,.07) 0%,transparent 40%),
    linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 72%) 0%,color-mix(in srgb,var(--blue),#000 78%) 46%,color-mix(in srgb,var(--blue),#000 84%) 100%)}
[data-aero-sidebar="forte"] .side{
  background-image:radial-gradient(ellipse 200% 70% at 15% 0%,rgba(var(--blue-rgb,80,140,255),.42) 0%,transparent 58%),
    radial-gradient(ellipse 140% 60% at 85% 100%,rgba(var(--blue-rgb,40,100,220),.30) 0%,transparent 58%),
    linear-gradient(180deg,rgba(255,255,255,.11) 0%,transparent 44%),
    linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 72%) 0%,color-mix(in srgb,var(--blue),#000 78%) 46%,color-mix(in srgb,var(--blue),#000 84%) 100%)}

/* ── JANELAS (modais) ── */
[data-aero-modais="medio"] .modal{
  background-image:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,0) 40%);
  box-shadow:0 28px 70px rgba(15,42,67,.36)}
[data-aero-modais="forte"] .modal{
  background-image:linear-gradient(180deg,rgba(255,255,255,1),rgba(255,255,255,0) 52%);
  box-shadow:0 34px 88px rgba(15,42,67,.44)}

/* ═══════ 949 — o desfoque agora obedece ao "Aero Desativado" ═══════
   Medimos os 4 usos de desfoque que restam no app: em maquina normal e ate
   4x mais lenta o custo e zero; so numa maquina 8x mais lenta aparece ~21%
   (e ainda assim sobra folga). Por isso eles ficam: o visual compensa.
   MAS quem escolhe "Desativado" esta pedindo maxima performance — e esses
   quatro ignoravam a escolha. Agora nao ignoram mais. */
[data-aero-off] .ficha-faixa,
[data-aero-off] .ficha-abas,

/* ═══════════ 952 — AERO COMPLETO: o desfoque de verdade, de volta ═══════════
   Medido antes de reativar (Playwright, tela cheia com ~30 superficies de vidro
   e barras fixas rolando): perda de 1% em maquina normal, 3% a 4x mais lenta e
   6% a 8x mais lenta — tudo acima dos 60 quadros/s. O custo que motivou a
   aposentadoria encolheu. Segue sendo OPCIONAL e nunca padrao: o padrao e Leve.
   Herda tudo do "forte" e acrescenta so o desfoque + um pouco mais de
   transparencia, para o borrado aparecer. */

/* ── CARTOES ── */
[data-aero-cards="completo"] .panel,[data-aero-cards="completo"] .stat{
  background-color:color-mix(in srgb,var(--surface) 94%,transparent);
  background-image:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,0) 58%);
  border-color:#fff;
  box-shadow:0 3px 7px rgba(19,41,75,.10),0 20px 46px rgba(19,41,75,.17)}  /* 1291: Completo sem blur (vidro falso reforçado) */
[data-theme=dark][data-aero-cards="completo"] .panel,[data-theme=dark][data-aero-cards="completo"] .stat{
  background-color:color-mix(in srgb,var(--surface) 66%,transparent);
  background-image:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 58%);
  border-color:rgba(255,255,255,.24)}

/* ── BARRA DO TOPO ── */
[data-aero-topbar="completo"] .topbar-card{
  background-color:color-mix(in srgb,var(--surface) 94%,transparent);
  background-image:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,0) 58%);
  box-shadow:0 3px 7px rgba(19,41,75,.10),0 20px 46px rgba(19,41,75,.17)}  /* 1291: Completo sem blur */

/* ── BARRA LATERAL ── (opaca por marca: ganha o brilho do forte, sem desfoque) ── */
[data-aero-sidebar="completo"] .side{
  background-image:radial-gradient(ellipse 200% 70% at 15% 0%,rgba(var(--blue-rgb,80,140,255),.42) 0%,transparent 58%),
    radial-gradient(ellipse 140% 60% at 85% 100%,rgba(var(--blue-rgb,40,100,220),.30) 0%,transparent 58%),
    linear-gradient(180deg,rgba(255,255,255,.11) 0%,transparent 44%),
    linear-gradient(168deg,color-mix(in srgb,var(--blue),#000 72%) 0%,color-mix(in srgb,var(--blue),#000 78%) 46%,color-mix(in srgb,var(--blue),#000 84%) 100%)}
/* ── JANELAS ── */
[data-aero-modais="completo"] .modal{
  background-color:rgba(255,255,255,.96);
  background-image:linear-gradient(180deg,rgba(255,255,255,1),rgba(255,255,255,0) 52%);
  box-shadow:0 34px 88px rgba(15,42,67,.44)}  /* 1291: Completo sem blur */
[data-theme=dark][data-aero-modais="completo"] .modal{background-color:rgba(20,32,52,.96)}  /* 1291: sem blur */

/* ═══ 952 — desfoque de volta nas telas de entrada (Clinicas e Profissional) ═══
   Esses cartoes sempre foram bem translucidos (9% e 4% de branco) e ficam sobre
   a arte de fundo escolhida na galeria — sem desfoque, o fundo aparece nitido
   atraves deles e o texto compete com a arte. O desfoque estava la e saiu junto
   com a aposentadoria do vidro real. Aqui ele volta: sao telas de passagem, com
   poucos cartoes, e obedecem ao "Aero Desativado" como todo o resto. */
#clinicaSelectScreen .csCard,.usr2-card{
  -webkit-backdrop-filter:blur(12px) saturate(1.2); backdrop-filter:blur(12px) saturate(1.2)}
[data-aero-off] #clinicaSelectScreen .csCard,[data-aero-off] .usr2-card{
  -webkit-backdrop-filter:none!important; backdrop-filter:none!important}

/* ═══ 954 — barra de busca e sub-abas da Aparência ═══
   Ela grudava no topo em qualquer tela. No celular isso ficava ruim: o modal
   já tem cabecalho fixo, entao eram DOIS blocos parados cobrindo a leitura, e
   a barra passava por cima dos cartoes ao rolar. Agora ela so gruda onde ha
   espaco de sobra (telas largas); no celular rola junto com o conteudo. */
.tema-navbar{background:var(--bg);padding:8px;margin:0 -8px 6px;border-radius:14px}
@media(min-width:900px){
  .tema-navbar{position:sticky;top:0;z-index:8;box-shadow:0 6px 10px -8px rgba(19,41,75,.25)}
}

/* ═══ 955 — linha do "ajuste fino por superficie" ═══
   Com o 5º nível (Completo) os botões pararam de caber numa linha no celular:
   o último vazava para fora do cartão, cortado. Em tela larga segue igual
   (rótulo à esquerda, botões à direita); em tela estreita o rótulo sobe e os
   botões usam a largura inteira, quebrando linha quando precisar. */
.aero-row{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.aero-lb{flex:0 0 116px;font-size:12.5px;color:var(--ink);font-weight:600}
.aero-bts{flex:1;display:flex;gap:5px;flex-wrap:wrap;min-width:0}
.aero-lvl{flex:1 1 auto;min-width:58px;padding:7px 6px;border-radius:8px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink-2);cursor:pointer;font-family:inherit;font-weight:700;
  font-size:11.5px;white-space:nowrap;transition:.15s var(--ease,ease)}
.aero-lvl:hover{border-color:var(--blue-line)}
.aero-lvl.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-700)}
@media(max-width:620px){
  .aero-row{flex-direction:column;align-items:stretch;gap:6px;margin-bottom:13px}
  .aero-lb{flex:none}
  .aero-lvl{flex:1 1 88px}
}

/* ═══ 956 — vidro de volta no teclado do PIN ═══
   Os cartoes de clinica e de perfil recuperaram o desfoque no 952, mas o
   cartao do teclado de PIN ficou de fora — e ele estava com fundo 85% opaco,
   onde desfoque nenhum apareceria. Aqui ele ganha o vidro e abre a
   transparencia o suficiente para o fundo aparecer atras, sem comprometer a
   leitura dos numeros. Obedece ao "Aero Desativado", como o resto. */
/* uma regra anterior fixa a cor do cartao com !important e desenha gradientes
   por cima; aqui mexemos SO na cor de fundo (mantendo os gradientes) para o
   vidro ter o que revelar atras. */
#usrPinCard{
  background-color:rgba(14,27,51,.50)!important;
  -webkit-backdrop-filter:blur(16px) saturate(1.25)!important; backdrop-filter:blur(16px) saturate(1.25)!important}
[data-aero-off] #usrPinCard{
  background-color:#0E1B33!important;
  -webkit-backdrop-filter:none!important; backdrop-filter:none!important}
/* as teclas acompanham: vidro leve por cima do cartao */
#usrPinCard ._pinBtn{backdrop-filter:none}   /* as teclas nao precisam de vidro proprio */

/* ═══ 957 — o vidro do cartao de PERFIL nao aparecia ═══
   O desfoque estava ligado desde o 952, mas uma regra anterior fixa
   `background:#16233C !important` — cor SOLIDA. Com o cartao opaco, o desfoque
   nao tem o que borrar e a tela fica chapada. Mesma armadilha do cartao do PIN.
   Aqui abrimos so a cor de fundo (os gradientes decorativos daquela regra
   continuam valendo) para o vidro ter o que revelar atras. */
.usr2-card{ background-color:rgba(22,35,60,.52)!important }
.usr2-card:hover{ background-color:rgba(27,43,72,.62)!important }
.usr2-card.sel{ background-color:rgba(27,43,72,.68)!important }
[data-aero-off] .usr2-card{ background-color:#16233C!important }
[data-aero-off] .usr2-card:hover{ background-color:#1B2B48!important }

/* ═══ 958 — a tela de BLOQUEIO entra no padrao das outras tres ═══
   Ela era a unica das quatro telas de entrada sem cartao: os elementos
   flutuavam direto sobre o gradiente, com rgba branco imitando vidro mas SEM
   desfoque nenhum — vidro falso sozinho, enquanto clinica, perfil e PIN usam
   vidro de verdade. Agora tem o mesmo cartao. Medido nessas telas (fundo
   animado + 4 cartoes de vidro): 128 fps na maquina 8x mais lenta, o dobro
   dos 60 necessarios. Obedece ao "Aero Desativado" como as demais. */
.lockCard{
  padding:26px 22px;border-radius:22px;
  background-color:rgba(14,27,51,.50);
  background-image:linear-gradient(135deg,rgba(255,255,255,.10) 0%,rgba(255,255,255,.03) 26%,transparent 52%),
                   radial-gradient(130% 90% at 50% -8%,rgba(150,190,255,.16) 0%,transparent 56%);
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 32px 80px rgba(0,0,0,.55),0 0 0 1px rgba(31,115,224,.12);
  -webkit-backdrop-filter:blur(16px) saturate(1.25); backdrop-filter:blur(16px) saturate(1.25)}
[data-aero-off] .lockCard{
  background-color:#0E1B33;
  -webkit-backdrop-filter:none!important; backdrop-filter:none!important}
.lockCard ._lockBtn{backdrop-filter:none}   /* as teclas nao levam vidro proprio */

/* ═══ 960 — UMA cor para as quatro telas de entrada ═══
   Cada tela tinha o azul escrito a mao — quatro tons diferentes (matiz 210 a
   222, luminosidade final de 7% a 29%), e a variacao aparecia ao passar de uma
   para a outra em segundos. Altair escolheu o tom da tela de perfil (#050D1F):
   o mais escuro e neutro, que deixa o ceu e os cartoes de vidro se destacarem.
   Agora e UMA variavel: mudar aqui muda as quatro, e elas nao tem como divergir
   de novo. */
:root{ --entrada-bg:#050D1F }

/* ═══ 961 — vidro de volta na tela publica (entrada) ═══
   A vitrine (.login-eco) ficou transl\u00facida mas SEM desfoque: o fundo aparecia
   n\u00edtido atr\u00e1s dela e o conjunto perdia profundidade. O cart\u00e3o do formul\u00e1rio
   (#loginCard) estava branco s\u00f3lido, sem nenhum efeito. Aqui os dois voltam ao
   vidro — com uma diferen\u00e7a das outras telas: estes s\u00e3o CLAROS sobre fundo
   escuro, ent\u00e3o a transpar\u00eancia \u00e9 contida (88%) para o texto escuro seguir
   leg\u00edvel. Obedecem ao "Aero Desativado". */
.login-eco{
  -webkit-backdrop-filter:blur(14px) saturate(1.2); backdrop-filter:blur(14px) saturate(1.2)}
#loginCard{
  background:color-mix(in srgb,var(--surface) 92%,transparent)!important;
  -webkit-backdrop-filter:blur(16px) saturate(1.15); backdrop-filter:blur(16px) saturate(1.15)}
.qk-card{
  background:color-mix(in srgb,var(--surface) 90%,transparent)!important;
  -webkit-backdrop-filter:blur(10px) saturate(1.1); backdrop-filter:blur(10px) saturate(1.1)}
[data-aero-off] .login-eco,[data-aero-off] #loginCard,[data-aero-off] .qk-card{
  -webkit-backdrop-filter:none!important; backdrop-filter:none!important}
[data-aero-off] #loginCard,[data-aero-off] .qk-card{ background:var(--surface)!important }

/* ═══════ 963 — refino da padronizacao das 4 telas de entrada ═══════ */

/* (1) O VIDRO dos cartoes de CLINICA e de PERFIL era de naturezas diferentes:
   clinica usava branco transl\u00facido (vidro claro/prateado) e perfil usava azul
   escuro transl\u00facido (vidro escuro). Altair prefere o de PERFIL — o de clinica
   passa a usar exatamente a mesma receita. */
#clinicaSelectScreen .csCard{
  background-color:rgba(22,35,60,.52)!important;
  background-image:linear-gradient(135deg,rgba(255,255,255,.09) 0%,rgba(255,255,255,.02) 26%,transparent 52%),
                   radial-gradient(120% 80% at 50% -10%,rgba(150,190,255,.14) 0%,transparent 56%)!important;
  border:1.5px solid rgba(255,255,255,.15)!important;
  -webkit-backdrop-filter:blur(12px) saturate(1.2)!important; backdrop-filter:blur(12px) saturate(1.2)!important}
#clinicaSelectScreen .csCard:hover{
  background-color:rgba(27,43,72,.62)!important;
  border-color:rgba(255,255,255,.22)!important}
[data-aero-off] #clinicaSelectScreen .csCard{ background-color:#16233C!important }
[data-aero-off] #clinicaSelectScreen .csCard:hover{ background-color:#1B2B48!important }

/* (2) LÁPIDE 1140 — regras do botão 🌌 do login (opacidade e hover). O
   botão saiu na 11.39 junto com o seletor da tela pública. */

/* (3) O TOM: o gradiente do C\u00e9u Vivo era distribu\u00eddo pela ALTURA de cada tela —
   tela curta mostrava s\u00f3 o come\u00e7o (escuro), tela alta chegava ao azul do fim.
   Mesmo fundo, tons diferentes. Ancorando a camada \u00e0 janela (e n\u00e3o ao elemento),
   as quatro passam a exibir exatamente o mesmo trecho do gradiente. */
#loginScreen > .ohCeuSurfLayer,
#clinicaSelectScreen > .ohCeuSurfLayer,
#userSelectScreen > .ohCeuSurfLayer,
#lockScreen > .ohCeuSurfLayer{
  position:fixed!important; top:0!important; left:0!important;
  width:100vw!important; height:100vh!important; bottom:auto!important}

/* ═══ 964 — o "clarao" ao tocar o teclado do PIN ═══
   Os cartoes do PIN e do bloqueio tem desfoque. Sem isolamento de pintura,
   QUALQUER mudanca dentro deles obriga o navegador a refazer a camada de vidro
   inteira — e as teclas (0,12s) e bolinhas (0,2s) tinham transicao animada, o
   que espalha esse trabalho por dezenas de quadros. O resultado e um clarao
   passando por cima do cartao a cada toque.
   Duas medidas: (a) o cartao pede para manter a camada de vidro estavel;
   (b) dentro dele, a mudanca de cor e instantanea — 1 repaint em vez de ~12. */
/* 966 — o `will-change:backdrop-filter` saiu daqui: era resto de quando o
   VIDRO ficava no proprio cartao (964). Depois que ele virou camada irma
   (::before, no 965), esta linha passou a promover o cartao a uma camada
   propria — e o ::before entao so enxergava o interior do cartao (vazio) em
   vez do fundo da pagina. Resultado: transparencia sem borrao. Medido:
   com will-change razao 0.43 (transparente), sem ele 0.01 (borrado). */
#usrPinCard,.lockCard{ contain:paint }
#usrPinCard ._pinBtn,#usrPinCard ._pinDot,
.lockCard ._lockBtn,.lockCard ._pinDot{ transition:none!important }
/* as teclas e bolinhas ganham camada propria: mexer nelas nao mexe no vidro */
#usrPinCard ._pinBtn,.lockCard ._lockBtn{ transform:translateZ(0) }

/* ═══ 966 — o vidro do teclado do PIN nao borrava: so ficava transparente ═══
   CAUSA (medida, isolando variavel por variavel): o painel que envolve o
   cartao centraliza com `transform:translate(-50%,-50%)` — e transform num
   ancestral ISOLA o backdrop-filter de todos os descendentes: o ::before
   passava a capturar so o interior do painel (vazio) em vez do fundo da tela.
   Sobrava a transparencia, sem borrao. A animacao de entrada tambem usava
   transform + opacity, com o mesmo efeito enquanto rodava.
   CORRECAO: centralizar SEM transform (inset:0 + margin:auto) e animar apenas
   o que nao cria contexto. Medido: razao 0.81 (transparente) -> 0.02 (borrado). */
#usrPinPanel{
  left:0!important; right:0!important; top:0!important; bottom:0!important;
  transform:none!important;
  margin:auto!important;
  height:-moz-fit-content; height:fit-content;
  animation:usrPinFade .28s cubic-bezier(.4,0,.2,1)!important}
@keyframes usrPinFade{ from{ opacity:0 } to{ opacity:1 } }
/* enquanto a animacao roda, a opacidade tambem isolaria o backdrop; por isso
   ela termina em opacity:1 e o navegador solta a camada logo em seguida. */

/* ═══ 967 — o vidro VOLTA para o proprio cartao ═══
   A tentativa de por o vidro num ::before (965) tinha um objetivo certo —
   isolar o vidro das mudancas internas — mas no contexto real do app ele
   parava de borrar: sobrava so transparencia (medido: razao 0.43, contra 0.01
   com o vidro no proprio cartao). Vidro que nao borra e pior que clarao.
   Voltamos o desfoque para o cartao e mantemos o que reduziu o clarao sem
   efeito colateral: DOM das bolinhas nao recriado (962) e troca de cor
   instantanea dentro do cartao (964). */
#usrPinCard,.lockCard{
  background-color:rgba(14,27,51,.50)!important;
  background-image:linear-gradient(135deg,rgba(255,255,255,.10) 0%,rgba(255,255,255,.03) 24%,transparent 50%),
                   radial-gradient(130% 90% at 50% -8%,rgba(150,190,255,.16) 0%,transparent 56%)!important;
  -webkit-backdrop-filter:blur(16px) saturate(1.25)!important; backdrop-filter:blur(16px) saturate(1.25)!important;
  contain:none!important; isolation:auto!important}
#usrPinCard::before,.lockCard::before{ content:none!important }
[data-aero-off] #usrPinCard,[data-aero-off] .lockCard{
  background-color:#0E1B33!important;
  -webkit-backdrop-filter:none!important; backdrop-filter:none!important}

/* ═══ Funil de Planos de Tratamento (build 1023) ═══ */
.funil-wrap{padding:2px}
.funil-board{display:grid;grid-template-columns:var(--fb,repeat(4,minmax(0,1fr)));gap:12px} /* 1725 — o template vem por variável (funil.js) pra media query do celular continuar mandando */
@media(max-width:820px){.funil-board{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.funil-board{grid-template-columns:1fr}}
.funil-col{background:var(--surface);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;min-height:340px}
.funil-col.over{outline:2px dashed color-mix(in srgb,var(--blue) 45%,transparent);outline-offset:-3px;background:color-mix(in srgb,var(--blue) 5%,var(--surface))}
.funil-colh{display:flex;align-items:center;gap:8px;padding:12px 13px;border-bottom:1px solid var(--line)}
.funil-colh .dot{width:9px;height:9px;border-radius:50%;flex:none}
.funil-colh .t{font-size:13px;font-weight:800;color:var(--ink)}
.funil-colh .c{margin-left:auto;font-size:11px;font-weight:800;background:var(--bg);color:var(--muted);padding:2px 9px;border-radius:99px}
.funil-sum{padding:7px 13px 0;font-size:11.5px;font-weight:800;color:var(--ink-2)}
.funil-sub{padding:7px 13px 0;font-size:11px;color:var(--muted)}
.funil-body{padding:10px;display:flex;flex-direction:column;gap:9px;flex:1;min-height:0}
.funil-card{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--surface);box-shadow:0 2px 6px rgba(19,41,75,.06);cursor:grab;transition:transform .1s,box-shadow .15s}
.funil-card:hover{box-shadow:0 7px 18px -9px rgba(19,41,75,.3);transform:translateY(-1px)}
.funil-card.drag{opacity:.4;cursor:grabbing}

/* Ocupação por cadeira no cabeçalho (build 1024) */
.gwcad-occ{margin-top:6px;height:5px;border-radius:3px;background:var(--bg);overflow:hidden}
.gwcad-occ i{display:block;height:100%;border-radius:3px;transition:width .3s}
.gwcad-occl{font-size:10px;font-weight:800;color:var(--muted);margin-top:3px}

/* Públicos inteligentes — central de campanhas (build 1024) */
.camp-seg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;padding:14px 20px 16px}
.camp-seg{display:flex;align-items:center;gap:11px;border:1px solid var(--line);background:var(--surface);border-radius:13px;padding:12px 14px;cursor:pointer;font-family:inherit;text-align:left;transition:.15s}
.camp-seg:hover{border-color:var(--blue-line);box-shadow:0 8px 20px -12px rgba(31,115,224,.5);transform:translateY(-2px)}
.camp-seg .ci{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--blue-soft);font-size:19px;flex:none}
.camp-seg .ct{flex:1;min-width:0;display:flex;flex-direction:column}
.camp-seg .cn{font-size:13.5px;font-weight:800;color:var(--ink)}
.camp-seg .cq{font-size:11.5px;color:var(--muted);margin-top:1px}
.camp-seg .cplus{font-size:11px;font-weight:800;color:var(--blue-700);background:var(--blue-soft);padding:4px 9px;border-radius:99px;flex:none}

/* Guias de convênio — TISS (build 1025) */
.guias-wrap{padding:2px}
.guia-tbl{width:100%;border-collapse:collapse;font-size:13px}
.guia-tbl th{text-align:left;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.guia-tbl td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.guia-tbl tbody tr:hover{background:color-mix(in srgb,var(--blue) 4%,var(--surface))}
.guia-tbl tbody tr:last-child td{border-bottom:none}
.guia-tuss{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:700;background:var(--bg);color:var(--ink-2);padding:2px 7px;border-radius:6px;border:1px solid var(--line)}
.guia-chip{display:inline-block;font-size:11px;font-weight:800;padding:3px 10px;border-radius:99px;white-space:nowrap}
.guia-chip.c-rasc{background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--blue-700)}
.guia-chip.c-env{background:color-mix(in srgb,var(--amber,#e8a33d) 16%,transparent);color:#9a6a12}
.guia-chip.c-paga{background:color-mix(in srgb,var(--green,#2fa96a) 16%,transparent);color:#1c7d4c}
.guia-chip.c-glosa{background:color-mix(in srgb,var(--red) 13%,transparent);color:var(--red)}
.guia-proc{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:7px;background:var(--surface)}

/* Editor de imagem clínica (build 1026) */
.eimg-wrap{display:flex;flex-direction:column;gap:0}
.eimg-tbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:2px 2px 12px}
.eimg-tool{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:7px 10px;font-size:12.5px;font-weight:700;color:var(--ink-2);cursor:pointer;font-family:inherit;line-height:1}
.eimg-tool:hover{border-color:var(--blue-line)}
.eimg-tool.on{border-color:var(--blue);background:var(--blue);color:#fff}
.eimg-colors{display:inline-flex;gap:5px;margin-left:2px;padding:0 4px;border-left:1px solid var(--line)}
.eimg-sw{width:20px;height:20px;border-radius:6px;cursor:pointer;border:2px solid transparent;box-shadow:0 0 0 1px var(--line) inset}
.eimg-sw.on{border-color:var(--ink)}
.eimg-wgrp{display:inline-flex;gap:4px;color:var(--ink-2);padding-left:4px;border-left:1px solid var(--line)}
.eimg-stage{background:#0b1220;border-radius:12px;padding:12px;display:flex;gap:12px;align-items:center;justify-content:center;min-height:220px;overflow:auto}
.eimg-stage.split{align-items:flex-start}
.eimg-side{position:relative;display:flex;flex-direction:column;align-items:center}
.eimg-lbl{align-self:flex-start;font-size:10.5px;font-weight:800;color:#fff;background:rgba(0,0,0,.5);padding:2px 8px;border-radius:6px;margin-bottom:6px;min-height:1px}
.eimg-loading{color:#cdd8ea;font-size:13.5px;text-align:center;padding:40px 10px}
.eimg-hint{font-size:12px;color:var(--muted);padding:11px 2px 2px}

/* Sino de notificações — painel da topbar (build 1029) */
.ntp-h{display:flex;align-items:center;gap:8px;padding:13px 15px;border-bottom:1px solid var(--line)}
.ntp-h b{font-size:14px;flex:1}
.ntp-cnt{font-size:11px;font-weight:800;color:#fff;background:var(--red);border-radius:99px;padding:2px 8px}
.ntp-h button{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:5px;border-radius:8px;display:grid;place-items:center}
.ntp-h button:hover{background:var(--bg);color:var(--ink-2)}
.ntp-h button svg{width:16px;height:16px}
.ntp-list{max-height:min(64vh,360px);overflow:auto}
.ntp-row{display:flex;gap:11px;padding:11px 14px;border-bottom:1px solid var(--line);cursor:pointer;align-items:center}
.ntp-row:hover{background:color-mix(in srgb,var(--blue) 4%,var(--surface))}
.ntp-dot{width:8px;align-self:stretch;border-radius:99px;flex:none;margin:2px 0}
.ntp-row.u .ntp-dot{background:var(--red)}
.ntp-row.m .ntp-dot{background:#E8A33D}
.ntp-row.l .ntp-dot{background:var(--blue)}
.ntp-em{font-size:19px;flex:none;line-height:1}
.ntp-bd{flex:1;min-width:0;display:flex;flex-direction:column}
.ntp-t{font-size:13px;font-weight:800;color:var(--ink);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntp-d{font-size:11.5px;color:var(--muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntp-sn{opacity:.35;flex:none;background:transparent;border:none;color:var(--muted);cursor:pointer;padding:4px;border-radius:8px;transition:.15s}
.ntp-row:hover .ntp-sn{opacity:1}
.ntp-sn:hover{background:var(--bg);color:var(--blue-700)}
.ntp-mais{font-size:11.5px;color:var(--muted);text-align:center;padding:10px 12px}
.ntp-f{display:flex;gap:8px;padding:11px 14px;border-top:1px solid var(--line);background:var(--bg)}
.ntp-f button{flex:1;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:9px;font-size:12px;font-weight:800;color:var(--ink-2);cursor:pointer;font-family:inherit}
.ntp-f button.p{flex:2;background:var(--blue);border-color:var(--blue);color:#fff}
.ntp-f button:hover{border-color:var(--blue-line)}

/* Sidebar em grupos (seções expansíveis) — build 1029 */
.navg{display:flex;flex-direction:column;gap:2px}
.navg-parent{display:flex;align-items:center;gap:2px}
.navg-parent>button[data-view]{flex:1;min-width:0}
.navg-chevbtn{flex:none;background:transparent;border:none;color:#8FA6C4;cursor:pointer;padding:8px 6px;border-radius:8px;display:grid;place-items:center}
.navg-chevbtn:hover{background:rgba(255,255,255,.1);color:#fff}
.navg-head{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:10px;color:#C9D9EC;font-weight:700;font-size:13.5px;text-align:left;width:100%;background:transparent;border:none;cursor:pointer;font-family:inherit;white-space:nowrap;overflow:hidden}
.navg-head>svg:first-child{width:19px;height:19px;flex:none;opacity:.9}
.navg-head:hover{background:rgba(255,255,255,.1);color:#fff}
.navg-head .nav-lbl{flex:1}
.navg-chev{width:14px;height:14px;flex:none;margin-left:auto;transition:transform .18s;opacity:.75}
.navg.open .navg-chev{transform:rotate(90deg);opacity:1}
.navg-kids{overflow:hidden;max-height:0;transition:max-height .22s ease;display:flex;flex-direction:column;gap:2px;margin:2px 0 2px 9px;padding-left:8px;border-left:1.5px solid rgba(255,255,255,.13)}
.navg.open>.navg-kids{max-height:440px}
.navg-kids>button[data-view]{font-size:12.8px}
/* menu compacto (icônico): ignora o agrupamento visual */
.app.compact .navg-chevbtn,.app.compact .navg-chev{display:none}
.app.compact .navg-kids{max-height:none!important;margin:0;padding:0;border-left:none}
.app.compact .navg-head{justify-content:center;padding:10px 0;gap:0}
.app.compact .navg-head .nav-lbl{display:none}

/* ═══════════════════════════════════════════════════════════════════════
   1040 — FLUIDEZ DAS TELAS DE ENTRADA (pública, clínicas, usuários,
   PIN e bloqueio) EM QUALQUER APARELHO
   ───────────────────────────────────────────────────────────────────────
   O QUE FOI MEDIDO (Chromium, aparelhos reais, antes desta correção):

     iPhone SE 375×667 · Clínicas  → 731px de conteúdo, overflow:hidden
                                     → 2 clínicas FORA do alcance
     iPhone SE 375×667 · Usuários  → com 7 profissionais, P3 a P7
                                     simplesmente não existiam na tela
     Celular deitado   · Bloqueio  → teclas ⌫ 0 ✓, "Trocar usuário" e
                                     "Sair" fora do alcance

   Três dessas telas são position:fixed — elas NÃO têm a rolagem do
   documento como rede de segurança (a tela pública tem, e por isso
   passou no teste). Sem rolagem própria e com overflow:hidden, uma
   clínica com 5 ou mais profissionais literalmente não conseguia
   entrar no app por um celular pequeno.
   ═══════════════════════════════════════════════════════════════════════ */

/* (1) O CONTEÚDO CABE — OU ROLA. Nunca mais some.
   `safe center` centraliza quando cabe e encosta no topo quando não cabe.
   O `center` comum corta as DUAS pontas, e a de cima é irrecuperável. */
#clinicaSelectScreen,#userSelectScreen,#lockScreen{
  overflow-y:auto!important; overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
  align-items:safe center!important; justify-content:safe center!important;
  box-sizing:border-box;
  padding-top:calc(14px + env(safe-area-inset-top,0px))!important;
  padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))!important;
  padding-left:calc(4px + env(safe-area-inset-left,0px))!important;
  padding-right:calc(4px + env(safe-area-inset-right,0px))!important}
/* a tela pública rola pelo documento; aqui só respeitamos o entalhe */
#loginScreen{
  padding-top:calc(24px + env(safe-area-inset-top,0px))!important;
  padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))!important}

/* (2) Os miolos travados em `height:100%` viram `min-height` — assim eles
   CRESCEM com o conteúdo em vez de escondê-lo. */
#usrMain{height:auto!important;min-height:100%!important;justify-content:safe center!important;
  padding:8px 4px!important;box-sizing:border-box}
#clinicaSelectScreen .csWrap{height:auto!important;min-height:100%!important;
  justify-content:safe center!important;box-sizing:border-box}
#clinicaSelectScreen{overflow:auto!important}

/* (3) O TECLADO DO PIN. Ele era `top:50%` + `translate(-50%,-50%)`: num
   aparelho baixo, a metade de cima do cartão saía pela borda superior e
   NÃO havia como puxá-la de volta (deslocamento negativo não gera
   rolagem). Agora ele é uma camada que ocupa a tela toda e rola sozinha;
   o cartão continua centralizado quando há espaço.
   (o `display` continua sendo do JS — aqui não mexemos nele, para o
   painel não aparecer quando deveria estar escondido)

   MEDIDO DEPOIS (e corrigido de novo): a regra da build 966 acima obriga
   `margin:auto!important` + `height:fit-content`. Com isso o painel virava
   uma caixa do tamanho do conteúdo, centralizada pelas margens — e margem
   automática TAMBÉM corta as duas pontas quando não cabe. Num iPhone SE o
   teclado inteiro (1 a 9, ⌫, 0, ✓) ficava fora da tela e não havia rolagem
   possível. Aqui o painel volta a ser uma CAMADA do tamanho da tela; quem
   centraliza passa a ser o cartão, dentro dela.
   O painel continua `absolute` — `fixed` não resolve aqui, porque a tela de
   usuários é um ancestral com contexto próprio e o painel "fixo" acabava
   rolando junto com a lista mesmo assim (medido: painel em -478px depois de
   rolar até o 7º profissional). Em vez de brigar com isso, a lista PARA de
   rolar enquanto o teclado está aberto (classe `.pinAberto`, posta pelo JS):
   com a lista no topo, `inset:0` cobre exatamente a tela — e quem rola, se
   precisar, é o próprio painel. É também o comportamento certo: ninguém
   deveria arrastar a lista de perfis no meio da digitação do PIN.
   E NÃO leva `backdrop-filter`: desfoque no painel faria dele a "raiz de
   fundo" do cartão, e o vidro do cartão (967) voltaria a só clarear sem
   borrar. O véu é uma cor translúcida, e o borrão continua sendo do cartão. */
#userSelectScreen.pinAberto{overflow:hidden!important}
#usrPinPanel{
  position:absolute!important;inset:0!important;
  left:0!important;top:0!important;right:0!important;bottom:0!important;
  transform:none!important;
  margin:0!important;height:auto!important;max-height:none!important;
  width:auto!important;max-width:none!important;
  align-items:safe center!important;justify-content:center!important;
  overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px))!important;
  background:rgba(4,10,26,.55);
  z-index:5}
#usrPinPanel>#usrPinCard{width:100%;max-width:320px;margin:auto;flex:none}
/* em tela muito baixa o cartão do PIN encolhe em vez de estourar */
@media(max-height:600px){
  #usrPinCard{padding:18px 20px 16px!important}
  #usrPinCard ._up2Btn{padding:10px 0!important;font-size:19px!important}}

/* (4) A TELA DE BLOQUEIO em paisagem. */
#lockScreen .lockCard{margin:auto;flex:none}
@media(max-height:520px){
  #lockScreen .lockCard ._lockBtn{padding:9px 0!important;font-size:18px!important}}

/* (5) ALTURA REAL DO APARELHO. `100vh` no celular é a altura COM a barra
   de endereço recolhida — o rodapé fica escondido atrás dela. `100dvh`
   é a altura que existe de verdade agora. */
#loginScreen>.ohCeuSurfLayer,#clinicaSelectScreen>.ohCeuSurfLayer,
#userSelectScreen>.ohCeuSurfLayer,#lockScreen>.ohCeuSurfLayer{height:100dvh!important}

/* (6) ALVO DE TOQUE. A recomendação de acessibilidade é 44px; havia
   botões de 30px nas telas de entrada (medido). Botão já centraliza o
   próprio conteúdo, então a altura mínima basta e nada se desloca. */
#loginScreen button,#clinicaSelectScreen button,
#userSelectScreen button,#lockScreen button{min-height:44px}
/* exceções: teclas do PIN e cartões já são grandes; o "olho" da senha é
   um ícone dentro do campo e não pode esticar o campo */
#loginScreen button[onclick*="toggleSenhaVisivel"]{min-height:0}

/* (7) O ZOOM DO iOS. Campo com fonte menor que 16px faz o iPhone dar um
   zoom automático ao focar — e a tela nunca mais volta ao lugar. */
@media(max-width:640px){
  #loginScreen input,#clinicaSelectScreen input,
  #userSelectScreen input,#lockScreen input{font-size:16px!important}}

/* (8) TRANSIÇÃO. Trocar de tela deixa de ser um corte seco. */
@keyframes ohEntradaFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#clinicaSelectScreen,#userSelectScreen,#lockScreen{animation:ohEntradaFade .26s cubic-bezier(.4,0,.2,1) both}
@media(prefers-reduced-motion:reduce){
  #clinicaSelectScreen,#userSelectScreen,#lockScreen{animation:none}}

/* (9) O VÉU DE ESPERA entre "Entrar" e a escolha de clínica. Antes o app
   escondia a tela pública e só então ia buscar as clínicas na nuvem —
   no meio do caminho a pessoa via uma tela preta, sem nada. */
#ohVeuEntrada{position:fixed;inset:0;z-index:9990;background:var(--entrada-bg,#050D1F);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
  color:#fff;font-family:var(--font);text-align:center;padding:24px;
  animation:ohEntradaFade .2s ease both}
#ohVeuEntrada ._vAro{width:44px;height:44px;border-radius:50%;
  border:3px solid rgba(255,255,255,.16);border-top-color:var(--hub-emblema,#8FC0FF);
  animation:ohVeuGira .8s linear infinite}
@keyframes ohVeuGira{to{transform:rotate(360deg)}}
#ohVeuEntrada ._vTx{font-size:14.5px;font-weight:700;color:rgba(255,255,255,.82)}
#ohVeuEntrada ._vSub{font-size:12.5px;color:rgba(255,255,255,.42);max-width:320px;line-height:1.5}
#ohVeuEntrada ._vBtn{min-height:44px;padding:0 22px;border-radius:11px;font-weight:800;font-size:14px;
  background:var(--blue,#1F73E0);color:#fff;border:0;cursor:pointer;font-family:var(--font)}
#ohVeuEntrada ._vBtn2{min-height:44px;padding:0 18px;border-radius:11px;font-weight:700;font-size:13px;
  background:rgba(255,255,255,.07);color:rgba(255,255,255,.75);
  border:1px solid rgba(255,255,255,.16);cursor:pointer;font-family:var(--font)}
@media(prefers-reduced-motion:reduce){#ohVeuEntrada ._vAro{animation-duration:2s}}

/* ═══════════════════════════════════════════════════════════════════
   1041 — O BOTÃO ABERTO DA TOPBAR VIRAVA UM QUADRADO AZUL VAZIO
   ───────────────────────────────────────────────────────────────────
   Ao abrir o sino de notificações (ou a rádio), o botão ganha a classe
   .on: fundo azul, ícone branco. Só que a regra de contraste da 929/930
   (".topbar .topbar-act[style*='--blue'] { color:var(--blue-ico)!important }")
   pega qualquer botão com color:var(--blue) no estilo inline — e o
   !important dela vencia o branco do .on. Resultado: ícone AZUL sobre
   fundo AZUL. O ícone não sumia, ficava invisível; na tela era um
   quadradinho azul estranho, só com o balãozinho vermelho por cima.
   Aqui o branco volta a valer — via --ico-on-blue, que já escurece
   sozinho quando a cor da marca é clara demais para branco em cima. */
.topbar .topbar-act.on,
.topbar .topbar-act.on:hover,
.topbar .topbar-act.on svg{ color:var(--ico-on-blue,#fff)!important; }
.topbar .topbar-act.on{ background:var(--blue)!important; border-color:transparent!important; }
.topbar .topbar-act.on:hover{ background:var(--blue-700,var(--blue))!important; }
/* No tema escuro a cor de acento é clara de propósito (#4A8EC2 no padrão).
   Branco em cima dela dá contraste 3,5 — passa raspando no mínimo de
   elemento gráfico e é pouco para um ícone fininho de 1,9px de traço.
   Aqui o fundo aceso escurece um pouco a cor da marca (mesma família,
   mesmo tom) e o branco volta a ficar nítido, contraste ~5,4. */
[data-theme=dark] .topbar .topbar-act.on,
[data-theme=dark] .topbar .topbar-act.on:hover{ background:color-mix(in srgb, var(--blue) 78%, #000)!important; }

/* 1047 — barra de abas das seções (reusa o visual fintab do Financeiro/painel) */
.secabas-bar{margin:2px 0 14px}

/* ═══ 1131 — refinos H+I+J (recolher/expandir · ⛶ tela cheia · cabeçalho colorido) ═══ */
/* H · o acento ▾/▸ e o card recolhido: só o cabeçalho fica (com seus resumos/botões) */
.oh-rec-chev{margin-left:auto;color:var(--muted);font-weight:900;font-size:13px;flex:none;padding:2px 6px;border-radius:6px;user-select:none}
.panel-head h3:hover .oh-rec-chev{background:var(--bg);color:var(--ink-2)}
.panel[data-oh-rec] > *:not(.panel-head){display:none!important}
.panel[data-oh-rec] .panel-head{border-bottom:none}
/* I · ⛶ tela cheia da agenda: some o topo e as margens; a sidebar fica */
html[data-agfull] .topbar{display:none!important}
html[data-agfull] .main{max-width:none!important;padding:0!important}
html[data-agfull] #content{max-width:none!important;padding:8px 10px 4px!important}
html[data-agfull] .gw-toolbar .gw-act.on{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-700)}
/* J · cabeçalho dos cards no tom da marca (nasce desligado; escuro herda via vars) */
/* 1317 — o "Cabeçalho dos cards • Colorido" volta a valer SÓ nos cards (.panel-head).
   Na 1281 ele havia sido estendido às JANELAS (.modal-head), mas o pedido é claro:
   Colorido tinge o cabeçalho dos CARDS, não o das janelas. Removido .modal-head daqui. */
html[data-cardtint] .panel-head{background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 11%,var(--surface)),color-mix(in srgb,var(--blue) 3%,var(--surface)));border-bottom-color:color-mix(in srgb,var(--blue) 22%,var(--line))}
html[data-cardtint] .panel[data-oh-rec] .panel-head{border-bottom:none}
html[data-cardtint] .panel-head h3 svg{color:var(--blue-700)}

/* ═══ 1134 — cabeçalho colorido vira FÁBRICA + contraste refinado (escuro e vidros) ═══ */
/* escuro: a mistura de 9% sobre superfície escura sumia — sobe a dose e o traço,
   e o ícone do título usa o azul CLARO (o --blue-700 afundava no fundo) */
html[data-cardtint][data-theme=dark] .panel-head{background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 20%,var(--surface)),color-mix(in srgb,var(--blue) 8%,var(--surface)));border-bottom-color:color-mix(in srgb,var(--blue) 32%,var(--line))}
html[data-cardtint][data-theme=dark] .panel-head h3 svg{color:var(--blue)}
/* vidro falso (aero cards médio/forte/completo): o cabeçalho fica translúcido
   com um fio de brilho no topo — o vidro aparece ATRAVÉS do banho de cor */
html[data-cardtint][data-aero-cards="medio"] .panel-head,
html[data-cardtint][data-aero-cards="forte"] .panel-head,
html[data-cardtint][data-aero-cards="completo"] .panel-head{
  background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 16%,transparent),color-mix(in srgb,var(--blue) 8%,transparent));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.38);
}
html[data-cardtint][data-theme=dark][data-aero-cards="medio"] .panel-head,
html[data-cardtint][data-theme=dark][data-aero-cards="forte"] .panel-head,
html[data-cardtint][data-theme=dark][data-aero-cards="completo"] .panel-head{
  background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 24%,transparent),color-mix(in srgb,var(--blue) 12%,transparent));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10);
}

/* ═══ 1135 — a barra da agenda aprovada (prévia previa-agenda-toolbar.html) ═══ */
/* ícones puros de vidro, com legenda escura ao pousar (data-tip) */
.gw-ico{position:relative;width:34px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex:none;cursor:pointer;color:var(--ink-2);border:1px solid rgba(255,255,255,.65);border-radius:9px;font-family:inherit;
  background:linear-gradient(180deg,rgba(255,255,255,.86),rgba(255,255,255,.55));box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 5px rgba(19,41,75,.10)}
.gw-ico svg{width:16px;height:16px}
.gw-ico:hover{color:var(--blue-700);border-color:var(--blue-line)}
.gw-ico.on{color:var(--blue-700);border-color:var(--blue);background:var(--blue-soft)}
.gw-ico .gw-conf-badge{position:absolute;top:-6px;right:-6px;margin:0!important}
.gw-ico[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 7px);left:50%;transform:translateX(-50%);background:#0F172A;color:#fff;font-size:11px;font-weight:600;padding:5px 10px;border-radius:7px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:60}
.gw-ico[data-tip]::before{content:'';position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);border:5px solid transparent;border-bottom-color:#0F172A;opacity:0;pointer-events:none;transition:opacity .15s;z-index:60}
.gw-ico[data-tip]:hover::after,.gw-ico[data-tip]:hover::before{opacity:1}
/* 1363 — A Borda do calendário é sempre a Original (sóbria, como a 11.34): sem
   vidro na barra nem no container. As regras de vidro (data-ag-borda atual/exta/
   extb) foram REMOVIDAS junto com a opção. Ficam só as bases de posicionamento. */
.agenda-grade{position:relative}
.gw-toolbar{position:relative;z-index:30}
/* ⛶ agora é TELA CHEIA DE VERDADE (1135): a sidebar também sai */
html[data-agfull] .side{display:none!important}
html[data-agfull] .main{margin-left:0!important}

/* ═══ 1137 — CORREÇÃO do ⛶: a agenda caía NA COLUNA DA SIDEBAR ═══
   O .app é um grid "262px 1fr" (a 1276 testou 222px e a 1277 reverteu). A 1135
   escondia a .side (display:none), e a .main — virando o PRIMEIRO item do grid —
   era colocada na coluna de 262px: a tela cheia espremia a agenda no vão. A régua
   do smoke media topo 0 e sidebar 0, mas não a LARGURA conquistada —
   aprovou o aperto. O grid agora vira UMA coluna em tela cheia. */
html[data-agfull] .app{grid-template-columns:1fr!important}
html[data-agfull] .app.compact{grid-template-columns:1fr!important}

/* ═══ 1138 — O ⛶ TAMBÉM ENGOLE A LEGENDA E O RESUMO DA SEMANA ═══
   Queixa do dono: em tela cheia a agenda parava onde sempre parou e o
   resto da tela ficava com "Cores por procedimento" e "Resumo da
   semana" ocupando o pé — justo o espaço que ele quer para as
   consultas. Em tela cheia os dois saem e a moldura cresce até o fim
   da janela. As CHAVES deles (Configurações › Agenda) não são tocadas:
   tela cheia é gesto do momento, não decisão de layout — ao sair do ⛶
   os dois voltam exatamente como estavam. */
html[data-agfull] .legend,
html[data-agfull] .sem-extra{display:none!important}
html[data-agfull] .agenda-layout{height:calc(100vh - 20px)!important;height:calc(100dvh - 20px)!important;min-height:0!important}

/* ═══ 1138 — recolher/expandir a legenda e o resumo, como nos cards ═══
   O mesmo acento ▾/▸ dos cards (1131), na mesma memória por aparelho:
   clicar no título recolhe o bloco e deixa só a linha do título. */
.legend[data-oh-rec] > *:not(.legend-tit){display:none!important}
.sem-extra[data-oh-rec] > *:not(.sem-extra-lbl){display:none!important}
.legend-tit .oh-rec-chev,.sem-extra-lbl .oh-rec-chev{margin-left:auto}
.legend-tit:hover .oh-rec-chev,.sem-extra-lbl:hover .oh-rec-chev{background:var(--bg);color:var(--ink-2)}
.sem-extra-lbl{display:flex;align-items:center}


/* ═══ 1283 — VIDRO LITE nos popovers/menus flutuantes (rim de luz + cantos Vista) ═══
   Estes painéis têm sombra/raio no estilo inline; aqui só reforçamos o acabamento
   de vidro (rim interno) e arredondamos um tico mais — nada de blur (leve). */
#mainMenuPanel,#temasTopbarPop,#notifTopPop,#temasBtnWrap>div[id],#temaSubmenu{
  border-radius:16px!important;
  box-shadow:0 14px 44px rgba(19,41,75,.20),inset 0 1px 0 rgba(255,255,255,.72)!important;
}

/* ═══ 1284 — contadores (badges vermelhos) com gel Aero leve ═══ */
#tarefasBadge,#notifBadgeTop,#tarefasBadgeTop{
  background:linear-gradient(180deg,#F0575B,#E5484D)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 1px 3px rgba(170,30,40,.42)!important;
}

/* ═══ 1285 — SCROLLBARS estilo Aero (finas, arredondadas, glossy) — leve, só cosmético ═══
   Global no WebKit (Chrome/Edge/Safari) + Firefox via scrollbar-color no html.
   As barras horizontais que o app esconde de propósito (display:none próprio)
   continuam escondidas — este bloco não seta display. */
::-webkit-scrollbar{width:13px;height:13px}
/* 1416/1425 — some com as setinhas (▲▼) que o navegador desenha nas pontas da barra de
   rolagem. A regra genérica do 1416 (abaixo) não bastava em alguns Chrome — as setas de
   incrementar/decrementar continuavam à mostra. O 1425 adiciona o alvo ESPECÍFICO dessas
   setas (a receita canônica): só o botão some, o polegar (thumb) e a barra continuam à
   mostra e a rolagem segue normal. Nada de mexer no ::-webkit-scrollbar em si (foi o que,
   no 1422, chegou a sumir com a barra inteira). */
::-webkit-scrollbar-button{display:none;width:0;height:0}
::-webkit-scrollbar-button:vertical:decrement,::-webkit-scrollbar-button:vertical:increment,::-webkit-scrollbar-button:horizontal:decrement,::-webkit-scrollbar-button:horizontal:increment{display:none}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#CBDDF2,#A9C2E0);background-clip:padding-box;border:3px solid transparent;border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#B4CCE8,#8FB0D6);background-clip:padding-box;border:3px solid transparent}
::-webkit-scrollbar-thumb:active{background:linear-gradient(180deg,#98B7DE,#7AA0CC);background-clip:padding-box;border:3px solid transparent}
::-webkit-scrollbar-corner{background:transparent}
html{scrollbar-width:thin;scrollbar-color:#A9C2E0 transparent}
/* a sidebar (fundo azul escuro) pede um polegar claro translúcido pra contrastar */
.side::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(255,255,255,.34),rgba(255,255,255,.20));background-clip:padding-box;border:3px solid transparent}
.side::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(255,255,255,.46),rgba(255,255,255,.30));background-clip:padding-box;border:3px solid transparent}
.side{scrollbar-color:rgba(255,255,255,.32) transparent}

/* ═══ 1286 — accent-color global: caixinhas/opções e barras no azul da marca (leve, nativo) ═══ */
input[type=checkbox],input[type=radio]{accent-color:var(--blue)}
input[type=range]{accent-color:var(--blue)}

/* ═══ 1287 — SELECTS (dropdowns) no estilo Aero: seta chevron própria + campo limpo ═══
   Tira a seta/gradiente nativo (cinza) e desenha um chevron azul da casa. Leve (SVG inline).
   !important no background-image pra nenhum atalho de background apagar a seta. */
select:not([multiple]):not([size]){
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231F73E0' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>")!important;
  background-repeat:no-repeat!important;
  background-position:right 11px center!important;
  padding-right:34px!important;
}
/* na sidebar (fundo escuro) o chevron fica claro pra contrastar */
#dentFilter select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>")!important;
}

/* ═══ 1288 — CHECKBOXES e RADIOS desenhados à mão (Aero Vista/7): caixinha de vidro + check glossy ═══
   Leve (só degradê/sombra, sem blur). Toggles do app são span (.ohtb-sw), não checkbox — sem conflito.
   Restaura nativo onde o skin não cabe (.emit-seg = radios de pílula). */
/* 1787 — o skin de caixa E de rádio mora num lugar só, mais abaixo
   (procure por “CONTROLES estilo Windows 11”). Aqui havia um skin
   envidraçado que a 16.98 já vencia para a caixa, mas não para o rádio
   — e foi essa briga que deixou a bolinha com gradiente por uma versão
   inteira sem ninguém ver. Não reintroduza regra de controle aqui. */
/* radios de pílula da emissão: mantêm o nativo (o skin não faz sentido lá) */
.emit-seg input{-webkit-appearance:auto!important;appearance:auto!important;width:auto;height:auto;border:0;background:none;box-shadow:none}
.hmg-row input[type=checkbox]{width:18px;height:18px}

/* ═══════════════════════════════════════════════════════════════════════════
   1293 — NAVEGAÇÃO "Barra de endereço" (V-Next) — opt-in via html[data-nav="vnext"]
   Reaproveita a topbar real: o cartão do título vira um CAMPO DE ENDEREÇO
   (casinha + caminho + chevron). Clicar abre a BUSCA global (o "ir para…").
   As ações da direita ficam iguais. Só no computador (≥861px). 100% visual.
   ═══════════════════════════════════════════════════════════════════════════ */
@media(min-width:861px){
  html[data-nav="vnext"] .topbar-card{
    background:linear-gradient(180deg,#fbfdff,#eef4fb)!important;
    border:1px solid var(--blue-line)!important;
    border-radius:10px!important;
    box-shadow:inset 0 1px 2px rgba(19,41,75,.06)!important;
    padding:6px 30px 6px 8px!important;           /* dir: espaço p/ chevron */
    position:relative;cursor:pointer;transition:border-color .15s}
  html[data-nav="vnext"] .topbar-card:hover{ border-color:var(--blue)!important }
  html[data-nav="vnext"] .topbar-card .topbar-ic{ display:none!important }   /* o ícone da página dá lugar à casinha */
  html[data-nav="vnext"] .topbar-card h2{ display:none!important }   /* o breadcrumb assume o endereço; o título grande sai */
  html[data-nav="vnext"] .topbar-card #pageSub{ display:none!important }      /* endereço = só o caminho/título */
  html[data-nav="vnext"] .topbar-card .page-crumb{ display:flex!important;align-items:center;margin:0!important;min-width:0;flex:0 1 auto }   /* o breadcrumb É o endereço; não estica, deixa espaço pra pista de busca à direita */
  html[data-nav="vnext"] .topbar-card .oh-crumb{ font-size:14px!important }
  html[data-nav="vnext"] .topbar-card .oh-crumb .ohc-cur{ font-weight:800!important }
  html[data-nav="vnext"] .topbar-card .oh-crumb .ohc-a{ max-width:22vw!important }
  /* casinha (injetada por JS) */
  html[data-nav="vnext"] .topbar-card .vnext-home{
    flex:none;width:28px;height:28px;border-radius:7px;border:1px solid transparent;background:none;
    display:grid;place-items:center;color:var(--blue);cursor:pointer;padding:0;margin-right:2px}
  html[data-nav="vnext"] .topbar-card .vnext-home:hover{ background:var(--blue-soft) }
  html[data-nav="vnext"] .topbar-card .vnext-home svg{ width:18px;height:18px }
  /* 1307 — pista de busca à direita: lupa + "Pesquisar" (fantasma). Não captura o clique
     (pointer-events:none) → clicar aqui ou na área vazia cai no card e abre a busca;
     clicar num LINK da trilha (Início/Pacientes…) só navega. */
  html[data-nav="vnext"] .topbar-card .vnext-hint{
    margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none;
    color:var(--muted);opacity:.65;font-size:12.5px;font-weight:600;
    padding-right:26px;pointer-events:none;white-space:nowrap;user-select:none}
  html[data-nav="vnext"] .topbar-card .vnext-hint svg{ width:15px;height:15px;opacity:.85 }
  @media(max-width:1060px){ html[data-nav="vnext"] .topbar-card .vnext-hint span{ display:none } }
  /* chevron "ir para" à direita (CSS puro) */
  html[data-nav="vnext"] .topbar-card::after{
    content:"";position:absolute;right:13px;top:50%;width:8px;height:8px;
    border-right:2px solid var(--blue);border-bottom:2px solid var(--blue);
    transform:translateY(-70%) rotate(45deg);opacity:.7;pointer-events:none}
  /* 1463 — CONSERTO: na Fusão o ::after é o selo "Ctrl+K" (regra 1326); o chevron girado
     do vnext vazava por cima (position/rotate) e deixava o "Ctrl+K" TORTO na diagonal.
     Aqui o selo volta ao lugar: no fluxo, reto, sem rotação. */
  html[data-nav="vnext"] .topbar.tb-fusao .topbar-card::after{
    position:static;right:auto;top:auto;width:auto;height:auto;
    transform:none;opacity:1;pointer-events:none}
  html[data-theme=dark][data-nav="vnext"] .topbar-card{
    background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02))!important;
    border-color:var(--blue-line)!important}
}

/* ═══ 1297 — "Ir para…" inline do V-Next (campo editável + dropdown), Glass-Lite ═══ */
@media(min-width:861px){
  html[data-nav="vnext"] .topbar-card.jumping{ cursor:text }
  /* 1298 — some com TODO o wrap do título (não só as partes): o input assume o campo inteiro */
  html[data-nav="vnext"] .topbar-card.jumping #pageTitleWrap{ display:none!important }
  /* input SEM caixa própria: nada de borda/halo/outline de foco (some com as "duas barras").
     Seletor de alta especificidade p/ vencer as regras globais de input:focus / :focus-visible. */
  html[data-nav="vnext"] .topbar .topbar-card input.vnext-jinput,
  html[data-nav="vnext"] .topbar .topbar-card input.vnext-jinput:focus,
  html[data-nav="vnext"] .topbar .topbar-card input.vnext-jinput:focus-visible{
    flex:1 1 auto;min-width:0;width:auto;margin:0;
    border:0!important;outline:none!important;outline-offset:0!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;
    font:inherit;font-size:14px;color:var(--ink);padding:0 4px }
}
.vnext-jump{ position:fixed;z-index:9600;background:linear-gradient(180deg,#FFFFFF,#FBFDFF);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--sh3),inset 0 1px 0 rgba(255,255,255,.7);max-height:min(60vh,420px);overflow-y:auto;overflow-x:hidden;padding:5px;animation:fluentIn .14s var(--ease)}
.vnext-jump .vnj-grp{ font-size:10.5px;font-weight:800;color:var(--blue-700);text-transform:uppercase;letter-spacing:.4px;padding:8px 10px 4px }
.vnext-jump .vnj-it{ display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer }
.vnext-jump .vnj-it:hover{ background:linear-gradient(180deg,var(--blue-soft),color-mix(in srgb,var(--blue) 12%,var(--surface))) }
.vnext-jump .vnj-ic{ width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue) }
.vnext-jump .vnj-ic svg{ width:16px;height:16px }
.vnext-jump .vnj-l{ font-size:13.5px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis }
.vnext-jump .vnj-s{ font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis }

/* ═══ 1468 — TODOS os acabamentos Aero Vista/7 (Glass-Lite) das áreas
   1299–1306 foram REMOVIDOS DO CÓDIGO (agenda, pacientes, ficha, cards da
   agenda, tiles .stat, kanban, funil e panel-head): o dono pediu o app
   100% flat, sem gloss, orbe, gel ou sheen. ═══ */
/* ═══ 1313 — refino do Cabeçalho dos cards "Colorido": faixa de vidro azul com brilho ═══ */
/* Antes: só um degradê azul chapado. Agora: brilho no topo + degradê que desce e some na
   superfície + título/ícone em azul-700, no mesmo acabamento Glass-Lite do resto do app. */
html[data-cardtint] .panel-head{
  background:color-mix(in srgb,var(--blue) 8%,var(--surface))!important;  /* 1468: chapado, sem brilho */
  border-bottom:1px solid color-mix(in srgb,var(--blue) 20%,var(--line))!important }
html[data-cardtint] .panel-head h3{ color:var(--blue-700)!important }
html[data-cardtint][data-theme=dark] .panel-head{
  background:color-mix(in srgb,var(--blue) 14%,var(--surface))!important }

/* ═══ 1314 — "Editar/Novo tratamento" fiel ao Registrar Atendimento + Aero Vista/7 ═══ */
/* Campos recuados (vidro fosco) como no Registrar; rótulos azuis; foco em gel com brilho. */
.trat-form .field label{ color:var(--blue-700)!important; font-weight:800!important }
.trat-form .field input, .trat-form .field select, .trat-form .field textarea{
  border:1.5px solid var(--line)!important; border-radius:11px!important;
  background:var(--bg)!important;
  box-shadow:inset 0 1px 2px rgba(19,41,75,.06)!important;
  transition:border-color .13s ease, box-shadow .13s ease }
.trat-form .field input:hover, .trat-form .field select:hover, .trat-form .field textarea:hover{ border-color:var(--blue-line)!important }
.trat-form .field input:focus, .trat-form .field select:focus, .trat-form .field textarea:focus{
  border-color:var(--blue)!important; background:var(--surface)!important;
  box-shadow:inset 0 1px 2px rgba(19,41,75,.04), 0 0 0 3px var(--blue-soft), 0 2px 8px rgba(31,115,224,.20)!important }
.trat-form .field input::placeholder, .trat-form .field textarea::placeholder{ color:var(--muted); opacity:.9 }
.trat-form .field .help a{ color:var(--blue-700)!important; font-weight:700 }
/* o "callout" da mensalidade e o resumo de recebimento em gel suave */
.trat-form .calc-box{ background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 8%,var(--surface)),var(--surface))!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6)!important; border:1px solid var(--blue-line)!important }

/* ═══ 1315 — "Branco total" (data-tone=white) CONSERTADO: barra lateral branca de verdade ═══ */
/* O bug: a barra ficava com a arte azul, mas os textos viravam escuros (feitos p/ fundo branco)
   → ilegível. Agora a barra vira uma superfície branca limpa (a arte é removida no JS). */
[data-tone="white"] .side{
  background:radial-gradient(135% 70% at 50% -14%,rgba(255,255,255,.9) 0%,transparent 60%),linear-gradient(180deg,#FBFCFE 0%,#F2F5F9 100%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset -1px 0 0 rgba(20,40,75,.08),4px 0 24px rgba(19,41,75,.06)!important }
[data-tone="white"] .side::before, [data-tone="white"] .side::after{ display:none!important; }
[data-tone="white"] .side .nav button{ color:#42566F!important; }
[data-tone="white"] .side .nav button svg{ color:#42566F!important; opacity:.9!important; }
[data-tone="white"] .side .nav button:hover{ background:rgba(20,40,75,.05)!important; color:var(--blue-700)!important; }
[data-tone="white"] .side .nav button.active{ background:var(--blue-soft)!important; color:var(--blue-700)!important; box-shadow:inset 0 0 0 1px var(--blue-line)!important; }
[data-tone="white"] .side .nav button.active svg{ color:var(--blue-700)!important; opacity:1!important; }
[data-tone="white"] .side .navg-head, [data-tone="white"] .side .navg-head *{ color:#7C8CA3!important; }
[data-tone="white"] .side .navg-chev{ color:#9AA9BB!important; }

/* 1319 — o modo PÁGINA das Configurações (1316) foi revertido: voltou a ser janela. */

/* 1403 — abas do cartão "Resumo semanal" (Esta semana / Semana passada): um
   segmento enxuto dentro do próprio cartão, para fundir os dois cartões de semana
   que antes ficavam colados na tela inicial. */
.sem-seg{ display:flex; gap:8px; padding:12px 14px 2px; flex-wrap:wrap; }
.sem-tab{ padding:7px 14px; border-radius:9px; font-size:13px; font-weight:700; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); cursor:pointer; font-family:inherit; transition:all .12s; }
.sem-tab:hover{ border-color:var(--blue); color:var(--blue-700); background:var(--blue-soft); }
.sem-tab.on{ background:var(--blue); color:#fff; border-color:var(--blue); }

/* ═══ 1318 — Aba Pacientes v3 (disposição Codental no acabamento Impulse) ═══ */
/* Página em container branco, abas (Buscar/Aniversariantes/Retornos), busca fundida
   + Filtrar/Colunas/⋯, e a lista em cards espaçados com avatar colorido e ações discretas.
   Escopo [data-pac-v3] para não tocar em nada fora da aba Pacientes. */
/* 1404 — o dono pediu para REMOVER o "container branco" da página de Contatos:
   a lista assenta direto no fundo da página (como as demais telas), sem a moldura
   branca com borda e sombra. Mantém só o respiro do topo. */
[data-pac-v3].pac-page{ background:transparent; border:none; border-radius:0; padding:4px 0 0; box-shadow:none; }
.pac-tabs-row{ display:flex; align-items:flex-end; gap:24px; border-bottom:1px solid var(--line); margin-bottom:18px; }
.pac-tabs{ display:flex; align-items:center; gap:26px; flex:1; min-width:0; overflow-x:auto; }
/* 1385 — as guias de Pacientes/Tratamentos/Gestão migraram de .pac-tab para o
   padrão .oh-subguia. Aqui a linha de baixo é a da linha-mãe (largura toda);
   a oh-subguia cresce pra empurrar o chip/Impulse Docs pra direita. */
.pac-tabs-row .oh-subguia{ border-bottom:none; flex:1; min-width:0; overflow-x:auto; }
.pac-tab{ position:relative; padding:4px 2px 13px; font-size:15.5px; font-weight:700; color:var(--muted); cursor:pointer;
  display:inline-flex; align-items:center; gap:8px; background:none; border:none; font-family:inherit; white-space:nowrap; transition:color .15s; }
.pac-tab:hover{ color:var(--ink-2); }
.pac-tab.on{ color:var(--blue); }
.pac-tab.on::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:2.5px; border-radius:3px;
  background:linear-gradient(90deg,var(--blue),color-mix(in srgb,var(--blue),#4aa0ff 55%)); }
.pac-tab-badge{ min-width:21px; height:21px; padding:0 7px; border-radius:11px; display:inline-flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:800; background:var(--blue-soft); color:var(--blue-700); }
.pac-total-chip{ font-size:12.5px; font-weight:700; color:var(--muted); background:#F3F6FA; border:1px solid #EAEFF5;
  padding:5px 12px; border-radius:20px; margin-bottom:9px; white-space:nowrap; flex:none; }
/* 1350 — botão "Impulse Docs" na página Paciente (saiu da sidebar) */
.pac-docs-btn{ display:inline-flex; align-items:center; gap:7px; flex:none; margin-bottom:9px; background:linear-gradient(180deg,#fff,#F5F9FF);
  border:1px solid var(--blue-line); color:var(--blue-700); font-family:inherit; font-weight:800; font-size:12.5px; padding:8px 13px;
  border-radius:10px; cursor:pointer; white-space:nowrap; transition:.14s; }
.pac-docs-btn:hover{ background:var(--blue-soft); }
.pac-docs-btn svg{ width:15px; height:15px; flex:none; }
/* 1415 — faixa de resumo da lista de Pacientes (opcional, ligada por padrão) */
/* 1463 — os cards antigos (.pac-resumo/.pac-rz) saíram: o resumo do design novo são os
   "Recortes rápidos" em pastas (.pac-recortes).
   1476 — o antigo X flutuante (.pac-rz-x, absolute top:-8px) não aparecia bem
   (pedido do dono): saiu de cena. Quem oculta os recortes agora é o chip
   visível "Ocultar" (.pac-rz-btn), parado no canto direito do título. */
.pac-rz-btn{ padding:5px 11px!important; font-size:11.5px!important; text-transform:none; letter-spacing:0; border-radius:16px!important; }
.pac-rz-btn:hover{ color:var(--blue-700); border-color:var(--blue-line); background:var(--blue-soft); }
.pac-toolbar2 .search{ flex:1; min-width:220px; display:flex; align-items:center; gap:10px; border:1.6px solid #E3E9F1;
  border-radius:12px; padding:11px 15px; background:#FBFCFE; transition:border-color .15s,box-shadow .15s; }
/* 1367 — a busca é UMA barra só: o container tem a borda; o input fica limpo.
   A regra global "input:not(...)" (mais acima) força borda+raio em TODO input
   com !important e vencia por especificidade — daí a "barra dentro da outra".
   Aqui derrotamos aquela regra com um seletor mais específico (id) + !important. */
.pac-toolbar2 .search input,
/* 1367 — a engrenagem (ex-"Colunas") é um botão de ícone só, quadrado. */
.pac-gear-btn{ padding-left:11px; padding-right:11px; }
.pac-gear-btn svg{ transition:transform .3s ease; }
.pac-gear-btn:hover svg{ transform:rotate(45deg); }
/* 1367 — "Gerar código" só aparece quando há faltantes: leva um leve tom âmbar
   para chamar a atenção sem gritar, e o selo com o nº de pacientes sem código. */
.pac-gerar-btn{ border-color:#F0D9B8!important; background:#FFF8EE!important; color:#9A6B1E!important; }
.pac-gerar-btn:hover{ border-color:var(--amber,#E08A2B)!important; background:#FDEFD8!important; }
.pac-gerar-btn .pac-cnt{ background:var(--amber,#E08A2B); }
.pac-pop-h{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); padding:6px 10px 3px; }
/* lista em cards espaçados */
[data-pac-v3] .panel{ background:transparent; border:none; box-shadow:none; overflow:visible; }
[data-pac-v3] .pac-head{ background:transparent!important; border:none!important; box-shadow:none!important; padding:0 21px 8px!important; }
[data-pac-v3] .pac-head span{ color:var(--muted); }
[data-pac-v3] .panel-body{ display:flex; flex-direction:column; gap:12px; background:transparent; }
[data-pac-v3] .pac-row{ border:1px solid #EBEFF5; border-radius:13px; padding:11px 18px; background:var(--surface); box-shadow:0 1px 2px rgba(19,41,75,.03); } /* 1415 — linhas um pouco mais densas */
/* 1367 — hover estável: sem o "pulo" de translateY(-1px), que fazia o card
   saltar 1px e a borda parecer "uma divisão pulando pra fora". Fica só um
   realce suave da borda e uma sombra leve, sem deslocar o card. */
[data-pac-v3] .pac-row.clickable:hover{ background:var(--surface); border-color:var(--blue-line); box-shadow:0 2px 10px rgba(31,115,224,.08); }
/* ações discretas — ganham cor no hover */
[data-pac-v3] .pac-ic{ border-color:transparent; background:transparent; color:#AEB9C9; }
[data-pac-v3] .pac-row:hover .pac-ic{ color:var(--ink-2); }
[data-pac-v3] .pac-ic:hover{ border-color:var(--blue-line); background:var(--blue-soft); color:var(--blue-700); }
[data-pac-v3] .pac-ic.wa:hover{ border-color:#BEEBCF; background:#EAF9F0; color:var(--green); }
[data-pac-v3] .pac-ic.danger:hover{ border-color:#F6C9CB; background:#FDECED; color:var(--red); }

/* ═══════════════════════════════════════════════════════════════════
   1383 — TELAS DE ENTRADA no "Hub in blue" (claro)
   As três telas de entrada — Seleção de Clínica (#clinicaSelectScreen),
   Seleção de Usuário (#userSelectScreen) e Bloqueio/PIN (#lockScreen) —
   deixam o navy escuro (#050D1F) e passam ao claro "Hub in blue", igual
   ao resto do app. Bloco no FIM do arquivo: vence por ordem os overrides
   escuros antigos (build 556) sem precisar apagá-los; o escopo pelos ids
   garante a especificidade. 100% visual — nada do financeiro. */
:root{
  /* 1428 — "Aurora Suave": branco levemente azulado + dois brilhos de azul bem suaves
     nos cantos. Leve, arejado e coerente com o Hub in Blue. Serve para as QUATRO telas
     de entrada (login público, bloqueio, usuários, clínicas). */
  --ent-bg:#F4F8FD;  /* 1472 — CHAPADO: os brilhos "Aurora" saíram (telas de entrada sem efeitos) */
  --ent-ink:#16273F; --ent-ink2:#51617B; --ent-ink3:#8A97AC;
  --ent-card:#FFFFFF; --ent-line:#D9E2F0;
}
/* 1441 — as telas de entrada (Clínicas, Usuários, Bloqueio, Login) agora RESPEITAM o tema.
   No escuro os tokens --ent-* viram navy — como o resto do app usa var(--ent-*), o fundo, os
   textos e as bordas seguem juntos. As superfícies brancas cravadas do bloco claro (cards,
   card do PIN, pílulas, teclado) recebem override navy logo abaixo. */
[data-theme="dark"]{
  --ent-bg:#0A1220;  /* 1472 — chapado também no escuro */
  --ent-ink:#E4ECF8; --ent-ink2:#A6B8D6; --ent-ink3:#7E90AE;
  --ent-card:#131E32; --ent-line:#2B3E5C;
}
/* Fundo claro "Aurora" nas telas de entrada internas (usuários, bloqueio, clínicas).
   A tela pública de login segue com o próprio tratamento (conteúdo desenhado para fundo
   escuro) — o redesign claro dela vem em build própria. */
/* 1434 — a tela pública de login entrou na Aurora clara (conteúdo redesenhado p/ claro) */
/* 1800 — ME ENGANEI AQUI, e fica registrado: eu ia trocar o fundo
   destas quatro telas por um degradê, achando que eram cinza chapado.
   NÃO SÃO. Há um bloco bem mais abaixo neste arquivo (procure por
   “estrelas”) que já pinta as quatro com céu em degradê e pontinhos,
   com !important — e por isso a minha regra nunca valeu. Deixei o
   original de volta. ⚠ Antes de “consertar” o fundo destas telas,
   procure o outro bloco: ele ganha desta linha. */
#loginScreen,#clinicaSelectScreen,#userSelectScreen,#lockScreen{ background:var(--ent-bg)!important; color:var(--ent-ink)!important; }

/* ── Relógio, títulos e textos ── */
#userSelectScreen #usrTime,#clinicaSelectScreen .csTime{ color:var(--ent-ink)!important; }
#userSelectScreen #usrDate,#clinicaSelectScreen .csDate{ color:var(--ent-ink2)!important; }
#userSelectScreen #usrClinicaName{ color:var(--ent-ink)!important; }
#clinicaSelectScreen .csTitle{ color:var(--ent-ink)!important; }
#userSelectScreen p{ color:var(--ent-ink3)!important; }
#userSelectScreen #usrSaudacao,#clinicaSelectScreen .csSub{ color:var(--ent-ink2)!important; }
#clinicaSelectScreen .csEyebrow{ color:var(--blue)!important; }
#clinicaSelectScreen .csConn{ color:var(--ent-ink3)!important; }
#userSelectScreen #usrAcctLine{ color:var(--ent-ink3)!important; }
#userSelectScreen #usrAccountEmail{ color:var(--ent-ink2)!important; }
#clinicaSelectScreen .csBrandName{ color:var(--ent-ink)!important; }
#clinicaSelectScreen .csBrandName b{ color:var(--blue)!important; }

/* ── Botões pílula (trocar clínica / trocar conta) ── */
#userSelectScreen #usrVoltarClinicas,#clinicaSelectScreen .csSwitch{
  background:#fff!important;border:1px solid var(--ent-line)!important;color:var(--ent-ink2)!important;
}

/* ── Cards (usuário + clínica): cartão branco elevado ── */
#userSelectScreen .usr2-card,#clinicaSelectScreen .csCard{
  background:#fff!important;background-image:none!important;
  border:1.5px solid var(--ent-line)!important;
  box-shadow:0 6px 18px rgba(19,41,75,.10),inset 0 1px 0 #fff!important;
}
#userSelectScreen .usr2-card:hover,#clinicaSelectScreen .csCard:hover{
  background:#fff!important;border-color:var(--blue)!important;
  box-shadow:0 14px 34px rgba(31,115,224,.18)!important;
}
#userSelectScreen .usr2-name,#clinicaSelectScreen .csName{ color:var(--ent-ink)!important; }
#userSelectScreen .usr2-role{ color:var(--ent-ink2)!important; }
#clinicaSelectScreen .csGo{ color:var(--ent-ink3)!important; }
#clinicaSelectScreen .csCard:hover .csGo{ color:var(--blue)!important; }
#userSelectScreen .usr2-avatar,#clinicaSelectScreen .csAvatar{ box-shadow:0 8px 20px rgba(31,115,224,.22)!important; }

/* ── Card do PIN (Seleção de Usuário) ── */
#usrPinCard{
  background:#fff!important;background-image:none!important;
  border:1px solid var(--ent-line)!important;
  box-shadow:0 26px 60px rgba(19,41,75,.20),inset 0 1px 0 #fff!important;
}
#usrPinCard::after{ display:none!important; }
#userSelectScreen #up2Nome{ color:var(--ent-ink)!important; }
#userSelectScreen #up2Role,#userSelectScreen #up2Hint{ color:var(--ent-ink2)!important; }

/* ── Teclado numérico (usuário + bloqueio): teclas claras ── */
#userSelectScreen ._up2Btn,#lockScreen ._lockBtn{
  background:#F3F7FD!important;border:1px solid var(--ent-line)!important;color:var(--ent-ink)!important;
}
#userSelectScreen ._up2Btn:hover,#lockScreen ._lockBtn:hover{ background:var(--blue-soft,#E8F1FE)!important;border-color:var(--blue)!important; }
#userSelectScreen ._up2Btn[onclick*="'ok'"],#lockScreen ._lockBtn[onclick*="_confirmarLockPIN"]{
  background:var(--blue)!important;border-color:var(--blue)!important;color:#fff!important;
}
/* Dots do PIN */
#userSelectScreen .usr2-dot{ border-color:#C3D2E6!important;background:transparent!important;box-shadow:none!important; }
#userSelectScreen .usr2-dot.filled{ background:var(--blue)!important;border-color:var(--blue)!important;box-shadow:none!important; }
#lockScreen ._pinDot{ border-color:#C3D2E6!important;background:transparent!important; }
#lockScreen ._pinDot.filled{ background:var(--blue)!important;border-color:var(--blue)!important; }

/* ── Bloqueio: o painel vira um cartão branco elevado ── */
#lockScreen .lockCard{
  background:#fff!important;border:1px solid var(--ent-line)!important;border-radius:22px;
  padding:30px 26px 24px;box-shadow:0 22px 54px rgba(19,41,75,.18)!important;
}
#lockScreen h2{ color:var(--ent-ink)!important; }
#lockScreen h2 b{ color:var(--blue)!important; }
#lockScreen #lockSaudacao{ color:var(--ent-ink2)!important; }
#lockScreen a{ color:var(--ent-ink2)!important; }

/* ═══════════════════ 1440 — AUDITORIA DO TEMA ESCURO ═══════════════════
   Vários controles cravavam fundo branco/claro (feito p/ o tema claro) e ficavam
   BRANCOS no escuro (botões do topo, barra da agenda, cabeçalho dos dias, janelas).
   Aqui cada um recebe um fundo navy coerente + texto/ícone legível. Vai no FIM do
   arquivo para vencer, por ordem de fonte, os !important dos presets. O tema claro
   não é tocado (tudo sob [data-theme="dark"]). */

/* — Pílulas de navegação do topo (Voltar/Avançar/Atualizar/Início) + cartão do usuário — */
[data-theme="dark"] .tb-navbtn,
[data-theme="dark"] .tb-user{
  background:linear-gradient(180deg,#1C2B48,#141F36)!important;
  border-color:var(--blue-line)!important;
  color:#9FC6FF!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05)!important }
[data-theme="dark"] .tb-navbtn:hover,
[data-theme="dark"] .tb-user:hover{ background:#20325400!important; background:#213254!important; border-color:#3A5175!important }

/* — Cartão do omnibox/busca (Fusão) — */
[data-theme="dark"] .topbar.tb-fusao .topbar-card{ background:#141F35!important; border-color:var(--line)!important }

/* — Botões "fantasma" (ghost) — ações da agenda, modais e afins — */
[data-theme="dark"] .btn.ghost,
[data-theme="dark"] .btn.btn-ghost{
  background:linear-gradient(180deg,#1C2B48,#141F36);
  color:#9FC6FF;
  border-color:var(--blue-line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05) }
[data-theme="dark"] .btn.ghost:hover,
[data-theme="dark"] .btn.btn-ghost:hover{ background:#213254; border-color:#3A5175 }

/* — Barra da agenda: segmento ativo, setas, data, ícones de ação — */
[data-theme="dark"] .seg button.on{
  background:linear-gradient(180deg,#25396A,#1A2740)!important;
  color:#CFE0FF!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 1px 3px rgba(0,0,0,.4)!important }
[data-theme="dark"] .nav-day,
[data-theme="dark"] .dp-btn,
[data-theme="dark"] .gw-ico{
  background:linear-gradient(180deg,#1C2B48,#141F36)!important;
  color:#9FC6FF!important;
  border-color:var(--blue-line)!important }
[data-theme="dark"] .gw-ico:hover,
[data-theme="dark"] .nav-day:hover,
[data-theme="dark"] .dp-btn:hover{ background:#213254!important }

/* — Cabeçalho dos dias e barra do calendário no preset "branco" — */
[data-theme="dark"][data-aghead="branco"] .gw-head{ background:var(--surface)!important; border-bottom-color:var(--line)!important }
[data-theme="dark"][data-calbar="branco"] .gw-toolbar{ background:var(--surface)!important; border-color:var(--line)!important }

/* — Janelas (modais) + rodapé no preset "branco" — */
[data-theme="dark"] .modal{ background:var(--surface) }
[data-theme="dark"][data-modalfoot="branco"] .modal-foot{ background:var(--surface)!important; border-top-color:var(--line)!important }

/* — Superfícies claras avulsas (cards, trilho, prévias, slots) — */
[data-theme="dark"] .ohEvCard{ background:linear-gradient(160deg,#17253E,#131E32) }
[data-theme="dark"] .ficha-trilho{ background:rgba(20,32,52,.7) }
[data-theme="dark"] .vnext-jump{ background:linear-gradient(180deg,#17253E,#131E32) }
[data-theme="dark"] .doc-prev{ background:#0E1626 }
[data-theme="dark"] .slot.filled{ background:#17253E }
[data-theme="dark"] .row:hover{ background:#16233A }
[data-theme="dark"] .tb-user:hover{ background:#213254!important }

/* — Inputs/selects/textarea "pelados" (sem classe .field) ficavam brancos no escuro.
   No escuro, todo campo de texto assume a superfície do tema (exceto os especiais). — */
[data-theme="dark"] input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]):not([type=file]),
[data-theme="dark"] select,
[data-theme="dark"] textarea{ background:var(--surface); color:var(--ink); }
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder{ color:var(--muted); }

/* ═══════ 1441 — TELAS DE ENTRADA no ESCURO: superfícies brancas → navy ═══════
   O bloco claro (5195+) crava #fff!important nos cards/pílulas/teclado. Estas regras
   são id-scoped + [data-theme="dark"] (especificidade maior) e vêm por último, então
   vencem no escuro. No claro nada muda. */
[data-theme="dark"] #userSelectScreen .usr2-card,
[data-theme="dark"] #clinicaSelectScreen .csCard,
[data-theme="dark"] #usrPinCard{
  background:var(--ent-card)!important; background-image:none!important;
  border:1.5px solid var(--ent-line)!important;
  box-shadow:0 12px 30px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05)!important; }
[data-theme="dark"] #userSelectScreen .usr2-card:hover,
[data-theme="dark"] #clinicaSelectScreen .csCard:hover{
  background:#17253E!important; border-color:var(--blue)!important;
  box-shadow:0 16px 38px rgba(0,0,0,.55)!important; }
[data-theme="dark"] #userSelectScreen #usrVoltarClinicas,
[data-theme="dark"] #clinicaSelectScreen .csSwitch{
  background:#17253E!important; border:1px solid var(--ent-line)!important; color:var(--ent-ink2)!important; }
/* teclado numérico (Usuário + Bloqueio) */
[data-theme="dark"] #userSelectScreen ._up2Btn,
[data-theme="dark"] #lockScreen ._lockBtn{
  background:#17253E!important; border:1px solid var(--ent-line)!important; color:var(--ent-ink)!important; }
[data-theme="dark"] #userSelectScreen ._up2Btn:hover,
[data-theme="dark"] #lockScreen ._lockBtn:hover{ background:#1E2E4C!important; border-color:var(--blue)!important; }
/* 1451 — o CARTÃO da tela de Bloqueio ficou de fora do escuro (o bloco claro crava #fff!important
   na .lockCard): resultava num cartão BRANCO com teclado navy e o título quase invisível. Agora
   ele vira navy como os demais cartões de entrada, e o conjunto fica coerente. */
[data-theme="dark"] #lockScreen .lockCard{
  background:var(--ent-card)!important; background-image:none!important;
  border:1.5px solid var(--ent-line)!important;
  box-shadow:0 22px 54px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.05)!important; }
/* bolinhas do PIN legíveis no navy */
[data-theme="dark"] #lockScreen ._pinDot{ border-color:rgba(159,198,255,.42)!important; background:transparent!important; }
[data-theme="dark"] #lockScreen ._pinDot.filled{ background:#9FC6FF!important; border-color:#9FC6FF!important; }
/* a tecla ✓ (confirmar) continua azul — destaque da ação, no claro e no escuro */
[data-theme="dark"] #lockScreen ._lockBtn[onclick*="_confirmarLockPIN"],
[data-theme="dark"] #userSelectScreen ._up2Btn[onclick*="'ok'"]{
  background:var(--blue)!important; border-color:var(--blue)!important; color:#fff!important; }
/* botão "Sair" / logout (inline #fff) e afins nas telas de entrada */
[data-theme="dark"] #usrAcctBox button,
[data-theme="dark"] #userSelectScreen button[onclick*="sair"],
[data-theme="dark"] #clinicaSelectScreen button[onclick*="sair"]{
  background:#17253E!important; border-color:var(--ent-line)!important; color:var(--ent-ink2)!important; }

/* 1441 — o LOGIN PÚBLICO (#loginScreen) segue SEMPRE claro (decisão do 1434, conteúdo
   desenhado para o claro). Só Clínicas/Usuários/Bloqueio acompanham o tema. Reancoramos
   os tokens --ent-* claros dentro do #loginScreen, mesmo no escuro. */
[data-theme="dark"] #loginScreen{
  --ent-bg:#F4F8FD;  /* 1472 — CHAPADO: os brilhos "Aurora" saíram (telas de entrada sem efeitos) */
  --ent-ink:#16273F; --ent-ink2:#51617B; --ent-ink3:#8A97AC; --ent-card:#FFFFFF; --ent-line:#D9E2F0;
  background:var(--ent-bg)!important; color:var(--ent-ink)!important;
}

/* ═══════════ 1444 — RESQUÍCIOS CLAROS NO TEMA ESCURO (auditoria) ═══════════
   Caixinhas/rádios, a busca de Pacientes, os discadores (Agenda/Estoque),
   o cabeçalho do cadastro da agenda e os balões do chat ainda vinham brancos
   no escuro. Tudo passa a herdar as superfícies navy do tema. */
/* 1787 — o gradiente saiu também do escuro: o skin único pinta o vazio
   com fundo navy e borda clara, chapado como no sistema. */
[data-theme="dark"] input[type=checkbox]:not(:checked),
[data-theme="dark"] input[type=radio]:not(:checked){
  background:#141F33!important;
  border-color:color-mix(in srgb,#fff 34%,transparent)!important;
  box-shadow:none!important;
}
[data-theme="dark"] #agendaDialItems,
[data-theme="dark"] .gwcad-head{ background:linear-gradient(180deg,#16233A,#121D30); border-bottom-color:var(--blue-line); }
[data-theme="dark"] .cchB.them{ background:#1B2942; color:var(--ink); }
[data-theme="dark"] .cchB.them::after{ border-top-color:#1B2942; }
[data-theme="dark"] .cchB.them .pchRedeFil{ background:var(--blue-soft); color:#9FC6FF; }

/* ═══════════════ 1446 — REDESENHO DA LISTA DE PACIENTES ═══════════════
   Saiu o visual de "caixinhas soltas" (cada linha uma ilha com borda e vão):
   agora é UM painel coeso com linhas rentes, divisórias finas e realce de
   linha inteira no hover — mais próximo de um diretório/CRM. As faixas de
   resumo ganham um filete de cor e mais respiro. Tudo em tokens, então o
   escuro acompanha. Escopo [data-pac-v3]/.pac-resumo — não toca fora daqui. */

/* ── 1476 — SEM a "borda dupla" (pedido do dono): o painel que abraçava a
   lista tinha borda + raio + sombra DENTRO da folha, parecendo um container
   dentro do outro. A moldura saiu; a lista mora direto na folha, igual aos
   Recortes rápidos logo acima (mesmo recuo de 12px). ── */
[data-pac-v3] .panel{ background:transparent!important; border:none!important; border-radius:0!important;
  box-shadow:none!important; overflow:visible!important; }
[data-theme="dark"] [data-pac-v3] .panel{ box-shadow:none!important; }
[data-pac-v3] .panel-body{ display:block!important; gap:0!important; background:transparent!important; }

/* ── cabeçalho da lista: só a linha fina embaixo, como o dos Recortes ── */
[data-pac-v3] .pac-head{ background:var(--surface)!important;
  border:none!important; border-bottom:1px solid var(--line)!important; box-shadow:none!important;
  padding:8px 12px!important; position:sticky; top:0; z-index:3; }
[data-pac-v3] .pac-head span{ color:var(--muted)!important; font-size:10.5px; letter-spacing:.6px; }

/* ── linhas rentes, densas, com divisória fina e hover de linha inteira ── */
[data-pac-v3] .pac-row{ border:none!important; border-radius:0!important; background:transparent!important; box-shadow:none!important;
  padding:12px!important; border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent)!important; transition:background .13s; }
[data-pac-v3] .panel-body>.pac-row:last-child{ border-bottom:none!important; }
[data-pac-v3] .pac-row.clickable:hover{ background:color-mix(in srgb,var(--blue) 5%,var(--surface))!important; border-bottom-color:color-mix(in srgb,var(--line) 72%,transparent)!important; box-shadow:none!important; }
[data-theme="dark"] [data-pac-v3] .pac-row.clickable:hover{ background:var(--blue-soft)!important; }
/* avatar com um anel discreto para destacar do fundo do painel */
[data-pac-v3] .pac-row .avatar{ box-shadow:0 0 0 1px color-mix(in srgb,var(--blue) 14%,transparent), 0 1px 3px rgba(19,41,75,.14); }
[data-pac-v3] .pac-row .who{ font-size:14.5px; }

/* ── faixas de resumo: filete de cor + mais respiro + número maior ── */
.pac-resumo{ gap:12px!important; }
.pac-rz{ position:relative!important; overflow:hidden!important;
  background:linear-gradient(180deg, var(--surface), color-mix(in srgb,var(--blue) 3%,var(--surface)))!important;
  border:1px solid var(--line)!important; border-radius:14px!important; padding:13px 16px 13px 19px!important;
  box-shadow:0 1px 2px rgba(19,41,75,.04)!important; }
.pac-rz::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--muted); opacity:.45; }
.pac-rz.blue::before{ background:var(--blue); opacity:1; }
.pac-rz.amber::before{ background:var(--amber,#C2840F); opacity:1; }
.pac-rz.red::before{ background:var(--red,#D64550); opacity:1; }
.pac-rz[role=button]:hover{ border-color:var(--blue-line)!important; box-shadow:0 4px 14px rgba(19,41,75,.08)!important; transform:translateY(-1px); }
.pac-rz .l{ font-size:10.5px!important; }
.pac-rz .v{ font-size:23px!important; margin-top:4px!important; }

/* 1446 — no escuro: o chip do total, o botão Impulse Docs e o "Gerar código"
   ainda cravavam superfícies claras. Passam a herdar o tema. */
[data-theme="dark"] .pac-total-chip{ background:var(--blue-soft); border-color:var(--blue-line); color:var(--ink-2); }
[data-theme="dark"] .pac-docs-btn{ background:var(--blue-soft); border-color:var(--blue-line); color:#9FC6FF; }
[data-theme="dark"] .pac-docs-btn:hover{ background:var(--blue-line); }
[data-theme="dark"] .pac-gerar-btn{ border-color:#5A4A2A!important; background:#2A2415!important; color:#E5C583!important; }
[data-theme="dark"] .pac-gerar-btn:hover{ background:#332B18!important; }

/* ═══════════════ 1449 — LINGUAGEM VISUAL DE PACIENTES no APP TODO ═══════════════
   O dono adorou a repaginada da lista de Pacientes e pediu o mesmo no resto. As
   telas já usam .panel + linhas rentes (.row com divisória); o que faltava era o
   toque das FAIXAS de Pacientes: um filete de cor à esquerda dos cartões de número
   (.stat) e um hover de linha mais limpo (sem o "escorrega" de 3px). Tudo em tokens,
   então o escuro acompanha. */

/* cartões de número (.stat): a aura de canto vira um FILETE lateral de cor + gradiente
   sutil — igual às faixas de resumo de Pacientes. Mais limpo e coeso. */
.stat{ background:linear-gradient(180deg, var(--surface), color-mix(in srgb,var(--blue) 3%,var(--surface)))!important; padding-left:20px!important; }
.stat::before{
  right:auto!important; top:0!important; left:0!important; bottom:0!important;
  width:4px!important; height:auto!important; border-radius:0!important;
  background:var(--blue)!important; opacity:1!important;
}
.stat.accent-green::before{ background:var(--green)!important; }
.stat.accent-amber::before{ background:var(--amber)!important; }
.stat.accent-red::before{ background:var(--red)!important; }
.stat.accent-purple::before{ background:var(--purple)!important; }
.stat.accent-blue::before{ background:var(--blue)!important; }
/* leve elevação no hover quando o cartão é clicável (mesmo gesto das faixas de Pacientes) */
.stat[role=button]:hover, .stat.clickable:hover{ border-color:var(--blue-line)!important; box-shadow:0 4px 14px rgba(19,41,75,.08)!important; transform:translateY(-1px); }

/* linhas clicáveis: hover de linha inteira, SEM o escorrega de 3px (como em Pacientes) */
.row.clickable:hover{ transform:none!important; }

/* ═══════════════ 1450 — GUIAS RESPONSIVAS: menu suspenso quando as abas não cabem ═══════════════
   Visual aprovado na prévia (Opção A). O JS (OHGuias) esconde a barra .oh-subguia que
   transborda e insere este menu no lugar; onde cabe, as abas seguem normais. */
.oh-subguia.ohg-oculta, .finsub-guias.ohg-oculta{ display:none !important; }
/* 1453 — Opção C: "Grupo ▾ › Sub-aba ▾" numa linha só */
/* 1475 — respiro em cima (a pedido): mesma distância do divisor de baixo */
.ohg-crumb{ display:inline-flex; align-items:center; gap:10px; margin:16px 0; max-width:100%; flex-wrap:wrap; }
.ohg-crumb .ohg-dd{ margin-bottom:0; }
.ohg-sep-wrap{ display:inline-flex; color:var(--muted); }
.ohg-sep{ width:16px; height:16px; opacity:.7; }
/* a sub-aba é um botão um tico menor e mais leve que o grupo */
.ohg-dd-btn.ohg-dd-sub{ font-size:12.5px; padding:7px 13px; font-weight:600; border-radius:9px; }
.ohg-dd{ position:relative; display:inline-block; margin-bottom:16px; max-width:100%; }
/* 1473 — o chip do PRINT (Drive): contorno fino neutro, texto cinza, sem gel */
.ohg-dd-btn{ display:inline-flex; align-items:center; gap:8px; font-family:inherit; cursor:pointer; max-width:100%;
  background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:8px 15px;
  color:var(--ink-2); font-weight:700; font-size:13.5px; box-shadow:none; transition:.14s; }
.ohg-dd-btn:hover{ background:color-mix(in srgb,var(--ink) 5%,var(--surface)); }
.ohg-dd-lbl{ display:inline-flex; align-items:center; gap:7px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ohg-dd-lbl svg{ width:16px; height:16px; flex:none; }
.ohg-dd-lbl .fin-guia-ic{ display:inline-flex; flex:none; }
.ohg-cv{ width:15px; height:15px; opacity:.7; flex:none; transition:transform .18s; }
.ohg-dd.open .ohg-dd-btn{ border-color:var(--blue-line); background:var(--blue-soft); color:var(--blue-700); }
.ohg-dd.open .ohg-cv{ transform:rotate(180deg); }
.ohg-dd-menu{ position:absolute; top:calc(100% + 7px); left:0; min-width:230px; max-width:min(320px,88vw);
  background:var(--surface); border:1px solid var(--line); border-radius:13px; box-shadow:0 16px 44px rgba(19,41,75,.20);
  padding:6px; z-index:60; display:none; }
[data-theme="dark"] .ohg-dd-menu{ box-shadow:0 18px 48px rgba(0,0,0,.62); }
.ohg-dd.open .ohg-dd-menu{ display:block; animation:ohgPop .14s ease; }
@keyframes ohgPop{ from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:translateY(0)} }
.ohg-dd-item{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; border:none; background:none;
  font-family:inherit; font-size:13.5px; font-weight:700; color:var(--ink-2); padding:9px 11px; border-radius:9px;
  cursor:pointer; transition:.12s; white-space:nowrap; }
.ohg-dd-item:hover{ background:color-mix(in srgb,var(--blue) 6%,var(--surface)); }
.ohg-dd-item svg{ width:16px; height:16px; flex:none; }
.ohg-dd-item .fin-guia-ic{ display:inline-flex; flex:none; }
.ohg-dd-item.on{ background:var(--blue-soft); color:var(--blue-700); }
.ohg-ck{ margin-left:auto; opacity:0; }
.ohg-dd-item.on .ohg-ck{ opacity:1; }
/* selos de contagem (ex.: Aniversariantes) continuam aparecendo no menu */
.ohg-dd-lbl .pac-tab-badge, .ohg-dd-item .pac-tab-badge{ flex:none; }

/* ═══════════════ 1454 — Pacientes: Docs + chip de total na barra de Pesquisa ═══════════════ */
/* na toolbar eles perdem a margem de baixo (era pra linha das guias) e centralizam na linha */
/* chip de total com MAIS contraste (antes era cinza claro quase ilegível) */
.pac-total-chip{ color:var(--blue-700)!important; background:var(--blue-soft)!important; border:1px solid var(--blue-line)!important; }
[data-theme="dark"] .pac-total-chip{ color:#9FC6FF!important; background:var(--blue-soft)!important; border-color:var(--blue-line)!important; }

/* ═══════════════ 1456 — REALCE VIVO no item ativo da barra lateral (aprovado) ═══════════════
   Soma ao pill azul do item ativo um FILETE azul luminoso na lateral esquerda e um brilho
   no ícone — deixa claro onde você está, no mesmo idioma do filete dos cartões de número.
   Sóbrio, em cima do navy; não descolore. */
/* fundo do ativo vira um leve gradiente (luz vindo da esquerda) — mesma especificidade do
   accent-menu, e vem depois no arquivo, então vence sem brigar. Cobre accent on e off. */
/* 1470 — o gradiente+glow do item ativo (accent-menu) saiu do código: o
   estado ativo é a pílula chapada da camada google (prévia). */
/* 1662 — o dono não quis o brilho esbranquiçado nos ícones: glow removido. */
.side .nav button.active svg{ filter:none!important; opacity:1!important; }
/* hover mais limpo nos itens inativos */
.side .nav button:hover:not(.active){ background:rgba(255,255,255,.08); }

/* ═══════════════════════════════════════════════════════════════════
   1463 — O DESIGN NOVO DO ORALHUB (a prévia aprovada pelo dono)
   html[data-oh-casca="google"] é o namespace da camada visual 2.0 — o
   atributo é aplicado SEMPRE (index.html, antes da 1ª pintura). Aqui vive
   a casca: lateral clara com pílulas, omnibox central arredondado,
   conteúdo em folha branca com canto arredondado.
   ═══════════════════════════════════════════════════════════════════ */
html[data-oh-casca="google"]{ --gpanel:#F6F9FD; --gsheet:#FFFFFF; }
html[data-oh-casca="google"][data-theme="dark"]{ --gpanel:#0A1220; --gsheet:#0E1626; }
html[data-oh-casca="google"] body, html[data-oh-casca="google"] .app{ background:var(--gpanel)!important; }

/* ── LATERAL CLARA (estilo Drive/Gmail) ── */
html[data-oh-casca="google"] .side{ background:var(--gpanel)!important; border-right:none!important; box-shadow:none!important; color:var(--ink)!important; }
/* 1468 — a lateral é COLADA na borda (como na prévia): as pílulas 0 22 22 0
   nascem do próprio limite da tela, sem o cartão flutuante com canto. */
/* 1472 — coluna de 250px como a PRÉVIA (era 282px: sobrava um vão entre a
   lateral e o container). A lateral acompanha a coluna (width auto). */
html[data-oh-casca="google"] .app[data-shell="topo"]>.side{ margin:0!important; border-radius:0!important; padding-left:0!important; width:auto!important; }
html[data-oh-casca="google"] .app[data-shell="topo"]>.side .nav button{ margin-left:0!important; padding-left:22px!important; margin-right:14px!important; }
html[data-oh-casca="google"] .app[data-shell="topo"]>.side .side-novo{ margin-left:16px; }
/* 1473 — a borda DIREITA do calendário alinha com o botão de ação (ambos com margem direita 0) */
html[data-oh-casca="google"] .app[data-shell="topo"]>.side .side-cal{ margin-left:16px; margin-right:0; }
/* o item ATIVO vence o accent-menu antigo (que tinha 4 classes + !important):
   pílula chapada azul-suave, SEM sombra e SEM gradiente — como na prévia. */
html[data-oh-casca="google"][data-oh-casca] .side .nav button.active{ background:var(--blue-soft)!important; color:var(--blue-700)!important; box-shadow:none!important; }
html[data-oh-casca="google"][data-oh-casca] .side .nav button.active .nav-lbl, html[data-oh-casca="google"][data-oh-casca] .side .nav button.active svg{ color:var(--blue-700)!important; }
/* pseudo-elementos também sem sombra (o blanket da 1465 não pegava ::before/::after) */
html[data-oh-casca="google"] *::before, html[data-oh-casca="google"] *::after{ box-shadow:none!important; }
html[data-oh-casca="google"] .side::before{ display:none!important; }
html[data-oh-casca="google"] .side .nav button{ color:var(--ink-2)!important; background:transparent!important; border-radius:0 22px 22px 0!important; box-shadow:none!important; border:none!important; }
html[data-oh-casca="google"] .side .nav button:hover{ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; }
html[data-oh-casca="google"] .side .nav button.active,
html[data-oh-casca="google"] .side .nav button.active::before{ background:var(--blue)!important; box-shadow:none!important; }  /* 1468: chapado, sem glow */
html[data-oh-casca="google"] .side .nav button svg,
html[data-oh-casca="google"] .side .nav .nav-lbl{ text-transform:none!important; letter-spacing:0!important; font-size:13.5px!important; font-weight:600!important; }
html[data-oh-casca="google"] .side .nav button.active .nav-lbl{ font-weight:800!important; }
/* mini-calendário e rodapé acompanham o claro */
html[data-oh-casca="google"] .side-cal{ background:var(--surface)!important; border:1px solid var(--line)!important; }
html[data-oh-casca="google"] .side-cal, html[data-oh-casca="google"] .side-cal *{ color:var(--ink-2); }
html[data-oh-casca="google"] .side-cal-nav button{ background:color-mix(in srgb,var(--ink) 7%,transparent)!important; color:var(--ink-2)!important; }
html[data-oh-casca="google"] .side-cal-day:hover{ background:color-mix(in srgb,var(--ink) 8%,transparent)!important; color:var(--ink)!important; }
html[data-oh-casca="google"] .side-cal-day.sel{ background:var(--blue)!important; color:#fff!important; box-shadow:none!important; }
/* 1472 — REFINO do mini-calendário (a pedido): células REDONDAS como no Google
   Agenda, número centrado (a bolinha de consultas vira um pontinho ABSOLUTO no
   pé, sem empurrar o número), hoje = círculo azul-suave, feriado = só o DIA
   destacado em vermelho (o nome vive no title), sem a barrinha sob o hoje. */
html[data-oh-casca="google"] .side-cal-grid{ gap:3px 2px; }
html[data-oh-casca="google"] .side-cal-hd{ font-size:9.5px; color:var(--muted); font-weight:800; }
html[data-oh-casca="google"] .side-cal-day{ border-radius:50%!important; width:27px; height:27px; min-height:0!important; padding:0!important; margin:0 auto; justify-content:center; font-size:11.5px; font-weight:600; }
html[data-oh-casca="google"] .side-cal-day.hj{ background:var(--blue-soft)!important; color:var(--blue-700)!important; font-weight:800; }
html[data-oh-casca="google"] .side-cal-day.hj::after{ display:none!important; }
html[data-oh-casca="google"] .side-cal-day.sel.hj{ background:var(--blue)!important; color:#fff!important; }
html[data-oh-casca="google"] .side-cal-day.in-week{ background:color-mix(in srgb,var(--blue) 8%,transparent)!important; color:var(--blue-700)!important; }
html[data-oh-casca="google"] .side-cal-dot{ position:absolute; left:50%; transform:translateX(-50%); bottom:1.5px; width:3px!important; height:3px!important; margin:0!important; background:color-mix(in srgb,var(--blue) 55%,transparent)!important; }
html[data-oh-casca="google"] .side-cal-day.sel .side-cal-dot{ background:rgba(255,255,255,.85)!important; }
html[data-oh-casca="google"] .side-cal-day.feriado{ color:var(--red,#D8392B)!important; font-weight:800; }
html[data-oh-casca="google"] .side-cal-day.feriado .side-cal-dot{ background:color-mix(in srgb,var(--red,#D8392B) 55%,transparent)!important; }
html[data-oh-casca="google"] .side-cal-nav{ padding:0 2px; }
html[data-oh-casca="google"] .side-cal-nav span{ font-size:13px; font-weight:800; color:var(--ink); }
html[data-oh-casca="google"] .side-cal-nav button{ border-radius:50%!important; width:26px; height:26px; }

/* ── botão "Novo" da lateral (só na interface Nova) ── */
.side-novo{ display:none; }
html[data-oh-casca="google"] .side-novo{ display:inline-flex; align-items:center; gap:11px; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:12px 22px 12px 15px; font-family:inherit; font-weight:700; font-size:15px; color:var(--ink); cursor:pointer; box-shadow:0 1px 3px rgba(19,41,75,.12); margin:2px 0 12px; }
html[data-oh-casca="google"] .side-novo:hover{ box-shadow:0 2px 10px rgba(19,41,75,.18); }
/* 1544 — botão de ação em VERDE (prévia 22, opção B aprovada): o círculo do +
   e o rótulo ganham o verde do app (#0FA47A), que conversa com o Hub in Blue. */
.side-novo .side-novo-plus{ width:26px; height:26px; border-radius:50%; background:linear-gradient(135deg,#0FA47A,#0B8163); display:grid; place-items:center; color:#fff; flex:none; }
.side-novo .cp-lbl{ color:#0B8163; }
[data-theme="dark"] .side-novo .cp-lbl{ color:#39C9A3; }
/* 1652 — "Nova consulta / Novo" VERDE COMPLETO (prévia aprovada): botão inteiro
   preenchido de verde, texto branco, "+" num círculo translúcido. Sem sombra. */
html[data-oh-casca="google"] .side-novo{ background:linear-gradient(135deg,#12B487,#0B8163) !important; border:none !important; color:#fff !important; }
html[data-oh-casca="google"] .side-novo:hover{ background:linear-gradient(135deg,#16C193,#0C8D6B) !important; }
.side-novo .side-novo-plus{ background:rgba(255,255,255,.22) !important; }
.side-novo .cp-lbl, [data-theme="dark"] .side-novo .cp-lbl{ color:#fff !important; }
/* compacto (só ícone): o botão JÁ é o círculo verde — a bolinha interna some */
html[data-oh-casca="google"] .app.compact .side-novo .side-novo-plus{ background:transparent !important; }
.side-novo .side-novo-plus svg{ width:15px; height:15px; }
.app.compact .side-novo{ padding:12px; } .app.compact .side-novo .cp-lbl{ display:none; }

/* ── TOPO: a ilha vira a busca grande arredondada (omnibox estilo Google) ── */
html[data-oh-casca="google"] .topbar-card{ background:var(--gsheet)!important; border:1px solid var(--line)!important; border-radius:26px!important; box-shadow:none!important; padding:9px 18px!important; flex:1 1 auto; max-width:680px; }
html[data-oh-casca="google"] .topbar-card:hover{ box-shadow:0 1px 6px rgba(19,41,75,.12)!important; }
html[data-oh-casca="google"] .tb-navcluster{ display:none!important; }
/* a busca universal ancora como PAINEL do omnibox (não um modal solto no meio) */
/* 1474 — as regras do overlay antigo saíram; o painel agora é o #buscaDrop ancorado (fim do arquivo) */

/* ── CONTEÚDO: folha branca com canto superior-esquerdo arredondado ── */
@media(min-width:881px){
  /* 1471 — prévia 6: a folha COLA na topbar e na lateral (margem 0, como na prévia
     aprovada — o único respiro entre topo e folha é o padding do próprio topo). */
  html[data-oh-casca="google"] .app[data-shell="topo"]>.main{ background:var(--gsheet)!important; border:1px solid var(--line)!important; border-right:none!important; border-bottom:none!important; border-radius:16px 0 0 0!important; margin:0!important; box-shadow:none!important; }
  html[data-oh-casca="google"] .app[data-shell="topo"]>.side{ margin:0!important; border-radius:0!important; }  /* 1468: colada na borda */
  html[data-oh-casca="google"] .app[data-shell="topo"]>.topbar{ margin:0!important; padding:9px 18px 9px 8px!important; }  /* 1471: faixa como os 62px da prévia, sem margens soltas */
  html[data-oh-casca="google"] .app.semside[data-shell="topo"]>.main{ margin-left:0!important; }  /* 1471: sem a lateral, a folha cola na borda esquerda */
}



/* ── 1464 — TOPO fiel à prévia: cabeçalho da página sobre a COLUNA DA LATERAL
      (ícone + nome), e a busca começa junto do conteúdo (não cobre a lateral).
      O botão de ação da topbar saiu — quem cria é o "Novo" da lateral. ── */
.tb-pagina{ display:none; }
/* 1472 — prévia 7: a BUSCA nasce exatamente na borda da folha (x=250):
   ☰(8+40+2) + gap 12 + este bloco (176) + gap 12 = 250. */
html[data-oh-casca="google"] .tb-pagina{ display:flex; align-items:center; gap:11px; width:176px; flex:none; padding-left:6px; min-width:0; }
html[data-oh-casca="google"] .app.compact .tb-pagina, html[data-oh-casca="google"] .app.semside .tb-pagina{ width:auto; margin-right:14px; }
/* 1467 — o ☰ (recolher a lateral) no comecinho da barra, redondo como os do Google */
html[data-oh-casca="google"] .tb-menu{ margin-right:2px; }
/* 1468 — interruptor Claro/Escuro no formato da prévia (pílula ☀ | 🌙) */
.tb-tgl{ display:inline-flex; background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:3px; margin:0 3px; flex:none; }
.tb-tgl button{ border:none; background:none; color:var(--muted); padding:5px 9px; border-radius:9px; cursor:pointer; display:inline-flex; align-items:center; }
/* 1603 — REVISÃO pedida pelo dono: o interruptor volta AZUL (pílula azul no lado
   ativo), mas com o Sol e a Lua em AMARELO por cima — o sol e a lua que a gente
   enxerga. Fica igual ao print: azul + astro amarelo. */
.tb-tgl button.on{ background:var(--blue); color:#FFD24D; }
#tglSol.on{ background:var(--blue); color:#FFDE59; }
#tglLua.on{ background:var(--blue); color:#FFDE59; }
/* 1612 — VALOR EDITÁVEL POR PROCEDIMENTO/DENTE (dentro do cartão c_valbox) */
.vd-box{ }
.vd-head{ font-size:11px; font-weight:800; color:var(--muted); text-transform:uppercase; letter-spacing:.4px; padding:8px 11px; background:var(--bg); }
.vd-row{ display:flex; align-items:center; gap:10px; padding:8px 11px; border-top:1px solid var(--line); }
.vd-row .vd-lbl{ font-size:13px; color:var(--ink); flex:1; min-width:0; line-height:1.3; }
.vd-row .vd-den{ font-size:11px; font-weight:700; color:var(--blue-700); background:var(--blue-soft); border:1px solid var(--blue-line); border-radius:7px; padding:1px 7px; margin-left:2px; white-space:nowrap; }
.vd-vwrap{ display:flex; align-items:center; gap:7px; flex:none; }
.vd-vwrap .vd-cif{ font-size:12px; font-weight:700; color:var(--muted); }
.vd-vwrap input.c-valitem{ width:104px; font:inherit; font-size:14.5px; font-weight:800; text-align:right; padding:7px 10px; border:1.5px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink); outline:none; }
.vd-vwrap input.c-valitem:focus{ border-color:var(--blue); background:var(--surface); box-shadow:0 0 0 3px rgba(31,115,224,.12); }
.vd-tag{ font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); min-width:52px; }
.vd-tag.edit{ color:var(--amber,#C2840F); }
.vd-total{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:10px 11px; border-top:2px solid var(--blue-line); background:var(--blue-soft); }
.vd-total .vd-tl{ font-weight:800; color:var(--blue-700); font-size:13.5px; }
.vd-total .vd-tl small{ display:block; font-size:10.5px; font-weight:700; color:var(--muted); letter-spacing:0; text-transform:none; }
.vd-total b{ font-weight:900; color:var(--blue-700); font-size:17px; white-space:nowrap; }
/* 1606 — FAIXA DE DIAS DA AGENDA MOBILE (estilo Codental no design Impulse) */
.agm-strip-wrap{ padding:8px 4px 4px; }
.agm-mo{ display:flex; align-items:center; justify-content:center; gap:14px; padding:4px 8px 10px; }
.agm-mo b{ font-size:18px; font-weight:800; color:var(--ink); }
.agm-nav{ width:36px; height:36px; border-radius:50%; border:none; background:var(--blue); color:#fff; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; flex:none; box-shadow:0 3px 10px rgba(31,115,224,.28); }
.agm-nav svg{ width:18px; height:18px; }
.agm-days{ display:flex; gap:8px; overflow-x:auto; padding:2px 8px 10px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.agm-days::-webkit-scrollbar{ display:none; }
.agm-day{ flex:0 0 auto; width:58px; border:1.5px solid var(--line); background:var(--surface); border-radius:15px; padding:8px 5px 7px; text-align:center; cursor:pointer; transition:.14s; display:flex; flex-direction:column; align-items:center; gap:1px; font-family:inherit; }
.agm-day.on{ border-color:var(--blue); background:var(--surface); box-shadow:0 4px 14px rgba(31,115,224,.16); }
.agm-day .agm-dn{ font-size:21px; font-weight:800; color:var(--ink); line-height:1.05; }
.agm-day .agm-dw{ font-size:10.5px; font-weight:800; color:var(--muted); letter-spacing:.4px; }
.agm-day.hoje .agm-dn{ color:var(--blue-700,#175bb5); }
.agm-day.hoje{ border-color:var(--blue-line); }
.agm-day .agm-cnt{ margin-top:5px; min-width:22px; font-size:12px; font-weight:800; color:#fff; background:var(--blue); border-radius:20px; padding:1px 8px; }
.agm-day .agm-cnt.zero{ background:var(--blue-soft); color:var(--blue); }
/* 1606 — no celular a navegação de data da BARRA some (setas + calendário-popover):
   quem navega é a faixa de dias. O "Hoje" e o seletor de visão continuam. */
@media(max-width:880px){ body:has(.agm-strip-wrap) .ag-datenav{ display:none!important; } }
/* 16.45 — o rótulo "Agosto, 2026" da faixa mobile É o gatilho do calendário
   (o botão "Dia ▾" saiu; tocar no mês abre a grade pra escolher/DIGITAR o dia). */
.agm-dpwrap{ position:relative; display:inline-flex; }
.agm-mo-btn{ display:inline-flex; align-items:center; gap:7px; background:none; border:none; padding:5px 8px; cursor:pointer; font-family:inherit; border-radius:12px; -webkit-tap-highlight-color:transparent; }
.agm-mo-btn:active{ background:var(--blue-soft); }
.agm-mo-btn b{ font-size:18px; font-weight:800; color:var(--ink); }
.agm-mo-cv{ width:16px; height:16px; color:var(--blue-700); flex:none; }
/* 1674 — BARRAS QUE CRESCEM (resto do item 4 da prévia de transições):
   os gráficos de barra (Análises/Painel) crescem de baixo pra cima em cascata,
   e as barrinhas de proporção enchem da esquerda. Respeita reduzir-movimento. */
.oh-cbar{ transform-box:fill-box; transform-origin:center bottom; animation:ohCbarY .6s cubic-bezier(.2,.7,.3,1) backwards; }
@keyframes ohCbarY{ from{ transform:scaleY(0); } }
.rf-bar>span{ transform-origin:left center; animation:ohCbarX .7s cubic-bezier(.2,.7,.3,1) backwards; }
@keyframes ohCbarX{ from{ transform:scaleX(0); } }
@media (prefers-reduced-motion: reduce){ .oh-cbar,.rf-bar>span{ animation:none!important; } }
/* ═ 1673 — refinos mobile da agenda (prévia aprovada) ═ */
/* observação no popup da consulta (1673) */
.agp2-obs{ background:color-mix(in srgb, var(--amber,#C2840F) 9%, var(--surface)); border:1px solid color-mix(in srgb, var(--amber,#C2840F) 30%, var(--line)); border-radius:12px; padding:9px 12px; margin:0 0 10px; }
.agp2-obs-t{ font-size:10px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--amber,#C2840F); margin-bottom:3px; }
.agp2-obs-x{ font-size:12.5px; color:var(--ink-2); line-height:1.5; word-break:break-word; }
.agp2-obs-x.clamp{ display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.agp2-obs-ver{ margin-top:6px; background:none; border:none; padding:0; color:var(--amber,#C2840F); font-weight:800; font-size:12px; cursor:pointer; font-family:inherit; }
#agObsBalao{ position:fixed; inset:0; z-index:99995; background:rgba(8,16,30,.5); display:grid; place-items:center; padding:22px; }
.agob-card{ width:100%; max-width:420px; background:var(--surface); border:1px solid color-mix(in srgb, var(--amber,#C2840F) 42%, var(--line)); border-radius:16px; box-shadow:0 26px 60px rgba(0,0,0,.45); padding:15px 16px; }
.agob-t{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--amber,#C2840F); display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.agob-x{ width:27px; height:27px; border-radius:8px; border:1px solid var(--line); background:var(--bg); color:var(--muted); font-size:15px; line-height:1; cursor:pointer; }
.agob-x2{ font-size:13.5px; color:var(--ink); line-height:1.65; max-height:56vh; overflow:auto; white-space:pre-wrap; word-break:break-word; }

/* Hoje = CHIP com moldura, par do Dentistas */
.gw-hoje-chip{ display:inline-flex; align-items:center; gap:7px; background:var(--blue-soft); border:1px solid var(--blue-line); border-radius:12px; padding:9px 13px; font-size:13px; font-weight:700; color:var(--blue-700); font-family:inherit; cursor:pointer; white-space:nowrap; }
[data-theme="dark"] .gw-hoje-chip{ background:rgba(31,115,224,.16); border-color:rgba(78,151,242,.4); color:#BFDBFF; }
/* fita de dias: desvanece nas bordas em vez de cortar seco */
.agm-days{ -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%); mask-image:linear-gradient(90deg,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%); }
/* contagem do dia: leve, sem caixa */
.agl-resumo{ background:none!important; border:none!important; box-shadow:none!important; padding:2px 4px 8px!important; color:var(--muted)!important; font-weight:700; }
/* 16.45 — no celular o "Hoje" mostra o texto (a barra ficou numa linha só, sobra espaço) */
.gw-toolbar.gw-tb2 .gw-hoje .gw-hoje-lbl{ display:inline!important; }
/* 1602 — SELETOR UNIFICADO DE SAÚDE (condições + comorbidades + medicações) */
.saude-q{ width:100%; font:inherit; font-size:14px; padding:11px 13px 11px 38px; border:1.6px solid var(--blue-line); border-radius:12px; background:var(--blue-soft); color:var(--ink); outline:none;
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231F73E0" stroke-width="2.2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>'); background-repeat:no-repeat; background-position:12px 50%; background-size:16px; }
.saude-q:focus{ background-color:var(--surface); box-shadow:0 0 0 3px rgba(31,115,224,.14); }
.saude-drop{ position:absolute; top:100%; left:0; right:0; background:var(--surface); border:1px solid var(--blue-line); border-radius:12px; box-shadow:0 14px 38px rgba(19,41,75,.20); max-height:280px; overflow-y:auto; z-index:220; margin-top:5px; }
.saude-opt{ padding:9px 14px; cursor:pointer; font-size:13.5px; font-weight:600; display:flex; align-items:center; gap:9px; color:var(--ink); }
.saude-opt .tk{ color:var(--blue-700,#175bb5); opacity:0; }
.saude-opt.on .tk{ opacity:1; }
.saude-opt.on{ color:var(--blue-700,#175bb5); }
.saude-add{ padding:11px 14px; cursor:pointer; font-size:13.5px; font-weight:800; color:var(--blue-700,#175bb5); display:flex; align-items:center; gap:8px; border-top:1px solid var(--line); background:color-mix(in srgb,var(--blue) 8%, var(--surface)); }
.saude-chips{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; background:var(--red-soft); border:1px solid #F2C9C3; border-radius:12px; padding:12px 13px; }
.saude-chips.vazio{ background:var(--surface); border-color:var(--line); color:var(--muted); font-size:12.5px; font-style:italic; }
.saude-chip{ display:inline-flex; align-items:center; gap:7px; background:var(--red,#D8392B); color:#fff; border-radius:20px; padding:5px 7px 5px 13px; font-size:12.5px; font-weight:700; }
.saude-chip .sc-med{ border:none; background:rgba(255,255,255,.20); color:#fff; border-radius:14px; padding:2px 9px; font-size:11px; font-weight:700; cursor:pointer; }
.saude-chip .sc-med:hover{ background:rgba(255,255,255,.32); }
.saude-chip .sc-x{ border:none; background:rgba(255,255,255,.20); color:#fff; width:19px; height:19px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; cursor:pointer; }
.saude-chip .sc-x:hover{ background:rgba(255,255,255,.34); }
/* 1467 — TRILHO de ícones (recolhida fora da Agenda), como no Gmail */
html[data-oh-casca="google"] .app.compact .side-novo{ width:46px; height:46px; justify-content:center; padding:0!important; border-radius:50%!important; margin:6px auto 14px!important; display:flex; }
html[data-oh-casca="google"] .app.compact .side-novo .cp-lbl{ display:none; }
html[data-oh-casca="google"] .app.compact .side .nav button{ width:44px; height:44px; justify-content:center; padding:0!important; margin:2px auto!important; border-radius:50%!important; gap:0!important; }
html[data-oh-casca="google"] .app.compact .side .nav button::before{ display:none!important; }
html[data-oh-casca="google"] .tb-pagina .tb-pag-ic{ width:34px; height:34px; border-radius:10px; background:linear-gradient(150deg,#2E86F0,#1559BD); color:#fff; display:grid; place-items:center; flex:none; box-shadow:0 3px 10px rgba(21,89,189,.35); }
html[data-oh-casca="google"] .tb-pagina .tb-pag-ic svg{ width:19px; height:19px; }
html[data-oh-casca="google"] .tb-pagina .tb-pag-nm{ font-size:19px; font-weight:800; letter-spacing:-.3px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media(max-width:1000px){ html[data-oh-casca="google"] .tb-pagina{ display:none; } }
/* o botão de ação da página e o separador saem do topo (o "Novo" da lateral assume) */
html[data-oh-casca="google"] #pageAction, html[data-oh-casca="google"] #pageActSep{ display:none!important; }
/* o selo "33/53ª sem" sai do rótulo da data (título limpo, como na prévia) */
html[data-oh-casca="google"] .ag-rot-selo{ display:none!important; }
/* toolbar da agenda alinhada à esquerda com espaçador (ordem da prévia) */
html[data-oh-casca="google"] .gw-toolbar{ justify-content:flex-start!important; }
.gw-sp{ flex:1 1 auto; min-width:8px; }
/* régua de horas mais discreta (idioma Calendar) */
html[data-oh-casca="google"] .gw-hora{ font-size:10.5px; font-weight:600; opacity:.85; }

/* ═══════════════════════════════════════════════════════════════════
   1465 — FLAT TOTAL (a pedido do dono, fidelidade total à prévia):
   1) NADA de vidro/gloss/gel — nem desfoque, nem brilho branco por cima;
   2) SEM sombras decorativas (o foco do teclado continua visível);
   3) CARDS PARADOS — nada "levanta" ou desliza no hover/entrada;
   4) ABAS em estilo Google — chips arredondados, sem sublinhado.
   ═══════════════════════════════════════════════════════════════════ */
/* 1) vidro/desfoque: nunca */
html[data-oh-casca="google"] *, html[data-oh-casca="google"] *::before, html[data-oh-casca="google"] *::after{ -webkit-backdrop-filter:none!important; backdrop-filter:none!important; }
/* 2) sombras: fora (inclui os 87 brilhos "inset" de vidro, que são box-shadow) */
html[data-oh-casca="google"] *:not(input):not(textarea):not(select){ box-shadow:none!important; }
html[data-oh-casca="google"] :is(a,button,[role="button"],input,select,textarea,[tabindex]):focus-visible{ outline:2px solid var(--blue)!important; outline-offset:2px; }
/* 3) nada se mexe: sem hover-lift e sem animação de entrada que desloca */
html[data-oh-casca="google"] :is(.panel,.stat,.card,.inicio-tile,.gw-card,.row,.pac-row,.pac-rz,.pac-rec-row,.oh-rec-row,.btn,.fab-sup):hover{ transform:none!important; }
html[data-oh-casca="google"] :is(.panel,.stat){ animation:none!important; }
/* 4) brilhos/géis viram superfícies chapadas do tema
   (o ::before dos .stat É o filete de cor — fica; só os radiais antigos já foram superados) */
html[data-oh-casca="google"] .fab-sup{ background:var(--blue)!important; }
html[data-oh-casca="google"] .seg{ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; }
html[data-oh-casca="google"] .seg button.on{ background:var(--surface)!important; color:var(--blue-700)!important; border:1px solid var(--line)!important; }
html[data-oh-casca="google"] .nav-day{ background:var(--surface)!important; border:1px solid var(--line)!important; }
html[data-oh-casca="google"] .nav-day:hover{ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; }
html[data-oh-casca="google"] .dp-btn{ background:var(--surface)!important; border:1px solid var(--line)!important; }
html[data-oh-casca="google"] .fintab-hero.on{ background:var(--blue)!important; background-image:none!important; }
html[data-oh-casca="google"] .cs-seg{ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; }
/* 5) ABAS = CHIPS (idioma Google): sub-guias sem sublinhado, em pílulas */
html[data-oh-casca="google"] .oh-subguia{ border-bottom:none!important; gap:8px!important; padding:2px 0!important; }
html[data-oh-casca="google"] .oh-subguia>button{ padding:7px 14px!important; border:1px solid var(--line)!important; border-radius:20px!important; background:var(--surface)!important; color:var(--ink-2)!important; font-weight:600!important; }
html[data-oh-casca="google"] .oh-subguia>button:hover:not(.on){ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; color:var(--ink)!important; }
html[data-oh-casca="google"] .oh-subguia>button.on{ background:var(--blue-soft)!important; border-color:var(--blue-line)!important; color:var(--blue-700)!important; font-weight:700!important; }
html[data-oh-casca="google"] .oh-subguia>button::after{ display:none!important; }
html[data-oh-casca="google"] .finsub-guias{ border-bottom:none!important; gap:8px!important; }
html[data-oh-casca="google"] .finsub-guias>button{ padding:7px 14px!important; border:1px solid var(--line)!important; border-radius:20px!important; background:var(--surface)!important; color:var(--ink-2)!important; font-weight:600!important; }
html[data-oh-casca="google"] .finsub-guias>button.on{ background:var(--blue-soft)!important; border-color:var(--blue-line)!important; color:var(--blue-700)!important; }
html[data-oh-casca="google"] .finsub-guias>button::after{ display:none!important; }
html[data-oh-casca="google"] .ohg-dd, html[data-oh-casca="google"] .ohg-crumb > *{ border-radius:20px!important; }
html[data-oh-casca="google"] .sem-tab{ border-radius:20px!important; }
html[data-oh-casca="google"] .sem-tab.on{ background:var(--blue-soft)!important; color:var(--blue-700)!important; border-color:var(--blue-line)!important; }

/* 6) botões da topbar no estilo Google: círculos com hover suave (como na prévia) */
html[data-oh-casca="google"] .topbar-act{ width:40px!important; height:40px!important; min-width:40px!important; min-height:40px!important; padding:0!important; border-radius:50%!important; display:inline-flex!important; align-items:center; justify-content:center; color:var(--ink-2)!important; background:transparent!important; border:none!important; }
html[data-oh-casca="google"] .topbar-act:hover{ background:color-mix(in srgb,var(--ink) 8%,transparent)!important; color:var(--ink)!important; }
html[data-oh-casca="google"] .topbar-act svg{ width:20px!important; height:20px!important; }

/* ── 1465 — interruptor Agenda ⇄ Tarefas (idioma Google Calendar) ── */
.ag-tog{ display:inline-flex; border:1px solid var(--line); border-radius:20px; overflow:hidden; flex:none; }
.ag-tog button{ display:inline-flex; align-items:center; justify-content:center; width:42px; height:32px; border:none; background:var(--surface); color:var(--ink-2); cursor:pointer; padding:0; }
.ag-tog button+button{ border-left:1px solid var(--line); }
.ag-tog button svg{ width:17px; height:17px; }
.ag-tog button:hover:not(.on){ background:color-mix(in srgb,var(--ink) 6%,transparent); }
.ag-tog button.on{ background:var(--blue-soft); color:var(--blue-700); }
.ag-tog-pagina{ margin:14px 0 4px 21px; }

/* ═══════════════════════════════════════════════════════════════════
   1468 — FIDELIDADE DOS CARDS + AGENDA SEM CAIXA DUPLA
   1) Os tiles de indicador (.stat) ficam como na prévia: FILETE de cor
      (o card cap/rodapé é o tipo da Início; são dois tipos distintos).
   2) A .agenda-layout perde a própria moldura: era um container dentro
      do container (a folha), com o canto arredondado sobreposto embaixo.
   3) A régua da ficha (barrinha azul dos títulos de seção) sai — título
      de seção da prévia é texto puro em maiúsculas.
   ═══════════════════════════════════════════════════════════════════ */
/* 1468 — os tiles .stat ficam como NA PRÉVIA: filete de cor à esquerda,
   rótulo em cima, número colorido, subtítulo — raio 14px. (O card cap/rodapé
   é só o da Início — são dois tipos diferentes na prévia.) */
html[data-oh-casca="google"] .stat{ border-radius:14px; }
/* 1470 — pedido do dono: os cards SEMELHANTES aos da Início (número que
   NAVEGA — .stat.clickable) vestem o MESMO estilo cap/rodapé da prévia.
   Os que só informam (sem clique) seguem com o filete, como no Financeiro. */
html[data-oh-casca="google"] .stat.clickable{ display:flex; flex-direction:column; padding:0!important; border-radius:16px; overflow:hidden; background:var(--surface)!important; position:relative; }
html[data-oh-casca="google"] .stat.clickable::before{ display:none!important; }
html[data-oh-casca="google"] .stat.clickable .val{ order:-1; display:flex; align-items:center; min-height:58px; padding:0 16px; font-size:24px; font-weight:800; }
html[data-oh-casca="google"] .stat.clickable .lbl{ order:1; padding:9px 48px 1px 16px; border-top:1px solid var(--line); font-size:13px; font-weight:700; color:var(--ink); text-transform:none; letter-spacing:0; }
html[data-oh-casca="google"] .stat.clickable .lbl:last-child{ padding-bottom:10px; }
html[data-oh-casca="google"] .stat.clickable .sub{ order:2; padding:0 48px 10px 16px; font-size:11.5px; color:var(--muted); margin-top:1px; }
html[data-oh-casca="google"] .stat.clickable.accent-blue .val{ background:color-mix(in srgb,var(--blue) 10%,var(--surface)); color:var(--blue-700); }
html[data-oh-casca="google"] .stat.clickable.accent-green .val{ background:color-mix(in srgb,var(--green,#0FA47A) 10%,var(--surface)); color:var(--green,#0FA47A); }
html[data-oh-casca="google"] .stat.clickable.accent-amber .val{ background:color-mix(in srgb,var(--amber,#C2840F) 12%,var(--surface)); color:var(--amber,#C2840F); }
html[data-oh-casca="google"] .stat.clickable.accent-red .val{ background:color-mix(in srgb,var(--red,#D8392B) 10%,var(--surface)); color:var(--red,#D8392B); }
html[data-oh-casca="google"] .stat.clickable.accent-purple .val{ background:color-mix(in srgb,#7C5CF6 10%,var(--surface)); color:#7C5CF6; }
html[data-oh-casca="google"] .stat.clickable::after{ content:"›"; position:absolute; right:12px; bottom:9px; width:26px; height:26px; border-radius:50%; background:var(--blue-soft); color:var(--blue-700); display:grid; place-items:center; font-weight:800; font-size:15px; line-height:1; }
/* 2) agenda sem caixa dentro de caixa */
html[data-oh-casca="google"] .agenda-layout{ border:none!important; border-radius:0!important; background:transparent!important; }
/* 4) 1469 — ESPAÇAMENTOS DA PRÉVIA: a folha tem gutter de 22px (como a
   prévia); a AGENDA é full-bleed (a grade encosta na borda direita) e a
   lista de PACIENTES perde a caixa (vive direto na folha, como o resto). */
html[data-oh-casca="google"] .app[data-shell="topo"]>.main>#content{ padding:0 22px!important; }
html[data-oh-casca="google"] .app[data-shell="topo"]>.main>#content.is-agenda{ padding:0!important; }
html[data-oh-casca="google"] .app[data-shell="topo"]>.main>#content.is-agenda>.agenda-layout,
html[data-oh-casca="google"] #content.is-agenda .agenda-layout{ margin:0!important; }
html[data-oh-casca="google"] .gw-toolbar{ padding-left:22px!important; padding-right:14px!important; }
/* pacientes: a lista sai da caixa (o painel perde a moldura) e alinha no gutter */
html[data-oh-casca="google"] [data-pac-v3] .panel{ border:none!important; background:transparent!important; border-radius:0!important; }
html[data-oh-casca="google"] [data-pac-v3] .panel .panel-body{ padding:0!important; }
html[data-oh-casca="google"] .pac-head{ background:transparent!important; padding:8px 12px!important; border-bottom:1px solid var(--line)!important; }
html[data-oh-casca="google"] .pac-head span{ text-transform:none!important; letter-spacing:0!important; font-size:12.5px!important; font-weight:600!important; color:var(--muted)!important; text-align:left!important; }
html[data-oh-casca="google"] .pac-filtros{ padding-left:0!important; padding-right:0!important; }
html[data-oh-casca="google"] .pac-grp-tit{ padding-left:2px!important; padding-right:2px!important; }
html[data-oh-casca="google"] .pac-rec-head{ padding-left:12px!important; padding-right:12px!important; }
html[data-oh-casca="google"] .pac-rec-row{ padding-left:12px!important; padding-right:12px!important; }
html[data-oh-casca="google"] .pac-recortes{ margin-left:0!important; margin-right:0!important; }
/* 3) título de seção da ficha sem a barrinha */
html[data-oh-casca="google"] .ficha-secao-tit::before{ display:none!important; }
html[data-oh-casca="google"] .ficha-secao-tit{ letter-spacing:.4px; }

/* ═══════════════════════════════════════════════════════════════════
   1466 — TODAS AS PÁGINAS NO IDIOMA DA PRÉVIA (a pedido do dono):
   1) LINHAS SEM SEPARADOR — as listas respiram como no Drive: nada de
      régua entre linhas; o hover é um retângulo arredondado. A única
      régua que fica é a de BAIXO DO CABEÇALHO de colunas.
   2) CABEÇALHO DE PAINEL vira TÍTULO DE SEÇÃO — sem a régua embaixo,
      texto pequeno em maiúsculas (como "SUGESTÕES PARA HOJE" na prévia).
   3) SEM CAIXA DENTRO DE CAIXA — container aninhado em outro card perde
      a própria moldura (borda/fundo), acabando com a sobreposição.
   ═══════════════════════════════════════════════════════════════════ */
/* 1) linhas sem separador, hover arredondado */
html[data-oh-casca="google"] .row{ border-bottom:none; border-radius:12px; }
/* linha com filete colorido à esquerda (cor do procedimento): o raio só na
   direita, para o filete ficar RETO — sem o efeito de chave-curva que o raio criava */
html[data-oh-casca="google"] .row[style*="border-left"]{ border-radius:0 12px 12px 0; }
html[data-oh-casca="google"] .row:hover{ background:color-mix(in srgb,var(--ink) 5%,transparent); }
html[data-oh-casca="google"] .row.clickable:hover{ background:color-mix(in srgb,var(--blue) 8%,transparent); }
/* 2) cabeçalho de painel = título de seção (prévia) */
html[data-oh-casca="google"] .panel-head{ border-bottom:none; padding-bottom:4px; }
html[data-oh-casca="google"] .panel-head h3{ font-size:12.5px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); }
html[data-oh-casca="google"] .panel-head h3 svg{ width:14px; height:14px; }
/* 3) caixa dentro de caixa: o de dentro perde a moldura */
html[data-oh-casca="google"] .panel .panel{ border:none; background:transparent; border-radius:0; }
html[data-oh-casca="google"] .panel .field-group,
html[data-oh-casca="google"] .modal-body .field-group .field-group{ border:none; background:transparent; }

/* ═══════════════════════════════════════════════════════════════════
   1471 — PRÉVIA 6 APROVADA ("Aceito!"): Hoje-chip primeiro na Agenda,
   Lixeira + bloco do plano no rodapé da lateral, e as JANELAS FLUTUANTES
   com cabeçalho na cor do Impulse e cantos arredondados em cima E embaixo.
   ═══════════════════════════════════════════════════════════════════ */
/* 1) o Hoje é o PRIMEIRO botão da barra da Agenda, no traje de chip da prévia */
html[data-oh-casca="google"] .gw-toolbar .gw-hoje{ border:1px solid var(--line)!important; background:var(--surface)!important; border-radius:20px!important; padding:8px 16px!important; font-weight:700!important; font-size:13px!important; color:var(--ink)!important; }
html[data-oh-casca="google"] .gw-toolbar .gw-hoje:hover{ background:color-mix(in srgb,var(--ink) 5%,var(--surface))!important; }
/* 2) rodapé da lateral: Lixeira (pacientes excluídos) + bloco do plano (como o Drive) */
.side-lix{ display:none; }
html[data-oh-casca="google"] .side-lix{ display:flex; align-items:center; gap:15px; width:100%; padding:9px 12px 9px 22px; border:none; background:transparent; border-radius:0 22px 22px 0; margin-right:14px; color:var(--ink-2); font-family:inherit; font-weight:600; font-size:13.5px; cursor:pointer; text-align:left; }
html[data-oh-casca="google"] .side-lix:hover{ background:color-mix(in srgb,var(--ink) 6%,transparent); }
html[data-oh-casca="google"] .side-lix svg{ width:20px; height:20px; flex:none; opacity:.9; }
.side-store{ display:none; }
html[data-oh-casca="google"] .side-store{ display:block; margin:10px 8px 6px 22px; font-size:12px; color:var(--muted); }
html[data-oh-casca="google"] .side-store-nome{ display:flex; align-items:center; gap:6px; font-weight:700; color:var(--ink-2); min-width:0; }
html[data-oh-casca="google"] .side-store-nome svg{ width:15px; height:15px; flex:none; }
html[data-oh-casca="google"] .side-store-nome span{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .side-store-bar{ height:4px; border-radius:3px; background:var(--line); margin:8px 0 6px; overflow:hidden; }
html[data-oh-casca="google"] .side-store-bar i{ display:block; height:100%; width:46%; background:linear-gradient(90deg,var(--blue),#4aa0ff); }
html[data-oh-casca="google"] .side-store-cta{ display:inline-block; margin-top:6px; padding:0; border:none; background:transparent; color:var(--blue); font-family:inherit; font-weight:700; font-size:13px; cursor:pointer; }
html[data-oh-casca="google"] .side-store-cta:hover{ text-decoration:underline; }
/* no trilho recolhido, o bloco do plano não cabe — fica só a Lixeira (ícone) */
html[data-oh-casca="google"] .app.compact .side-store{ display:none; }
html[data-oh-casca="google"] .app.compact .side-lix{ width:44px; height:44px; padding:0; margin:0 auto; border-radius:50%; justify-content:center; }
html[data-oh-casca="google"] .app.compact .side-lix .nav-lbl{ display:none; }
/* 3) JANELAS FLUTUANTES da prévia 6: cabeçalho AZUL Impulse com ✕ redondo,
      cantos arredondados EM CIMA e EMBAIXO (o rodapé fecha a cápsula). */
/* 1477 — pedido do dono: a janela ganha BORDA da MESMA COR do cabeçalho,
   sem nenhum efeito — cabeçalho e corpo viram uma coisa só, uniformes,
   como continuação um do outro. A sombra pesada saiu junto. */
html[data-oh-casca="google"] .modal{ border-radius:16px!important; border:2px solid var(--blue)!important; box-shadow:none!important; }
html[data-oh-casca="google"] .modal-head{ background:var(--blue)!important; color:#fff!important; border-bottom:none!important; border-radius:13px 13px 0 0!important; padding:13px 18px!important; }
html[data-oh-casca="google"] .modal-head h3{ color:#fff!important; }
html[data-oh-casca="google"] .modal-head h3 svg{ background:rgba(255,255,255,.16)!important; color:#fff!important; }
/* 1476 — o X de fechar é VERMELHO (pedido do dono), no claro e no escuro:
   bolinha vermelha cheia com o × branco sobre o cabeçalho azul; no hover
   escurece um tom. O token --red acompanha o tema. */
html[data-oh-casca="google"] .modal-head .x{ width:30px!important; height:30px!important; border-radius:50%!important; border:none!important; background:var(--red,#D64550)!important; color:#fff!important; box-shadow:0 1px 4px rgba(0,0,0,.18); }
html[data-oh-casca="google"] .modal-head .x:hover{ background:color-mix(in srgb,var(--red,#D64550),#000 18%)!important; color:#fff!important; }
html[data-oh-casca="google"] .modal-foot{ background:color-mix(in srgb,var(--ink) 3%,var(--surface))!important; border-top:1px solid var(--line)!important; border-radius:0 0 13px 13px!important; }
@media(max-width:880px){
  /* no celular a janela segue bottom-sheet: cantos redondos SÓ em cima e a alça visível */
  html[data-oh-casca="google"] .modal{ border-radius:20px 20px 0 0!important; }
  html[data-oh-casca="google"] .modal-head{ border-radius:0!important; }
  html[data-oh-casca="google"] .modal-foot{ border-radius:0!important; }
}
/* 4) PACIENTES fiel ao print da prévia: célula "Última consulta" discreta,
      e as AÇÕES DA LINHA (Agendar · WhatsApp · Ficha) só no hover, à direita,
      ao lado do ⋮ — exatamente o IROW da prévia. */
html[data-oh-casca="google"] .pac-c-cons{ text-align:left; }
html[data-oh-casca="google"] .pac-c-cons .cons-l{ justify-content:flex-start; font-size:12.5px; font-weight:500; color:var(--muted); }
html[data-oh-casca="google"] .pac-c-cons .cons-l.ult{ color:var(--muted); }
html[data-oh-casca="google"] .pac-c-cons .cons-l.ult.atras{ color:var(--amber,#E08A2B); }
html[data-oh-casca="google"] .pac-c-cons .cons-hj{ color:var(--blue-700); font-weight:700; }
.pac-hov{ display:none; }
@media(min-width:881px){
  html[data-oh-casca="google"] .pac-row{ position:relative; }
  html[data-oh-casca="google"] .pac-hov{ position:absolute; right:52px; top:50%; transform:translateY(-50%); display:none; gap:2px; align-items:center; background:transparent; }
  html[data-oh-casca="google"] .pac-row:hover .pac-hov{ display:flex; }
}
/* 5) 1472 — ORDEM DOS BOTÕES DAS JANELAS (print do dono): OK · Cancelar · Aplicar.
      O _mfOrdenar (index.html) dá os papéis; aqui o flex-order alinha:
      danger sozinho à esquerda, depois OK/principais, Cancelar, Aplicar. */
html[data-oh-casca="google"] .modal-foot .mf-main{ order:1; }
html[data-oh-casca="google"] .modal-foot .mf-cancel{ order:2; }
html[data-oh-casca="google"] .modal-foot .mf-aplicar{ order:3; }
html[data-oh-casca="google"] .modal-foot .btn.danger{ order:0; }
/* 6) 1473 — BUSCAS EMBUTIDAS "bugadas" (prints do dono): a régua GLOBAL de
      inputs (1.5px + raio 14, com !important) pintava uma SEGUNDA borda DENTRO
      do chip-cápsula da busca de Pacientes e da busca de Configurações. O input
      interno agora é NU — a cápsula é a única moldura. */
/* a régua global usa 4 :not() (especificidade 0,4,1) — o tripé de atributos empata acima */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .pac-search-sm input,
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] #cfg_busca_inp{ border:none!important; border-radius:0!important; box-shadow:none!important; background:transparent!important; padding:0!important; width:auto; }
html[data-oh-casca="google"] .pac-search-sm svg{ position:static!important; transform:none!important; }
/* 7) 1474 — A PESQUISA É A BARRA: input real no omnibox + painel ancorado.
      O overlay antigo do Ctrl+K (#buscaOverlay/#buscaPanel) foi expurgado. */
html[data-oh-casca="google"] .topbar-card{ position:relative; }
/* 1476 — o "Pesquisar no Impulse" mora ENCOSTADO à direita, junto da lupa e do
   selo Ctrl+K (margin-left:auto empurra o cluster; largura justa ao texto,
   alargando com carinho no foco pra digitar com folga). */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .omni-inp{ flex:0 1 auto; width:168px; min-width:60px; margin-left:auto; border:none!important; background:transparent!important; outline:none!important; box-shadow:none!important; border-radius:0!important; padding:0 0 0 12px!important; font-family:inherit; font-size:14px; color:var(--ink); transition:width .18s var(--ease,ease); }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .omni-inp:focus{ width:min(320px,38vw); border:none!important; background:transparent!important; outline:none!important; box-shadow:none!important; border-radius:0!important; padding:0 0 0 12px!important; }
html[data-oh-casca="google"] .omni-inp::placeholder{ color:var(--muted); }
/* o selo Ctrl+K deixa o margin-left:auto pro input (senão o espaço livre racharia no meio) */
html[data-oh-casca="google"] .topbar.tb-fusao .topbar-card::after{ margin-left:0; }
html[data-oh-casca="google"] .omni-kbd{ flex:none; }
html[data-oh-casca="google"] #buscaDrop{ position:absolute; top:calc(100% + 8px); left:0; right:0; z-index:9400; background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:0 18px 54px rgba(19,41,75,.22); overflow:hidden; }
html[data-oh-casca="google"] #buscaResultados{ max-height:min(62vh,460px); overflow-y:auto; padding:6px; }
/* 8) 1474 — CENTRAL DE TAREFAS no visual novo: números em card de FILETE
      e o interruptor Agenda⇄Tarefas alinhado ao conteúdo (sem o recuo dobrado). */
.tf-stat{ position:relative; overflow:hidden; background:linear-gradient(180deg,var(--surface),color-mix(in srgb,var(--blue) 3%,var(--surface))); border:1px solid var(--line); border-radius:14px; padding:12px 15px 12px 18px; }
.tf-stat::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--tfc,var(--blue)); }
.tf-stat-l{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); }
.tf-stat-v{ font-size:24px; font-weight:800; margin-top:3px; line-height:1; font-variant-numeric:tabular-nums; }
.ag-tog-pagina{ margin:14px 0 10px 0!important; }
/* 9) 1475 — refinos pedidos pelo dono:
      lupa + engrenagens visíveis + ficha no padrão novo + respiro do hero */
html[data-oh-casca="google"] .omni-lupa{ width:17px; height:17px; flex:none; color:var(--muted); margin-right:12px; } /* 1476 — a lupa vem DEPOIS do "Pesquisar no Impulse", como era antes */
html[data-oh-casca="google"] .hero-saud{ padding-top:20px; }
/* engrenagens DENTRO dos containers bem visíveis (eram cinza-fantasma) */
html[data-oh-casca="google"] .gw-ico{ color:var(--ink-2)!important; opacity:1!important; }
html[data-oh-casca="google"] .gw-ico:hover{ color:var(--blue-700)!important; background:var(--blue-soft)!important; }
html[data-oh-casca="google"] .pac-gear-btn svg{ color:var(--ink-2)!important; opacity:1!important; }
/* engrenagem da página (Início): discreta mas visível, no canto direito */
.pag-gear{ flex:none; width:38px; height:38px; border-radius:50%; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); cursor:pointer; display:grid; place-items:center; }
.pag-gear svg{ width:18px; height:18px; }
.pag-gear:hover{ background:var(--blue-soft); color:var(--blue-700); border-color:var(--blue-line); }
/* FICHA DO PACIENTE no padrão novo: barra de abas em chips chapados, sem gel */
html[data-oh-casca="google"] .ficha-abas{ background:transparent!important; box-shadow:none!important; border:none!important; }
html[data-oh-casca="google"] .ficha-abas .fintab, html[data-oh-casca="google"] .ficha-abas .pn-tab{ background:var(--surface)!important; border:1px solid var(--line)!important; border-radius:10px!important; color:var(--ink-2)!important; font-weight:700!important; box-shadow:none!important; background-image:none!important; }
html[data-oh-casca="google"] .ficha-abas .fintab.on, html[data-oh-casca="google"] .ficha-abas .pn-tab.on{ background:var(--blue-soft)!important; border-color:var(--blue-line)!important; color:var(--blue-700)!important; }
html[data-oh-casca="google"] .ficha-abas .fa-l2{ background:transparent!important; box-shadow:none!important; }
html[data-oh-casca="google"] .ficha-cab, html[data-oh-casca="google"] .ficha-vg .panel{ box-shadow:none!important; background-image:none!important; }
/* 10) 1476 — refinos pedidos pelo dono (prints):
      • CARD ÚNICO "Receita e movimento" no Início: gráfico dos 6 meses à
        esquerda; fluxo de hoje (2×2) + registros em linhas compactas à
        direita, com divisória fina no meio. Colapsa em coluna no celular.
      • X de fechar das janelas em VERMELHO (claro e escuro).
      • Pacientes sem a "borda dupla" e com o botão do resumo bem visível.
      • Ficha no PC: abas em CONTROLE SEGMENTADO (trilho cinza, pílula branca). */
/* 1477 — o card único virou DOIS cards (pedido do dono): .mov-body/.mov-solo
   saíram; .mov-graf e .mov-lado agora são o corpo de cada card do .mov-duo. */
html[data-oh-casca="google"] .mov-graf{ padding:14px 20px 16px!important; min-width:0; }
html[data-oh-casca="google"] .mov-lado{ padding:14px 20px 16px!important; min-width:0; display:flex; flex-direction:column; gap:9px; }
html[data-oh-casca="google"] .mov-cap{ font-size:10.5px; font-weight:800; letter-spacing:.6px; text-transform:uppercase; color:var(--muted); }
html[data-oh-casca="google"] .mov-lado .mov-cap:not(:first-child){ margin-top:6px; }
html[data-oh-casca="google"] .mov-lado .pf-bar{ grid-template-columns:1fr 1fr; gap:8px; margin:0; }
html[data-oh-casca="google"] .mov-lado .pf-card{ padding:9px 10px 9px 14px; gap:9px; }
html[data-oh-casca="google"] .mov-lado .pf-n{ font-size:18px; }
html[data-oh-casca="google"] .mov-regs{ display:flex; flex-direction:column; }
html[data-oh-casca="google"] .mov-reg{ display:flex; align-items:center; gap:9px; padding:7px 2px; background:none; border:none; border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent); cursor:pointer; font-family:inherit; text-align:left; }
html[data-oh-casca="google"] .mov-reg:last-child{ border-bottom:none; }
html[data-oh-casca="google"] .mov-reg:hover .mov-reg-l{ color:var(--blue-700); }
html[data-oh-casca="google"] .mov-reg-dot{ width:8px; height:8px; border-radius:50%; flex:none; }
html[data-oh-casca="google"] .mov-reg-l{ flex:1; min-width:0; font-size:12.5px; font-weight:600; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .mov-reg-v{ font-size:13.5px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; flex:none; }

/* FICHA no PC — CONTROLE SEGMENTADO (print do dono): trilho cinza-claro,
   rótulos simples, e a aba ativa é uma PÍLULA BRANCA com sombra leve.
   Só no desktop; no celular a ficha segue com o chip "Visão Geral ▾". */
@media(min-width:881px){
  html[data-oh-casca="google"] .fh-tabs{ border-bottom:none!important; padding:12px 0 16px; }
  html[data-oh-casca="google"] .fh-tabs .oh-subguia{ display:inline-flex!important; gap:2px!important; background:color-mix(in srgb,var(--ink) 6%,var(--bg))!important; border:1px solid color-mix(in srgb,var(--line) 60%,transparent)!important; border-radius:12px!important; padding:4px!important; box-shadow:none!important; }
  html[data-oh-casca="google"] .fh-tabs .oh-subguia button{ border:none!important; background:transparent!important; border-radius:9px!important; padding:7px 15px!important; font-size:12.5px!important; font-weight:600!important; color:var(--ink-2)!important; box-shadow:none!important; white-space:nowrap; }
  html[data-oh-casca="google"] .fh-tabs .oh-subguia button:hover{ color:var(--ink)!important; }
  html[data-oh-casca="google"] .fh-tabs .oh-subguia button.on{ background:var(--surface)!important; color:var(--ink)!important; font-weight:800!important; box-shadow:0 1px 3px rgba(19,41,75,.16), 0 0 0 1px color-mix(in srgb,var(--line) 55%,transparent)!important; }
}
/* no celular, o cabeçalho da ficha fecha com respiro (o chip não "vaza" sobre
   o container de baixo — sobreposição do print 05 do dono) */
@media(max-width:880px){
  html[data-oh-casca="google"] .ficha-head.ficha-abas{ padding-bottom:12px; }
  html[data-oh-casca="google"] .fh-tabs .ohg-crumb{ margin:10px 0 0!important; }
}
/* Config de Pacientes — a seção "Documentos da clínica" (fusão do Impulse
   Docs, 1476): blocos recolhidos em accordion, título claro + descrição. */
.cfgdoc-sec{ font-size:11px; font-weight:800; letter-spacing:.6px; text-transform:uppercase; color:var(--muted); margin:20px 0 10px; padding-top:14px; border-top:1px solid var(--line); }
.cfgdoc-dt{ border:1px solid var(--line); border-radius:12px; background:var(--surface); margin-bottom:10px; overflow:hidden; }
.cfgdoc-sum{ display:flex; align-items:center; gap:10px; padding:12px 14px; cursor:pointer; list-style:none; }
.cfgdoc-sum::-webkit-details-marker{ display:none; }
.cfgdoc-tit{ font-size:13.5px; font-weight:800; color:var(--ink); flex:none; }
.cfgdoc-desc{ font-size:12px; color:var(--muted); flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cfgdoc-cv{ width:16px; height:16px; flex:none; color:var(--muted); transition:transform .16s; }
.cfgdoc-dt[open] .cfgdoc-cv{ transform:rotate(180deg); }
.cfgdoc-dt[open] .cfgdoc-sum{ border-bottom:1px solid var(--line); background:color-mix(in srgb,var(--blue) 4%,var(--surface)); }
.cfgdoc-body{ padding:14px; }
@media(max-width:640px){ .cfgdoc-desc{ display:none; } }
/* 11) 1477 — consertos dos prints do dono (celular + compacto):
      • topbar do CELULAR sem sobreposição: o cartão da pesquisa encolhe de
        verdade (overflow contido) e o input divide o espaço que houver;
      • barra do calendário no celular: o "Confirmar" volta a ser SÓ o ícone
        (o texto não cabe e atropelava o menu ⋮);
      • trilho RECOLHIDO da lateral: os itens centralizam de novo (o recuo
        de 22px do modo largo não vale no trilho de 72px);
      • Início dividido em DOIS cards lado a lado (Receita e movimento |
        Fluxo de hoje), como pedido;
      • ilustração da agenda vazia SEM sombra. */
html[data-oh-casca="google"] .mov-duo{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:16px; margin-bottom:16px; align-items:stretch; }
html[data-oh-casca="google"] .mov-duo .mov-card{ margin-bottom:0!important; }
@media(max-width:880px){ html[data-oh-casca="google"] .mov-duo{ grid-template-columns:minmax(0,1fr); } }
html[data-oh-casca="google"] .dv-ilu{ filter:none!important; }
@media(max-width:760px){
  html[data-oh-casca="google"] .topbar-card{ flex:1 1 0!important; min-width:0!important; overflow:hidden!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .omni-inp{ width:60px; min-width:0; flex:1 1 0; margin-left:6px; padding-left:6px!important; }
  html[data-oh-casca="google"] .omni-lupa{ margin-right:6px; }
}
@media(max-width:880px){
  html[data-oh-casca="google"] .gw-conf-btn{ font-size:0!important; gap:0!important; padding:8px 11px!important; }
  html[data-oh-casca="google"] .gw-conf-btn svg{ width:17px!important; height:17px!important; }
}
html[data-oh-casca="google"] .app.compact[data-shell="topo"]>.side .nav button{ padding-left:0!important; margin-right:0!important; justify-content:center!important; border-radius:12px!important; }
html[data-oh-casca="google"] .app.compact[data-shell="topo"]>.side .side-novo{ margin-left:6px; }
/* 12) 1478 — TRAÇO do item ativo na lateral (pedido do dono): um traço
      vertical levemente gordinho, EM PÉ, agarrado no limite esquerdo da
      tela, marcando o item selecionado. A pílula azul-suave continua; o
      traço é o "você está aqui". No trilho recolhido ele também aparece,
      grudado na borda do trilho. */
html[data-oh-casca="google"] .side .nav button{ position:relative!important; overflow:visible!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .side .nav button.active::before{
  content:""; display:block; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:4.5px; height:62%; min-height:20px; border-radius:0 4px 4px 0;
  background:var(--blue)!important; box-shadow:none!important; }
/* no trilho recolhido o botão tem recuo lateral — o traço pula pra borda real */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .app.compact[data-shell="topo"]>.side .nav button.active::before{ left:-6px; }
/* MODO SIMPLES da Configurar agenda (Prévia 9): uma pergunta por linha,
   interruptor redondinho e o botão verde do "recomendado". */
.cfgs-q{ display:flex; align-items:center; gap:14px; padding:12px 2px; border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent); }
.cfgs-q:last-of-type{ border-bottom:none; }
.cfgs-t{ flex:1; min-width:0; }
.cfgs-t b{ display:block; font-size:13.5px; color:var(--ink); }
.cfgs-t span{ font-size:12px; color:var(--muted); }
.cfgs-sw{ width:40px; height:23px; border-radius:13px; border:none; background:#D7DFEA; position:relative; cursor:pointer; flex:none; transition:background .15s; padding:0; }
.cfgs-sw::after{ content:""; position:absolute; top:3px; left:3px; width:17px; height:17px; border-radius:50%; background:#fff; transition:left .15s; box-shadow:0 1px 2px rgba(0,0,0,.2); }
.cfgs-sw.on{ background:var(--blue); }
.cfgs-sw.on::after{ left:20px; }
[data-theme="dark"] .cfgs-sw{ background:#33415C; }
.cfgs-reco{ border-color:#BFE5CC!important; background:#E9F7EE!important; color:#15803D!important; }
.cfgs-reco:hover{ background:#DDF2E5!important; }
[data-theme="dark"] .cfgs-reco{ background:rgba(22,163,74,.14)!important; border-color:rgba(22,163,74,.4)!important; color:#4ADE80!important; }
/* 13) 1479 — selos do Ranking de indicadores (no lugar das medalhas-emoji):
      bolinha colorida com 1º/2º/3º, igual nos dois temas. */
.rk-selo{ display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:22px; padding:0 4px; border-radius:50%; color:#fff; font-size:10.5px; font-weight:800; vertical-align:-4px; margin-right:4px; }
/* 14) 1480 — refino das LETRAS do cabeçalho da ficha (pedido do dono):
      nome um ponto menor e mais assentado (espaçamento negativo leve),
      telefone e idade na medida, e o chip de especialidade INFORMATIVO
      (sem mão de clique — quem edita é o "+" ao lado). */
html[data-oh-casca="google"] .fh-nome{ font-size:21px!important; font-weight:800!important; letter-spacing:-.25px; line-height:1.2!important; margin:0 0 7px!important; }
html[data-oh-casca="google"] .fh-idade{ font-size:12px!important; font-weight:700!important; letter-spacing:0; }
html[data-oh-casca="google"] .fh-fone{ font-size:13.5px!important; font-weight:600!important; letter-spacing:.1px; font-variant-numeric:tabular-nums; }
html[data-oh-casca="google"] .fh-esp{ font-size:12px!important; font-weight:700!important; letter-spacing:.1px; padding:4px 11px!important; }
html[data-oh-casca="google"] .fh-esp-info{ cursor:default!important; }
/* 15) 1481 — na ficha, "Plano e tratamentos realizados" | "Plano de
      mensalidades (Ortodontia)" lado a lado (pedido do dono). */
.ficha-duo-trat{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; align-items:start; }
@media(max-width:1100px){ .ficha-duo-trat{ grid-template-columns:minmax(0,1fr); } }
/* 16) 1481 — avatares de CLÍNICAS e USUÁRIOS chapados (pedido do dono):
      cor sólida das iniciais, sem sombra, sem brilho, sem pulso, sem zoom. */
html[data-oh-casca="google"] #userSelectScreen .usr2-avatar,
html[data-oh-casca="google"] #clinicaSelectScreen .csAvatar{ box-shadow:none!important; animation:none!important; transition:none!important; }
html[data-oh-casca="google"] .usr2-card:hover .usr2-avatar,
html[data-oh-casca="google"] #clinicaSelectScreen .csCard:hover .csAvatar{ transform:none!important; }
/* 17) 1482 — consertos do print do celular:
      • a pesquisa vira SÓ a lupa; tocar nela abre o campo + resultados
        (o cartão entra em "modo busca" e o título dá lugar ao campo);
      • o menu suspenso das abas da ficha mora na linha das ações (antes do
        botão de copiar link) e o menu aberto NÃO fica por baixo do card
        "Pessoa" (o cabeçalho deixa o menu transbordar e o menu sobe de camada);
      • a barra inferior saiu (ver a lápide no index) — o ☰ abre a lateral. */
@media(max-width:760px){
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .omni-inp{ display:none; }
  html[data-oh-casca="google"] .topbar-card.buscando #pageTitleWrap{ display:none!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .topbar-card.buscando .omni-inp{ display:block; flex:1 1 auto; width:auto; min-width:0; margin-left:4px; }
}
html[data-oh-casca="google"] .ficha-head.ficha-abas{ overflow:visible!important; }
html[data-oh-casca="google"] .ohg-dd{ position:relative; }
html[data-oh-casca="google"] .ohg-dd-menu{ z-index:420!important; }
html[data-oh-casca="google"] .fh-acts .ohg-crumb{ margin:0!important; }
@media(max-width:880px){
  html[data-oh-casca="google"] .fh-tabs:has(> .oh-subguia.ohg-oculta){ display:none; }
}
/* 18) 1484 — consertos do print do celular (2ª rodada):
      • MODO BUSCA de verdade: enquanto pesquisa, os botões do topo se
        recolhem e o campo ocupa a linha inteira (antes o cartão tinha 68px
        e o campo virava um fiapo de 6px — parecia bug);
      • a gaveta lateral no celular é SEMPRE completa (ver _sideRecAplicar);
      • a lista de Pacientes no celular sem sobreposição (cartão empilhado). */
@media(max-width:760px){
  html[data-oh-casca="google"] .topbar.tb-buscando #topbarAcoes{ display:none!important; }
  html[data-oh-casca="google"] .topbar.tb-buscando .tb-navcluster{ display:none!important; }
  html[data-oh-casca="google"] .topbar.tb-buscando #tbMenuBtn{ display:none!important; }
  html[data-oh-casca="google"] .topbar-card.buscando{ max-width:none!important; }
}
/* 19) 1487 — ANÁLISES em colunas que se ENCAIXAM (pedido do dono): um card
      alto como o Mapa de calor não deixa mais um buraco do lado — os cards
      fluem em duas colunas e o curto sobe pra sobra. */
.ana-masonry{ columns:2; column-gap:18px; }
.ana-masonry>.panel{ break-inside:avoid; -webkit-column-break-inside:avoid; width:100%; }
@media(max-width:1100px){ .ana-masonry{ columns:1; } }
/* 20) 1488 — a leva Codental/SimplesDental (prints do dono):
      • TELA DE CLÍNICAS em cartões horizontais claros — logo centrado,
        avatar à esquerda, nome + endereço, seta de entrar;
      • POPUP do card da agenda (.ag-pop): cartão ancorado com nome,
        telefone, horário, situação trocável e atalhos;
      • trilho RECOLHIDO mais estreito (58px) com TUDO no mesmo eixo;
      • botão "Novo" da lateral quase no nível da folha (como no Gmail);
      • no celular, a pesquisa é SÓ a lupa — a caixa aparece ao tocar. */
html[data-oh-casca="google"] #clinicaSelectScreen .csBrand{ position:static; justify-content:center; margin:44px auto 4px; }
html[data-oh-casca="google"] #clinicaSelectScreen .csBrandName{ color:var(--ent-ink,#1B2B4B); display:inline; }
html[data-oh-casca="google"] #clinicaSelectScreen .csBrandName b{ color:var(--blue-700,#1559BD); }
html[data-oh-casca="google"] #clinicaSelectScreen .csWrap{ justify-content:flex-start; padding-top:16px; height:auto!important; min-height:0!important; }
html[data-oh-casca="google"] #clinicaSelectScreen .csTitle{ font-size:24px; margin-bottom:6px; }
html[data-oh-casca="google"] #clinicaSelectScreen .csSub{ margin-bottom:26px; }
html[data-oh-casca="google"] #clinicaSelectScreen .csCards{ flex-direction:column; flex-wrap:nowrap; gap:13px; width:min(560px,94vw); max-width:none; }
html[data-oh-casca="google"] #clinicaSelectScreen .csCard{ display:flex; align-items:center; text-align:left; width:100%; min-width:0; padding:15px 18px; gap:15px; border-radius:14px; background:var(--surface,#fff); border:1px solid var(--line,#D9E2F0); box-shadow:0 1px 3px rgba(19,41,75,.10); }
html[data-oh-casca="google"] #clinicaSelectScreen .csCard:hover{ transform:translateY(-2px); border-color:color-mix(in srgb,var(--blue) 45%,var(--line)); box-shadow:0 6px 18px rgba(19,41,75,.14); background:var(--surface,#fff); }
html[data-oh-casca="google"] #clinicaSelectScreen .csAvatar{ width:52px; height:52px; border-radius:12px; margin:0; font-size:22px; flex:none; box-shadow:none; }
html[data-oh-casca="google"] #clinicaSelectScreen .csInfo{ flex:1 1 auto; min-width:0; }
html[data-oh-casca="google"] #clinicaSelectScreen .csName{ display:block; min-height:0; text-align:left; font-size:15.5px; color:var(--ink,#15233F); justify-content:flex-start; }
html[data-oh-casca="google"] #clinicaSelectScreen .csEnd{ font-size:12.5px; color:var(--muted,#6C7A93); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] #clinicaSelectScreen .csGo{ margin-top:0; flex:none; color:var(--blue-700,#1559BD); }
/* ── o POPUP do card da agenda ── */
.ag-pop{ position:fixed; z-index:520; width:302px; background:var(--surface,#fff); border:2px solid var(--blue); border-radius:13px; box-shadow:0 14px 38px rgba(10,25,60,.24); padding:14px 15px 13px; font-family:var(--font); animation:agPopIn .14s ease both; }
@keyframes agPopIn{ from{ opacity:0; transform:translateY(4px); } to{ opacity:1; transform:none; } }
.ag-pop-x{ position:absolute; top:9px; right:10px; width:22px; height:22px; border:none; border-radius:50%; background:var(--red,#D64550); color:#fff; font-size:14px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; }
.ag-pop-head{ display:flex; gap:11px; align-items:center; margin:0 22px 10px 0; }
.ag-pop-av{ width:42px; height:42px; border-radius:50%; color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:18px; flex:none; }
.ag-pop-quem{ min-width:0; flex:1; }
.ag-pop-quem b{ display:block; font-size:14.5px; color:var(--ink); cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ag-pop-quem b:hover{ color:var(--blue-700); text-decoration:underline; }
.ag-pop-quem span{ font-size:12.5px; color:var(--ink-2); font-variant-numeric:tabular-nums; }
.ag-pop-quando{ display:flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; color:var(--ink-2); background:var(--blue-soft,#EAF2FE); border-radius:9px; padding:8px 10px; margin-bottom:9px; }
[data-theme="dark"] .ag-pop-quando{ background:color-mix(in srgb,var(--blue) 16%,var(--surface)); }
.ag-pop-proc{ font-size:12px; color:var(--muted); margin:-3px 0 9px 2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ag-pop-st{ display:flex; align-items:center; gap:9px; margin-bottom:11px; }
.ag-pop-st label{ font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; color:var(--muted); flex:none; }
.ag-pop-st select{ flex:1; min-width:0; border:1px solid var(--line); border-radius:8px; padding:6px 8px; font-family:inherit; font-size:13px; background:var(--surface); color:var(--ink); }
.ag-pop-acts{ display:flex; gap:8px; flex-wrap:wrap; } /* 1607 — quebra linha (com o botão Ligar são 4 ações) */
.ag-pop-acts .btn{ flex:1 1 auto; min-width:0; white-space:nowrap; justify-content:center; display:inline-flex; align-items:center; gap:5px; }
/* ── trilho recolhido: 58px, tudo num eixo só ── */
html[data-oh-casca="google"] .app.compact .side{ width:58px!important; padding:10px 4px!important; }
html[data-oh-casca="google"] .app.compact .side-novo{ width:44px; height:44px; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .app.compact[data-shell="topo"]>.side .side-novo{ margin:2px auto 12px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .app.compact[data-shell="topo"]>.side .nav button{ margin:2px auto!important; }
html[data-oh-casca="google"] .app.compact .side-lix{ margin:0 auto; }
html[data-oh-casca="google"] .app.compact .side-foot{ padding-left:0; padding-right:0; } /* o respiro lateral do rodapé empurrava a lixeira do eixo */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .app.compact[data-shell="topo"]>.side .nav button.active::before{ left:-7px; }
/* ── botão "Novo" quase no nível da folha (como o Escrever do Gmail) ── */
html[data-oh-casca="google"] .app[data-shell="topo"]>.side{ padding-top:5px; }
html[data-oh-casca="google"] .side-novo{ margin:2px 0 10px; }
/* ── celular: a pesquisa é SÓ a lupa até ser tocada ── */
@media(max-width:760px){
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .topbar-card:not(.buscando){ background:transparent!important; border-color:transparent!important; box-shadow:none!important; padding-right:4px!important; }
  html[data-oh-casca="google"] .topbar-card:not(.buscando) .omni-lupa{ width:21px; height:21px; margin-right:2px; color:var(--ink-2); }
}
/* a janela do Resumo da semana (Legenda) — o termômetro sem a moldura da grade */
.sem-extra-pop{ padding:2px 0 0; }
.sem-extra-pop .sem-term-col{ cursor:pointer; }
/* 21) 1489 — consertos do celular (pedidos do dono):
      • Pacientes: a linha da direita QUEBRA e o Impulse Docs aparece
        (a busca toma a primeira linha; Docs e os botões vêm abaixo);
      • o menu Dentistas cabe na barra do calendário (rótulo com teto). */
@media(max-width:760px){
  html[data-oh-casca="google"] .pac-filtros-right{ flex-wrap:wrap; }
  html[data-oh-casca="google"] .pac-filtros .pac-search-sm{ flex:1 1 100%; min-width:0; }
  html[data-oh-casca="google"] .pac-docs-btn{ flex:1 1 auto; justify-content:center; margin-bottom:0; }
  html[data-oh-casca="google"] .gw-nav .gw-prof .gw-prof-lbl{ max-width:74px; overflow:hidden; text-overflow:ellipsis; }
  html[data-oh-casca="google"] .gw-nav .gw-prof-btn{ padding:7px 9px; }
}
/* 22) 1491 — REFINAMENTO DA FICHA (pedido do dono): saem os efeitos antigos,
      entra a folha calma — cartões chapados, sem levitar, sem brilho.
      • painéis da ficha: sombra mínima, sem hover-lift, sem animação de
        entrada, borda no token do tema (o #ECF1F7 cravado saiu de cena);
      • avatar do paciente CHAPADO (o degradê e o anel de brilho saíram),
        na régua dos avatares de clínicas/usuários da 14.81;
      • cabeçalhos de painel sempre lisos na ficha (mesmo com o cardtint);
      • os botõezinhos Sim/Não/Sem registro chapados (sem degradê/brilho). */
html[data-oh-casca="google"] .ficha-pac .panel,
html[data-oh-casca="google"] [data-pac-v3] .ficha-pac .panel{ border:1px solid var(--line)!important; border-radius:14px!important; box-shadow:0 1px 2px rgba(19,41,75,.05)!important; animation:none!important; transition:none!important; }
html[data-oh-casca="google"] .ficha-pac .panel:hover{ transform:none!important; box-shadow:0 1px 2px rgba(19,41,75,.05)!important; }
html[data-oh-casca="google"] .ficha-head{ box-shadow:none!important; border:1px solid var(--line)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fh-av{ background:var(--blue-soft)!important; border:1px solid var(--blue-line)!important; }
html[data-oh-casca="google"] .ficha-head .fh-av{ box-shadow:none!important; }
html[data-oh-casca="google"] .ficha-pac .panel-head{ background:transparent!important; border-bottom-color:var(--line)!important; }
html[data-oh-casca="google"] .cs-opt.on{ box-shadow:none!important; }
html[data-oh-casca="google"] .cs-opt.on.sim{ background:#129068!important; }
html[data-oh-casca="google"] .cs-opt.on.nao{ background:#DE8F1F!important; }
html[data-oh-casca="google"] .cs-opt.on.sr{ background:#7C8B9B!important; }
/* 23) 1492 — a leva de refinamentos do dono:
      • LEGENDA e ENGRENAGEM da barra da agenda BEM visíveis: chrome de botão
        de verdade (superfície + borda do tema), não mais o vidro pálido;
      • cards da agenda SIMPLES: nome COMPLETO em tinta escura (contraste),
        até 2 linhas quando o card é alto; o avatar saiu (quem clica vê o
        popup); modo estreito mostra as iniciais chapadas, sem bolinha;
      • popup do card refinado: chip do procedimento na cor da agenda e a
        bolinha da situação ao lado do seletor. */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .gw-ico{ width:36px; height:34px; background:var(--surface)!important; border:1px solid var(--line)!important; box-shadow:0 1px 2px rgba(19,41,75,.08)!important; border-radius:10px; color:var(--ink-2)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .gw-ico:hover{ border-color:var(--blue)!important; color:var(--blue-700)!important; background:var(--blue-soft)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .gw-ico svg{ width:17px; height:17px; }
html[data-oh-casca="google"] .gw-card-nome{ font-size:12.5px; font-weight:750; letter-spacing:.1px; line-height:1.25; white-space:normal; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
.ag-pop-chip{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; color:var(--ink-2); border-radius:999px; padding:4px 11px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ag-pop-chip i{ width:8px; height:8px; border-radius:50%; flex:none; }
.ag-pop-proc{ margin:-1px 0 10px; white-space:normal; }
.ag-pop-stdot{ width:10px; height:10px; border-radius:50%; flex:none; }
/* 24) 1493 — TELA DE USUÁRIOS no idioma da de Clínicas (print do dono):
      cartões horizontais claros empilhados — avatar à esquerda, nome
      completo + papel/PIN, "Entrar ›" à direita. */
html[data-oh-casca="google"] #usrCards2{ flex-direction:column!important; flex-wrap:nowrap!important; gap:13px!important; width:min(560px,94vw); max-width:none!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-card{ display:flex; align-items:center; text-align:left; width:100%!important; min-width:0; padding:14px 18px!important; gap:15px; border-radius:14px!important; background:var(--surface,#fff)!important; border:1px solid var(--line,#D9E2F0)!important; box-shadow:0 1px 3px rgba(19,41,75,.10)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-card:hover{ transform:translateY(-2px)!important; border-color:color-mix(in srgb,var(--blue) 45%,var(--line))!important; box-shadow:0 6px 18px rgba(19,41,75,.14)!important; background:var(--surface,#fff)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-card.sel{ border-color:var(--blue)!important; box-shadow:0 0 0 3px rgba(31,115,224,.18)!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-avatar{ width:52px!important; height:52px!important; border-radius:12px!important; margin:0!important; font-size:22px!important; flex:none; }
html[data-oh-casca="google"] .usr2-info{ flex:1 1 auto; min-width:0; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-name{ color:var(--ink,#15233F)!important; font-size:15.5px!important; margin:0!important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-role{ color:var(--muted,#6C7A93)!important; font-size:12.5px!important; margin-top:3px!important; background:none!important; border:none!important; padding:0!important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .usr2-pin-status{ font-size:12px; font-weight:700; }
html[data-oh-casca="google"] .usr2-go{ margin:0; flex:none; color:var(--blue-700,#1559BD); font-size:12px; font-weight:700; display:inline-flex; align-items:center; gap:5px; letter-spacing:.3px; }
/* 25) 1495 — PRÉVIA 10 APROVADA: a FICHA vira FOLHA CORRIDA.
      • os cards internos da ficha perdem borda, canto e sombra — nada de
        "card dentro de container";
      • entre as seções, uma LINHA HORIZONTAL que — ressalva do dono — NÃO
        encosta nas bordas do container (respiro de 18px de cada lado);
      • entre as colunas de uma seção, a LINHA VERTICAL de ficha de papel
        (no celular ela deita e vira linha horizontal);
      • as setinhas ▾ de recolher card saem da ficha (ver cartoes.js). */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .ficha-pac .panel{ border:none!important; border-radius:0!important; box-shadow:none!important; background:transparent!important; }
html[data-oh-casca="google"] .ficha-pac .panel:hover{ box-shadow:none!important; transform:none!important; }
html[data-oh-casca="google"] .ficha-pac .panel-head{ border-bottom:none!important; background:transparent!important; }
html[data-oh-casca="google"] .ficha-pac .ficha-secao{ margin:0!important; padding:4px 0 16px; }
html[data-oh-casca="google"] .ficha-pac .ficha-secao + .ficha-secao::before{ content:""; display:block; height:1px; background:var(--line); margin:0 18px 18px; }
html[data-oh-casca="google"] .ficha-pac .ficha-secao + .ficha-secao::before{ width:50%; margin-right:0!important; } /* 1528 — régua a meia largura */
html[data-oh-casca="google"] .ficha-pac .ficha-secao-tit{ border-bottom:none!important; padding-bottom:2px; }
html[data-oh-casca="google"] .ficha-pac .oh-rec-chev{ display:none!important; }
html[data-oh-casca="google"] .ficha-pac .ficha-row{ gap:0!important; }
html[data-oh-casca="google"] .ficha-pac .ficha-row > .fr-cell + .fr-cell{ border-left:1px solid var(--line); padding-left:24px; }
html[data-oh-casca="google"] .ficha-pac .ficha-row > .fr-cell:first-child{ padding-right:24px; }
html[data-oh-casca="google"] .ficha-pac .ficha-duo-trat{ gap:0!important; }
html[data-oh-casca="google"] .ficha-pac .ficha-duo-trat > * + *{ border-left:1px solid var(--line); padding-left:24px; }
html[data-oh-casca="google"] .ficha-pac .ficha-duo-trat > *:first-child{ padding-right:24px; }
@media(max-width:1100px){
  html[data-oh-casca="google"] .ficha-pac .ficha-duo-trat > * + *{ border-left:none; padding-left:0; border-top:1px solid var(--line); padding-top:16px; }
  html[data-oh-casca="google"] .ficha-pac .ficha-duo-trat > *:first-child{ padding-right:0; }
}
@media(max-width:880px){
  html[data-oh-casca="google"] .ficha-pac .ficha-row > .fr-cell + .fr-cell{ border-left:none; padding-left:0; border-top:1px solid var(--line); padding-top:16px; }
  html[data-oh-casca="google"] .ficha-pac .ficha-row > .fr-cell:first-child{ padding-right:0; }
}
/* 26) 1496 — Prévia 10, parte 2: os botões do cabeçalho da ficha contados no
      dedo (WhatsApp · Agendar · Editar · Mais ▾); o menu Mais ancora à direita. */
html[data-oh-casca="google"] .fh-acts{ gap:8px; flex-wrap:wrap; }
html[data-oh-casca="google"] .fh-mais{ position:relative; }
html[data-oh-casca="google"] .fh-mais .pac-menu-pop{ right:0; left:auto; top:calc(100% + 6px); z-index:430; }
@media(max-width:760px){ html[data-oh-casca="google"] .fh-acts .btn.sm{ padding:7px 11px; } }
/* 26b) 1496 — fidelidade à Prévia 10 (ressalva do dono): o CABEÇALHO da ficha
      também SEM bordas laterais — nada de card perto do limite do container.
      Ele vira o topo da própria folha, fechado por uma linha que respeita o
      respiro de 18px das bordas (a mesma régua das divisões entre seções). */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .ficha-head{ border:none!important; box-shadow:none!important; background:transparent!important; border-radius:0!important; margin:2px 0 4px!important; }
html[data-oh-casca="google"] .ficha-head.ficha-abas::after{ content:""; display:block; height:1px; background:var(--line); margin:14px 18px 0; }
/* 27) 1497 — os indicadores no POPUP (retorno/primeira + convênio/particular),
      por padrão e com nome escrito (prints 02). */
.ag-pop-inds{ display:flex; gap:7px; flex-wrap:wrap; margin:-1px 0 10px; }
.ag-pop-ind{ display:inline-flex; align-items:center; font-size:11.5px; font-weight:700; border-radius:999px; padding:4px 11px; }
.ag-pop-ind.nova{ background:color-mix(in srgb, var(--green) 14%, var(--surface)); color:var(--green); }
.ag-pop-ind.ret{ background:color-mix(in srgb, var(--blue) 12%, var(--surface)); color:var(--blue-700); }
.ag-pop-ind.conv{ background:color-mix(in srgb, var(--amber) 15%, var(--surface)); color:var(--amber); }
.ag-pop-ind.part{ background:var(--line-2,#EDF2F9); color:var(--ink-2); }
/* 28) 1499 — prints 09 e 10: filtros de Tratamentos e hub de documentos em
      MENUS SUSPENSOS (agrupados por funcionalidade, com nome escrito). */
.tt-sel{ font-family:inherit; font-size:13px; font-weight:700; color:var(--ink-2); background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:7px 10px; cursor:pointer; max-width:190px; }
.tt-sel:hover{ border-color:var(--blue-line); color:var(--blue-700); }
.doc-hub-menu{ position:relative; }
.doc-hub-menu .pac-menu-pop{ left:0; right:auto; top:calc(100% + 6px); z-index:430; min-width:250px; }
/* 29) 1501 — a leva dos campos NA MEDIDA e dos toques finais:
      • campos curtos param de ocupar a linha inteira (telefone com teto,
        nome da situação com teto, lista de dentistas com teto e linhas
        mais baixas — prints 01/02/05);
      • o "+" flutuante é EXCLUSIVO do celular;
      • o Messenger do canto vira SÓ o ícone (sem texto);
      • a linha "Última consulta" elegante sob o nome do paciente. */
html[data-oh-casca="google"] .tel-wrap{ max-width:320px; }
html[data-oh-casca="google"] #f_dent_multi{ max-width:440px; }
html[data-oh-casca="google"] #f_dent_multi label{ padding:8px 12px!important; font-size:13px!important; }
/* 1787 — o tamanho vem do skin único; este 16px forçado deixava a
   caixa dos responsáveis menor que a do resto do app. */
html[data-oh-casca="google"] .fab-sup{ display:none!important; }
@media(max-width:880px){ html[data-oh-casca="google"] .fab-sup{ display:grid!important; } }
html[data-oh-casca="google"] #chatDock .pillTxt{ display:none!important; }
/* 1502b — o Messenger do canto REFINADO (pedido do dono): bolinha limpa de
   48px, ícone centrado de verdade, selo de não-lidas ancorado no ombro. */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] #chatDock .chat-pill{ width:48px; height:48px; border-radius:50%!important; padding:0!important; gap:0!important; display:grid!important; place-items:center; background:linear-gradient(135deg,var(--blue),var(--blue-700))!important; color:#fff; box-shadow:0 5px 16px rgba(31,115,224,.38)!important; }
html[data-oh-casca="google"] #chatDock .chat-pill svg{ width:21px; height:21px; }
html[data-oh-casca="google"] #chatDock #chatBadge{ position:absolute!important; top:-5px; right:-5px; border:2px solid var(--bg,#F3F7FD); }
html[data-oh-casca="google"] #chatDock #chatDot{ top:3px!important; left:auto!important; right:5px!important; }
.pac-ult{ display:inline-block; white-space:nowrap; font-size:12px; color:var(--muted); margin:0 0 0 4px; } /* 1502 — ao lado do Em dia (inline-block preserva os espaços do texto) */
.pac-ult b{ color:var(--ink-2); font-weight:700; }
@media(max-width:760px){ .pac-ult{ font-size:11.5px; } }
/* 30) 1502 — as notificações-pílula (toast) LEGÍVEIS no tema escuro:
      o fundo usava a tinta do tema, que no escuro é clara — texto branco
      sumia. Agora o escuro tem cartão navy com borda e texto claro. */
[data-theme="dark"] .toast{ background:#111E36!important; color:#EAF1FA!important; border:1px solid #2E3D5C; box-shadow:0 10px 30px rgba(0,0,0,.55)!important; }
/* 31) 1504 — Tarefas na CASCA da Agenda (pedido do dono): a barra do
      calendário permanece ao ligar o interruptor — mesma densidade, mesmo
      lugar — e a Central rola por dentro, como a grade da agenda. */
.tar-casca-scroll{ flex:1 1 0; min-height:0; overflow:auto; padding:6px 18px 26px; }
html[data-oh-casca="google"] .tar-casca-scroll{ padding:6px 18px 26px; }
/* 32) 1512 — a engrenagem do Início no TOPO DIREITO do container da Home
      (pedido do dono): sempre à vista, mesmo com a saudação desligada. */
.pag-gear-topo{ position:absolute; top:2px; right:0; z-index:6; box-shadow:0 2px 10px rgba(19,41,75,.10); }
.painel-wrap > .hero-flat .hero-saud, .painel-wrap > .hero-flat .hero-sub{ padding-right:52px; }
@media(max-width:760px){ .pag-gear-topo{ top:0; } }
/* 33) 1513 — telas de ENTRADA no celular (pedido do dono, prints): sem
      sobreposição e itens no lugar.
      • Clínicas: o cabeçalho vira COLUNA — marca centrada, e-mail e
        data · hora centrados logo abaixo; o Sair vira botão pequeno
        cravado no canto superior direito, longe do título.
      • Usuários: o relógio compacta (hora menor, e-mail com teto) para
        não brigar com o "Trocar de clínica".
      • Cartões das duas telas: nome e papel podem QUEBRAR linha — acabou
        o "PIN configu…" cortado. */
@media(max-width:640px){
  html[data-oh-casca="google"] #clinicaSelectScreen .csBrand{ margin:18px auto 2px; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csClock{ position:static; text-align:center; margin:4px auto 0; padding:0 16px; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csClock > span{ max-width:92vw!important; text-align:center!important; margin:0 auto; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csDate{ display:inline-block; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csTime{ display:inline-block; font-size:20px!important; letter-spacing:.5px!important; margin-left:8px; vertical-align:baseline; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csClock > div:last-of-type{ position:absolute; top:12px; right:12px; margin:0!important; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csWrap{ padding-top:18px; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csEyebrow{ margin-bottom:8px; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csEnd{ white-space:normal; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csCard{ padding:13px 14px; gap:12px; }
  #usrClock{ top:14px!important; right:14px!important; max-width:72vw; }
  #usrClock #usrAcctLine{ max-width:60vw!important; }
  #usrTime{ font-size:22px!important; letter-spacing:1px!important; }
  #usrClock #usrAcctBox{ margin-top:8px!important; }
  /* ⚰️ 1518 — esta regra da 15.13 prendia a marca no canto esquerdo e, por ter
     peso maior (id + atributo + tipo), vencia a centralização da 15.15/15.18.
     A marca agora é posicionada só pela regra .entBrand da seção 35. */
  #usrVoltarClinicas{ margin-top:26px!important; }
  #usrClinicaName{ font-size:17px!important; }
  html[data-oh-casca="google"] #usrCards2{ gap:12px!important; width:min(560px,94vw); }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-card{ padding:12px 14px!important; gap:12px; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-avatar{ width:44px!important; height:44px!important; font-size:18px!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-name{ white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; line-height:1.25; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-role{ white-space:normal; line-height:1.4; }
}
/* 34) 1514 — a barra do calendário da Agenda em DUAS LINHAS no celular
      (pedido do dono): linha 1 = Hoje · ‹ data › · visão; linha 2 =
      Dentistas · Confirmar · ⋮. Cabe tudo, sem esconder nem cortar. */
@media(max-width:880px){
  .gw-toolbar.gw-tb2{ flex-wrap:wrap; row-gap:7px; }
  .gw-tb2 .gw-tb-row{ display:flex; align-items:center; gap:7px; width:100%; min-width:0; }
  .gw-tb2 .gw-tb-row .gw-nav{ display:flex; align-items:center; gap:7px; min-width:0; flex:1 1 auto; }
  .gw-tb2 .gw-tb-row .gw-prof{ min-width:0; }
  .gw-tb2 .gw-tb-row .gw-prof .gw-prof-lbl{ max-width:38vw; overflow:hidden; text-overflow:ellipsis; }
  .gw-tb2 .gw-hoje{ flex:none; }
}
/* 35) 1515 — PADRONIZAÇÃO OBRIGATÓRIA das três telas de entrada
      (Clínica · Usuário · Bloqueio), pedido do dono com o print do Codental.

      CELULAR (≤640px) — o essencial e nada mais:
        emblema Impulse centrado no topo · título · CARTÕES · botões.
        Data, hora e e-mail SAEM das três (informação que o celular já
        mostra na própria barra de status). Os botões (Sair / Trocar de
        clínica) ficam, cravados no canto superior direito.

      PC — mostra tudo, mas com o conjunto CENTRADO e mais respiro:
        emblema no canto, relógio no canto, cartões numa coluna central
        de largura fixa, avatares alinhados na mesma prumada. */

/* ── celular: as três telas falam a MESMA língua ─────────────────── */
@media(max-width:640px){
  /* 1518 — a marca vira cabeçalho centrado nas três, mas SEM sair do fluxo
     absoluto: a tela de Usuários é um flex-row, e o `position:static` da
     15.15 transformava a marca em COLUNA IRMÃ — ela ia para a esquerda e
     empurrava os cartões para fora da tela (bug do dono). Ancorada no topo
     com translate, o miolo continua dono da largura inteira. */
  #clinicaSelectScreen .entBrand,
  #userSelectScreen .entBrand,
  #lockScreen .entBrand{ position:absolute!important; top:18px!important; left:50%!important; right:auto!important; transform:translateX(-50%); justify-content:center; margin:0!important; z-index:3; }
  #userSelectScreen .entBrandName, #lockScreen .entBrandName{ display:inline; }
  /* o miolo desce abaixo da marca (nas três) */
  html[data-oh-casca="google"] #clinicaSelectScreen .csWrap{ padding-top:74px!important; }
  #userSelectScreen #usrMain{ padding-top:74px!important; }
  #lockScreen .lockCard{ margin-top:56px; }
  /* a tela de Usuários é flex-row: garante que o miolo ocupe a largura toda
     e que nada gere rolagem lateral */
  #userSelectScreen{ flex-direction:column!important; align-items:stretch!important; justify-content:flex-start!important; overflow-x:hidden!important; }
  #userSelectScreen #usrMain{ width:100%!important; }
  #userSelectScreen #usrPinPanel{ margin:auto!important; }

  /* data · hora · e-mail SAEM das três (o celular já mostra a hora) */
  #clinicaSelectScreen .csClock > span,
  #clinicaSelectScreen .csDate,
  #clinicaSelectScreen .csTime,
  #usrClock #usrAcctLine, #usrDate, #usrTime,
  #lockEmail, #lockDate, #lockTime{ display:none!important; }

  /* o que sobra do relógio é só o botão — cravado no canto */
  #clinicaSelectScreen .csClock,
  #usrClock{ position:absolute!important; top:12px!important; right:12px!important; left:auto!important; margin:0!important; padding:0!important; text-align:right!important; width:auto!important; }
  #clinicaSelectScreen .csClock > div:last-of-type,
  #usrClock #usrAcctBox{ margin:0!important; }
  #lockClock{ display:none!important; }

  #usrMain{ justify-content:flex-start!important; height:auto!important; }
  #usrVoltarClinicas{ margin-top:2px!important; }

  /* cartões: a mesma medida nas duas listas */
  html[data-oh-casca="google"] #clinicaSelectScreen .csCards,
  html[data-oh-casca="google"] #usrCards2{ width:min(560px,94vw)!important; gap:12px!important; }
}

/* ── PC: tudo à mostra, porém CENTRADO e refinado ────────────────── */
@media(min-width:641px){
  html[data-oh-casca="google"] #clinicaSelectScreen .csCards,
  html[data-oh-casca="google"] #usrCards2{ width:min(520px,88vw)!important; margin-left:auto; margin-right:auto; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csCard,
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-card{ padding:16px 20px!important; gap:16px; }
  /* avatares na MESMA prumada nas duas telas (o olho corre reto) */
  html[data-oh-casca="google"] #clinicaSelectScreen .csAvatar,
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .usr2-avatar{ width:50px!important; height:50px!important; border-radius:14px!important; font-size:20px!important; flex:none; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csWrap{ padding-top:8px; }
}
/* 36) 1516 — SAUDAÇÃO B+C (prévia 12 aprovada pelo dono): o cartão de
      boas-vindas com a próxima consulta como rodapé clicável. */
.hero-bc{ background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:0 1px 3px rgba(19,41,75,.07); overflow:hidden; margin-right:46px; }
/* 1608 — quando a engrenagem está DENTRO do cartão, ele vai até o limite (sem a
   margem que reservava espaço pra engrenagem flutuante) e ganha ancoragem. */
.hero-bc.hero-bc-gear{ margin-right:0; position:relative; }
.pag-gear-hero{ position:absolute; top:10px; right:10px; z-index:3; box-shadow:0 2px 10px rgba(19,41,75,.10); }
.hero-bc.hero-bc-gear .hb-top{ padding-right:52px; }
.hero-bc .hb-top{ display:flex; align-items:center; gap:14px; padding:15px 18px 13px; }
.hero-bc .hb-av{ width:52px; height:52px; border-radius:15px; background:linear-gradient(135deg,var(--blue),color-mix(in srgb,var(--blue),#000 32%)); color:#fff; font-weight:900; font-size:19px; display:grid; place-items:center; flex:none; letter-spacing:.5px; }
.hero-bc .hb-id{ min-width:0; flex:1; }
.hero-bc .hb-hi{ font-size:12.5px; font-weight:700; color:var(--muted); letter-spacing:.2px; }
.hero-bc .hb-nome{ font-size:22px; font-weight:800; line-height:1.2; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--ink); }
.hero-bc .hb-nome-curto{ display:none; }
.hero-bc .hb-chips{ display:flex; flex-wrap:wrap; gap:6px; padding:0 18px 13px; }
.hero-bc .hb-chip{ display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; padding:4px 9px; border-radius:99px; background:color-mix(in srgb,var(--ink) 4%,var(--surface)); color:var(--ink-2); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hero-bc .hb-chip svg{ width:11px; height:11px; opacity:.75; flex:none; }
.hero-bc .hb-chip b{ font-weight:700; }
.hero-bc .hb-dt-curto{ display:none; }
.hero-bc .hb-next{ display:flex; align-items:center; gap:11px; padding:12px 18px; width:100%; background:linear-gradient(90deg,var(--blue-soft),color-mix(in srgb,var(--blue-soft) 35%,var(--surface))); border:none; border-top:1px solid var(--line); cursor:pointer; text-align:left; font-family:inherit; }
.hero-bc .hb-next:hover{ background:var(--blue-soft); }
.hero-bc .hb-h{ font-size:19px; font-weight:900; color:var(--blue-700); letter-spacing:-.4px; line-height:1; flex:none; font-variant-numeric:tabular-nums; }
.hero-bc .hb-w{ flex:1; min-width:0; display:block; }
.hero-bc .hb-l{ display:block; font-size:10px; font-weight:800; color:var(--blue-700); text-transform:uppercase; letter-spacing:.5px; opacity:.75; }
.hero-bc .hb-p{ display:block; font-size:13.5px; font-weight:700; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:1px; }
.hero-bc .hb-cv{ width:16px; height:16px; flex:none; color:var(--blue-700); }
.hero-bc .hb-livre{ display:flex; align-items:center; gap:9px; padding:11px 18px; background:color-mix(in srgb,var(--green) 8%,var(--surface)); border-top:1px solid var(--line); font-size:12.5px; font-weight:700; color:var(--green); }
.hero-bc .hb-livre svg{ width:15px; height:15px; flex:none; }
@media(max-width:640px){
  .hero-bc{ margin-right:44px; }
  .hero-bc .hb-top{ padding:13px 14px 12px; gap:11px; }
  .hero-bc .hb-av{ width:44px; height:44px; border-radius:13px; font-size:16px; }
  .hero-bc .hb-nome{ font-size:17.5px; }
  .hero-bc .hb-nome-full{ display:none; }
  .hero-bc .hb-nome-curto{ display:inline; }
  .hero-bc .hb-chips{ padding:0 14px 12px; }
  .hero-bc .hb-dt-full{ display:none; }
  .hero-bc .hb-dt-curto{ display:inline; }
  .hero-bc .hb-next, .hero-bc .hb-livre{ padding:11px 14px; }
  .hero-bc .hb-h{ font-size:17px; }
}
/* 37) 1519 — FINANCEIRO › VISÃO GERAL em FOLHA CORRIDA (prévia 13 aprovada).
      Mesma régua da ficha do paciente (seção 25), escopada em .fin-folha:
        • painéis sem borda, canto, sombra e fundo — fim do cartão dentro
          do container;
        • entre as seções, a LINHA que NÃO encosta nas bordas (respiro de
          18px de cada lado — a ressalva do dono na Prévia 10);
        • os quatro indicadores viram FAIXA com divisores verticais, como
          o .ficha-kpi — mas continuam CLICÁVEIS, com a seta e o realce ao
          passar o mouse (eles navegam; perder isso seria perder função). */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .panel{ border:none!important; border-radius:0!important; box-shadow:none!important; background:transparent!important; }
html[data-oh-casca="google"] .fin-folha .panel:hover{ box-shadow:none!important; transform:none!important; }
html[data-oh-casca="google"] .fin-folha .panel-head{ border-bottom:none!important; background:transparent!important; padding-left:0; padding-right:0; }
html[data-oh-casca="google"] .fin-folha .panel-body{ padding-left:0; padding-right:0; }
html[data-oh-casca="google"] .fin-folha .panel + .panel::before,
html[data-oh-casca="google"] .fin-folha .grid.stats + .panel::before{ content:""; display:block; height:1px; background:var(--line); margin:0 18px 18px; }
/* ⚰️ 1523 — a FAIXA dos indicadores (1519) saiu por pedido do dono
   ("está cheio de cards bugados"): fora da Visão geral ela deixava a
   seta › flutuando no alto de cada célula, o filete de cor vazando na
   lateral e os blocos desalinhados. Os indicadores de TODO o Financeiro
   agora vestem o CARD COLORIDO da seção 41 (o mesmo da 1521). */
/* 38) 1520 — a FOLHA CORRIDA vale no FINANCEIRO INTEIRO (pedido do dono,
      no idioma da lista de Pacientes): folha sem molduras, com uma LINHA
      separando cada bloco/linha de dado. Uma exceção obrigatória: a
      FOLHA DO DIA, que é o caderno impresso da secretária e conserva o
      desenho próprio dela (moldura, tabela e cabeçalho fixo). */
/* linhas entre blocos de dado — a régua da lista de Pacientes */
html[data-oh-casca="google"] .fin-folha .panel-body > .row{ border-top:1px solid var(--line); border-bottom:none!important; }
html[data-oh-casca="google"] .fin-folha .panel-body > .row:first-child{ border-top:none; }
html[data-oh-casca="google"] .fin-folha .panel-body > .row:hover{ background:color-mix(in srgb,var(--blue) 3%,transparent); }
/* tabelas: sem moldura, só a linha de base (idem Pacientes) */
html[data-oh-casca="google"] .fin-folha table:not(.fd-tab){ border-collapse:collapse; width:100%; }
html[data-oh-casca="google"] .fin-folha table:not(.fd-tab) th{ border-bottom:1px solid var(--line); background:transparent!important; }
html[data-oh-casca="google"] .fin-folha table:not(.fd-tab) td{ border-bottom:1px solid var(--line); }
html[data-oh-casca="google"] .fin-folha table:not(.fd-tab) tr:last-child td{ border-bottom:none; }
/* as sub-guias respiram como a linha de guias de Pacientes */
html[data-oh-casca="google"] .fin-folha .finsub-guias{ margin-bottom:14px; }

/* ⚠ EXCEÇÃO — FOLHA DO DIA: o caderno do dia mantém o desenho dele.
   Estas regras DESFAZEM a folha corrida dentro de .folha-dia. */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .folha-dia.panel,
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .panel:has(.fd-tab){ border:1px solid var(--line)!important; border-radius:var(--radius,12px)!important; box-shadow:var(--shadow,0 1px 3px rgba(19,41,75,.08))!important; background:var(--surface)!important; }
html[data-oh-casca="google"] .fin-folha .folha-dia .panel-head{ border-bottom:1px solid var(--line)!important; }
html[data-oh-casca="google"] .fin-folha .folha-dia + .panel::before,
html[data-oh-casca="google"] .fin-folha .panel + .folha-dia::before{ display:none!important; }
html[data-oh-casca="google"] .fin-folha .fd-tab th{ border-bottom:1px solid var(--line)!important; }
html[data-oh-casca="google"] .fin-folha .fd-tab td{ border-bottom:1px solid var(--line)!important; }


/* ════════════════════════════════════════════════════════════
   39) 1521 — O MIX DA VISÃO GERAL (prévia 15, tela 2)
   Card colorido (navega) + linha com pastilha (resolve) + folha corrida (lê).
   TUDO escopado em .fin-folha: nenhuma outra tela do app vê estas regras.
   ════════════════════════════════════════════════════════════ */
/* 1) os cards coloridos — mesmo desenho dos tiles da Início */
html[data-oh-casca="google"] .fin-folha .fin-tiles{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:18px; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .fin-tile{ background:var(--surface)!important; border:1px solid var(--line)!important; border-radius:16px!important; padding:0; overflow:hidden; cursor:pointer; transition:.12s; min-width:0; }
html[data-oh-casca="google"] .fin-folha .fin-tile:hover{ border-color:var(--blue-line)!important; }
html[data-oh-casca="google"] .fin-folha .fin-tile .cap{ height:72px; display:flex; align-items:center; gap:12px; padding:0 16px; }
html[data-oh-casca="google"] .fin-folha .fin-tile .ic{ width:40px; height:40px; border-radius:12px; display:grid; place-items:center; color:#fff; flex:none; }
html[data-oh-casca="google"] .fin-folha .fin-tile .ic svg{ width:22px; height:22px; }
html[data-oh-casca="google"] .fin-folha .fin-tile .big{ font-size:24px; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .fin-folha .fin-tile .foot{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:11px 16px; border-top:1px solid var(--line); }
html[data-oh-casca="google"] .fin-folha .fin-tile .t{ font-size:13px; font-weight:700; color:var(--ink); }
html[data-oh-casca="google"] .fin-folha .fin-tile .s{ font-size:11.5px; color:var(--muted); margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .fin-folha .fin-tile .go{ width:26px; height:26px; border-radius:50%; background:var(--blue-soft); color:var(--blue-700); display:grid; place-items:center; flex:none; }
html[data-oh-casca="google"] .fin-folha .fin-tile .go svg{ width:15px; height:15px; }
html[data-oh-casca="google"] .fin-folha .fin-tile.green .cap{ background:color-mix(in srgb,var(--green) 10%,var(--surface)); } html[data-oh-casca="google"] .fin-folha .fin-tile.green .ic{ background:var(--green); } html[data-oh-casca="google"] .fin-folha .fin-tile.green .big{ color:var(--green); }
html[data-oh-casca="google"] .fin-folha .fin-tile.amber .cap{ background:color-mix(in srgb,var(--amber) 12%,var(--surface)); } html[data-oh-casca="google"] .fin-folha .fin-tile.amber .ic{ background:var(--amber); } html[data-oh-casca="google"] .fin-folha .fin-tile.amber .big{ color:var(--amber); }
html[data-oh-casca="google"] .fin-folha .fin-tile.red .cap{ background:color-mix(in srgb,var(--red) 10%,var(--surface)); } html[data-oh-casca="google"] .fin-folha .fin-tile.red .ic{ background:var(--red); } html[data-oh-casca="google"] .fin-folha .fin-tile.red .big{ color:var(--red); }
html[data-oh-casca="google"] .fin-folha .fin-tile.purple .cap{ background:color-mix(in srgb,var(--purple) 10%,var(--surface)); } html[data-oh-casca="google"] .fin-folha .fin-tile.purple .ic{ background:var(--purple); } html[data-oh-casca="google"] .fin-folha .fin-tile.purple .big{ color:var(--purple); }
html[data-oh-casca="google"] .fin-folha .fin-tile.blue .cap{ background:color-mix(in srgb,var(--blue) 10%,var(--surface)); } html[data-oh-casca="google"] .fin-folha .fin-tile.blue .ic{ background:var(--blue); } html[data-oh-casca="google"] .fin-folha .fin-tile.blue .big{ color:var(--blue-700); }
/* 2) a lista de pendências — ícone + rótulo + pastilha */
html[data-oh-casca="google"] .fin-folha .fin-pend .panel-body{ padding:2px 0 4px; }
html[data-oh-casca="google"] .fin-folha .fin-pend-row{ display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:12px; cursor:pointer; transition:.12s; border-top:none!important; }
html[data-oh-casca="google"] .fin-folha .fin-pend-row:hover{ background:color-mix(in srgb,var(--blue) 7%,transparent); }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-ic{ width:32px; height:32px; border-radius:9px; display:grid; place-items:center; flex:none; }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-ic svg{ width:17px; height:17px; }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-tx{ flex:1; min-width:0; display:block; }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-tx .l{ display:block; font-size:13.5px; font-weight:600; color:var(--ink); }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-tx .s{ display:block; font-size:11.5px; color:var(--muted); }
html[data-oh-casca="google"] .fin-folha .fin-pend-row .fp-pill{ font-size:12.5px; font-weight:800; padding:3px 11px; border-radius:20px; font-variant-numeric:tabular-nums; flex:none; }
html[data-oh-casca="google"] .fin-folha .fin-pend .fp-red{ background:var(--red-soft); color:var(--red); }
html[data-oh-casca="google"] .fin-folha .fin-pend .fp-amber{ background:var(--amber-soft); color:var(--amber); }
html[data-oh-casca="google"] .fin-folha .fin-pend .fp-blue{ background:var(--blue-soft); color:var(--blue-700); }
html[data-oh-casca="google"] .fin-folha .fin-pend .fp-purple{ background:var(--purple-soft); color:var(--purple); }
html[data-oh-casca="google"] .fin-folha .fin-pend-ok{ display:flex; align-items:center; gap:9px; padding:10px 12px; font-size:13px; color:var(--green); font-weight:600; }
html[data-oh-casca="google"] .fin-folha .fin-pend-ok svg{ width:17px; height:17px; flex:none; }
/* 3) celular: os cards em duas colunas, com o número menor para não cortar */
@media(max-width:880px){
  html[data-oh-casca="google"] .fin-folha .fin-tiles{ grid-template-columns:1fr 1fr; gap:10px; }
  html[data-oh-casca="google"] .fin-folha .fin-tile .cap{ height:62px; gap:9px; padding:0 12px; }
  html[data-oh-casca="google"] .fin-folha .fin-tile .ic{ width:34px; height:34px; border-radius:10px; }
  html[data-oh-casca="google"] .fin-folha .fin-tile .ic svg{ width:19px; height:19px; }
  html[data-oh-casca="google"] .fin-folha .fin-tile .big{ font-size:16.5px; }
  html[data-oh-casca="google"] .fin-folha .fin-tile .foot{ padding:9px 12px; }
  html[data-oh-casca="google"] .fin-folha .fin-pend-row{ padding:10px 6px; }
}


/* ════════════════════════════════════════════════════════════
   40) 1522 — SOLICITAÇÃO DE EXAMES: o catálogo dentro da janela
   Mesmo idioma da ficha em folha corrida (print do dono): título de
   grupo pequeno em maiúsculas com ícone, linha fina embaixo, e os
   exames como CHIPS que acendem ao escolher. Sem caixa dentro de caixa.
   ════════════════════════════════════════════════════════════ */
.exm-bar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 12px; margin:2px 0 12px; background:var(--blue-soft); border:1px solid var(--blue-line); border-radius:12px; }
.exm-bar-t{ font-size:12px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; color:var(--blue-700); }
.exm-bar-n{ font-size:12.5px; color:var(--ink-2); font-weight:600; margin-right:auto; }
.exm-cat{ max-height:340px; overflow-y:auto; padding-right:4px; margin-bottom:14px; }
.exm-grupo + .exm-grupo{ margin-top:16px; }
.exm-grupo-tit{ display:flex; align-items:center; gap:7px; font-size:11.5px; font-weight:800; letter-spacing:.6px; text-transform:uppercase; color:var(--muted); padding-bottom:5px; border-bottom:1px solid var(--line); margin-bottom:9px; }
.exm-grupo-tit svg{ width:14px; height:14px; flex:none; color:var(--blue); }
.exm-chips{ display:flex; flex-wrap:wrap; gap:7px; }
.exm-chip{ font:inherit; font-size:12.5px; font-weight:600; color:var(--ink-2); background:var(--surface); border:1px solid var(--line); border-radius:20px; padding:6px 13px; cursor:pointer; transition:.12s; text-align:left; }
.exm-chip:hover{ border-color:var(--blue-line); background:var(--blue-soft); color:var(--blue-700); }
.exm-chip.on{ background:var(--blue); border-color:var(--blue); color:#fff; font-weight:700; padding-left:28px; position:relative; }
.exm-chip.on::before{ content:"\2713"; position:absolute; left:11px; top:50%; transform:translateY(-50%); font-weight:900; font-size:12px; }
.exm-lei{ margin-top:4px; font-size:11.5px; line-height:1.55; color:var(--muted); background:var(--amber-soft); border-left:3px solid var(--amber); border-radius:0 10px 10px 0; padding:10px 13px; }
.exm-lei b{ color:var(--amber); }
@media(max-width:720px){ .exm-cat{ max-height:none; } .exm-chip{ font-size:12px; padding:6px 11px; } }


/* ════════════════════════════════════════════════════════════
   41) 1523 — O MIX NO FINANCEIRO INTEIRO (pedido do dono: "todo o
   financeiro com exceção da Folha do dia").
   TODOS os indicadores .grid.stats dentro de .fin-folha vestem o card
   colorido da Início (cap com número em faixa de cor + rodapé branco) —
   o mesmo desenho dos .fin-tiles da Visão geral (seção 39). Vale para o
   clicável E para o informativo; a diferença é que só o clicável ganha
   o botão › e o cursor. A Folha do dia nem tem .stat — segue intocada
   pela exceção da seção 38.
   ════════════════════════════════════════════════════════════ */
html[data-oh-casca="google"] .fin-folha .grid.stats{ gap:12px!important; margin-bottom:18px; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat{ display:flex; flex-direction:column; padding:0!important; border:1px solid var(--line)!important; border-radius:16px!important; box-shadow:none!important; background:var(--surface)!important; overflow:hidden; position:relative; min-width:0; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat::before{ display:none!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .val{ order:-1; display:flex; align-items:center; min-height:58px; padding:0 16px!important; font-size:22px!important; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .lbl{ order:1; padding:9px 16px 1px!important; border-top:1px solid var(--line)!important; font-size:12.5px!important; font-weight:700; color:var(--ink)!important; text-transform:none; letter-spacing:0; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .lbl:last-child{ padding-bottom:10px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .sub{ order:2; padding:1px 16px 10px!important; font-size:11.5px; color:var(--muted); }
/* as caixas de cor do cap — mesmas receitas dos .fin-tile (seção 39) */
html[data-oh-casca="google"] .fin-folha .stat.accent-blue .val{ background:color-mix(in srgb,var(--blue) 10%,var(--surface)); color:var(--blue-700); }
html[data-oh-casca="google"] .fin-folha .stat.accent-green .val{ background:color-mix(in srgb,var(--green) 10%,var(--surface)); color:var(--green); }
html[data-oh-casca="google"] .fin-folha .stat.accent-amber .val{ background:color-mix(in srgb,var(--amber) 12%,var(--surface)); color:var(--amber); }
html[data-oh-casca="google"] .fin-folha .stat.accent-red .val{ background:color-mix(in srgb,var(--red) 10%,var(--surface)); color:var(--red); }
html[data-oh-casca="google"] .fin-folha .stat.accent-purple .val{ background:color-mix(in srgb,var(--purple) 10%,var(--surface)); color:var(--purple); }
/* sem accent: cap neutro, para nenhum indicador ficar sem faixa */
html[data-oh-casca="google"] .fin-folha .stat:not([class*="accent-"]) .val{ background:color-mix(in srgb,var(--ink) 5%,var(--surface)); }
/* só o CLICÁVEL ganha o botão › e o convite do cursor */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable{ cursor:pointer; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable .lbl{ padding-right:48px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable .sub{ padding-right:48px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable::after{ content:"›"; position:absolute; right:12px; bottom:9px; top:auto; left:auto; width:26px; height:26px; border-radius:50%; background:var(--blue-soft); color:var(--blue-700); display:grid; place-items:center; font-weight:800; font-size:15px; line-height:1; opacity:1; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable:hover{ border-color:var(--blue-line)!important; transform:none!important; box-shadow:none!important; }
html[data-oh-casca="google"] .fin-folha .stat.clickable:hover::after{ background:var(--blue); color:#fff; }
/* celular: o número encolhe para não cortar (o .grid.stats já quebra sozinho) */
@media(max-width:880px){
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .val{ min-height:50px; font-size:17px!important; padding:0 12px!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .lbl{ padding:8px 12px 1px!important; font-size:12px!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .sub{ padding:1px 12px 9px!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable .lbl, html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable .sub{ padding-right:42px!important; }
  html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable::after{ right:9px; bottom:8px; width:23px; height:23px; font-size:13px; }
}

/* ════════════════════════════════════════════════════════════
   42) 1525 — FILTRO DE ESPECIALIDADES EM CHIPS (fim das sub-abas
   dinâmicas que cresciam sozinhas). Mesmo traje de chip do resto
   do app (contorno fino; ativo azul-suave). Escopado em .fin-folha.
   ════════════════════════════════════════════════════════════ */
.esp-chips{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:16px; }
.esp-chips>button{ font-family:inherit; font-size:12.5px; font-weight:600; color:var(--ink-2); background:var(--surface); border:1px solid var(--line); border-radius:20px; padding:6px 14px; cursor:pointer; transition:.13s; }
.esp-chips>button:hover:not(.on){ background:color-mix(in srgb,var(--ink) 5%,var(--surface)); }
.esp-chips>button.on{ background:var(--blue-soft); border-color:var(--blue-line); color:var(--blue-700); font-weight:700; }


/* 43) 1527 — os chips de especialidade dentro da ficha do paciente (o mesmo
   componente .esp-chips da 15.25). Linha própria abaixo dos filtros. O antigo
   .tf-esp (select) foi aposentado. */
.esp-chips-ficha{ margin:2px 0 14px; padding:0 2px; }


/* 44) 1528 — as RÉGUAS divisórias da folha corrida passam a ocupar METADE da
   largura (pedido do dono): a linha entre blocos fica mais leve e respira,
   em vez de cortar a tela de ponta a ponta. Alinhada à esquerda, no gutter. */
html[data-oh-casca="google"] .fin-folha .panel + .panel::before,
html[data-oh-casca="google"] .fin-folha .grid.stats + .panel::before,
html[data-oh-casca="google"] .fin-folha .panel-body > .row + .row::before{ width:50%; margin-right:0!important; }


/* ════════════════════════════════════════════════════════════
   45) 1529 — O CARD COLORIDO (cap + rodapé) FORA DO FINANCEIRO
   (prévia 20 aprovada: "Vamos adiante!"). Os indicadores informativos
   (.stat SEM .clickable) de Próteses, Estoque, Retorno, Faltosos,
   Histórico, Indicações e Análises passam a vestir o MESMO cap colorido
   + rodapé do Financeiro — no lugar do filete lateral. Os clicáveis já
   tinham (seção 34); o Financeiro tem o seu (seção 41, mais específico,
   vence). Sem a seta › (não navegam). Semáforo da 15.26 preservado.
   ════════════════════════════════════════════════════════════ */
html[data-oh-casca="google"] .stat:not(.clickable){ display:flex; flex-direction:column; padding:0!important; border:1px solid var(--line); border-radius:16px; overflow:hidden; background:var(--surface)!important; position:relative; min-width:0; box-shadow:none; }
html[data-oh-casca="google"] .stat:not(.clickable)::before{ display:none!important; }
html[data-oh-casca="google"] .stat:not(.clickable) .val{ order:-1; display:flex; align-items:center; min-height:56px; padding:0 15px!important; font-size:21px!important; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-oh-casca="google"] .stat:not(.clickable) .lbl{ order:1; padding:9px 15px 1px!important; border-top:1px solid var(--line); font-size:12.5px!important; font-weight:700; color:var(--ink)!important; text-transform:none!important; letter-spacing:0!important; }
html[data-oh-casca="google"] .stat:not(.clickable) .lbl:last-child{ padding-bottom:10px!important; }
html[data-oh-casca="google"] .stat:not(.clickable) .sub{ order:2; padding:1px 15px 10px!important; font-size:11px; color:var(--muted); margin-top:0; }
/* as cores do cap — o semáforo da 15.26 */
html[data-oh-casca="google"] .stat:not(.clickable).accent-blue .val{ background:color-mix(in srgb,var(--blue) 10%,var(--surface)); color:var(--blue-700); }
html[data-oh-casca="google"] .stat:not(.clickable).accent-green .val{ background:color-mix(in srgb,var(--green) 10%,var(--surface)); color:var(--green); }
html[data-oh-casca="google"] .stat:not(.clickable).accent-amber .val{ background:color-mix(in srgb,var(--amber) 12%,var(--surface)); color:var(--amber); }
html[data-oh-casca="google"] .stat:not(.clickable).accent-red .val{ background:color-mix(in srgb,var(--red) 10%,var(--surface)); color:var(--red); }
html[data-oh-casca="google"] .stat:not(.clickable).accent-purple .val{ background:color-mix(in srgb,var(--purple) 10%,var(--surface)); color:var(--purple); }
/* sem accent = cap neutro (nenhum indicador fica pelado) */
html[data-oh-casca="google"] .stat:not(.clickable):not([class*="accent-"]) .val{ background:color-mix(in srgb,var(--ink) 5%,var(--surface)); color:var(--ink); }
/* celular: o número encolhe pra não cortar */
@media(max-width:880px){
  html[data-oh-casca="google"] .stat:not(.clickable) .val{ min-height:48px; font-size:17px!important; padding:0 12px!important; }
  html[data-oh-casca="google"] .stat:not(.clickable) .lbl{ padding:8px 12px 1px!important; font-size:12px!important; }
  html[data-oh-casca="google"] .stat:not(.clickable) .sub{ padding:1px 12px 9px!important; }
}


/* ════════════════════════════════════════════════════════════
   46) 1532 — INDICADORES MAIS COMPACTOS (pedido do dono, print 01):
   "são apenas indicadores" — devem comer menos espaço. Reduz a altura
   do cap, os paddings e as fontes dos cards de indicador NO APP INTEIRO
   (cap/rodapé do Financeiro e da Gestão/Próteses) e das faixas da Régua
   de relacionamento. Só refino de altura; cor, semáforo e conteúdo intactos.
   No celular a régua já era compacta — mexemos só no desktop.
   ════════════════════════════════════════════════════════════ */
/* cap/rodapé — Financeiro (41), Gestão/Próteses informativo (45) e clicável (34) */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .val,
html[data-oh-casca="google"] .stat:not(.clickable) .val,
html[data-oh-casca="google"] .stat.clickable .val{ min-height:42px!important; font-size:18px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .lbl,
html[data-oh-casca="google"] .stat:not(.clickable) .lbl,
html[data-oh-casca="google"] .stat.clickable .lbl{ padding-top:7px!important; padding-bottom:0!important; font-size:12px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .lbl:last-child,
html[data-oh-casca="google"] .stat:not(.clickable) .lbl:last-child,
html[data-oh-casca="google"] .stat.clickable .lbl:last-child{ padding-bottom:8px!important; }
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat .sub,
html[data-oh-casca="google"] .stat:not(.clickable) .sub,
html[data-oh-casca="google"] .stat.clickable .sub{ padding-top:0!important; padding-bottom:8px!important; }
/* a seta › do clicável acompanha a nova altura */
html[data-oh-casca="google"] .stat.clickable::after,
html[data-oh-casca="google"][data-oh-casca][data-oh-casca] .fin-folha .stat.clickable::after{ bottom:7px!important; width:23px!important; height:23px!important; font-size:13px!important; }
/* faixas da Régua de relacionamento (Retornos) */
.regua-faixa{ padding:8px 11px!important; gap:3px!important; border-radius:11px!important; }
.regua-faixa .rf-nome{ font-size:13px!important; }
.regua-faixa .rf-n{ font-size:16px!important; }
.regua-faixa .rf-sub{ font-size:10.5px!important; }
.regua-faixa .rf-bar{ height:4px!important; margin-top:1px!important; }


/* 47) 1533 — PACIENTE RÁPIDO: o selo âmbar "cadastro incompleto" na ficha
   (clicável, abre o cadastro completo) e a opção "Cadastrar rápido" no
   dropdown de busca do agendamento. */
.fh-incompleto{ display:inline-flex; align-items:center; font-family:inherit; font-size:11px; font-weight:800; letter-spacing:.2px; text-transform:uppercase; color:var(--amber); background:var(--amber-soft); border:1px solid color-mix(in srgb,var(--amber) 35%,var(--line)); border-radius:20px; padding:2px 10px; margin-left:9px; cursor:pointer; vertical-align:middle; transition:.12s; }
.fh-incompleto:hover{ background:color-mix(in srgb,var(--amber) 20%,var(--surface)); }
._pdrop._pnew{ border-bottom:none!important; }


/* 48) 1534 — MENU NO SLOT DA AGENDA (ideia do dono): Consulta · Urgência ·
   Tarefa · Pré-cadastro, ancorado no ponto do clique. */
.ag-slotmenu{ position:fixed; z-index:400; min-width:236px; max-width:min(280px,90vw); background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:0 18px 50px rgba(19,41,75,.22); padding:6px; animation:agSmPop .13s ease; }
[data-theme="dark"] .ag-slotmenu{ box-shadow:0 18px 50px rgba(0,0,0,.6); }
@keyframes agSmPop{ from{ opacity:0; transform:translateY(-6px);} to{ opacity:1; transform:translateY(0);} }
.ag-slotmenu .ag-sm-h{ font-size:11.5px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; color:var(--muted); padding:8px 11px 6px; }
.ag-slotmenu .ag-sm-item{ display:flex; align-items:center; gap:11px; width:100%; text-align:left; border:none; background:none; font-family:inherit; padding:9px 11px; border-radius:10px; cursor:pointer; transition:.11s; }
.ag-slotmenu .ag-sm-item:hover{ background:color-mix(in srgb,var(--blue) 7%,transparent); }
.ag-slotmenu .ag-sm-ic{ width:20px; height:20px; flex:none; color:var(--ink-2); }
.ag-slotmenu .ag-sm-ic svg{ width:20px; height:20px; }
.ag-slotmenu .ag-sm-tx{ display:flex; flex-direction:column; min-width:0; }
.ag-slotmenu .ag-sm-tx b{ font-size:13.5px; font-weight:700; color:var(--ink); line-height:1.2; }
.ag-slotmenu .ag-sm-tx i{ font-size:11px; color:var(--muted); font-style:normal; }
.ag-slotmenu .ag-sm-sep{ height:1px; background:var(--line); margin:5px 8px; }


/* 49) 1535 — PRÓTESES EM KANBAN (prévia 21). Colunas por etapa, cards
   arrastáveis, semáforo na peça atrasada. */
.pt-kanban{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; align-items:start; }
@media(max-width:880px){ .pt-kanban{ grid-template-columns:1fr 1fr; } }
.pt-col{ background:color-mix(in srgb,var(--ink) 3%,var(--bg)); border:1px solid var(--line); border-radius:14px; padding:10px; min-height:120px; transition:.12s; }
.pt-col.over{ border-color:var(--blue-line); background:var(--blue-soft); }
.pt-col-h{ display:flex; align-items:center; gap:8px; padding:2px 4px 10px; font-weight:800; font-size:13px; }
.pt-col-h .pt-dot{ width:9px; height:9px; border-radius:50%; flex:none; }
.pt-col-h .pt-n{ margin-left:auto; font-size:12px; font-weight:800; background:var(--surface); border:1px solid var(--line); border-radius:20px; padding:1px 9px; color:var(--muted); }
.pt-card{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:11px 12px; margin-bottom:9px; cursor:grab; box-shadow:0 1px 2px rgba(19,41,75,.05); }
.pt-card:last-child{ margin-bottom:0; }
.pt-card:active{ cursor:grabbing; }
.pt-card.drag{ opacity:.5; }
.pt-card.atras{ border-color:color-mix(in srgb,var(--red) 40%,var(--line)); }
.pt-card .pt-top{ display:flex; align-items:center; gap:8px; }
.pt-card .pt-av{ width:28px; height:28px; border-radius:50%; background:var(--blue-soft); color:var(--blue-700); display:grid; place-items:center; font-size:11px; font-weight:800; flex:none; }
.pt-card .pt-nome{ font-weight:700; font-size:13px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pt-card .pt-peca{ font-size:12px; color:var(--ink-2); margin:6px 0 2px; }
.pt-card .pt-meta{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:6px; }
.pt-card .pt-prev{ font-size:10.5px; color:var(--muted); font-weight:600; }
.pt-card .chip{ font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:11px; }
.pt-card .ch-lab{ background:var(--blue-soft); color:var(--blue-700); }
.pt-card .ch-amber{ background:var(--amber-soft); color:var(--amber); }
.pt-card .ch-green{ background:var(--green-soft); color:var(--green); }
.pt-card .ch-red{ background:var(--red-soft); color:var(--red); }
.pt-card .ch-gray{ background:#EDF1F7; color:var(--muted); }
.pt-vazio{ text-align:center; color:var(--muted); font-size:12px; padding:14px 0; }

/* 50) 1540 — MODO TURNO (ordem de chegada). A vista de Cadeira sem a régua de
   horas: mesmas colunas (salas) + "Fila geral", miolo vira fila de chegada.
   Só desktop desenha em colunas; no celular empilha e rola. */
.agt-wrap{ display:flex; flex-direction:column; gap:12px; }
.agt-picker{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.agt-tbtn{ border:1px solid var(--line); background:var(--surface); color:var(--ink-2); border-radius:11px; padding:7px 15px; font-family:inherit; font-weight:800; font-size:13px; cursor:pointer; transition:.12s; }
.agt-tbtn:hover{ border-color:var(--blue-line); color:var(--blue-700); }
.agt-tbtn.on{ background:var(--blue); border-color:var(--blue); color:#fff; box-shadow:0 2px 8px rgba(31,115,224,.28); }
.agt-hint{ font-size:12px; color:var(--muted); margin-left:4px; }
.agt-cols{ display:grid; gap:12px; align-items:start; overflow-x:auto; padding-bottom:6px; }
.agt-col{ background:var(--surface); border:1px solid var(--line); border-radius:14px; overflow:hidden; display:flex; flex-direction:column; min-width:0; }
.agt-col.geral{ border-style:dashed; background:color-mix(in srgb,var(--blue) 3%,var(--surface)); }
.agt-col.over{ outline:2px solid var(--blue); outline-offset:-2px; background:var(--blue-soft); }
.agt-head{ padding:9px 11px; border-bottom:1px solid var(--line); }
.agt-cn{ font-weight:800; font-size:13.5px; color:var(--ink); }
.agt-cd{ font-size:11.5px; font-weight:700; display:flex; align-items:center; gap:5px; margin-top:2px; }
.agt-dot{ width:8px; height:8px; border-radius:50%; display:inline-block; flex:none; }
.agt-n{ display:inline-block; margin-top:6px; font-size:10.5px; font-weight:800; color:var(--muted); background:var(--gray-soft,#EEF2F7); border-radius:20px; padding:2px 9px; }
.agt-body{ padding:9px; display:flex; flex-direction:column; gap:8px; min-height:140px; }
.agt-vazio{ text-align:center; color:var(--muted); font-size:12px; padding:16px 6px; border:1px dashed var(--line); border-radius:9px; }
.agt-card{ border:1px solid var(--line); border-radius:11px; padding:8px 9px; background:var(--surface); cursor:pointer; transition:.12s; }
.agt-card:hover{ box-shadow:0 3px 10px rgba(19,41,75,.10); }
.agt-card.drag{ opacity:.5; }
.agt-card.atend{ box-shadow:inset 3px 0 0 #2563EB; }
.agt-card.pronto{ box-shadow:inset 3px 0 0 #15803D; }
.agt-card.fila{ box-shadow:inset 3px 0 0 #C2840F; }
.agt-card.falt{ opacity:.7; box-shadow:inset 3px 0 0 #D64545; }
.agt-card.aguard{ opacity:.72; border-style:dashed; }
.agt-row{ display:flex; align-items:center; gap:8px; min-width:0; }
.agt-senha{ width:26px; height:26px; border-radius:8px; display:grid; place-items:center; font-weight:800; font-size:13px; flex:none; color:#fff; }
.agt-nome{ font-weight:700; font-size:13px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.agt-sub{ font-size:11px; color:var(--muted); margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.agt-chips{ display:flex; gap:5px; flex-wrap:wrap; margin-top:6px; }
.agt-chips .chip{ font-size:10.5px; font-weight:700; border-radius:20px; padding:2px 8px; display:inline-flex; align-items:center; gap:4px; }
.agt-chips .c-gray{ background:var(--gray-soft,#EEF2F7); color:var(--muted); }
.agt-chips .c-amber{ background:#FBF1DC; color:#C2840F; border:1px solid #EFDCA8; }
.agt-chips .c-blue{ background:var(--blue-soft); color:var(--blue-700); }
.agt-chips .c-green{ background:var(--green-soft); color:var(--green-700,#0B8163); border:1px solid #BEE9DC; }
.agt-chips .c-red{ background:#FCE9E9; color:#D64545; }
/* 1576 — Fluxo (Kanban) por Horário Marcado com o visual dos quadros */
.agt-cico{ width:26px; height:26px; border-radius:8px; display:grid; place-items:center; flex:none; }
.agt-cico svg{ width:15px; height:15px; }
.agt-cnt{ font-size:10.5px; font-weight:800; border-radius:20px; padding:2px 9px; }
.agt-hora{ min-width:44px; height:30px; padding:0 8px; border-radius:9px; display:grid; place-items:center; font-weight:800; font-size:12.5px; flex:none; color:#fff; letter-spacing:.2px; line-height:1; }
.agt-dotp{ width:7px; height:7px; border-radius:50%; display:inline-block; }
.agt-chips .c-prof{ background:color-mix(in srgb,var(--blue) 8%,var(--surface)); color:var(--blue-700); border:1px solid var(--blue-line); }
.agt-chips .c-proc{ background:var(--gray-soft,#EEF2F7); color:var(--ink-2); border:1px solid var(--line); }
.agt-card.kb-card2.aguard{ opacity:.85; }
.agt-body.kb-over{ outline:2px dashed var(--blue); outline-offset:-4px; border-radius:9px; }
@media(max-width:880px){ .agt-cols{ grid-template-columns:1fr !important; } }

/* 51) 1543 — NOTIFICAÇÃO DE ERRO REFINADA. Cartão de vidro discreto no canto
   inferior direito: contexto + linha curta + "Ver detalhes" (Diagnóstico).
   Não bloqueia, some sozinho, empilha no máximo 3. Amarelo = recuperável,
   vermelho = erro do app. */
.oh-errnotif-wrap{ position:fixed; right:18px; bottom:18px; z-index:90; display:flex; flex-direction:column; gap:9px; max-width:360px; width:calc(100vw - 36px); pointer-events:none; }
.oh-errnotif{ pointer-events:auto; display:flex; align-items:flex-start; gap:11px; background:#FFFFFF; border:1px solid var(--line); border-left:4px solid var(--muted); border-radius:14px; padding:12px 12px 12px 13px; box-shadow:0 14px 34px -14px rgba(19,41,75,.42); transform:translateY(10px); opacity:0; transition:opacity .2s ease, transform .2s ease; }
.oh-errnotif.show{ transform:translateY(0); opacity:1; }
.oh-errnotif.recup{ border-left-color:#E8920C; }
.oh-errnotif.erro{ border-left-color:#E24B4A; }
.oh-errnotif-ico{ width:30px; height:30px; border-radius:9px; display:grid; place-items:center; font-size:15px; flex:none; }
.oh-errnotif.recup .oh-errnotif-ico{ background:#FBF1DC; }
.oh-errnotif.erro .oh-errnotif-ico{ background:#FCE9E9; }
.oh-errnotif-txt{ min-width:0; flex:1; }
.oh-errnotif-t{ font-weight:800; font-size:13px; color:var(--ink); line-height:1.25; }
.oh-errnotif-s{ font-size:12px; color:var(--ink-2); line-height:1.4; margin-top:2px; word-break:break-word; }
.oh-errnotif-det{ background:transparent; border:0; padding:0; color:var(--blue-700); font-family:inherit; font-weight:800; font-size:12px; cursor:pointer; }
.oh-errnotif-det:hover{ text-decoration:underline; }
/* 1572 — linha de ações do card (botão "Tentar agora" + "Ver detalhes"). */
.oh-errnotif-acts{ display:flex; align-items:center; gap:12px; margin-top:8px; }
.oh-errnotif-acao{ background:var(--blue); border:0; color:#fff; font-family:inherit; font-weight:800; font-size:12px; padding:5px 12px; border-radius:8px; cursor:pointer; transition:filter .15s; }
.oh-errnotif-acao:hover{ filter:brightness(1.06); }
.oh-errnotif-x{ background:transparent; border:0; color:var(--muted); font-size:19px; line-height:1; cursor:pointer; padding:0 2px; flex:none; }
.oh-errnotif-x:hover{ color:var(--ink); }
[data-theme="dark"] .oh-errnotif{ background:#111E36; border-color:#2E3D5C; }
[data-theme="dark"] .oh-errnotif-t{ color:#EAF1FA; }
[data-theme="dark"] .oh-errnotif-s{ color:#B9C6DC; }
@media(max-width:560px){ .oh-errnotif-wrap{ right:10px; left:10px; bottom:calc(10px + env(safe-area-inset-bottom,0px)); width:auto; max-width:none; } }

/* 52) 1545 — CHOOSER de Nova consulta: Horário agendado × Ordem de chegada. */
.nc-escolha{ display:flex; flex-direction:column; gap:11px; }
.nc-opt{ display:flex; align-items:flex-start; gap:13px; text-align:left; background:var(--surface); border:1.5px solid var(--line); border-radius:14px; padding:15px 16px; cursor:pointer; font-family:inherit; transition:.13s; width:100%; }
.nc-opt:hover{ border-color:var(--blue-line); box-shadow:0 4px 14px -8px rgba(19,41,75,.35); transform:translateY(-1px); }
.nc-opt-ic{ width:44px; height:44px; border-radius:12px; display:grid; place-items:center; flex:none; }
.nc-opt-tx{ min-width:0; display:flex; flex-direction:column; gap:3px; }
.nc-opt-tx>b{ font-size:14.5px; color:var(--ink); font-weight:800; }
.nc-opt-tx>span{ font-size:12.5px; color:var(--ink-2); line-height:1.45; }

/* 53) 1550 — ENCAIXE/URGÊNCIA: mais contraste no aviso e no seletor de forma
   (Horário × Ordem de chegada), legível no claro e no escuro. */
.eq-aviso{ display:flex; align-items:flex-start; gap:9px; background:color-mix(in srgb,#E0559B 9%,var(--surface)); border:1px solid color-mix(in srgb,#E0559B 30%,var(--line)); border-radius:11px; padding:11px 14px; margin-bottom:16px; font-size:13px; font-weight:700; color:var(--ink); line-height:1.45; }
.eq-aviso svg{ color:#E0559B; flex-shrink:0; }
.eq-forma{ background:transparent !important; padding:0 !important; border-radius:0 !important; }
.eq-forma button{ flex:1; border:1.5px solid var(--line); background:var(--surface); border-radius:10px; padding:10px; font-family:inherit; font-weight:800; font-size:13px; color:var(--ink-2); cursor:pointer; transition:.12s; box-shadow:none; }
.eq-forma button:hover{ border-color:var(--blue-line); color:var(--blue-700); }
.eq-forma button.on{ border-color:var(--blue); background:var(--blue-soft); color:var(--blue-700); }
.eq-atend{ background:color-mix(in srgb,var(--green,#0FA47A) 8%,transparent); border:1px solid color-mix(in srgb,var(--green,#0FA47A) 22%,transparent); border-radius:11px; padding:11px 13px !important; margin-top:6px; }

/* 54–60) ⚰️ 1577 — EXPURGO DA ORDEM DE CHEGADA: prioridade da fila, interruptor
   "dois mundos" (.ag-mundo), chips de turno/cadeira, Semana de turnos (.asem-*)
   e Fichas por turno (.fic-*) foram removidos junto com o recurso. */

/* 61) 1561 — tela de boas-vindas do primeiro uso (Personalização rápida). */
.pz-hero{ text-align:center; padding:6px 6px 4px; }
.pz-hero-logo{ font-size:22px; font-weight:800; letter-spacing:-.5px; color:var(--blue-700); margin-bottom:6px; }
.pz-hero-logo b{ color:var(--ink); }
.pz-hero-emoji{ font-size:46px; line-height:1; margin:6px 0 10px; animation:pzwave 2.4s ease-in-out infinite; transform-origin:70% 80%; }
@keyframes pzwave{ 0%,60%,100%{ transform:rotate(0) } 10%{ transform:rotate(14deg) } 20%{ transform:rotate(-8deg) } 30%{ transform:rotate(14deg) } 40%{ transform:rotate(-4deg) } 50%{ transform:rotate(10deg) } }
.pz-hero-tit{ font-size:20px; font-weight:800; color:var(--ink); margin-bottom:8px; }
.pz-hero-sub{ font-size:13.5px; color:var(--ink-2); line-height:1.6; max-width:400px; margin:0 auto 14px; }
.pz-hero-chips{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.pz-hero-chips span{ font-size:12px; font-weight:700; color:var(--blue-700); background:var(--blue-soft); border:1px solid var(--blue-line); border-radius:99px; padding:6px 12px; }

/* 62) 1566 — no modo compacto, consulta de ≤30 min deixa o nome usar duas
   linhas (e o card esconde o horário, que ficava espremido). */
.gw-card-nome-2l{ white-space:normal !important; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; text-overflow:ellipsis; line-height:1.16; font-size:11px; }

/* ═══ 1581 — FINANCEIRO NOVO · Fluxo de caixa (estilo Simples Dental) ═══ */
.flx-wrap{ padding:2px; }
.flx-bar{ display:flex; align-items:center; gap:12px; padding:12px 4px 14px; flex-wrap:wrap; }
.flx-lbl{ font-size:13px; color:var(--ink-2); font-weight:600; }
.flx-persel{ border:1px solid var(--line); background:var(--surface); color:var(--ink); border-radius:10px; padding:8px 12px; font-weight:800; font-size:13px; font-family:inherit; cursor:pointer; }
.flx-sp{ flex:1; }
.flx-add{ position:relative; }
.flx-addbtn{ display:inline-flex; align-items:center; gap:7px; background:var(--green,#0FA47A); color:#fff; border:none; border-radius:10px; padding:9px 15px; font-weight:800; font-size:13px; font-family:inherit; cursor:pointer; box-shadow:0 2px 8px rgba(14,159,110,.28); }
.flx-addmenu{ position:absolute; top:calc(100% + 6px); right:0; min-width:220px; background:var(--surface); border:1px solid var(--line); border-radius:12px; box-shadow:0 18px 44px -12px rgba(11,59,102,.34); padding:6px; z-index:60; display:none; }
.flx-addmenu.open{ display:block; }
.flx-addmenu button{ display:flex; align-items:center; gap:10px; width:100%; border:none; background:transparent; font-family:inherit; font-size:13.5px; font-weight:700; color:var(--ink); padding:10px 10px; border-radius:9px; cursor:pointer; text-align:left; }
.flx-addmenu button:hover{ background:var(--blue-soft); }
.flx-ai{ width:24px; height:24px; border-radius:7px; display:grid; place-items:center; flex:none; font-weight:800; }
.flx-ai-rec,.flx-ai-sv{ background:var(--green-soft); color:var(--green,#0B8163); } .flx-ai-des{ background:#FCEBE8; color:var(--red,#E0503A); }
/* resumo grande */
.flx-resumo{ display:flex; align-items:flex-start; justify-content:center; gap:24px; padding:20px 8px; flex-wrap:wrap; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.flx-rc{ min-width:148px; }
.flx-cap{ font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); margin-bottom:3px; }
.flx-big{ font-size:25px; font-weight:800; line-height:1; padding-bottom:8px; border-bottom:3px solid; }
.flx-rc.rec .flx-big{ color:var(--green,#0B8163); border-color:var(--green,#0FA47A); }
.flx-rc.des .flx-big{ color:var(--red,#E0503A); border-color:var(--red,#E0503A); }
.flx-rc.sal .flx-big{ color:var(--blue); border-color:var(--blue); }
.flx-sub{ font-size:11.5px; color:var(--muted); margin-top:6px; line-height:1.5; }
.flx-sub b{ color:var(--ink-2); }
.flx-op{ font-size:24px; font-weight:400; color:var(--muted); align-self:center; padding-top:14px; }
/* tabela */
.flx-tab{ width:100%; border-collapse:collapse; }
.flx-tab thead th{ font-size:11px; font-weight:800; letter-spacing:.03em; text-transform:uppercase; color:var(--muted); text-align:left; padding:11px 12px; border-bottom:1px solid var(--line); }
.flx-tab thead th.r{ text-align:right; }
.flx-tab tbody td{ padding:12px; border-bottom:1px solid var(--line); font-size:13.5px; vertical-align:middle; }
.flx-cd{ color:var(--ink-2); white-space:nowrap; }
.flx-nm{ font-weight:700; color:var(--ink); }
.flx-tab tbody td small{ display:block; color:var(--muted); font-size:11.5px; font-weight:600; }
.flx-forma{ color:var(--muted); font-size:12px; }
.flx-vl{ text-align:right; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; }
.flx-rec{ color:var(--green,#0B8163); } .flx-des{ color:var(--red,#E0503A); }
.flx-pill{ display:inline-flex; align-items:center; font-size:10.5px; font-weight:800; padding:2px 9px; border-radius:99px; }
.flx-p-rec{ background:var(--green-soft); color:var(--green,#0B8163); } .flx-p-des{ background:#FCEBE8; color:var(--red,#E0503A); }
.flx-vazio{ text-align:center; color:var(--muted); padding:34px 12px; font-size:13.5px; }
/* modais do financeiro */
.flx-frow{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; margin-bottom:12px; }
.flx-frow .flx-f2{ grid-column:span 2; }
@media(max-width:640px){ .flx-frow{ grid-template-columns:1fr; } .flx-frow .flx-f2{ grid-column:span 1; } }
.flx-fld label{ display:block; font-size:11.5px; font-weight:700; color:var(--muted); margin-bottom:4px; }
.flx-fld input,.flx-fld select,.flx-fld textarea{ width:100%; }
/* 16.38 — refino do "Novo recebimento": mais largo, campos maiores e com respiro */
.flx-rec .flx-frow{ gap:18px; margin-bottom:18px; }
.flx-rec .flx-fld label{ font-size:12.5px; margin-bottom:7px; }
.flx-rec .flx-fld input, .flx-rec .flx-fld select, .flx-rec .flx-fld textarea{
  padding:12px 13px !important; border-radius:9px !important; border:1px solid var(--line) !important;
  font-size:14.5px !important; min-height:46px;
}
.flx-rec .flx-fld input:focus, .flx-rec .flx-fld select:focus, .flx-rec .flx-fld textarea:focus{
  border-color:var(--blue) !important; box-shadow:0 0 0 3px rgba(31,115,224,.13) !important; outline:none;
}
.flx-chk{ display:flex; align-items:center; gap:9px; font-size:13.5px; color:var(--ink); margin:6px 0; cursor:pointer; }
.flx-chk input{ width:16px; height:16px; }
.flx-ref{ border:1px solid var(--blue-line); background:var(--blue-soft); border-radius:12px; padding:10px 11px; margin:2px 0 12px; }
.flx-reft{ font-size:12px; font-weight:800; color:var(--blue-700); margin-bottom:8px; }
.flx-opt{ display:flex; align-items:center; gap:10px; width:100%; padding:9px 10px; border:1px solid var(--line); background:var(--surface); border-radius:10px; margin-bottom:6px; cursor:pointer; font-family:inherit; text-align:left; }
.flx-opt:last-child{ margin-bottom:0; }
.flx-opt.on{ border-color:var(--blue); box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 16%,transparent); }
.flx-oic{ width:26px; height:26px; border-radius:7px; display:grid; place-items:center; flex:none; font-size:14px; background:var(--gray-soft,#EEF2F7); }
.flx-otx{ flex:1; min-width:0; }
.flx-otx b{ font-size:13px; font-weight:700; color:var(--ink); display:block; }
.flx-otx small{ font-size:11.5px; color:var(--muted); }
.flx-ovl{ font-weight:800; font-size:13px; color:var(--ink); white-space:nowrap; }

/* ═══ 1582 — SPLASH de abertura (Hub in Blue) ═══ */
#ohSplash{ position:fixed; inset:0; z-index:100000; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(120% 90% at 50% 8%, #2E86F0 0%, #1F73E0 42%, #1559BD 100%);
  opacity:1; transition:opacity .5s ease; }
#ohSplash.hide{ opacity:0; pointer-events:none; }
#ohSplash .ohsp-inner{ text-align:center; transform:translateY(-2%); animation:ohspIn .5s cubic-bezier(.34,1.3,.5,1) both; }
/* 1629 — splash melhorado (prévia A aprovada): tudo centrado e empilhado —
   emblema em cima com anel de progresso girando, Impulse embaixo, frase por
   último. Sai o antigo anel tracejado torto e a barrinha descentralizada. */
#ohSplash .ohsp-logo{ display:flex; flex-direction:column; align-items:center; gap:18px; }
/* 1592 — o emblema REAL do Impulse (icon.svg): quadrado azul com o dente branco.
   O próprio SVG traz o quadrado, então a marca fica transparente com só a sombra. */
#ohSplash .ohsp-mark{ position:relative; width:62px; height:62px; border-radius:17px; background:transparent;
  display:grid; place-items:center; box-shadow:0 12px 30px rgba(4,20,60,.34); }
#ohSplash .ohsp-mark svg{ width:62px; height:62px; border-radius:17px; display:block; }
/* anel de progresso girando em volta do emblema */
#ohSplash .ohsp-ring{ position:absolute; inset:-12px; border-radius:50%;
  background:conic-gradient(from 0deg, transparent 0 62%, #fff 88%, transparent);
  -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
          mask:radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
  animation:ohspSpin 1.05s linear infinite; }
#ohSplash .ohsp-word{ font-family:var(--font,inherit); font-size:34px; font-weight:800; letter-spacing:-.5px; color:#fff; }
/* 18.03 — regra removida: o nome é UMA palavra, então é UMA cor.
   O <b> no meio dele era herança do "Oral"+"Hub", que era composto. */
#ohSplash .ohsp-tag{ margin-top:16px; font-size:13.5px; font-weight:600; color:rgba(255,255,255,.86); letter-spacing:.2px; }
@keyframes ohspIn{ from{ opacity:0; transform:translateY(6%) scale(.98); } to{ opacity:1; transform:translateY(-2%) scale(1); } }
@keyframes ohspSpin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ #ohSplash .ohsp-inner,#ohSplash .ohsp-ring{ animation:none; } }

/* ═══════════════════════════════════════════════════════════════════
   1622 — "CÉU Impulse": fundo coerente (degradê + brilhos + órbita +
   estrelas) para splash, login, bloqueio e seleção de clínica. Puro CSS
   (sem tocar no HTML das telas). Variação clara/escura pelo data-theme.
   ═══════════════════════════════════════════════════════════════════ */
/* 1801 — O CÉU DAS QUATRO TELAS DE ENTRADA.
   As nuvens são O PRÓPRIO SÍMBOLO da marca, repetido em tamanhos e
   opacidades diferentes — não é ilustração avulsa, é a marca respirando
   atrás do cartão. Nenhuma nuvem no meio da tela: ali fica o formulário.
   ⚠ NÃO CRIE OUTRO BLOCO DE FUNDO para estas telas. Havia dois disputando
   (este e um lá em cima, na regra de --ent-bg), e foi exatamente por isso
   que uma prévia minha mostrou um fundo que não existia. É aqui, só aqui. */
#ohSplash,
#loginScreen,
#lockScreen,
#userSelectScreen,
#clinicaSelectScreen{
  background:
    url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201440%20900%22%20preserveAspectRatio%3D%22xMidYMid%20slice%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22n%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23FFFFFF%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F2F8FF%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%2860%2080%29%20scale%283.4%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.95%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%281130%2046%29%20scale%282.6%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.7%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28760%20640%29%20scale%284.6%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.5%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28-40%20560%29%20scale%282.9%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.62%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%281290%20380%29%20scale%282.0%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.45%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28330%20700%29%20scale%282.2%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.4%22%2F%3E%3Ccircle%20cx%3D%22300%22%20cy%3D%22170%22%20r%3D%223%22%20fill%3D%22%231F73E0%22%20opacity%3D%220.3%22%2F%3E%3Ccircle%20cx%3D%221080%22%20cy%3D%22250%22%20r%3D%223%22%20fill%3D%22%231F73E0%22%20opacity%3D%220.26%22%2F%3E%3Ccircle%20cx%3D%22620%22%20cy%3D%22120%22%20r%3D%222.6%22%20fill%3D%22%231F73E0%22%20opacity%3D%220.22%22%2F%3E%3Ccircle%20cx%3D%221220%22%20cy%3D%22720%22%20r%3D%223%22%20fill%3D%22%231F73E0%22%20opacity%3D%220.2%22%2F%3E%3Ccircle%20cx%3D%22170%22%20cy%3D%22780%22%20r%3D%222.6%22%20fill%3D%22%231F73E0%22%20opacity%3D%220.22%22%2F%3E%3C%2Fsvg%3E"),
    linear-gradient(168deg,#F7FBFF 0%,#EAF3FD 45%,#DCEBFC 100%) !important;
  background-size:cover,auto !important;
  background-position:center,center !important;
  background-repeat:no-repeat,no-repeat !important;
  background-attachment:fixed !important;
}
html[data-theme="dark"] #ohSplash,
html[data-theme="dark"] #loginScreen,
html[data-theme="dark"] #lockScreen,
html[data-theme="dark"] #userSelectScreen,
html[data-theme="dark"] #clinicaSelectScreen{
  background:
    url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201440%20900%22%20preserveAspectRatio%3D%22xMidYMid%20slice%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22n%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%231E3357%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2317294A%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%2860%2080%29%20scale%283.4%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.95%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%281130%2046%29%20scale%282.6%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.7%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28760%20640%29%20scale%284.6%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.5%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28-40%20560%29%20scale%282.9%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.62%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%281290%20380%29%20scale%282.0%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.45%22%2F%3E%3Cpath%20d%3D%22M9%2C42%20C1%2C42%20-4%2C36%20-4%2C29%20C-4%2C22%202%2C16%209%2C16%20C10%2C7%2019%2C0%2028%2C0%20C38%2C0%2046%2C7%2047%2C17%20C53%2C17%2058%2C23%2058%2C29%20C58%2C36%2052%2C42%2045%2C42%20L9%2C42%20Z%22%20transform%3D%22translate%28330%20700%29%20scale%282.2%29%22%20fill%3D%22url%28%23n%29%22%20opacity%3D%220.4%22%2F%3E%3Ccircle%20cx%3D%22300%22%20cy%3D%22170%22%20r%3D%223%22%20fill%3D%22%23B4D2FF%22%20opacity%3D%220.55%22%2F%3E%3Ccircle%20cx%3D%221080%22%20cy%3D%22250%22%20r%3D%223%22%20fill%3D%22%23B4D2FF%22%20opacity%3D%220.5%22%2F%3E%3Ccircle%20cx%3D%22620%22%20cy%3D%22120%22%20r%3D%222.6%22%20fill%3D%22%23B4D2FF%22%20opacity%3D%220.45%22%2F%3E%3Ccircle%20cx%3D%221220%22%20cy%3D%22720%22%20r%3D%223%22%20fill%3D%22%237FB6FF%22%20opacity%3D%220.5%22%2F%3E%3Ccircle%20cx%3D%22170%22%20cy%3D%22780%22%20r%3D%222.6%22%20fill%3D%22%23B4D2FF%22%20opacity%3D%220.45%22%2F%3E%3C%2Fsvg%3E"),
    linear-gradient(168deg,#0B1F4B 0%,#102A56 50%,#12203A 100%) !important;
  background-size:cover,auto !important;
  background-position:center,center !important;
  background-repeat:no-repeat,no-repeat !important;
  background-attachment:fixed !important;
}
/* Splash: halo suave atrás do emblema + anel e texto que se adaptam ao tema */
#ohSplash .ohsp-mark::before{ content:""; position:absolute; inset:-26px; border-radius:50%; z-index:-1;
  background:radial-gradient(circle, rgba(127,182,255,.24), transparent 68%); }
/* claro: sobre o Céu claro, anel/halo/texto em azul-marinho */
html:not([data-theme="dark"]) #ohSplash .ohsp-ring{ background:conic-gradient(from 0deg, transparent 0 62%, #1F73E0 88%, transparent); }
html:not([data-theme="dark"]) #ohSplash .ohsp-mark::before{ background:radial-gradient(circle, rgba(31,115,224,.20), transparent 68%); }
html:not([data-theme="dark"]) #ohSplash .ohsp-word{ color:#0B1F4B; }

html:not([data-theme="dark"]) #ohSplash .ohsp-tag{ color:#5A6B86; }
html[data-theme="dark"] #ohSplash .ohsp-ring{ background:conic-gradient(from 0deg, transparent 0 62%, #7FB6FF 88%, transparent); }


/* ═══════════════════════════════════════════════════════════════════
   1623 — POP-UP do card da agenda no formato Simples Dental (prévia
   aprovada): cabeçalho colorido pelo status, corpo limpo, mesmas ações.
   ═══════════════════════════════════════════════════════════════════ */
#agPop.ag-pop{ padding:0; border:none; width:326px; overflow:hidden; border-radius:16px; box-shadow:0 22px 56px rgba(4,16,40,.34); }
.agp2-head{ position:relative; color:#fff; padding:15px 15px 14px; }
.agp2-hact{ position:absolute; top:10px; right:10px; display:flex; gap:6px; }
.agp2-hbtn{ width:29px; height:29px; border-radius:9px; border:none; background:rgba(255,255,255,.18); color:#fff; display:grid; place-items:center; cursor:pointer; transition:.14s; padding:0; }
.agp2-hbtn:hover{ background:rgba(255,255,255,.30); }
.agp2-hbtn svg{ width:15px; height:15px; }
.agp2-x{ border-radius:50%; }
.agp2-id{ display:flex; align-items:center; gap:11px; padding-right:70px; }
.agp2-av{ width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,.22); display:grid; place-items:center; flex:none; font-weight:800; font-size:16px; color:#fff; }
.agp2-who{ min-width:0; flex:1; }
.agp2-name{ font-size:16px; font-weight:800; line-height:1.15; display:flex; align-items:center; gap:6px; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.agp2-name svg{ flex:none; }
.agp2-fone{ font-size:13.5px; font-weight:600; margin-top:3px; opacity:.96; font-variant-numeric:tabular-nums; }
.agp2-when{ font-size:12px; font-weight:600; margin-top:4px; opacity:.9; }
.agp2-body{ padding:13px 15px 15px; display:flex; flex-direction:column; gap:10px; background:var(--surface,#fff); }
.agp2-body .ag-pop-inds,.agp2-body .ag-pop-proc{ margin:0; }
.agp2-st{ position:relative; display:flex; align-items:center; gap:9px; border:1px solid var(--line); border-radius:11px; padding:2px 12px; background:var(--bg,#fff); }
.agp2-st select{ flex:1; min-width:0; border:none; background:transparent; font-family:inherit; font-size:14px; font-weight:700; color:var(--ink); padding:10px 6px 10px 0; outline:none; cursor:pointer; }
/* 1627 — régua Situação e fluxo compacta no pop-up */
.agp2-flow{ margin:2px 0 4px; }
.agp2-flow-t{ font-size:10px; font-weight:800; color:var(--muted); text-transform:uppercase; letter-spacing:.4px; margin-bottom:9px; display:flex; align-items:center; gap:7px; }
.agp2-enctag{ font-size:10px; font-weight:800; letter-spacing:.2px; text-transform:none; color:#0F5C68; background:color-mix(in srgb,#147C8B 14%,var(--surface)); border:1px solid color-mix(in srgb,#147C8B 34%,var(--line)); border-radius:20px; padding:2px 9px; }
.agp2-rail{ display:flex; justify-content:space-between; position:relative; padding:0 2px; }
.agp2-rail::before{ content:""; position:absolute; top:11px; left:14px; right:14px; height:3px; background:var(--line); border-radius:3px; }
.agp2-prog{ position:absolute; top:11px; left:14px; height:3px; border-radius:3px; transition:width .25s; }
.agp2-step{ position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; gap:5px; cursor:pointer; width:20%; background:none; border:none; padding:0; font-family:inherit; }
.agp2-dot{ width:22px; height:22px; border-radius:50%; background:var(--bg,#fff); border:3px solid var(--line); display:flex; align-items:center; justify-content:center; transition:.2s; }
.agp2-dot svg{ width:11px; height:11px; }
.agp2-step.done .agp2-dot{ background:var(--gc); border-color:var(--gc); }
.agp2-step.cur .agp2-dot{ border-color:var(--gc); box-shadow:0 0 0 4px color-mix(in srgb,var(--gc) 22%,transparent); }
.agp2-step.cur .agp2-dot::after{ content:""; width:8px; height:8px; border-radius:50%; background:var(--gc); }
.agp2-slbl{ font-size:9px; font-weight:800; color:var(--muted); letter-spacing:.1px; text-align:center; line-height:1.1; }
.agp2-step.done .agp2-slbl, .agp2-step.cur .agp2-slbl{ color:var(--ink-2); }
.agp2-off{ display:flex; gap:7px; margin-top:11px; }
.agp2-offb{ flex:1; font-size:11.5px; font-weight:800; padding:7px 4px; border-radius:9px; border:1px solid var(--line); background:var(--bg,#fff); color:var(--ink-2); cursor:pointer; font-family:inherit; transition:.15s; }
.agp2-offb.on{ background:#E0503A; border-color:#E0503A; color:#fff; }
.agp2-enc{ display:flex; align-items:center; gap:9px; padding:10px 12px; border-radius:11px; background:color-mix(in srgb,#147C8B 10%,var(--surface)); border:1px solid color-mix(in srgb,#147C8B 32%,var(--line)); }
.agp2-enc-ic{ display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:8px; background:#147C8B; color:#fff; font-size:13px; flex:none; }
.agp2-enc b{ display:block; font-size:13px; font-weight:800; color:#0F5C68; }
.agp2-enc span{ font-size:10.5px; color:var(--muted); font-weight:600; }
.agp2-wa{ display:flex; gap:8px; }
.agp2-wbtn{ flex:1; display:inline-flex; align-items:center; justify-content:center; gap:7px; font-family:inherit; font-weight:800; font-size:13px; border-radius:10px; padding:10px; cursor:pointer; border:1px solid; }
.agp2-wbtn svg{ width:15px; height:15px; }
.agp2-wbtn.avisar{ background:color-mix(in srgb,var(--green,#22A45D) 12%,var(--surface)); color:#1E8E50; border-color:color-mix(in srgb,var(--green,#22A45D) 34%,var(--line)); }
.agp2-wbtn.confirmar{ background:var(--blue-soft,#EAF2FD); color:var(--blue-700); border-color:color-mix(in srgb,var(--blue) 26%,var(--line)); }
.agp2-ligar{ display:flex; align-items:center; justify-content:center; gap:9px; border:1px solid var(--blue-soft,#EAF2FD); background:var(--blue-soft,#EAF2FD); color:var(--blue-700); font-family:inherit; font-weight:800; font-size:14px; padding:11px; border-radius:11px; cursor:pointer; }
.agp2-row2{ display:flex; gap:8px; }
.agp2-sbtn{ flex:1; display:inline-flex; align-items:center; justify-content:center; gap:7px; font-family:inherit; font-weight:700; font-size:13px; border-radius:10px; padding:10px; cursor:pointer; border:1px solid var(--line); background:var(--bg,#fff); color:var(--ink-2); transition:.14s; }
.agp2-sbtn:hover{ border-color:color-mix(in srgb,var(--blue) 30%,var(--line)); color:var(--blue-700); }
.agp2-sbtn svg{ width:15px; height:15px; }
.agp2-prof{ display:flex; align-items:center; gap:10px; padding:2px 1px 0; border-top:1px solid var(--line); padding-top:11px; }
.agp2-pav{ width:29px; height:29px; border-radius:50%; color:#fff; display:grid; place-items:center; font-size:12px; font-weight:800; flex:none; }
.agp2-pnome{ font-size:14px; font-weight:700; color:var(--ink); }

/* ═══════════════════════════════════════════════════════════════════
   1624 — Reskin do modal de Nova consulta no estilo Simples Dental
   (prévia aprovada). Escopo em .oh-sdcons: NÃO toca em nenhum id de
   campo nem na lógica de salvar — só a roupa: rótulos azuis no topo,
   campos arredondados, mais respiro, e as pílulas Consulta/Compromisso.
   ═══════════════════════════════════════════════════════════════════ */
.oh-sdpills{ display:inline-flex; background:#EEF2F7; border-radius:999px; padding:4px; gap:2px; margin:2px 0 18px; }
[data-theme="dark"] .oh-sdpills{ background:color-mix(in srgb,var(--blue) 14%,var(--surface)); }
.oh-sdpill{ border:none; background:none; font-family:inherit; font-weight:800; font-size:14px; color:var(--ink-2); padding:8px 22px; border-radius:999px; cursor:pointer; transition:.15s; }
.oh-sdpill.on{ background:var(--blue); color:#fff; box-shadow:0 4px 12px rgba(31,115,224,.3); }
.oh-sdpill.urg{ color:#C0392B; }
/* 1795 — o quarto botão é o PRÉ-CADASTRO (a 1794 tinha ligado no
   cadastro rápido, que é outra coisa). Âmbar porque o menu da agenda já
   usa essa cor para ele, do mesmo jeito que usa vermelho para a
   urgência — convenção que já existia, não gosto meu. */
.oh-sdpill.pre{ color:var(--amber,#C2840F); }
.oh-sdpill.pre.on{ background:var(--amber,#C2840F); color:#fff; box-shadow:0 4px 12px rgba(194,132,15,.30); }
/* Três botões ocupam 342px; quatro vão a 445 numa tela de 375 — medido.
   No celular a fila quebra: os três modos em cima, o cadastro rápido
   embaixo. Fica em 347px e sem rolagem lateral — e a segunda linha   ainda ajuda a dizer que ele é outra coisa. */
@media(max-width:560px){
  .oh-sdpills{ display:flex; flex-wrap:wrap; justify-content:flex-start; }
  .oh-sdpill{ flex:1 1 auto; padding-left:14px; padding-right:14px; white-space:nowrap; }
}
.oh-sdpill.urg.on{ background:#E0503A; color:#fff; box-shadow:0 4px 12px rgba(224,80,58,.32); }
.oh-sdcons .field{ margin-bottom:15px; }
.oh-sdcons .field > label{ font-size:12px !important; font-weight:700 !important; color:var(--blue) !important; margin-bottom:6px; letter-spacing:.01em; }
.oh-sdcons .field > label span{ color:inherit; }
.oh-sdcons .field > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.oh-sdcons .field > select,
.oh-sdcons .field > textarea,
.oh-sdcons .dpf-wrap input[type=text],
.oh-sdcons .frow input:not([type=checkbox]):not([type=radio]),
.oh-sdcons .frow select,
.oh-sdcons .frow3 input:not([type=checkbox]):not([type=radio]),
.oh-sdcons .frow3 select{ border-radius:10px !important; padding:11px 13px !important; border:1px solid var(--line); font-size:14px; }
.oh-sdcons .frow,.oh-sdcons .frow3{ gap:14px; }
.oh-sdcons .help{ margin-top:6px; }

/* 16.25 — ficha do paciente no formato Simples Dental (reskin escopado) */
.oh-sdficha .field > label{ font-size:12px !important; font-weight:700 !important; color:var(--blue) !important; margin-bottom:5px; letter-spacing:.01em; }
.oh-sdficha .field > label svg{ stroke:var(--blue); opacity:.9; }
.oh-sdficha input:not([type=checkbox]):not([type=radio]),
.oh-sdficha select,
.oh-sdficha textarea{ border-radius:10px !important; border:1px solid var(--line); font-size:14px; transition:border-color .15s, box-shadow .15s; }
.oh-sdficha input:not([type=checkbox]):not([type=radio]):focus,
.oh-sdficha select:focus,
.oh-sdficha textarea:focus{ border-color:var(--blue) !important; box-shadow:0 0 0 3px rgba(31,115,224,.13) !important; }
.oh-sdficha .field{ margin-bottom:15px; }
.oh-sdficha .frow{ gap:14px; }
/* abas */
.ohf-tabs{ display:flex; gap:24px; border-bottom:1px solid var(--line); margin:22px 0 18px; flex-wrap:wrap; }
.ohf-tab{ padding:11px 2px; font-size:12.5px; font-weight:800; letter-spacing:.03em; color:var(--muted); cursor:pointer; border:none; background:none; border-bottom:2.5px solid transparent; text-transform:uppercase; }
.ohf-tab.on{ color:var(--blue); border-bottom-color:var(--blue); }
.ohf-pane{ display:none; }
.ohf-pane.on{ display:block; }

/* ═══════════════════════════════════════════════════════════════════
   16.33 — Estilo Simples Dental (RÓTULO FLUTUANTE) nas janelas de
   Nova consulta (.oh-sdcons) e Novo paciente (.oh-sdficha). Prévia
   aprovada. Só a roupa: nenhum id de campo ou lógica de salvar muda.
   Sobrepõe os rótulos-no-topo das 16.24/16.25.
   ═══════════════════════════════════════════════════════════════════ */
.oh-sdcons .field, .oh-sdficha .field{ position:relative; margin-bottom:22px; }
.oh-sdcons .frow, .oh-sdficha .frow, .oh-sdcons .frow3, .oh-sdficha .frow3{ gap:16px; margin-bottom:22px; }
.oh-sdcons .frow .field, .oh-sdficha .frow .field, .oh-sdcons .frow3 .field, .oh-sdficha .frow3 .field{ margin-bottom:0; }
/* rótulo flutuando na borda */
.oh-sdcons .field > label, .oh-sdficha .field > label{
  position:absolute !important; top:-8px; left:11px; z-index:2;
  margin:0 !important; background:#fff; padding:0 6px;
  font-size:12px !important; font-weight:600 !important; color:var(--muted) !important;
  letter-spacing:.01em; pointer-events:none; max-width:calc(100% - 22px); overflow:hidden; white-space:nowrap; text-overflow:ellipsis;
}
[data-theme="dark"] .oh-sdcons .field > label, [data-theme="dark"] .oh-sdficha .field > label{ background:var(--surface); }
.oh-sdcons .field:focus-within > label, .oh-sdficha .field:focus-within > label{ color:var(--blue) !important; }
/* SD tem rótulo limpo: sem ícone dentro do rótulo (o texto do rótulo permanece;
   em .oh-sdcons o texto vem dentro de <span>, então NÃO se esconde span) */
.oh-sdcons .field > label svg, .oh-sdficha .field > label svg{ display:none !important; }
.oh-sdcons .field > label a, .oh-sdficha .field > label a{ display:none !important; }
.oh-sdcons .field > label, .oh-sdficha .field > label{ gap:3px !important; }
/* campos: contorno arredondado, respiro e foco azul */
.oh-sdcons .field > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.oh-sdcons .field > select, .oh-sdcons .field > textarea,
.oh-sdcons .frow input:not([type=checkbox]):not([type=radio]), .oh-sdcons .frow select, .oh-sdcons .frow textarea,
.oh-sdficha .field > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.oh-sdficha .field > select, .oh-sdficha .field > textarea,
.oh-sdficha .frow input:not([type=checkbox]):not([type=radio]), .oh-sdficha .frow select, .oh-sdficha .frow textarea{
  border-radius:6px !important; padding:14px 13px !important; border:1px solid var(--line) !important;
  font-size:15px !important; background:#fff; color:var(--ink); transition:border-color .15s, box-shadow .15s;
}
[data-theme="dark"] .oh-sdcons .field > input, [data-theme="dark"] .oh-sdcons .field > select, [data-theme="dark"] .oh-sdcons .field > textarea,
[data-theme="dark"] .oh-sdficha .field > input, [data-theme="dark"] .oh-sdficha .field > select, [data-theme="dark"] .oh-sdficha .field > textarea{ background:var(--surface); }
.oh-sdcons .field > input:focus, .oh-sdcons .field > select:focus, .oh-sdcons .field > textarea:focus,
.oh-sdficha .field > input:focus, .oh-sdficha .field > select:focus, .oh-sdficha .field > textarea:focus,
.oh-sdcons .frow input:focus, .oh-sdcons .frow select:focus, .oh-sdficha .frow input:focus, .oh-sdficha .frow select:focus{
  border-color:var(--blue) !important; box-shadow:0 0 0 1px var(--blue) !important; outline:none;
}
/* a dica (.help) some do rótulo mas fica embaixo, discreta */
.oh-sdcons .help, .oh-sdficha .help{ margin-top:6px; font-size:11px; }

/* 16.33b — rótulos que NÃO devem flutuar: os que são toggle (contêm input,
   ex.: Nota fiscal) e os de dentro do painel de Valor da consulta (#c_valbox).
   Voltam a ser rótulo normal, no fluxo. */
.oh-sdcons .field > label:has(input), .oh-sdficha .field > label:has(input),
.oh-sdcons #c_valbox .field > label{
  position:static !important; top:auto; left:auto; z-index:auto;
  background:none !important; padding:0 !important; margin:0 0 6px !important;
  max-width:none; white-space:normal; overflow:visible; text-overflow:clip;
  pointer-events:auto; font-size:13px !important;
}
.oh-sdcons #c_valbox .field > label span, .oh-sdficha .field > label:has(input) span{ display:inline !important; }
.oh-sdcons #c_valbox .field > label svg, .oh-sdficha .field > label:has(input) svg{ display:inline !important; }

/* 16.91 — FOLHA DE FILTRO da agenda (mobile) + chip-funil */
.gw-prof-fu{ display:none; width:15px; height:15px; flex:none; }
@media(max-width:760px){
  .gw-prof-fu{ display:block; }
  .gw-prof-btn .gw-prof-ic{ display:none; }
  .gw-prof-btn .gw-prof-cv{ display:none; }
}
#agFiltroSheet{ position:fixed; inset:0; z-index:800; font-family:var(--font); }
#agFiltroSheet .agfs-veu{ position:absolute; inset:0; background:rgba(6,13,26,.45); animation:agfsVeu .18s ease; }
@keyframes agfsVeu{ from{opacity:0} to{opacity:1} }
#agFiltroSheet .agfs-sheet{ position:absolute; left:0; right:0; bottom:0; background:var(--surface,#fff); border-radius:20px 20px 0 0; box-shadow:0 -14px 44px rgba(10,25,60,.28); padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px)); animation:agfsUp .22s cubic-bezier(.34,1.1,.5,1); max-height:76vh; display:flex; flex-direction:column; }
@keyframes agfsUp{ from{ transform:translateY(60px); opacity:.4; } to{ transform:none; opacity:1; } }
#agFiltroSheet .agfs-alca{ width:42px; height:4px; border-radius:3px; background:color-mix(in srgb,var(--ink) 16%,transparent); margin:0 auto 10px; flex:none; }
#agFiltroSheet .agfs-h{ display:flex; align-items:center; justify-content:space-between; margin-bottom:11px; flex:none; }
#agFiltroSheet .agfs-h b{ font-size:16px; color:var(--ink); }
#agFiltroSheet .agfs-x{ width:30px; height:30px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-size:16px; cursor:pointer; }
#agFiltroSheet .agfs-busca{ flex:none; margin-bottom:8px; }
#agFiltroSheet .agfs-busca input{ width:100%; border:1px solid var(--line); border-radius:11px; padding:10px 13px; font-size:14px; font-family:inherit; background:var(--bg); color:var(--ink); }
#agFiltroSheet .agfs-lista{ overflow-y:auto; flex:1; min-height:0; }
#agFiltroSheet .agfs-it{ display:flex; align-items:center; gap:11px; width:100%; padding:11px 12px; border:none; background:none; border-radius:11px; font-family:inherit; font-size:14.5px; font-weight:700; color:var(--ink); cursor:pointer; text-align:left; }
#agFiltroSheet .agfs-it.on{ background:var(--blue-soft,#EAF2FE); color:var(--blue-700,#1559BD); }
#agFiltroSheet .agfs-dot{ width:28px; height:28px; border-radius:50%; display:grid; place-items:center; color:#fff; font-size:10.5px; font-weight:900; flex:none; }
#agFiltroSheet .agfs-nm{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#agFiltroSheet .agfs-ck{ color:var(--blue); font-weight:900; flex:none; }
#agFiltroSheet .agfs-acts{ display:flex; gap:10px; margin-top:11px; flex:none; }
#agFiltroSheet .agfs-limpar{ flex:none; background:var(--surface); border:1px solid var(--line); color:var(--ink-2); border-radius:12px; padding:12px 18px; font-weight:800; font-size:13.5px; font-family:inherit; cursor:pointer; }
#agFiltroSheet .agfs-aplicar{ flex:1; background:var(--blue); color:#fff; border:none; border-radius:12px; padding:12px; font-weight:800; font-size:14px; font-family:inherit; cursor:pointer; }

/* ═══ CONTROLES estilo Windows 11 (Fluent) — 16.98 para a caixa,
   1787 para o rádio. Canto 4px, borda fina, ✓ que “nasce” com mola.
   Interruptores (cfgs-sw) ficam de fora.
   ⚠ 1787 — O RÁDIO ENTROU AQUI, e o motivo importa: a 16.98 arrumou
   SÓ a caixa e deixou o rádio no skin envidraçado antigo, lá em cima.
   Como este bloco vem depois e usa !important, ninguém percebeu — a
   caixa ficou certa e a bolinha continuou com gradiente, brilho e uma
   marca branca de 7px que sumia de relance. Agora é UM skin para os
   dois; não crie um segundo em outro ponto do arquivo.
   O tamanho subiu de 15 para 20px (prévia aprovada). ═══ */
input[type=checkbox],input[type=radio]{
  appearance:none; -webkit-appearance:none;
  width:20px !important; height:20px !important;
  border:1px solid color-mix(in srgb, var(--ink, #15233F) 45%, transparent);
  border-radius:4px; background:var(--surface,#fff); cursor:pointer;
  position:relative; margin:0; padding:0 !important; flex:none; vertical-align:middle;
  box-shadow:none;
  transition:background .1s ease, border-color .1s ease, box-shadow .1s ease;
}
input[type=checkbox]::after,input[type=radio]::after{
  content:""; position:absolute; left:0; top:0; width:100%; height:100%;
  border:none;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M3.6 8.4l2.7 2.7 6-6.2' stroke='white' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/></svg>") center/14px 14px no-repeat;
  opacity:0; transform:scale(.4);
  transition:opacity .09s ease, transform .16s cubic-bezier(.2,1.6,.45,1);
}
input[type=checkbox]:hover:not(:checked):not(:disabled),input[type=radio]:hover:not(:checked):not(:disabled){
  background:color-mix(in srgb, var(--ink,#15233F) 6%, var(--surface,#fff));
  border-color:color-mix(in srgb, var(--ink,#15233F) 62%, transparent);
}
input[type=checkbox]:active:not(:disabled),input[type=radio]:active:not(:disabled){ border-color:var(--blue,#1F73E0); }
input[type=checkbox]:checked,input[type=radio]:checked{ background:var(--blue,#1F73E0); border-color:var(--blue,#1F73E0); }
input[type=checkbox]:checked::after,input[type=radio]:checked::after{ opacity:1; transform:scale(1); left:0; top:0; width:100%; height:100%; border:none; }
input[type=radio]{ border-radius:50% !important; }
/* a marca do rádio é um ponto de 50%, e não o ✓ da caixa. Em % de
   propósito: assim ela acompanha qualquer tamanho que uma tela imponha,
   sem voltar ao px fixo, que descentralizava a marca. */
input[type=radio]::after{ background-image:none; background-color:#fff;
  border-radius:50%; left:50%; top:50%; width:50%; height:50%;
  transform:translate(-50%,-50%) scale(.4); }
input[type=radio]:checked::after{ left:50%; top:50%; width:50%; height:50%;
  transform:translate(-50%,-50%) scale(1); }
input[type=checkbox]:checked:hover:not(:disabled),input[type=radio]:checked:hover:not(:disabled){ background:color-mix(in srgb,#fff 12%, var(--blue,#1F73E0)); border-color:color-mix(in srgb,#fff 12%, var(--blue,#1F73E0)); }
input[type=checkbox]:disabled,input[type=radio]:disabled{ opacity:.45; cursor:default; }
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{ outline:none; box-shadow:0 0 0 2px var(--surface,#fff),0 0 0 4px var(--ink,#16273F); }
/* tema escuro: caixa navy chapada, borda clara, hover visível */
[data-theme="dark"] input[type=checkbox]:not(:checked),[data-theme="dark"] input[type=radio]:not(:checked){
  background:#141F33 !important;
  border-color:color-mix(in srgb,#fff 34%, transparent) !important;
  box-shadow:none !important;
}
[data-theme="dark"] input[type=checkbox]:hover:not(:checked):not(:disabled),[data-theme="dark"] input[type=radio]:hover:not(:checked):not(:disabled){
  background:#1D2C48 !important;
  border-color:color-mix(in srgb,#fff 52%, transparent) !important;
}

/* ═══ 16.98 — FICHA DO PACIENTE: MAIÚSCULO só nos TÍTULOS de seção.
   Rótulos, chips e legendas voltam à caixa normal (pedido do dono). ═══ */
.ficha-ident .fi-r{ text-transform:none; letter-spacing:0; font-size:11px; }
.fk-lbl{ text-transform:none; letter-spacing:.1px; font-size:10.5px; }
.fh-saldo-l{ text-transform:none; letter-spacing:0; font-size:10.5px; }
.fh-alertas-t{ text-transform:none; letter-spacing:0; }
.fh-incompleto{ text-transform:none; letter-spacing:0; }
.ficha-momento .kv .k{ text-transform:none; letter-spacing:.1px; }

/* 16.96 — chip "Completar cadastro" da ficha (vazios somem) */
.fi-add{ display:inline-flex; align-items:center; gap:5px; border:1px dashed var(--blue-line,#A9C7EE); background:var(--blue-soft,#EAF2FE); color:var(--blue-700,#1559BD); border-radius:20px; padding:5px 12px; font-size:12px; font-weight:800; cursor:pointer; font-family:inherit; }
.fi-add:hover{ border-style:solid; }

/* 16.90 — TÍTULOS DE SEÇÃO das janelas SD (reorganização aprovada).
   Bloco ESTÁTICO — nunca flutua, nunca sobrepõe. */
.oh-sdsec{ display:flex; align-items:center; gap:8px; margin:20px 0 13px; color:var(--blue-700,#1559BD); font-size:11px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; }
.oh-sdsec::after{ content:""; flex:1; height:1px; background:var(--line); }
.oh-sdsec-ic{ width:22px; height:22px; border-radius:7px; background:var(--blue-soft,#EAF2FE); display:grid; place-items:center; font-size:12px; flex:none; }
[data-theme="dark"] .oh-sdsec-ic{ background:color-mix(in srgb,var(--blue) 18%,var(--surface)); }
.oh-sdcons .oh-sdsec:first-child, .oh-sdficha .oh-sdsec:first-child{ margin-top:2px; }
/* abas da ficha com 4 itens: encolhe levemente e deixa quebrar em 2 linhas no celular */
.oh-sdficha .ohf-tabs{ gap:16px; }
@media(max-width:700px){ .oh-sdficha .ohf-tabs{ gap:10px; } .oh-sdficha .ohf-tab{ font-size:11.5px; padding:9px 1px; } }

/* 16.77 — FIM DA SOBREPOSIÇÃO nos campos compostos da ficha: o rótulo
   flutuante (16.33) presume um input logo abaixo pra "pousar" na borda.
   Campos compostos (E-mails com PADRÃO, Condições de saúde, Endereço no
   exterior, Responsável, Indicado por…) não têm input direto — o rótulo
   absoluto caía EM CIMA do conteúdo. Nesses casos o rótulo volta ao fluxo. */
.oh-sdcons .field:not(:has(> input:not([type=hidden]), > select, > textarea, > .selx, > .dp-wrap)) > label,
.oh-sdficha .field:not(:has(> input:not([type=hidden]), > select, > textarea, > .selx, > .dp-wrap)) > label{
  position:static !important; top:auto; left:auto; z-index:auto;
  background:none !important; padding:0 !important; margin:0 0 6px !important;
  max-width:none; white-space:normal; overflow:visible; text-overflow:clip;
  pointer-events:auto; font-size:13px !important; font-weight:700 !important;
}
/* 16.92 — ícones dos rótulos FORA (pedido do dono: interface limpa) */
.oh-sdcons .field:not(:has(> input:not([type=hidden]), > select, > textarea, > .selx, > .dp-wrap)) > label span{ display:inline !important; }
.oh-sdficha .field:not(:has(> input:not([type=hidden]), > select, > textarea, > .selx, > .dp-wrap)) > label span{ display:inline !important; }

/* 16.77 — PROFISSIONAIS RESPONSÁVEIS em grade compacta (prévia aprovada):
   colunas de ~185px (2 no modal do PC, 1 no celular); 12+ profissionais →
   a caixa trava em ~5 linhas e rola por dentro. */
#f_dent_multi .dresp-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(185px,1fr)); }
#f_dent_multi .dresp-grid .dresp-um{ border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent); border-right:1px solid color-mix(in srgb,var(--line) 55%,transparent); }
#f_dent_multi .dresp-grid .dresp-um:hover{ background:color-mix(in srgb,var(--blue) 6%,transparent); }
#f_dent_multi .dresp-grid:has(> :nth-child(13)){ max-height:236px; overflow-y:auto; }

/* 16.77 — "QUEM VAI ENTRAR?" e "ESCOLHA A CLÍNICA" lado a lado (prévia
   aprovada): a coluna única vira grade conforme a QUANTIDADE — até 4 perfis
   1 coluna (nada muda pra clínica pequena), 5–10 = 2 colunas, 11+ = 3 em
   tela larga. No celular segue 1 coluna. Se passar da tela, rola. */
html[data-oh-casca="google"] #usrCards2:has(> .usr2-card:nth-child(5)){
  display:grid!important; grid-template-columns:1fr 1fr; gap:12px!important; width:min(940px,94vw)!important;
}
html[data-oh-casca="google"] #clinicaSelectScreen .csCards:has(> .csCard:nth-child(5)){
  display:grid; grid-template-columns:1fr 1fr; gap:12px; width:min(940px,94vw)!important;
}
@media(min-width:1150px){
  html[data-oh-casca="google"] #usrCards2:has(> .usr2-card:nth-child(11)){ grid-template-columns:1fr 1fr 1fr; width:min(1180px,94vw)!important; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csCards:has(> .csCard:nth-child(11)){ grid-template-columns:1fr 1fr 1fr; width:min(1180px,94vw)!important; }
}
@media(max-width:700px){
  html[data-oh-casca="google"] #usrCards2:has(> .usr2-card:nth-child(5)){ grid-template-columns:1fr; width:min(560px,94vw)!important; }
  html[data-oh-casca="google"] #clinicaSelectScreen .csCards:has(> .csCard:nth-child(5)){ grid-template-columns:1fr; width:min(560px,94vw)!important; }
}
/* com muitos perfis a tela pode passar da altura: deixa rolar em vez de cortar */
html[data-oh-casca="google"] #usrMain:has(#usrCards2 > .usr2-card:nth-child(5)){
  overflow-y:auto; justify-content:flex-start; padding:96px 12px 40px;
}
html[data-oh-casca="google"] #clinicaSelectScreen{ overflow:auto!important; }

/* 16.37 — fade suave ao trocar o tema (claro↔escuro). A classe .oh-theme-anim
   é ligada só no toque do usuário e removida após ~260ms; anima apenas cores
   (nada de transform/opacity), então não trava. Respeita "reduzir movimento". */
html.oh-theme-anim, html.oh-theme-anim *{
  transition: background-color .2s ease, color .2s ease, border-color .2s ease, fill .2s ease, stroke .2s ease, box-shadow .2s ease !important;
}
@media (prefers-reduced-motion: reduce){
  html.oh-theme-anim, html.oh-theme-anim *{ transition:none !important; }
}

/* 16.39 — micro-transições leves (só transform/opacity, sem custo perceptível) */
@keyframes ohPaneIn{ from{ opacity:0; transform:translateY(5px); } to{ opacity:1; transform:none; } }
.ohf-pane.on{ animation:ohPaneIn .18s ease both; }
.oh-sdcons .ohf-pane.on{ animation:ohPaneIn .18s ease both; }
@keyframes ohPopIn{ from{ opacity:0; transform:scale(.96); } to{ opacity:1; transform:scale(1); } }
#agPop.ag-pop{ animation:ohPopIn .16s cubic-bezier(.34,1.28,.5,1) both; transform-origin:top center; }
/* linhas de lista/tabela e itens de menu ganham realce suave no hover */
.usr2-card, .csCard, .stat, .panel-row, .list-row{ transition: transform .16s ease, box-shadow .16s ease, background-color .16s ease; }
@media (prefers-reduced-motion: reduce){
  .ohf-pane.on, #agPop.ag-pop{ animation:none !important; }
}

/* 16.42 — quando a janela é redimensionada (vira "caixa"), empilha em coluna:
   o corpo preenche o espaço e o rodapé cola no fundo — sem aquele vão vazio. */
#overlay .modal[data-oh-box="1"], #overlay2 .modal[data-oh-box="1"]{ display:flex; flex-direction:column; }
.modal[data-oh-box="1"] .modal-head{ flex:0 0 auto; }
.modal[data-oh-box="1"] .modal-body{ flex:1 1 auto; }
.modal[data-oh-box="1"] .modal-foot{ flex:0 0 auto; }

/* ═══════════════════════════════════════════════════════════════════
   16.44 — Fase 1 das transições (leves: só transform/opacity/cor).
   Skeleton shimmer · lista em cascata · pílula do menu · check de sucesso.
   ═══════════════════════════════════════════════════════════════════ */
/* Skeleton shimmer */
.oh-sk{ height:14px; border-radius:8px; background:linear-gradient(90deg, rgba(255,255,255,.08) 25%, rgba(255,255,255,.20) 37%, rgba(255,255,255,.08) 63%); background-size:400% 100%; animation:ohShimmer 1.2s linear infinite; }
.oh-sk.dark{ background:linear-gradient(90deg,#eef2f7 25%,#e2e8f1 37%,#eef2f7 63%); background-size:400% 100%; }
.oh-skcard{ display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:12px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); margin-bottom:10px; }
.oh-skcard .oh-av{ width:40px; height:40px; border-radius:11px; flex:none; }
.oh-skcard .oh-lines{ flex:1; }
@keyframes ohShimmer{ 0%{ background-position:100% 0; } 100%{ background-position:-100% 0; } }
/* Lista em cascata */
@keyframes ohCascIn{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
.oh-casc{ animation:ohCascIn .34s cubic-bezier(.2,.7,.3,1) both; }
/* Pílula deslizante do menu lateral */
.nav{ position:relative; }
/* 1664 — DE VOLTA AO DESENHO ORIGINAL, com a cor pedida: o DESTAQUE do item
   ativo continua o azul de sempre (fundo nativo, intacto). A pílula segue
   atrás dele, de borda a borda, e a única parte visível — a SOBRA que espia
   à direita do botão (a "pontinha" da foto) — agora é ROXA, deslizando. */
.nav-pill{ position:absolute; left:0; right:0; z-index:0; pointer-events:none; border-radius:10px;
  background:linear-gradient(90deg,rgba(31,115,224,.0) 55%,#4E97F2 82%,#1F73E0); /* 1665 — azul da casa, a pedido */
  transition:top .30s cubic-bezier(.34,1.15,.4,1), height .30s cubic-bezier(.34,1.15,.4,1), opacity .2s ease; }
.nav.has-pill button{ z-index:1; }
/* 1666 — o NOME e o ÍCONE do item selecionado da sidebar usam o MESMO azul da
   pontinha deslizante (#4E97F2), a pedido do dono — no tema escuro, onde ele
   vive. Os itens não selecionados ficam como estão. */
html[data-theme="dark"] .side .nav button.active,
html[data-theme="dark"][data-oh-casca][data-oh-casca] .side .nav button.active{ color:#4E97F2!important; }
html[data-theme="dark"] .side .nav button.active svg{ color:#4E97F2!important; opacity:1!important; }
/* Check de sucesso no toast (quando a mensagem tem ✓/✔) */
.toast .oh-ok{ display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--green,#0E9F6E); margin-right:9px; vertical-align:-4px; transform:scale(0); animation:ohOkPop .38s cubic-bezier(.34,1.5,.5,1) forwards; }
.toast .oh-ok svg{ width:12px; height:12px; stroke:#fff; stroke-width:3.2; fill:none; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:26; stroke-dashoffset:26; animation:ohOkDraw .3s .14s ease forwards; }
@keyframes ohOkPop{ to{ transform:scale(1); } }
@keyframes ohOkDraw{ to{ stroke-dashoffset:0; } }
/* ===== 1646 — FASE 2 das transições ===== */
/* 3) botão: afunda ao clicar + GLOW de repouso na cor do próprio botão + SHEEN
   (faixa de luz varre ao tocar). Item 6 da prévia, agora completo. */
.btn{ transition:transform .12s cubic-bezier(.22,1,.36,1), box-shadow .2s cubic-bezier(.22,1,.36,1), background .15s ease, color .15s ease, border-color .15s ease; }
.btn:not(.ghost):not(.danger):active, .flx-addbtn:active{ transform:scale(.96); }
/* 1651 — o dono não quis o glow (halo) de repouso: removido de todos os botões.
   Ficou só o press (afundar) + o sheen (varredura de luz no toque). */
/* sheen — faixa de luz diagonal que atravessa o botão */
.oh-sheen{ position:absolute; top:0; bottom:0; left:-60%; width:45%; pointer-events:none; z-index:0;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent); transform:skewX(-18deg);
  animation:ohSheen .6s cubic-bezier(.3,.7,.4,1) forwards; }
@keyframes ohSheen{ to{ left:130%; } }
/* 2) fantasma que desliza entre as abas .oh-guia */
.oh-guia-ghost{ position:fixed; z-index:60; border-radius:8px; pointer-events:none; box-sizing:border-box;
  transition:left .3s cubic-bezier(.22,1,.36,1), top .3s cubic-bezier(.22,1,.36,1), width .3s cubic-bezier(.22,1,.36,1), height .3s cubic-bezier(.22,1,.36,1); }
/* 4) cards levantam do MESMO jeito (padrão único) — cartões de totais e atalhos */
.stat, .dv-act, .oh-lift{ transition:transform .18s cubic-bezier(.22,1,.36,1), box-shadow .18s cubic-bezier(.22,1,.36,1), border-color .18s cubic-bezier(.22,1,.36,1); }
.stat:hover, .dv-act:hover, .oh-lift:hover{ transform:translateY(-4px); box-shadow:0 12px 26px rgba(19,41,75,.12); border-color:var(--blue-line); }
@media (prefers-reduced-motion: reduce){
  .oh-sk,.oh-casc,.nav-pill,.toast .oh-ok,.toast .oh-ok svg{ animation:none !important; transition:none !important; }
  .btn,.btn:active,.oh-sheen,.oh-guia-ghost,.stat,.dv-act,.oh-lift{ animation:none !important; transition:none !important; transform:none !important; }
  .stat:hover,.dv-act:hover,.oh-lift:hover{ transform:none !important; box-shadow:none !important; }
}

/* ═══ 17.01 — MOBILE: menu de slot e pop-up da consulta viram FOLHA DE BAIXO
   (padrão do app), com alça e área segura. O posicionamento inline do
   desktop perde para os !important daqui só no celular. ═══ */
@media (max-width:880px){
  #agSlotMenu.ag-slotmenu, #agPop.ag-pop{
    position:fixed !important; left:0 !important; right:0 !important;
    top:auto !important; bottom:0 !important;
    width:100% !important; max-width:none !important; min-width:0 !important;
    border-radius:18px 18px 0 0 !important; border-left:none; border-right:none; border-bottom:none;
    max-height:78vh; overflow-y:auto;
    padding-bottom:calc(10px + env(safe-area-inset-bottom,0px)) !important;
    box-shadow:0 -14px 44px rgba(4,16,40,.35) !important;
    animation:ohFolhaSobe .18s ease both !important;
  }
  #agSlotMenu.ag-slotmenu::before, #agPop.ag-pop::before{
    content:""; display:block; width:44px; height:5px; border-radius:99px;
    background:color-mix(in srgb, var(--ink,#15233F) 18%, transparent);
    margin:8px auto 6px;
  }
  /* o cabeçalho colorido do pop-up já tem topo próprio — alça clara sobre ele */
  #agPop.ag-pop::before{ position:sticky; top:6px; z-index:2; background:rgba(255,255,255,.55); margin:6px auto -11px; }
}
@keyframes ohFolhaSobe{ from{ transform:translateY(24%); opacity:.6; } to{ transform:translateY(0); opacity:1; } }

/* ═══ 17.01 — iOS: campo com fonte <16px dispara ZOOM automático ao focar.
   No shell mobile, todo campo de digitação vai a 16px (o .field já fazia
   isso; agora vale também para busca de pacientes, data da agenda, buscas
   das folhas e selects soltos). ═══ */
@media (max-width:880px){
  input[type=text],input[type=search],input[type=date],input[type=time],input[type=tel],input[type=email],input[type=number],input[type=password],select,textarea{ font-size:16px !important; }
}

/* ═══ 17.03 — Primeiros passos (clínica nova) + Feito ✓ do Contatos do dia ═══ */
.pp-prog{ height:7px; border-radius:99px; background:color-mix(in srgb, var(--blue,#1F73E0) 10%, var(--bg,#F1F5FA)); overflow:hidden; margin:4px 0 12px; }
.pp-prog i{ display:block; height:100%; background:linear-gradient(90deg,#2BD0C0,var(--blue,#1F73E0)); border-radius:99px; transition:width .3s; }
.pp-passo{ display:flex; align-items:center; gap:12px; padding:10px 2px; border-top:1px solid color-mix(in srgb, var(--line,#D9E2F0) 60%, transparent); }
.pp-passo:first-of-type{ border-top:none; }
.pp-num{ width:26px; height:26px; border-radius:50%; flex:none; display:grid; place-items:center; font-size:12.5px; font-weight:800; border:1.6px solid var(--line,#D9E2F0); color:var(--muted,#6C7A93); background:var(--surface,#fff); }
.pp-num.ok{ background:var(--green,#0FA47A); border-color:var(--green,#0FA47A); color:#fff; }
.pp-tx{ flex:1; min-width:0; }
.pp-tx b{ display:block; font-size:13.5px; color:var(--ink,#15233F); }
.pp-tx i{ font-style:normal; font-size:12px; color:var(--muted,#6C7A93); }
.pp-tx.done b{ color:var(--muted,#6C7A93); text-decoration:line-through; }
.pp-feito{ flex:none; color:var(--green,#0FA47A); font-weight:800; font-size:12.5px; }
.pp-btn{ flex:none; background:var(--blue,#1F73E0); color:#fff; border:none; border-radius:9px; padding:8px 14px; font-weight:800; font-size:12.5px; cursor:pointer; font-family:inherit; }
.pp-x{ cursor:pointer; text-decoration:underline; }
.pp-opc{ font-size:12px; color:var(--muted,#6C7A93); padding-top:10px; border-top:1px solid color-mix(in srgb, var(--line,#D9E2F0) 60%, transparent); margin-top:4px; }
.pp-link{ color:var(--blue-700,#1559BD); font-weight:700; cursor:pointer; text-decoration:underline; }
.ctd-ok{ flex:none; background:var(--surface,#fff); border:1px solid var(--line,#D9E2F0); color:var(--muted,#6C7A93); border-radius:9px; padding:6px 10px; font-weight:800; font-size:11.5px; cursor:pointer; font-family:inherit; transition:.12s; }
.ctd-ok:hover{ border-color:var(--green,#0FA47A); color:var(--green,#0FA47A); }

/* ═══ 1712 — MOBILE FINO ═══════════════════════════════════════════════
   (a) Alvo de toque: itens e gatilhos dos seletores (selx/shx) nunca
       menores que 40px de altura no celular — dedo não erra mais.
   (b) Altura real do aparelho nos trechos que só tinham 100vh. ═══ */
@media(max-width:760px){
  .selx-item{ min-height:40px; }
  .selx-trigger{ min-height:44px; }
  .selx-pop .selx-itx input{ min-height:38px; }
  .btn.sm{ min-height:36px; }
}
.app{ min-height:100dvh; }
@media(min-width:761px){
  .app[data-shell="topo"]{ height:100dvh; max-height:100dvh; }
  .side{ height:100dvh; max-height:100dvh; }
}
#agendaDialItems,#estoqueDialItems{ max-height:calc(100dvh - 72px); }

/* ═══ 1714 — TOPBAR: fim do botão fantasma ═══════════════════════════
   O botão de sincronizar (17.01) embrulhava um pontinho que o topbar.js
   (1355) esconde SEMPRE — sobrava um vão clicável de 40px. Agora ele tem
   ícone de nuvem visível, pintado pela cor do status. E no CELULAR ele
   some: os 40px dele espremiam o cartão do título a largura zero e
   levavam a lupa junto — lá, o gesto de puxar-para-atualizar (17.12) e o
   avatar já cobrem a sincronização. */
@media(max-width:880px){
  #syncBtnTop{ display:none !important; }
  /* a lupa nunca mais fica sem espaço: o cartão da busca tem um mínimo */
  html[data-oh-casca="google"] .topbar-card{ min-width:46px !important; }
}
#syncBtnTop._syncpulse svg{ animation:ohSyncGira 1.1s linear infinite; }
@keyframes ohSyncGira{ from{ transform:rotate(0) } to{ transform:rotate(360deg) } }

/* ═══ 1714 — iPHONE NÃO DÁ MAIS ZOOM NOS CAMPOS ══════════════════════
   Os campos do padrão SD têm font-size:15px !important (16.33), que
   vencia por especificidade a regra mobile de 16px — e abaixo de 16px o
   iOS dá zoom automático ao focar. Mesmos seletores, dentro do media, com
   16px: empate de !important desempata por ordem — esta regra vence. */
@media(max-width:880px){
  .oh-sdcons .field > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .oh-sdcons .field > select, .oh-sdcons .field > textarea,
  .oh-sdcons .frow input:not([type=checkbox]):not([type=radio]), .oh-sdcons .frow select, .oh-sdcons .frow textarea,
  .oh-sdficha .field > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .oh-sdficha .field > select, .oh-sdficha .field > textarea,
  .oh-sdficha .frow input:not([type=checkbox]):not([type=radio]), .oh-sdficha .frow select, .oh-sdficha .frow textarea{
    font-size:16px !important;
  }
  /* buscas sem type= que escapavam da regra 17.01 */
  #pacSearch, #agfsQ{ font-size:16px !important; }
}

/* ═══ 1715 — ANAMNESE no desenho aprovado (prévia do dono) ═══════════
   Pergunta em linha + pílulas — / Não / Sim; detalhe desliza no "Sim";
   texto livre em card; contador de respondidas. ═══ */
.anm-prog{ font-size:11.5px; font-weight:800; background:var(--surface); border:1px solid var(--blue-line); border-radius:99px; padding:3px 10px; color:var(--blue-700); white-space:nowrap; flex:none; }
.anm-q{ display:flex; align-items:center; gap:14px; padding:11px 2px; border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent); }
.anm-q:last-of-type{ border-bottom:none; }
.anm-txt{ flex:1; font-size:13.8px; font-weight:600; color:var(--ink); line-height:1.45; }
.anm-sn{ display:inline-flex; background:#EEF2F7; border-radius:99px; padding:3px; gap:2px; flex:none; }
[data-theme="dark"] .anm-sn{ background:color-mix(in srgb,var(--blue) 14%,var(--surface)); }
.anm-p{ border:none; background:none; font-family:inherit; font-weight:800; font-size:12.5px; color:var(--ink-2); padding:6px 14px; border-radius:99px; cursor:pointer; transition:.15s; min-height:32px; }
.anm-p.on-sim{ background:var(--blue); color:#fff; box-shadow:0 3px 10px rgba(31,115,224,.3); }
.anm-p.on-nao, .anm-p.on-x{ background:var(--surface); color:var(--ink); box-shadow:0 1px 4px rgba(19,41,75,.18); }
.anm-det{ overflow:hidden; max-height:0; transition:max-height .22s ease; }
.anm-det.aberto{ max-height:80px; }
.anm-det input{ width:100%; margin:4px 0 10px; padding:11px 13px; border:1px solid var(--blue-line); border-radius:8px; font-size:13.5px; font-family:inherit; background:var(--blue-soft); color:var(--ink); }
.anm-livre{ margin:12px 0 6px; }
.anm-livre label{ display:block; font-size:12.5px; font-weight:700; color:var(--ink-2); margin-bottom:6px; line-height:1.4; }
.anm-livre textarea{ width:100%; min-height:56px; padding:12px 13px; border:1px solid var(--line); border-radius:8px; font-size:14px; font-family:inherit; resize:vertical; color:var(--ink); background:var(--surface); }
.anm-livre textarea:focus{ border-color:var(--blue); box-shadow:0 0 0 1px var(--blue); outline:none; }
.anm-num{ width:110px; flex:none; padding:9px 11px; border:1px solid var(--line); border-radius:8px; font-size:14px; font-family:inherit; }
.anm-sel{ max-width:230px; flex:none; padding:9px 11px; border:1px solid var(--line); border-radius:8px; font-size:13.5px; font-family:inherit; background:var(--surface); color:var(--ink); }
@media(max-width:600px){
  .anm-q{ flex-wrap:wrap; gap:8px; }
  .anm-sn{ margin-left:auto; }
  .anm-p{ min-height:38px; padding:7px 15px; }
  .anm-det input, .anm-livre textarea{ font-size:16px; }
}

/* ═══ 1716 — ALVOS DE TOQUE ≥40px no celular (auditoria) ══════════════
   Chips de intercorrência, botões Carimbos, ✕/med do alerta de saúde,
   consultas da visão mês, fechar das folhas e abas do financeiro. */
@media(max-width:880px){
  /* chips de intercorrência e Carimbos (inline styles nos templates → min-height vence) */
  .field [onclick^="_evIntChip"], .field button[onclick^="_evCarimbos"]{ min-height:40px !important; padding-top:8px !important; padding-bottom:8px !important; }
  .saude-chip .sc-x{ min-width:40px !important; min-height:40px !important; display:inline-grid; place-items:center; }
  .sc-med{ min-height:38px !important; padding:8px 13px !important; }
  .gw-mes-chip{ min-height:34px; padding-top:6px; padding-bottom:6px; }
  #agFiltroSheet .agfs-x{ width:40px !important; height:40px !important; }
  .selx-shx{ width:40px !important; height:40px !important; }
  .fintab-chip{ min-height:38px; padding-top:8px !important; padding-bottom:8px !important; }
}

/* ═══ 1716 — folhas mobile medem a tela REAL (dvh) ═══ */
@media(max-width:880px){
  #agSlotMenu, #agPop{ max-height:78dvh !important; }
  .agfs-sheet{ max-height:76dvh !important; }
}
@media(max-width:520px){
  #pchDock{ height:86dvh !important; }
}

/* ═══ 1718 — FILTROS DE PACIENTES estilo Gmail (prévia aprovada) ══════
   Botão de opções DENTRO da barra de busca + folha com os 4 filtros.
   No celular os chips somem (a folha é o caminho) e os cards ficam
   enxutos: avatar + nome + última consulta. ═══ */
.pac-search-sm{ position:relative; }
.pac-tune{ border:none; background:var(--blue-soft); width:34px; height:34px; border-radius:50%; display:grid; place-items:center; cursor:pointer; flex:none; position:relative; margin-left:4px; }
.pac-tune svg{ width:17px; height:17px; stroke:var(--blue-700); }
.pac-tune-n{ position:absolute; top:-4px; right:-4px; background:var(--blue); color:#fff; font-size:9.5px; font-weight:800; border-radius:99px; padding:1px 5px; line-height:1.35; }
#pacFiltroSheet{ position:fixed; inset:0; z-index:820; font-family:var(--font); }
#pacFiltroSheet .pfs-veu{ position:absolute; inset:0; background:rgba(6,13,26,.45); animation:agfsVeu .18s ease; }
#pacFiltroSheet .pfs-sheet{ position:absolute; left:0; right:0; bottom:0; background:var(--surface,#fff); border-radius:20px 20px 0 0; box-shadow:0 -14px 44px rgba(10,25,60,.28); padding:10px 16px calc(16px + env(safe-area-inset-bottom,0px)); max-height:80dvh; display:flex; flex-direction:column; animation:agfsUp .22s cubic-bezier(.34,1.1,.5,1); }
@media(min-width:761px){
  /* no PC a folha vira um cartão central (não uma folha de baixo) */
  #pacFiltroSheet .pfs-sheet{ left:50%; right:auto; bottom:auto; top:50%; transform:translate(-50%,-50%); width:520px; border-radius:18px; max-height:76vh; max-height:76dvh; }
  #pacFiltroSheet .pfs-alca{ display:none; }
}
#pacFiltroSheet .pfs-alca{ width:42px; height:4px; border-radius:3px; background:color-mix(in srgb,var(--ink) 16%,transparent); margin:2px auto 10px; flex:none; }
#pacFiltroSheet .pfs-h{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; flex:none; }
#pacFiltroSheet .pfs-h b{ font-size:16px; color:var(--ink); }
#pacFiltroSheet .pfs-x{ width:34px; height:34px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-size:17px; cursor:pointer; }
#pacFiltroSheet .pfs-corpo{ overflow-y:auto; flex:1; min-height:0; }
#pacFiltroSheet .pfs-grp{ margin-bottom:14px; }
#pacFiltroSheet .pfs-rot{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--blue-700); margin-bottom:7px; }
#pacFiltroSheet .pfs-ops{ display:flex; flex-wrap:wrap; gap:7px; }
#pacFiltroSheet .pfs-op{ border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:9px 15px; font-size:13px; font-weight:700; color:var(--ink-2); cursor:pointer; font-family:inherit; min-height:38px; }
#pacFiltroSheet .pfs-op.on{ background:var(--blue); border-color:var(--blue); color:#fff; }
#pacFiltroSheet .pfs-acts{ display:flex; gap:9px; margin-top:10px; flex:none; }
#pacFiltroSheet .pfs-limpar{ flex:none; border:1px solid var(--line); background:var(--surface); border-radius:12px; padding:12px 17px; font-weight:800; font-size:13px; color:var(--ink-2); cursor:pointer; font-family:inherit; }
#pacFiltroSheet .pfs-aplicar{ flex:1; border:none; background:var(--blue); color:#fff; border-radius:12px; padding:12px; font-weight:800; font-size:14px; cursor:pointer; font-family:inherit; }
@media(max-width:760px){
  /* chips de filtro saem — o botão da busca é o caminho */
  .pac-filtros-topo > .pac-sit{ display:none !important; }
  .pac-filtros-topo > .pac-sit-btn:not(.pac-gerar-btn):not(.pac-gear-btn):not(.pac-docs-btn){ display:none !important; }
  /* cards enxutos: avatar + nome + última consulta (prévia aprovada) */
  .pac-row .pac-esp .tag, .pac-row .pac-esp .pac-conv-tag{ display:none !important; }
  .pac-row .pac-meta{ display:none !important; }
  .pac-tune{ width:40px; height:40px; }
}

/* 1718b — o .search genérico posiciona QUALQUER svg como lupa absoluta e
   estica o input a 100%: dentro da barra de pacientes isso engolia o botão
   de opções. Escopo forte devolve o fluxo. */
.pac-filtros .pac-search-sm .pac-tune{ flex:0 0 auto; position:relative; }
.pac-filtros .pac-search-sm .pac-tune svg{ position:static !important; transform:none !important; left:auto !important; top:auto !important; width:17px; height:17px; }
.pac-filtros .pac-search-sm input{ width:auto !important; padding:4px 2px !important; }

/* ═══ 1719 — AGENDA MOBILE "MENOS É MAIS" (prévia aprovada) ═══════════
   Barra de UMA linha (‹ data › + ⋮), chip Hoje só fora de hoje, folha do
   ⋮, e cards do dia enxutos: hora + nome (+ ✓ confirmada) + WhatsApp. */
.agmin-bar{ display:flex !important; align-items:center; gap:6px; padding:8px 10px !important; }
.agmin-seta{ width:38px; height:38px; border-radius:50%; border:none; background:var(--surface); box-shadow:0 1px 4px rgba(19,41,75,.12); color:var(--ink-2); cursor:pointer; flex:none; display:grid; place-items:center; }
.agmin-dpwrap{ flex:1; min-width:0; }
.agmin-data{ width:100%; border:none; background:none; font-family:inherit; font-weight:800; font-size:15px; color:var(--ink); cursor:pointer; line-height:1.2; padding:2px 0; text-align:center; }
.agmin-data small{ display:block; font-weight:600; font-size:10.5px; color:var(--muted); }
.agmin-opc{ width:40px; height:40px; border-radius:50%; border:none; background:var(--blue-soft); display:grid; place-items:center; cursor:pointer; flex:none; position:relative; }
.agmin-opc svg{ width:19px; height:19px; stroke:var(--blue-700); }
.agmin-opc-n{ position:absolute; top:-3px; right:-3px; background:var(--red,#E5484D); color:#fff; font-size:9.5px; font-weight:800; border-radius:99px; padding:1px 5px; line-height:1.35; }
.agmin-hoje-wrap{ text-align:center; margin:-2px 0 4px; }
.agmin-hoje{ display:inline-flex; align-items:center; gap:5px; background:var(--blue-soft); color:var(--blue-700); border:1px solid var(--blue-line); border-radius:99px; padding:5px 14px; font-size:12px; font-weight:800; font-family:inherit; cursor:pointer; min-height:32px; }
/* folha do ⋮ */
#agAcoesSheet{ position:fixed; inset:0; z-index:820; font-family:var(--font); }
#agAcoesSheet .ags-veu{ position:absolute; inset:0; background:rgba(6,13,26,.45); animation:agfsVeu .18s ease; }
#agAcoesSheet .ags-sheet{ position:absolute; left:0; right:0; bottom:0; background:var(--surface,#fff); border-radius:20px 20px 0 0; box-shadow:0 -14px 44px rgba(10,25,60,.28); padding:8px 14px calc(16px + env(safe-area-inset-bottom,0px)); animation:agfsUp .22s cubic-bezier(.34,1.1,.5,1); }
#agAcoesSheet .ags-alca{ width:42px; height:4px; border-radius:3px; background:color-mix(in srgb,var(--ink) 16%,transparent); margin:2px auto 8px; }
#agAcoesSheet .ags-it{ display:flex; align-items:center; gap:12px; width:100%; border:none; background:none; font-family:inherit; font-size:14.5px; font-weight:700; color:var(--ink); padding:12px 6px; border-radius:11px; cursor:pointer; text-align:left; min-height:44px; }
#agAcoesSheet .ags-it:active{ background:var(--blue-soft); }
#agAcoesSheet .ags-ic{ width:20px; height:20px; flex:none; color:var(--blue-700); display:inline-flex; }
#agAcoesSheet .ags-ic svg{ width:100%; height:100%; }
#agAcoesSheet .ags-sub{ margin-left:auto; font-size:11.5px; color:var(--muted); font-weight:600; text-align:right; }
#agAcoesSheet .ags-grp{ padding:6px 6px 2px; }
#agAcoesSheet .ags-rot{ font-size:11px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--blue-700); margin-bottom:7px; }
#agAcoesSheet .ags-pills{ display:flex; flex-wrap:wrap; gap:7px; }
#agAcoesSheet .ags-pill{ border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:9px 16px; font-size:13px; font-weight:700; color:var(--ink-2); cursor:pointer; font-family:inherit; min-height:38px; }
#agAcoesSheet .ags-pill.on{ background:var(--blue); border-color:var(--blue); color:#fff; }
#agAcoesSheet .ags-div{ height:1px; background:var(--line); margin:6px 0; }
/* cards do dia enxutos no celular */
@media(max-width:880px){
  .agl-card .agl-meta, .agl-card .agl-proc, .agl-card .agl-obs{ display:none !important; }
  .agl-card .agl-body > div[style^="margin-top:5px"]{ display:none !important; } /* catTags */
  .agl-card .agl-h2{ display:none !important; } /* hora de fim — só a de início */
  .agl-okmin{ color:var(--green,#0FA47A); font-weight:900; margin-left:6px; flex:none; }
}
@media(min-width:881px){ .agl-okmin{ display:none; } }

/* ═══ 1720 — INÍCIO MOBILE "menos é mais" (prévia aprovada) ═══════════ */
.ohm-hero{ display:flex; align-items:center; gap:11px; padding:2px 4px 12px; }
.ohm-av{ width:42px; height:42px; border-radius:50%; background:linear-gradient(135deg,var(--blue),var(--blue-700)); color:#fff; display:grid; place-items:center; font-weight:800; font-size:16px; flex:none; }
.ohm-hero b{ font-size:16px; display:block; line-height:1.25; color:var(--ink); }
.ohm-hero small{ color:var(--muted); font-size:12px; }
.ohm-card{ padding:13px 15px; margin-bottom:10px; }
.ohm-ct{ font-weight:800; font-size:13.5px; display:flex; align-items:center; gap:7px; margin-bottom:6px; color:var(--ink); }
.ohm-ct a{ margin-left:auto; font-size:11.5px; color:var(--blue-700); font-weight:700; cursor:pointer; }
.ohm-prox{ display:flex; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent); cursor:pointer; }
.ohm-prox:last-child{ border-bottom:none; }
.ohm-prox .h{ font-weight:800; color:var(--blue-700); font-size:13px; flex:none; width:46px; }
.ohm-prox .n{ font-weight:700; font-size:13.5px; flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--ink); }
.ohm-prox .s{ color:var(--green); font-weight:900; flex:none; }
.oh-dobra{ background:var(--surface); border:1px solid var(--line); border-radius:14px; margin-bottom:8px; overflow:hidden; box-shadow:var(--shadow); }
.oh-dobra summary{ list-style:none; display:flex; align-items:center; gap:9px; padding:13px 15px; font-weight:800; font-size:13.5px; cursor:pointer; min-height:48px; color:var(--ink); }
.oh-dobra summary::-webkit-details-marker{ display:none; }
.oh-dobra .ohd-ic{ flex:none; }
.oh-dobra .ohd-tx{ flex:1; min-width:0; }
.oh-dobra .ohd-sub{ font-size:11.5px; color:var(--muted); font-weight:600; }
.oh-dobra .ohd-cv{ color:var(--muted); transition:.18s; flex:none; }
.oh-dobra[open] .ohd-cv{ transform:rotate(180deg); }
.oh-dobra .ohd-corpo{ padding:0 6px 8px; }
/* dentro da dobra, os cards de sempre perdem a moldura dupla */
.oh-dobra .ohd-corpo .panel{ border:none; box-shadow:none; margin:0; }
.ohm-min .inicio-tiles{ margin-bottom:10px; }

/* ═══ 1721 — FICHA DO PACIENTE MOBILE "menos é mais" (prévia aprovada) ═
   Cabeçalho fixo e enxuto, 3 ações grandes + ⋮, alertas sempre à mostra
   (regra da casa), cartão Pessoa em dobra. PC intocado. ═══ */
@media(max-width:880px){
  .ficha-head{ position:sticky; top:0; z-index:20; background:var(--surface); box-shadow:0 4px 14px rgba(19,41,75,.08); border-radius:0 0 16px 16px; }
  /* some o que a prévia tirou do cabeçalho: fone-texto, selos de especialidade,
     e os botões pequenos do PC (WhatsApp/Agendar/Editar/Mais) — as ações
     grandes assumem; o Mais renasce como ⋮ grande na fileira nova. */
  .ficha-head .fh-sub{ display:none !important; }
  .ficha-head .fh-acts > *:not(.fh-saldo){ display:none !important; }
  .fh-acoes-m{ display:flex; gap:8px; padding:10px 12px 4px; }
  .fhm-ac{ flex:1; border:none; border-radius:11px; padding:9px 4px; font-size:11.5px; font-weight:800; font-family:inherit; cursor:pointer; display:flex; flex-direction:column; align-items:center; gap:4px; min-height:52px; }
  .fhm-ac.wa{ background:var(--green-soft); color:var(--green); }
  .fhm-ac.agd{ background:var(--blue-soft); color:var(--blue-700); }
  .fhm-ac.reg{ background:#EEE9FB; color:#6B46C1; }
  /* o ⋮ (menu Mais de sempre) vira o quarto botão, quadrado */
  .fhm-mais{ flex:0 0 52px; display:flex; }
  .fhm-mais > *{ width:100%; }
  .fhm-mais button{ width:100% !important; height:100% !important; min-height:52px; border:none !important; border-radius:11px !important; background:var(--bg) !important; color:var(--ink-2) !important; display:grid !important; place-items:center; }
}
@media(min-width:881px){ .fh-acoes-m{ display:none !important; } }

/* ═══ 1722 — FINANCEIRO MOBILE + PACIENTES rodada 2 (prévia aprovada) ═ */
.finm-saldo{ background:linear-gradient(135deg,var(--green,#0FA47A),#0B8163); color:#fff; border-radius:14px; padding:13px 16px; margin:2px 0 9px; }
.finm-saldo.neg{ background:linear-gradient(135deg,#D8392B,#A82A1F); }
.finm-saldo b{ font-size:22px; display:block; line-height:1.25; }
.finm-saldo small{ opacity:.88; font-size:11.5px; display:block; }
.finm-duo{ display:flex; gap:8px; margin-bottom:9px; }
.finm-duo button{ flex:1; border:none; border-radius:11px; padding:12px 4px; font-weight:800; font-size:13px; font-family:inherit; cursor:pointer; min-height:48px; }
.finm-rec{ background:var(--green-soft); color:var(--green); }
.finm-desp{ background:var(--red-soft,#FCE7E4); color:var(--red,#D8392B); }
.finm-secbar{ display:flex; align-items:center; gap:9px; width:100%; background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin-bottom:10px; font-weight:800; font-size:13.5px; font-family:inherit; color:var(--ink); cursor:pointer; min-height:46px; }
.finm-secic{ width:17px; height:17px; color:var(--blue-700); display:inline-flex; flex:none; }
.finm-secic svg{ width:100%; height:100%; }
.finm-troca{ margin-left:auto; font-size:11.5px; color:var(--blue-700); font-weight:700; }
#finSecSheet{ position:fixed; inset:0; z-index:820; font-family:var(--font); }
#finSecSheet .fins-veu{ position:absolute; inset:0; background:rgba(6,13,26,.45); animation:agfsVeu .18s ease; }
#finSecSheet .fins-sheet{ position:absolute; left:0; right:0; bottom:0; background:var(--surface); border-radius:20px 20px 0 0; box-shadow:0 -14px 44px rgba(10,25,60,.28); padding:8px 14px calc(16px + env(safe-area-inset-bottom,0px)); animation:agfsUp .22s cubic-bezier(.34,1.1,.5,1); max-height:80dvh; overflow-y:auto; }
#finSecSheet .fins-alca{ width:42px; height:4px; border-radius:3px; background:color-mix(in srgb,var(--ink) 16%,transparent); margin:2px auto 8px; }
#finSecSheet .fins-h{ display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
#finSecSheet .fins-h b{ font-size:16px; }
#finSecSheet .fins-x{ width:34px; height:34px; border-radius:9px; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-size:17px; cursor:pointer; }
#finSecSheet .fins-it{ display:flex; align-items:center; gap:12px; width:100%; border:none; background:none; font-family:inherit; padding:11px 6px; border-radius:11px; cursor:pointer; text-align:left; min-height:50px; }
#finSecSheet .fins-it.on{ background:var(--blue-soft); }
#finSecSheet .fins-ic{ width:20px; height:20px; flex:none; color:var(--blue-700); display:inline-flex; }
#finSecSheet .fins-ic svg{ width:100%; height:100%; }
#finSecSheet .fins-tx{ flex:1; font-weight:800; font-size:14.5px; color:var(--ink); }
#finSecSheet .fins-tx small{ display:block; font-weight:600; font-size:11.5px; color:var(--muted); }
#finSecSheet .fins-ck{ color:var(--blue-700); font-weight:900; }
@media(max-width:880px){
  /* Pacientes rodada 2: ferramentas e o título/total saem da tela (vivem na folha do ≡ e no placeholder) */
  .pac-filtros-right > *:not(.pac-search-sm){ display:none !important; }
  .pac-filtros-right > .pac-sit:has(.pac-sit-pop){ display:block !important; }
  .pac-grp-tit{ display:none !important; }
}

/* ═══ 1723 — MENOS É MAIS no PC (auditoria sobre os prints reais) ═════ */
/* Recortes rápidos em chips (uma linha) */
.pac-rec-chips{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; padding:2px 0 10px; }
.pac-rec-chip{ border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:8px 14px; font-size:12.5px; font-weight:700; color:var(--ink-2); cursor:pointer; font-family:inherit; display:inline-flex; align-items:center; gap:6px; min-height:36px; }
.pac-rec-chip b{ color:var(--rcc,var(--blue-700)); font-weight:800; }
.pac-rec-chip:hover{ border-color:color-mix(in srgb,var(--rcc,var(--blue)) 45%,var(--line)); }
/* Versículo fundido vira LINHA discreta no PC (a caixa colorida era um
   segundo cartão dentro do hero) — a cor litúrgica vive no filete e no selo */
@media(min-width:881px){
  .hero-vers.com-lit{ margin-top:10px; padding:7px 0 0 12px; border-radius:0; background:none !important; border-top:1px solid var(--line) !important; border-left:3px solid var(--hvlit,var(--line)); }
  .hero-vers.com-lit .hv-tx{ flex-direction:row; align-items:baseline; gap:8px; flex-wrap:wrap; }
  .hero-vers.com-lit .hv-aspa{ display:none; }
}

/* ═══ 1724 — reforma da ficha "menos é mais" (prévia aprovada) ═══ */
/* Faixa de alertas clicável: o convite discreto no fim da linha */
.fh-alertas .fh-alerta-ver{ margin-left:auto; flex:none; font-size:11px; font-weight:800; color:#B42318; opacity:.75; white-space:nowrap; }
.fh-alertas:hover .fh-alerta-ver{ opacity:1; text-decoration:underline; }
/* Dobras da ficha (Rotina): mesmas .oh-dobra do Início, com respiro próprio */
.fi-dobra{ margin-bottom:10px; }
.fi-dobra .ohd-corpo{ padding:0 10px 10px; }
.fi-dobra .ohd-corpo .panel{ border:none; box-shadow:none; margin:0; }
/* Filtros de Tratamentos numa linha só */
.trat-tool{ display:flex; align-items:center; gap:8px; }
.trat-tool .esp-chips{ margin:0; padding:0; border:none; }

/* ═══ 1725 — "menos é mais" r2: Análises · Estoque · Funil (prévia aprovada) ═══ */
/* Mini-tiles de KPI numa linha (rolável no celular) */
.ana-kpis{ display:flex; align-items:center; gap:8px; overflow-x:auto; padding:2px 0 6px; margin-bottom:10px; scrollbar-width:thin; }
.ana-kt{ flex:none; background:var(--surface); border:1px solid var(--line); border-radius:11px; padding:7px 13px; box-shadow:var(--shadow); min-width:0; }
.ana-kt b{ display:block; font-size:15.5px; font-weight:800; color:var(--ink); line-height:1.15; white-space:nowrap; }
.ana-kt span{ display:block; font-size:10.5px; font-weight:700; color:var(--muted); white-space:nowrap; margin-top:1px; }
.ana-kt.kt-g b{ color:var(--green); }
.ana-kt.kt-r b{ color:var(--red); }
.ana-kt.kt-a b{ color:var(--amber); }
.ana-kt.kt-b b{ color:var(--blue-700); }
.ana-kt-sel{ flex:none; margin-left:auto; display:inline-flex; align-items:center; }
.ana-kpis .ana-kt-sel .ana-anosel{ display:inline-flex; align-items:center; gap:4px; }
/* Estoque: topo numa linha (toggle + mini-tiles + botão) */
.est-topo-min{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:10px; }
.est-topo-min .ana-kpis{ margin-bottom:0; padding-bottom:2px; flex:1; min-width:200px; }
.est-topo-min .est-topo-btn{ flex:none; margin-left:auto; }
.est-tool-min{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.est-tool-min .search{ flex:1; min-width:170px; }
/* Funil: coluna vazia colapsada — o board é GRID, então a largura vem do
   template inline (funil.js). Aqui: o visual estreito + dropzone destacado. */
.funil-col.funil-col-min{ min-height:200px; padding:10px 4px; overflow:hidden; }
.funil-col.funil-col-min .funil-colh{ flex-direction:column; gap:7px; align-items:center; }
.funil-col.funil-col-min .funil-colh .t{ writing-mode:vertical-rl; transform:rotate(180deg); font-size:11.5px; letter-spacing:.3px; white-space:nowrap; }
.funil-col.funil-col-min .funil-sub, .funil-col.funil-col-min .funil-sum, .funil-col.funil-col-min .funil-body{ display:none; }
.funil-col.funil-col-min.over{ outline:2px dashed var(--blue); outline-offset:-4px; background:var(--blue-soft); }
@media (max-width:820px){
  .funil-col.funil-col-min{ min-height:0; padding:8px 12px; }
  .funil-col.funil-col-min .funil-colh{ flex-direction:row; }
  .funil-col.funil-col-min .funil-colh .t{ writing-mode:horizontal-tb; transform:none; }
}

/* 1729 — cinto do fantasma da lupa: no celular o painel de resultados NUNCA
   renderiza dentro do cartão recolhido — só com a busca expandida. */
@media (max-width:760px){
  .topbar-card:not(.buscando) #buscaDrop{ display:none !important; }
}

/* ═══ 1729 — Turnos + consertos (prévia aprovada) ═══ */
/* Faixa de turno na lista do Dia (celular) */
.agl-turno{ display:flex; align-items:center; gap:8px; margin:10px 2px 4px; padding:7px 12px; border-radius:11px; font-size:11.5px; font-weight:800; letter-spacing:.3px; color:var(--tcor,#1F73E0); background:color-mix(in srgb, var(--tcor,#1F73E0) 10%, var(--surface)); border:1px solid color-mix(in srgb, var(--tcor,#1F73E0) 28%, transparent); }
.agl-turno .aglt-dot{ width:8px; height:8px; border-radius:50%; background:var(--tcor,#1F73E0); flex:none; }
.agl-turno .aglt-h{ margin-left:auto; font-weight:700; color:var(--muted); letter-spacing:0; }
/* rodapé vazio de modal não ocupa espaço */
#mFoot:empty, #mFoot2:empty{ display:none !important; padding:0 !important; border:none !important; }

/* 1730 — pontas do cabeçalho azul nas janelas do celular (print do dono):
   o cabeçalho tinha raio de PC (13px) dentro do bottom-sheet de raio 20px —
   as quinas azuis vazavam. Agora quem recorta é a janela (overflow) e o
   cabeçalho acompanha o raio do sheet. */
@media (max-width:880px){
  html[data-oh-casca="google"] .modal{ overflow:hidden; }
  html[data-oh-casca="google"] .modal-head{ border-radius:20px 20px 0 0 !important; }
}

/* 1733 — BLINDAGEM do menu Ações de Pacientes (print do dono: fundo vazando
   e itens espaçados). Nenhuma regra nossa causa aquilo — o padrão é cache
   velho do service worker — mas o menu agora é imune a qualquer tema/modo:
   fundo SEMPRE opaco, itens colados, acima de qualquer linha da lista. */
.pac-menu-pop.show{ background:var(--surface) !important; display:block !important; gap:0 !important; z-index:220 !important; box-shadow:0 14px 40px rgba(19,41,75,.35) !important; }
.pac-menu-pop.show button{ margin:0 !important; }
[data-theme=dark] .pac-menu-pop.show{ background:#131E32 !important; border-color:var(--blue-line) !important; }

/* 1734/1735/1737 — lixeira direta na linha de Pacientes (menu ⋯ e ícones de
   hover expurgados). 1737: o bloco vermelho sólido "chamava atenção demais"
   (dono) — virou o traje discreto do X das janelas: ícone vermelho, fundo
   suave, borda leve. Continua inconfundível, sem gritar. */
.pac-ic.pac-ic-del{ color:var(--red,#DC2626) !important; background:var(--red-soft,#FEF2F2) !important; border:1.5px solid var(--red-line,#F3C9C4); border-radius:9px; width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center; }
.pac-ic.pac-ic-del:hover{ color:#fff !important; background:var(--red,#DC2626) !important; border-color:var(--red,#DC2626); }
[data-theme=dark] .pac-ic.pac-ic-del{ background:rgba(220,38,38,.12) !important; border-color:rgba(220,38,38,.4); }

/* 1735 — filete/pílula da sidebar RECOLHIDA (print do dono): a pílula era
   dimensionada pra lateral aberta e vazava um borrão azul ao lado do ícone.
   No modo recolhido o destaque do ícone ativo já basta — a pílula some. */
.app.compact .nav-pill{ display:none !important; }

/* 1736/1739 — Hoje DENTRO da barra da agenda mobile: sem ícone, sempre
   visível (apagado quando já é hoje) e a barra em GRADE simétrica —
   [Hoje 46px][‹ 34px][data 1fr centrada][› 34px][⋮ 46px]. */
.agmin-bar.agmin-grade{ display:grid !important; grid-template-columns:46px 34px 1fr 34px 46px; gap:5px; align-items:center; padding:8px 8px !important; }
.agmin-hoje-in{ margin:0; padding:4px 0; min-height:34px; width:46px; font-size:11.5px; justify-content:center; }
.agmin-hoje-in.off{ opacity:.4; pointer-events:none; }
.agmin-bar.agmin-grade .agmin-seta{ width:34px; height:34px; }
.agmin-bar.agmin-grade .agmin-opc{ justify-self:center; }
.agmin-bar.agmin-grade .agmin-dpwrap{ min-width:0; }

/* ═══ 1743 — LATERAL FIEL AO SIMPLES DENTAL (prévia 4, APROVADO). Três
   ordens do dono: ① itens em tinta quase-preta, mais definida; ② o ativo
   marcado SÓ pelo azul — morrem o tracinho da esquerda (::before) e a
   pontinha deslizante (.nav-pill da 1664/1665), a pílula fica
   arredondada dos DOIS lados; ③ a mesma tinta no mini-calendário, no
   bloco do plano e na Lixeira. Fonte 13,5 → 15px, ícones 19 → 21px, mais
   respiro. Modo escuro: overrides devolvem a tinta clara do tema. ═══ */
html[data-oh-casca="google"] .side .nav{ gap:6px!important; }
html[data-oh-casca="google"] .side .nav button{ color:#1C2330!important; padding:11px 12px!important; gap:15px!important; border-radius:12px!important; }
html[data-oh-casca="google"] .side .nav .nav-lbl{ font-size:15px!important; font-weight:600!important; }
html[data-oh-casca="google"] .side .nav button svg{ width:21px!important; height:21px!important; opacity:.92!important; }
html[data-oh-casca="google"] .side .navg-head{ color:#1C2330!important; padding:11px 12px!important; gap:15px!important; font-size:15px!important; font-weight:600!important; border-radius:12px!important; }
html[data-oh-casca="google"] .side .navg-head>svg:first-child{ width:21px!important; height:21px!important; opacity:.92!important; }
html[data-oh-casca="google"] .side .navg-head:hover{ background:color-mix(in srgb,var(--ink) 6%,transparent)!important; color:#1C2330!important; }
html[data-oh-casca="google"] .side .navg-chevbtn{ color:var(--ink-2)!important; }
html[data-oh-casca="google"] .side .navg-chevbtn:hover{ background:color-mix(in srgb,var(--ink) 8%,transparent)!important; }
html[data-oh-casca="google"] .side .navg-kids{ border-left-color:var(--line)!important; }
/* ② só o azul: pílula suave arredondada — sem traço, sem pontinha */
html[data-oh-casca="google"][data-oh-casca][data-oh-casca][data-oh-casca] .side .nav button.active::before{ display:none!important; content:none!important; }
html[data-oh-casca="google"] .nav-pill{ display:none!important; }
/* ③ calendário, plano e Lixeira na mesma tinta */
html[data-oh-casca="google"] .side-cal-nav{ color:#1C2330!important; }
html[data-oh-casca="google"] .side-cal-day{ color:#1C2330!important; font-weight:600; }
html[data-oh-casca="google"] .side-cal-day.sel{ color:#fff!important; }
html[data-oh-casca="google"] .side-cal-dow{ color:var(--muted)!important; }
html[data-oh-casca="google"] .side-store{ color:var(--ink-2)!important; }
html[data-oh-casca="google"] .side-store-nome{ color:#1C2330!important; }
html[data-oh-casca="google"] .side-lix{ color:#1C2330!important; font-size:15px!important; }
html[data-oh-casca="google"] .side-lix svg{ width:21px!important; height:21px!important; opacity:.92!important; }
/* modo escuro: a tinta quase-preta não serve no fundo escuro — volta a clara do tema */
html[data-theme="dark"][data-oh-casca="google"] .side .nav button,
html[data-theme="dark"][data-oh-casca="google"] .side .navg-head,
html[data-theme="dark"][data-oh-casca="google"] .side .navg-head:hover,
html[data-theme="dark"][data-oh-casca="google"] .side-cal-nav,
html[data-theme="dark"][data-oh-casca="google"] .side-cal-day,
html[data-theme="dark"][data-oh-casca="google"] .side-store-nome,
html[data-theme="dark"][data-oh-casca="google"] .side-lix{ color:var(--ink)!important; }
html[data-theme="dark"][data-oh-casca="google"] .side-cal-day.sel{ color:#fff!important; }

/* ═══ 1754 — CONFIRMAÇÃO DA EMISSÃO DE NFS-e ═══════════════════════════
   Três linhas de conferência (paciente, valor, código), a alíquota
   editável e o ISS calculado ao lado. Nada de tabela: são três pares
   rótulo/valor, e tabela em modal aperta no celular da recepção. */
.nfemi-linha{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.nfemi-linha span{color:var(--muted)}
.nfemi-linha b{text-align:right;min-width:0;word-break:break-word}
.nfemi-iss{display:flex;align-items:center;height:38px;padding:0 12px;border-radius:9px;
  background:var(--bg);border:1.5px solid var(--line);font-weight:800;font-size:15px}
.nfemi-guardar{display:flex;align-items:center;gap:8px;margin-top:10px;
  font-size:13px;color:var(--ink);cursor:pointer}
.nfemi-guardar input{width:16px;height:16px;cursor:pointer}

/* ═══ 1754 — ALÍQUOTA DO ISS (Configuração Fiscal) ═════════════════════
   A conta do Simples mostrada por inteiro: o número grande, e embaixo as
   quatro linhas que explicam de onde ele saiu. Sem tabela — em modal e
   no celular, tabela vira rolagem lateral. */
.nfaliq{margin-top:14px;padding:14px;border:1.5px solid var(--line);border-radius:12px;background:var(--bg)}
.nfaliq-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.nfaliq-head b{font-size:13px}
.nfaliq-chips{display:flex;gap:6px}
.nfaliq-chip{border:1.5px solid var(--line);background:var(--card);color:var(--muted);
  border-radius:99px;padding:5px 13px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit}
.nfaliq-chip.on{background:var(--blue-soft,#E7F1FE);border-color:var(--blue,#2E86F0);color:var(--blue,#1B63C4)}
.nfaliq-num{font-size:30px;font-weight:900;line-height:1.1;font-variant-numeric:tabular-nums}
.nfaliq-num small{display:block;font-size:11.5px;font-weight:700;color:var(--muted);margin-top:2px}
.nfaliq-conta{margin-top:10px;display:grid;gap:6px}
.nfaliq-conta > div{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;
  border-bottom:1px dashed var(--line);padding-bottom:5px}
.nfaliq-conta span{color:var(--muted)}
.nfaliq-conta b{text-align:right;font-weight:800}
.nfaliq-conta i{font-style:normal;font-weight:600;color:var(--muted);font-size:11px}
.nfemi-origem{margin-top:8px;font-size:11.5px;color:var(--muted);line-height:1.45}
.nfemi-auto{background:var(--blue-soft,#E7F1FE);color:var(--blue,#1B63C4);border-radius:99px;
  padding:1px 7px;font-size:10px;font-weight:800;vertical-align:1px}

/* ═══ 1755 — COBERTURA FISCAL E EMISSÃO EM LOTE ═══════════════════════
   Seletor de mês, linha digital × dinheiro, seleção múltipla e a janela
   de progresso do lote. Nada de tabela: no celular da recepção, tabela
   em modal vira rolagem lateral. */
.nfse-mes{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 10px}
.nfse-mes b{font-size:14px;min-width:150px;text-align:center;text-transform:capitalize}
.nfse-cob-linha{display:flex;flex-wrap:wrap;gap:8px 18px;margin:-4px 0 14px;font-size:12.5px;color:var(--muted)}
.nfse-cob-linha b{color:var(--ink);font-weight:800}
.nfse-cob-linha .alerta{color:var(--amber);font-weight:800}
.nfse-lote-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin-bottom:10px;
  border:1.5px solid var(--line);border-radius:11px;background:var(--bg)}
.nfse-lote-info{flex:1;min-width:120px;font-size:12.5px;color:var(--muted);font-weight:700}
.nfse-sel{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;cursor:pointer;user-select:none}
.nfse-sel input{width:17px;height:17px;cursor:pointer;flex:none}
.nfse-semcpf{display:inline-block;margin-left:7px;background:var(--amber-soft,#FEF3E2);color:var(--amber,#B25E09);
  border-radius:99px;padding:1px 7px;font-size:10px;font-weight:800;vertical-align:1px}
.nfelote-barra{height:8px;border-radius:99px;background:var(--line);overflow:hidden;margin-bottom:10px}
.nfelote-fill{height:100%;width:0;background:var(--blue,#2E86F0);transition:width .25s ease}
.nfelote-status{font-size:13px;font-weight:800;margin-bottom:8px}
.nfelote-log{max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--bg)}
.nfelote-item{font-size:12px;padding:3px 2px;border-bottom:1px dashed var(--line)}
.nfelote-item.ok{color:var(--green,#1FA571)}
.nfelote-item.er{color:var(--red,#E5484D)}
.nfelote-item.av{color:var(--amber,#B25E09);font-weight:800}

/* ═══════════════════════════════════════════════════════════════════
   1757 — ABAS COM CONDIÇÃO (Novo paciente) + ASSISTENTE DE ANAMNESE
   ───────────────────────────────────────────────────────────────────
   Duas coisas nasceram do mesmo pedido do dono:

   1) "um leve destaque nas condições de aba da janela" — a barra de abas
      da ficha (Clínico · Contato & Endereço · Documentos & vínculos ·
      Plano) era chapada demais: cinza maiúsculo, e a ativa se dizia
      apenas por um traço azul de 2,5px embaixo. Numa janela alta, com o
      corpo rolando, dava para perder de vista EM QUE ABA você está.
      Agora a aba ativa ganha uma pastilha azul-clarinha (leve, não
      berrante — "menos é mais"), o passar do mouse acende de leve, e
      cada aba mostra a sua CONDIÇÃO: um pontinho azul quando aquela aba
      já tem campo preenchido. Assim, de relance, a secretária vê o que
      já foi e o que falta sem abrir aba por aba.

   2) O ASSISTENTE de anamnese (estilo InstallShield): trilho de passos à
      esquerda com o estado de cada um (feito ✓ / atual / a fazer), um
      passo por vez no corpo, e Anterior/Avançar/Concluir no rodapé.
      Reaproveita 100% o visual de pergunta que já existia (.anm-q,
      .anm-sn, .anm-livre…) — nada de linguagem visual nova. */

/* ── 1) abas da ficha: pastilha na ativa + pontinho de condição ── */
.oh-sdficha .ohf-tabs{ gap:4px; }
.oh-sdficha .ohf-tab{
  position:relative; padding:10px 12px; border-radius:10px 10px 0 0;
  transition:background .14s, color .14s;
}
.oh-sdficha .ohf-tab:hover{ background:color-mix(in srgb,var(--blue) 7%,transparent); color:var(--ink-2); }
.oh-sdficha .ohf-tab.on{
  background:var(--blue-soft,#EAF2FE); color:var(--blue-700,#1559BD);
  border-bottom-width:3px;
}
[data-theme="dark"] .oh-sdficha .ohf-tab.on{ background:color-mix(in srgb,var(--blue) 20%,var(--surface)); }
/* a CONDIÇÃO da aba: aceso = tem campo preenchido lá dentro */
.ohf-dot{
  display:inline-block; width:6px; height:6px; border-radius:50%;
  background:var(--blue,#1F73E0); margin-left:6px; vertical-align:1px; opacity:0;
  transition:opacity .18s;
}
.ohf-tab.tem .ohf-dot{ opacity:.9; }
.ohf-tab.on .ohf-dot{ background:var(--blue-700,#1559BD); }
@media(max-width:700px){ .oh-sdficha .ohf-tab{ padding:8px 9px; } .oh-sdficha .ohf-tabs{ gap:2px; } }

/* ── chamada do assistente dentro do Novo paciente ── */
.anmw-call{
  display:flex; align-items:center; gap:13px; width:100%; text-align:left;
  border:1px solid var(--blue-line,#C7DDFA); background:var(--blue-soft,#EAF2FE);
  border-radius:13px; padding:13px 15px; cursor:pointer; margin:4px 0 6px;
  font-family:inherit; transition:border-color .14s, box-shadow .14s;
}
.anmw-call:hover{ border-color:var(--blue); box-shadow:0 4px 16px rgba(31,115,224,.16); }
.anmw-call .ic{ width:38px; height:38px; border-radius:11px; background:var(--blue); color:#fff; display:grid; place-items:center; flex:none; }
.anmw-call .tt{ display:block; font-size:13.5px; font-weight:800; color:var(--ink); }
.anmw-call .ss{ display:block; font-size:11.5px; font-weight:600; color:var(--ink-2); margin-top:2px; }
.anmw-call .cnt{ flex:none; font-size:11px; font-weight:800; color:var(--blue-700,#1559BD); background:var(--surface); border:1px solid var(--blue-line,#C7DDFA); border-radius:99px; padding:3px 10px; white-space:nowrap; }
[data-theme="dark"] .anmw-call{ background:color-mix(in srgb,var(--blue) 14%,var(--surface)); }

/* ── 2) o assistente ── */
.anmw{ display:flex; align-items:stretch; margin:-20px -22px; min-height:340px; }
.anmw-rail{
  width:188px; flex:none; padding:18px 14px; border-right:1px solid var(--line);
  background:linear-gradient(180deg,var(--blue-soft,#EAF2FE),color-mix(in srgb,var(--blue-soft,#EAF2FE) 25%,transparent));
  border-radius:0 0 0 18px;
}
[data-theme="dark"] .anmw-rail{ background:linear-gradient(180deg,color-mix(in srgb,var(--blue) 15%,var(--surface)),transparent); }
.anmw-rail-tt{ font-size:10px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; color:var(--blue-700,#1559BD); margin-bottom:11px; opacity:.8; }
.anmw-step{
  display:flex; align-items:center; gap:9px; width:100%; padding:6px 7px; margin-bottom:2px;
  border:none; background:none; border-radius:9px; text-align:left; font-family:inherit;
  font-size:12.5px; font-weight:700; color:var(--muted); cursor:default;
}
.anmw-step .n{
  width:21px; height:21px; border-radius:50%; flex:none; display:grid; place-items:center;
  font-size:10.5px; font-weight:800; background:var(--surface); color:var(--muted);
  border:1.5px solid var(--line);
}
.anmw-step .tx{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.anmw-step.ok{ color:var(--ink-2); cursor:pointer; }
.anmw-step.ok .n{ background:var(--green-soft,#E7F7EF); border-color:var(--green,#1FA571); color:var(--green,#1FA571); }
.anmw-step.ok:hover{ background:color-mix(in srgb,var(--blue) 8%,transparent); }
.anmw-step.on{ color:var(--blue-700,#1559BD); background:var(--surface); box-shadow:0 1px 5px rgba(19,41,75,.10); }
.anmw-step.on .n{ background:var(--blue); border-color:var(--blue); color:#fff; }

.anmw-body{ flex:1; min-width:0; padding:18px 22px 20px; }
.anmw-pane{ display:none; }
.anmw-pane.on{ display:block; animation:ohPaneIn .18s ease both; }
.anmw-tit{ font-size:16px; font-weight:800; color:var(--ink); }
.anmw-sub{ font-size:12px; font-weight:600; color:var(--muted); margin:2px 0 14px; }
.anmw-cab{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; padding-bottom:11px; border-bottom:1px solid var(--line); }
.anmw-quem{ font-size:12.5px; color:var(--ink-2); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.anmw-barra{ height:4px; border-radius:99px; background:var(--line); overflow:hidden; margin-bottom:14px; }
.anmw-barra i{ display:block; height:100%; background:var(--blue); border-radius:99px; transition:width .22s ease; }
.anmw-fim-l{ display:flex; align-items:center; gap:9px; padding:9px 0; border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent); font-size:13px; color:var(--ink-2); }
.anmw-fim-l b{ color:var(--ink); }

@media(max-width:760px){
  .anmw{ display:block; margin:-20px -22px; min-height:0; }
  .anmw-rail{ width:auto; border-right:none; border-bottom:1px solid var(--line); border-radius:0; padding:11px 14px 9px; display:flex; gap:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .anmw-rail-tt{ display:none; }
  .anmw-step{ width:auto; flex:none; margin-bottom:0; padding:5px 9px 5px 6px; }
  .anmw-step .tx{ display:none; }
  .anmw-step.on .tx{ display:block; }
  .anmw-body{ padding:15px 16px 18px; }
}

/* ── 1757 — ESPELHO DO CADASTRO dentro do assistente de anamnese ──
   Alergias, condições e medicações já gravadas no cadastro aparecem aqui em
   modo LEITURA. É o "não duplicar função" do dono virando tela: quem vê o que
   já existe não digita de novo, e o dado continua com um dono só. */
.anmw-esp{ border:1px solid var(--line); background:var(--bg); border-radius:12px; padding:11px 13px; margin:0 0 16px; }
.anmw-esp-tt{ display:flex; align-items:center; gap:6px; font-size:10.5px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; color:var(--green,#1FA571); margin-bottom:9px; }
.anmw-esp-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.anmw-esp-chip{ display:inline-block; border:1px solid; border-radius:99px; padding:3px 11px; font-size:12px; font-weight:700; line-height:1.45; }
.anmw-esp-pe{ font-size:11px; color:var(--muted); line-height:1.5; margin-top:9px; }

/* ── 1759 — A ESCOLHA DA FICHA MOSTRA A ESPECIALIDADE ──────────────
   As 11 anamneses são dedicadas a especialidades (ANAM_CAT), e isso só
   aparecia na cor do pontinho. Agora cada linha diz a especialidade, e as
   que combinam com o paciente sobem para o grupo "Sugeridas" com o motivo
   ao lado. É sugestão, não escolha: nada vem pré-selecionado e a lista
   inteira continua ali. */
.anam-grupo{
  font-size:10px; font-weight:800; letter-spacing:.5px; text-transform:uppercase;
  color:var(--muted); padding:10px 2px 4px; display:flex; align-items:center; gap:8px;
}
.anam-grupo::after{ content:""; flex:1; height:1px; background:var(--line); }
.anam-grupo:first-child{ padding-top:2px; }
.anam-tit{ display:flex; align-items:baseline; gap:7px; flex-wrap:wrap; font-weight:700; font-size:13.5px; color:var(--ink); }
.anam-porque{
  display:inline-block; font-size:10.5px; font-weight:800;
  color:var(--blue-700,#1559BD); background:var(--blue-soft,#EAF2FE);
  border:1px solid var(--blue-line,#C7DDFA); border-radius:99px; padding:1px 8px; vertical-align:1px;
}
.anam-opt.anam-sug{ border-color:var(--blue-line,#C7DDFA); background:color-mix(in srgb,var(--blue) 4%,var(--surface)); }
.anam-opt.anam-sug:hover{ border-color:var(--blue); }

/* ═══════════════════════════════════════════════════════════════════
   1759 — ODONTOGRAMA REDESENHADO (silhueta anatômica + anel de faces)
   O quadrado de cinco zonas, a faixa cervical solta e as raízes bege
   decorativas saíram. Entrou a silhueta do dente (que muda de forma
   conforme o dente é molar, pré-molar, canino ou incisivo) e o anel de
   faces. A paleta de 16 chips virou quatro botões por função.
   ═══════════════════════════════════════════════════════════════════ */
.odo2{ padding:10px 18px 6px; overflow-x:auto; }
.odo-arcada{ display:flex; justify-content:center; align-items:flex-end; gap:2px; min-width:900px; }
.odo-arcada + .odo-arcada{ align-items:flex-start; margin-top:14px; padding-top:14px; border-top:1.5px dashed var(--line); }
.odo-quad-sep{ width:0; border-left:1.5px dashed var(--line); background:none; margin:0 9px; align-self:stretch; }
.odo-cell{ display:flex; flex-direction:column; align-items:center; gap:4px; width:54px; flex:none; padding:0; }
.odo-silbox{ display:block; line-height:0; }
.odo-apagado{ opacity:.5; }
.odo-sil{ width:44px; height:78px; display:block; }
.odo-anel{ width:37px; height:37px; display:block; }
.odo-hit{ cursor:pointer; }
.odo-hit:hover{ filter:brightness(.94); }
.odo-num{
  font-size:12px; font-weight:800; color:var(--ink-2); line-height:1; letter-spacing:.2px;
  border:none; background:none; font-family:inherit; padding:3px 6px; border-radius:7px; cursor:pointer;
}
.odo-num:hover{ background:var(--blue-soft); color:var(--blue-700); }

/* ── a barra de quatro botões ── */
.odo-barra{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:4px 0 10px; }
.odo-esp{ flex:1; min-width:0; }
.odo-bwrap{ position:relative; }
.odo-b{
  display:inline-flex; align-items:center; gap:7px; border:1.5px solid var(--line); background:var(--surface);
  border-radius:10px; padding:8px 13px; font-family:inherit; font-size:12.5px; font-weight:700;
  color:var(--ink-2); cursor:pointer; white-space:nowrap;
}
.odo-b:hover{ border-color:var(--blue-line,#C7DDFA); }
.odo-b.pri{ border-color:var(--blue-line,#C7DDFA); background:var(--blue-soft,#EAF2FE); color:var(--blue-700,#1559BD); }
.odo-b b{ color:var(--ink); font-weight:800; }
.odo-b.pri b{ color:var(--blue-700,#1559BD); }
.odo-cx{ font-size:10px; opacity:.6; margin-left:1px; }
.odo-am{ width:13px; height:13px; border-radius:4px; border:1.5px solid; flex:none; display:inline-block; }
.odo-drop{
  position:absolute; top:calc(100% + 5px); left:0; z-index:60; min-width:236px; max-height:340px; overflow-y:auto;
  background:var(--surface); border:1px solid var(--blue-line,#C7DDFA); border-radius:12px;
  box-shadow:0 10px 30px rgba(19,41,75,.16); padding:7px;
}
.odo-mt{ font-size:9.5px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; color:var(--muted); padding:7px 8px 4px; }
.odo-mi{
  display:flex; align-items:center; gap:9px; width:100%; border:none; background:none; text-align:left;
  font-family:inherit; font-size:13px; font-weight:600; color:var(--ink); padding:8px 9px; border-radius:9px; cursor:pointer;
}
.odo-mi:hover{ background:var(--bg); }
.odo-mi.on{ background:var(--blue-soft,#EAF2FE); color:var(--blue-700,#1559BD); font-weight:800; }
.odo-mi span{ flex:1; min-width:0; }
.odo-mi span b{ display:block; font-weight:700; }
.odo-mi span i{ display:block; font-style:normal; font-size:11px; color:var(--muted); font-weight:600; margin-top:1px; line-height:1.4; }
.odo-mi-ck{ width:14px; height:14px; flex:none; }
.odo-seg{ display:inline-flex; background:#EEF2F7; border-radius:10px; padding:3px; gap:2px; flex:none; }
[data-theme="dark"] .odo-seg{ background:color-mix(in srgb,var(--blue) 12%,var(--surface)); }
.odo-seg button{ border:none; background:none; font-family:inherit; font-size:12px; font-weight:700; color:var(--ink-2); padding:6px 14px; border-radius:8px; cursor:pointer; }
.odo-seg button.on{ background:var(--surface); color:var(--ink); box-shadow:0 1px 4px rgba(19,41,75,.16); }

/* ── legenda sem sermão: três quadradinhos ── */
.odo-leg{ display:flex; gap:16px; justify-content:center; flex-wrap:wrap; padding:10px 20px 2px; font-size:11.5px; color:var(--muted); font-weight:600; }
.odo-lg i{ width:11px; height:11px; border-radius:3px; display:inline-block; margin-right:5px; vertical-align:-1px; border:1.5px solid var(--blue); }
.odo-lg i.plan{ background:var(--blue-soft,#EAF2FE); border-style:dashed; }
.odo-lg i.and{ background:color-mix(in srgb,var(--blue) 45%,#fff); }
.odo-lg i.feito{ background:var(--blue); }
@media(max-width:700px){ .odo-cell{ width:46px; } .odo-sil{ width:38px; height:68px; } .odo-anel{ width:32px; height:32px; } }


/* ── 1764 — O BOTÃO DE WHATSAPP DO CARD, no dedo ────────────────────
   No card de consulta ele sai compacto (o `btnStyle` do waSpeedDialSimples
   manda padding 5px 9px) e ficava em 32×32 no celular — abaixo dos 44px
   que um dedo alcança sem errar. E o que ele abre não é pouca coisa:
   "Avisar!" e "Confirmar!" disparam mensagem para o paciente. Errar o
   alvo aqui custa uma mensagem indevida.
   Só no celular: no PC o mouse acerta 32px sem drama, e crescer lá
   engordaria o card à toa. wa-sdial-btn no dedo. */
@media(max-width:760px){
  .wa-sdial-btn{ min-width:40px; height:40px; box-sizing:border-box; justify-content:center; padding:8px 11px !important; }
  .wa-sdial-btn svg{ width:17px; height:17px; }
}

/* 1769 — marcadores de passo do assistente de cadastro. Eles moram no
   MESMO template do formulário (js/modais.js) para o assistente saber onde
   cortar; no formulário antigo — que é o de EDITAR — eles não têm o que
   fazer e só iam ficar lá como div vazia. Somem. */
.pw-corte{ display:none !important; }

/* 1771 — Meus termos (Configurações › Documentos). Lista simples: nome,
   quantos riscos, o selo de estado e as ações. */
.mt-lista{ border:1px solid var(--line); border-radius:11px; overflow:hidden; background:var(--surface); }
.mt-it{ display:flex; align-items:center; gap:9px; padding:10px 13px; border-bottom:1px solid var(--line); font-size:13px; flex-wrap:wrap; }
.mt-it:last-child{ border-bottom:0; }
.mt-n{ font-weight:700; color:var(--ink); flex:1; min-width:150px; }
.mt-r{ font-size:11.5px; color:var(--muted); white-space:nowrap; }
.mt-st{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; padding:3px 8px; border-radius:999px; white-space:nowrap; }
.mt-ok{ background:var(--green-soft); color:var(--green); border:1px solid color-mix(in srgb,var(--green) 30%,transparent); }
.mt-meu{ background:var(--purple-soft); color:var(--purple); border:1px solid color-mix(in srgb,var(--purple) 30%,transparent); }
.mt-falta{ background:var(--amber-soft); color:var(--amber); border:1px solid color-mix(in srgb,var(--amber) 32%,transparent); }
.mt-lin{ display:flex; gap:7px; align-items:center; margin-bottom:6px; }
.mt-lin input{ flex:1; padding:9px 11px; border:1px solid var(--line); border-radius:9px; font-family:inherit; font-size:13px; background:var(--surface); color:var(--ink); }
@media(max-width:560px){ .mt-n{ flex-basis:100%; } }

/* 1779 — o IMC calculado, embaixo do campo de altura. */
.bk-imc{ margin-top:5px; font-size:11.5px; line-height:1.45; color:var(--ink-2);
  background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:5px 9px; }

/* 1782 — os selos de público da tela de entrada: dizem para quem o app
   serve antes de qualquer texto de venda. */
.lg-pub{ display:inline-flex; align-items:center; gap:5px; background:var(--surface,#fff);
  border:1px solid var(--blue-line,#CBE0FB); border-radius:999px; padding:5px 11px;
  font-size:11.5px; font-weight:700; color:var(--ent-ink2,#51617B); white-space:nowrap; }
/* 1800 — o ponto colorido que substituiu o emoji do selo. Num selo
   deste tamanho o desenho não se lê; a cor, sim. */
.lg-pub .lg-pt{ width:7px; height:7px; border-radius:50%; flex:none; display:block; }
@media(max-width:420px){ .lg-pub{ font-size:11px; padding:4px 9px; } }

/* ═══ 1784 — ETIQUETA DE PROFISSÃO ═══
   Diz de que profissão é cada pessoa, ao lado do nome. A cor sai da
   FUNÇÃO (ver OH_ETIQUETA em js/area.js), não da área.
   Contraste medido em cada par: 6,07 · 6,73 · 7,24 · 5,13 · 5,92 — todos
   acima do 4,5 que a WCAG AA pede. O verde da medicina nasceu em 4,54 e
   foi escurecido até 6,73 antes de entrar. */
.oh-etq{ display:inline-flex; align-items:center; font-size:10.5px; font-weight:800;
  padding:3px 8px; border-radius:999px; white-space:nowrap; flex-shrink:0;
  letter-spacing:.2px; line-height:1.35; }
.oh-etq-odo{ background:#E9F2FE; color:#1858B0; }
.oh-etq-med{ background:#E2F6F0; color:#096046; }
.oh-etq-enf{ background:#EEE9FB; color:#5733A8; }
.oh-etq-apo{ background:#FCF1D9; color:#8A5D07; }
.oh-etq-pro{ background:#FCE7E4; color:#A62B1E; }
/* No escuro o pastel some no fundo: a etiqueta vira o tom forte com pouca
   opacidade e o texto clareia. */
[data-theme=dark] .oh-etq-odo{ background:rgba(31,115,224,.20); color:#9CC6F7; }
[data-theme=dark] .oh-etq-med{ background:rgba(15,164,122,.20); color:#7EDCBE; }
[data-theme=dark] .oh-etq-enf{ background:rgba(107,70,193,.24); color:#C3AEF2; }
[data-theme=dark] .oh-etq-apo{ background:rgba(194,132,15,.22); color:#EFC974; }
[data-theme=dark] .oh-etq-pro{ background:rgba(216,57,43,.20); color:#F3A79D; }
/* No celular só a ETIQUETA desce. Pôr o nome a 100% empurrava o avatar
   para uma linha só dele e a linha ia a 125px — pior que os 55 do
   original. Assim fica em 91px, com o nome inteiro. */
@media(max-width:430px){
  .agenda-dial-item{ flex-wrap:wrap; }
  .agenda-dial-item .oh-etq{ flex:1 0 100%; margin-left:43px; margin-top:3px; align-self:flex-start; }
}
