/* Certifica IA — folha de estilo. Identidade conforme Manual de Identidade Visual (1ª ed. 2026) */
@import url('https://fonts.googleapis.com/css2?family=Caladea:ital,wght@0,400;0,700;1,400&family=Carlito:ital,wght@0,400;0,700;1,400&display=swap');

:root {
  --azul: #0A3D62;
  --azul-escuro: #072C48;
  --petroleo: #3D8B96;
  --petroleo-escuro: #2F7A85;
  --ambar: #E0932E;
  --tinta: #2E3A41;
  --cinza: #5C6B72;
  --gelo: #EEF4F6;
  --linha: #E7EDF0;
  --palido: #C9DCE2;
  --branco: #FFFFFF;
  --ok: #2E7D5B;
  --erro: #A8362F;

  --bg: #F5F9FB;
  --surface: #FFFFFF;
  --surface-2: var(--gelo);
  --text: var(--tinta);
  --text-2: var(--cinza);
  --border: var(--linha);
  --primary: var(--azul);
  --primary-ink: #FFFFFF;
  --accent: var(--petroleo);
  --sidebar-bg: var(--azul);
  --sidebar-ink: #DCE8EE;
  --sidebar-ink-2: #9FBACB;
  --sidebar-active: rgba(255,255,255,.10);
  --bubble-user: var(--azul);
  --bubble-user-ink: #FFFFFF;
  --shadow: 0 1px 2px rgba(10,61,98,.04), 0 12px 32px -16px rgba(10,61,98,.14);

  --serif: Georgia, 'Caladea', 'Times New Roman', serif;
  --sans: Calibri, 'Carlito', 'Segoe UI', Arial, sans-serif;
  --mono: 'DejaVu Sans Mono', Consolas, 'Courier New', monospace;
  --radius: 10px;
  --gradient: linear-gradient(90deg, var(--azul) 0%, var(--petroleo) 55%, #8FBFC7 78%, var(--ambar) 100%);
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0B1B28; --surface: #10263A; --surface-2: #163247; --text: #E4EDF2; --text-2: #9DB3C0; --border: #23405A;
    --primary: #4FA3B0; --primary-ink: #04121C; --accent: #6FBFC9; --sidebar-bg: #071523; --sidebar-ink: #D4E2EA; --sidebar-ink-2: #7D97A8;
    --bubble-user: #1E4D6E; --bubble-user-ink: #EAF3F7; --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.6);
    --gelo: #163247; --linha: #23405A; color-scheme: dark;
    /* fase285 — OS APELIDOS QUE NUNCA EXISTIRAM. Estas variáveis são usadas em dezenas de
       regras (--ink, --muted, --line, --card, --wash, --brand…), mas nunca foram definidas
       em lugar nenhum. Sem definição, vale o valor de reserva escrito na própria regra — e
       ele é sempre a cor do tema CLARO. Era isso que fazia o nome do cliente no cartão da
       agenda sair quase preto sobre fundo escuro. Aqui elas passam a existir, só no escuro:
       o tema claro continua byte a byte o mesmo. */
    --ink: #E4EDF2; --ink-2: #9DB3C0; --ink-3: #9DB3C0; --muted: #9DB3C0; --text-3: #9DB3C0;
    --line: #23405A; --card: #10263A; --bg-2: #163247; --wash: #163247;
    --brand: #4FA3B0; --bubble-other: #10263A; --teal: #6FBFC9; --roxo: #B08BD6;
    --vermelho: #F2A8A3; --font-display: Georgia, 'Caladea', 'Times New Roman', serif;
  }
}
:root[data-theme="dark"] {
  --bg: #0B1B28; --surface: #10263A; --surface-2: #163247; --text: #E4EDF2; --text-2: #9DB3C0; --border: #23405A;
  --primary: #4FA3B0; --primary-ink: #04121C; --accent: #6FBFC9; --sidebar-bg: #071523; --sidebar-ink: #D4E2EA; --sidebar-ink-2: #7D97A8;
  --bubble-user: #1E4D6E; --bubble-user-ink: #EAF3F7; --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.6);
  --gelo: #163247; --linha: #23405A; color-scheme: dark;
  /* fase285 — OS APELIDOS QUE NUNCA EXISTIRAM. Estas variáveis são usadas em dezenas de
     regras (--ink, --muted, --line, --card, --wash, --brand…), mas nunca foram definidas
     em lugar nenhum. Sem definição, vale o valor de reserva escrito na própria regra — e
     ele é sempre a cor do tema CLARO. Era isso que fazia o nome do cliente no cartão da
     agenda sair quase preto sobre fundo escuro. Aqui elas passam a existir, só no escuro:
     o tema claro continua byte a byte o mesmo. */
  --ink: #E4EDF2; --ink-2: #9DB3C0; --ink-3: #9DB3C0; --muted: #9DB3C0; --text-3: #9DB3C0;
  --line: #23405A; --card: #10263A; --bg-2: #163247; --wash: #163247;
  --brand: #4FA3B0; --bubble-other: #10263A; --teal: #6FBFC9; --roxo: #B08BD6;
  --vermelho: #F2A8A3; --font-display: Georgia, 'Caladea', 'Times New Roman', serif;
}

* { box-sizing: border-box; }
html, body { height: 100%; }
body { margin: 0; font-family: var(--sans); font-size: 15px; line-height: 1.5; color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 400; color: var(--primary); margin: 0; text-wrap: balance; line-height: 1.2; }
h1 { font-size: 30px; } h2 { font-size: 22px; } h3 { font-size: 17px; font-weight: 700; } h4 { font-size: 15px; font-weight: 700; }
p { margin: 0; }
a { color: var(--accent); }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
.hidden, [hidden] { display: none !important; }
.eyebrow { font-family: var(--sans); font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.muted { color: var(--text-2); }
.small { font-size: 13px; }
.mono { font-family: var(--mono); font-size: 12.5px; }
.gradient-bar { height: 5px; background: var(--gradient); flex: none; }
.row { display: flex; align-items: center; gap: 10px; }
.stack { display: flex; flex-direction: column; gap: 10px; }
.grow { flex: 1; min-width: 0; }
.wrap { flex-wrap: wrap; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ---------- Botões e campos ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 9px 16px; border-radius: var(--radius); border: 1px solid transparent; background: var(--accent); color: #fff; font-weight: 700; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; transition: background .15s, transform .1s; white-space: nowrap; }
.btn:hover { background: var(--petroleo-escuro); }
.btn:active { transform: translateY(1px); }
.btn:focus-visible, button:focus-visible, a:focus-visible { outline: 2px solid var(--ambar); outline-offset: 2px; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn.primary { background: var(--primary); color: var(--primary-ink); box-shadow: 0 2px 10px -3px rgba(10,61,98,.35); }
.btn.primary:hover { background: var(--azul-escuro); color: #fff; }
.btn:active { transform: translateY(1px); }
.btn.ghost { background: transparent; color: var(--accent); border-color: var(--border); }
.btn.ghost:hover { background: var(--surface-2); }
.btn.danger { background: transparent; color: var(--erro); border-color: var(--border); }
.btn.danger:hover { background: rgba(168,54,47,.08); }
.btn.sm { padding: 6px 11px; font-size: 12px; }
.btn.icon { padding: 8px; }
.iconbtn { background: transparent; border: 0; color: var(--text-2); border-radius: var(--radius); padding: 6px; display: inline-flex; align-items: center; }
.iconbtn:hover { background: var(--surface-2); color: var(--text); }
.field { display: flex; flex-direction: column; gap: 6px; }
.field label, .label { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.field .hint { font-size: 12.5px; color: var(--text-2); }
input[type=text], input[type=email], input[type=password], input[type=number], input[type=url], select, textarea {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text); transition: border-color .15s, box-shadow .15s;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(61,139,150,.18); }
textarea { resize: vertical; min-height: 90px; line-height: 1.5; }
textarea.mono { font-size: 13px; }
.check { display: flex; align-items: center; gap: 8px; font-size: 14px; cursor: pointer; }
.check input { width: 16px; height: 16px; accent-color: var(--petroleo); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
@media (max-width: 720px) { .grid2, .grid3 { grid-template-columns: 1fr; } }

.chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.chip.ok { background: rgba(46,125,91,.12); color: var(--ok); }
.chip.warn { background: rgba(224,147,46,.14); color: #9A5F12; }
.chip.err { background: rgba(168,54,47,.1); color: var(--erro); }
.chip.role-master { background: var(--primary); color: var(--primary-ink); }
.chip.role-gestor { background: rgba(61,139,150,.15); color: var(--accent); }
.tag { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); }

.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px; }
.callout { border-left: 3px solid var(--ambar); background: var(--surface-2); padding: 12px 14px; border-radius: 0 var(--radius) var(--radius) 0; font-size: 14px; }
.callout.blue { border-left-color: var(--primary); }

/* ---------- Tela de entrada ---------- */
.auth { min-height: 100vh; min-height: 100dvh; display: grid; grid-template-columns: minmax(320px, 44%) 1fr; }
.auth-side { background: linear-gradient(155deg, #072C48 0%, #0A3D62 45%, #166978 100%); color: #fff; padding: 48px; display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden; }
.auth-side::before { content: ''; position: absolute; inset: 0; background: radial-gradient(760px 520px at -8% 112%, rgba(61,139,150,.45), transparent 62%), radial-gradient(620px 420px at 110% -10%, rgba(224,147,46,.14), transparent 60%); pointer-events: none; }
.auth-side > * { position: relative; }
.auth-side .logo { width: 260px; max-width: 80%; }
.auth-side h1 { color: #fff; font-size: clamp(30px, 4vw, 44px); margin-top: 24px; max-width: 14ch; }
.auth-side .lead { color: #C9DCE2; font-size: 17px; max-width: 42ch; margin-top: 14px; }
.auth-side .quote { border-left: 3px solid var(--ambar); padding-left: 14px; color: #EAF1F4; font-family: var(--serif); font-size: 18px; }
.auth-side .quote small { display: block; font-family: var(--sans); font-size: 12px; color: #9FBACB; margin-top: 4px; letter-spacing: .08em; text-transform: uppercase; }
.auth-main { display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.auth-box { width: 100%; max-width: 420px; display: flex; flex-direction: column; gap: 18px; }
.auth-box h2 { font-size: 26px; }
.auth-box .form { display: flex; flex-direction: column; gap: 14px; }
.error-box { background: rgba(168,54,47,.08); color: var(--erro); border: 1px solid rgba(168,54,47,.25); border-radius: var(--radius); padding: 10px 12px; font-size: 14px; }
.ok-box { background: rgba(46,125,91,.1); color: var(--ok); border: 1px solid rgba(46,125,91,.25); border-radius: var(--radius); padding: 10px 12px; font-size: 14px; }
@media (max-width: 860px) { .auth { grid-template-columns: 1fr; } .auth-side { padding: 28px 24px; min-height: 0; } .auth-side .quote { display: none; } .auth-side h1 { font-size: 26px; } }

/* ---------- Estrutura do app ---------- */
.app { display: grid; grid-template-columns: 264px 1fr; grid-template-rows: 5px 1fr; height: 100vh; height: 100dvh; height: var(--app-h, 100dvh); }
.app .gradient-bar { grid-column: 1 / -1; }
.sidebar { background: linear-gradient(185deg, var(--azul-escuro) 0%, var(--azul) 48%, #0C4C63 100%); color: var(--sidebar-ink); display: flex; flex-direction: column; overflow: hidden; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .sidebar { background: linear-gradient(185deg, #061320 0%, #08202F 55%, #0A2C3A 100%); } }
:root[data-theme="dark"] .sidebar { background: linear-gradient(185deg, #061320 0%, #08202F 55%, #0A2C3A 100%); }
.sidebar .brand { padding: 22px 20px 16px; border-bottom: 1px solid rgba(255,255,255,.08); }
.sidebar .brand img { width: 160px; display: block; }
.sidebar .brand .sub { margin-top: 10px; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--sidebar-ink-2); }
.sidebar nav { flex: 1; overflow-y: auto; padding: 12px 10px; display: flex; flex-direction: column; gap: 2px; }
.sidebar .section { padding: 14px 10px 6px; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--sidebar-ink-2); font-weight: 700; }
.navitem { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: var(--radius); color: var(--sidebar-ink); text-decoration: none; background: transparent; border: 0; width: 100%; text-align: left; font-size: 14px; }
.navitem:hover { background: rgba(255,255,255,.06); }
.navitem.active { background: var(--sidebar-active); color: #fff; box-shadow: inset 3px 0 0 var(--ambar); }
.navitem svg { width: 18px; height: 18px; flex: none; opacity: .85; }
.sidebar .user { padding: 14px 16px; border-top: 1px solid rgba(255,255,255,.08); display: flex; align-items: center; gap: 10px; }
.avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--petroleo); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 13px; flex: none; }
.sidebar .user .name { font-size: 14px; color: #fff; line-height: 1.2; }
.sidebar .user .role { font-size: 11px; color: var(--sidebar-ink-2); letter-spacing: .08em; text-transform: uppercase; }
.sidebar .user .iconbtn { color: var(--sidebar-ink-2); }
.sidebar .user .iconbtn:hover { color: #fff; background: rgba(255,255,255,.08); }
.main { overflow: hidden; display: flex; flex-direction: column; min-width: 0; }
.topbar { display: none; }
@media (max-width: 900px) {
  .app { grid-template-columns: 1fr; grid-template-rows: 5px auto 1fr; height: 100vh; height: 100dvh; height: var(--app-h, 100dvh); }
  .sidebar { position: fixed; inset: 5px auto 0 0; width: 280px; z-index: 40; transform: translateX(-100%); transition: transform .2s; box-shadow: 0 0 40px rgba(0,0,0,.35); }
  .sidebar.open { transform: none; }
  .topbar { display: flex; align-items: center; gap: 10px; padding: 10px 16px; background: var(--surface); border-bottom: 1px solid var(--border); }
  .topbar img { height: 26px; }
  .scrim { position: fixed; inset: 0; background: rgba(7,21,35,.5); z-index: 39; }
}

.page { flex: 1; overflow-y: auto; padding: 28px 32px 40px; }
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.page-head .lead { color: var(--text-2); margin-top: 6px; max-width: 60ch; }
@media (max-width: 720px) { .page { padding: 18px 16px 32px; } }

/* ---------- Home ---------- */
.greeting h1 { font-size: 32px; }
.agent-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.agent-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px; display: flex; flex-direction: column; gap: 10px; text-align: left; cursor: pointer; text-decoration: none; color: inherit; transition: border-color .15s, box-shadow .15s, transform .15s; position: relative; overflow: hidden; }
.agent-card:hover { border-color: var(--accent); box-shadow: var(--shadow); transform: translateY(-1px); }
.agent-card .ico { width: 42px; height: 42px; border-radius: var(--radius); display: grid; place-items: center; color: #fff; }
.agent-card .ico svg { width: 22px; height: 22px; }
.agent-card h3 { font-size: 17px; color: var(--primary); }
.agent-card p { color: var(--text-2); font-size: 14px; }
.agent-card .foot { display: flex; justify-content: space-between; align-items: center; margin-top: auto; padding-top: 6px; }
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 26px; }
.stat { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; }
.stat .v { font-family: var(--serif); font-size: 28px; color: var(--primary); font-variant-numeric: tabular-nums; line-height: 1.1; }
.stat .l { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--text-2); margin-top: 4px; }

/* ---------- Agente / Chat ---------- */
.chat-layout { flex: 1; display: grid; grid-template-columns: 1fr 300px; min-height: 0; }
.chat-layout.no-side { grid-template-columns: 1fr; }
.chat-col { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.chat-head { display: flex; align-items: center; gap: 14px; padding: 14px 24px; border-bottom: 1px solid var(--border); background: var(--surface); }
.chat-head .ico { width: 40px; height: 40px; border-radius: var(--radius); display: grid; place-items: center; color: #fff; flex: none; }
.chat-head .ico svg { width: 20px; height: 20px; }
.chat-head h2 { font-size: 19px; line-height: 1.1; }
.chat-head .tagline { font-size: 13px; color: var(--text-2); }
.chat-scroll { flex: 1; overflow-y: auto; padding: 24px; display: flex; flex-direction: column; gap: 18px; }
.chat-inner { width: 100%; max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: 18px; }
.welcome { display: flex; flex-direction: column; gap: 18px; padding: 10px 0 0; }
.welcome h2 { font-size: 26px; }
.welcome .lead { color: var(--text-2); max-width: 60ch; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chipbtn { border: 1px solid var(--border); background: var(--surface); color: var(--text); padding: 8px 12px; border-radius: 999px; font-size: 13.5px; display: inline-flex; align-items: center; gap: 6px; }
.chipbtn:hover { border-color: var(--accent); color: var(--accent); }
.chipbtn svg { width: 14px; height: 14px; }
.msg { display: flex; gap: 12px; align-items: flex-start; }
.msg.user { flex-direction: row-reverse; }
.msg .who { width: 32px; height: 32px; border-radius: 50%; flex: none; display: grid; place-items: center; color: #fff; font-size: 12px; font-weight: 700; }
.msg .bubble { max-width: min(78ch, 88%); border-radius: var(--radius); padding: 12px 16px; position: relative; }
.msg.user .bubble { background: var(--bubble-user); color: var(--bubble-user-ink); white-space: pre-wrap; }
.msg.assistant .bubble { background: var(--surface); border: 1px solid var(--border); }
.msg .tools { display: flex; gap: 4px; margin-top: 6px; opacity: 0; transition: opacity .15s; }
.msg:hover .tools, .msg:focus-within .tools { opacity: 1; }
.msg .tools .iconbtn { padding: 4px 6px; font-size: 12px; gap: 4px; }
.md { font-size: 15px; line-height: 1.55; overflow-wrap: anywhere; }
.md > :first-child { margin-top: 0; } .md > :last-child { margin-bottom: 0; }
.md h1, .md h2, .md h3, .md h4 { margin: 14px 0 6px; }
.md h1 { font-size: 22px; } .md h2 { font-size: 19px; } .md h3 { font-size: 16px; }
.md p { margin: 8px 0; } .md ul, .md ol { margin: 8px 0; padding-left: 22px; } .md li { margin: 3px 0; }
.md table { border-collapse: collapse; width: 100%; margin: 10px 0; font-size: 14px; display: block; overflow-x: auto; }
.md th { background: var(--primary); color: var(--primary-ink); text-align: left; padding: 7px 10px; font-weight: 700; }
.md td { padding: 7px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.md tr:nth-child(even) td { background: var(--surface-2); }
.md blockquote { margin: 10px 0; padding: 8px 14px; border-left: 3px solid var(--ambar); background: var(--surface-2); color: var(--text-2); font-style: italic; }
.md code { font-family: var(--mono); font-size: 13px; background: var(--surface-2); padding: 1px 5px; border-radius: 4px; }
.md pre { position: relative; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; overflow-x: auto; margin: 10px 0; }
.md pre code { background: none; padding: 0; font-size: 13px; }
.md pre .copy-code { position: absolute; top: 6px; right: 6px; font-size: 11px; padding: 4px 8px; border-radius: 4px; border: 1px solid var(--border); background: var(--surface); color: var(--accent); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.md a { color: var(--accent); }
.md hr { border: 0; border-top: 1px solid var(--border); margin: 12px 0; }
.attachments { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.att { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; padding: 5px 9px; border-radius: 4px; background: rgba(255,255,255,.15); }
.msg.assistant .att { background: var(--surface-2); }
.att img { height: 120px; border-radius: 4px; display: block; }
.att img.zoomable { cursor: zoom-in; }
/* Pré-visualização de imagem antes de enviar */
.pend-att { align-items: center; gap: 8px; }
.pend-thumb { height: 40px; width: 40px; object-fit: cover; border-radius: 6px; cursor: zoom-in; flex: none; }
.pend-name { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Lightbox (ampliar imagem) */
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.86); display: grid; place-items: center; z-index: 9999; padding: 24px; cursor: zoom-out; }
.lightbox img { max-width: 95vw; max-height: 92vh; border-radius: 8px; box-shadow: 0 12px 44px rgba(0,0,0,.55); }
.lb-close { position: fixed; top: 14px; right: 16px; background: rgba(255,255,255,.14); color: #fff; border: none; border-radius: 50%; width: 40px; height: 40px; display: grid; place-items: center; cursor: pointer; }
.lb-close:hover { background: rgba(255,255,255,.28); }
.docs-inline { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.doc-card { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); text-decoration: none; color: var(--text); }
.doc-card:hover { border-color: var(--accent); }
.doc-card .fmt { width: 36px; height: 36px; border-radius: 4px; display: grid; place-items: center; font-size: 10px; font-weight: 700; letter-spacing: .06em; color: #fff; background: var(--primary); flex: none; }
.doc-card .fmt.pdf { background: #A8362F; } .doc-card .fmt.xlsx { background: #2E7D5B; } .doc-card .fmt.md { background: var(--cinza); }
.doc-card .t { font-size: 14px; font-weight: 700; color: var(--primary); }
.doc-card .s { font-size: 12px; color: var(--text-2); }
.status-line { display: flex; align-items: center; gap: 8px; color: var(--text-2); font-size: 13px; }
.dots { display: inline-flex; gap: 3px; } .dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); animation: blink 1.2s infinite; } .dots i:nth-child(2) { animation-delay: .2s } .dots i:nth-child(3) { animation-delay: .4s }
@keyframes blink { 0%, 80%, 100% { opacity: .25 } 40% { opacity: 1 } }
/* fase291 — O QUE SOBROU DE BRANCO CRAVADO. A fase285 consertou a raiz (as variáveis que
   nunca existiam), mas estas regras nasceram antes do tema escuro e fixaram `#fff` direto
   no CSS — pílulas do copiloto, abas e zonas da Cabine, caixas de texto, o aviso de
   documentos faltando. No escuro elas viravam ilhas brancas. Aqui ganham o tom equivalente;
   o tema claro não é tocado. Branco proposital (QR, visualizador de PDF, botão deslizante)
   fica como está — ali o branco é a função, não o tema. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .acop-pill, :root:not([data-theme="light"]) .cab-tab, :root:not([data-theme="light"]) .cab-zone, :root:not([data-theme="light"]) .acop-chat, :root:not([data-theme="light"]) .acop-quick, :root:not([data-theme="light"]) .ct-item, :root:not([data-theme="light"]) .pp-preview, :root:not([data-theme="light"]) .acop-panel .cxm-text, :root:not([data-theme="light"]) .sf-assist.acop textarea { background: var(--surface); }
  :root:not([data-theme="light"]) .acop-pill.sug:not(.on) { background: rgba(224,147,46,.14); }
  :root:not([data-theme="light"]) .ag-docs { background: rgba(224,147,46,.12); border-color: rgba(224,147,46,.32); color: #E7B45A; }
}
  :root[data-theme="dark"] .acop-pill, :root[data-theme="dark"] .cab-tab, :root[data-theme="dark"] .cab-zone, :root[data-theme="dark"] .acop-chat, :root[data-theme="dark"] .acop-quick, :root[data-theme="dark"] .ct-item, :root[data-theme="dark"] .pp-preview, :root[data-theme="dark"] .acop-panel .cxm-text, :root[data-theme="dark"] .sf-assist.acop textarea { background: var(--surface); }
:root[data-theme="dark"] .acop-pill.sug:not(.on) { background: rgba(224,147,46,.14); }
:root[data-theme="dark"] .ag-docs { background: rgba(224,147,46,.12); border-color: rgba(224,147,46,.32); color: #E7B45A; }

@media (prefers-reduced-motion: reduce) { .dots i { animation: none; } .agent-card { transition: none; } }

.composer { border-top: 1px solid var(--border); background: var(--surface); padding: 12px 24px 14px; }
.composer-inner { max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: 8px; }
.composer-box { display: flex; align-items: flex-end; gap: 8px; border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 8px 8px 12px; background: var(--surface); transition: border-color .15s, box-shadow .15s; }
.composer-box:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(61,139,150,.18); }
.composer-box textarea { border: 0; background: transparent; padding: 6px 0; min-height: 24px; max-height: 220px; resize: none; flex: 1; }
.composer-box textarea:focus { box-shadow: none; }
.composer .pending { display: flex; flex-wrap: wrap; gap: 6px; }
.composer .pending .att { background: var(--surface-2); }
.composer .foot { display: flex; justify-content: space-between; align-items: center; font-size: 12px; color: var(--text-2); flex-wrap: wrap; gap: 6px; }
.composer.drag .composer-box { border-color: var(--ambar); background: rgba(224,147,46,.06); }

.side { border-left: 1px solid var(--border); background: var(--surface); display: flex; flex-direction: column; min-height: 0; }
.side .tabs { display: flex; border-bottom: 1px solid var(--border); }
.side .tabs button { flex: 1; padding: 12px 8px; background: none; border: 0; font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--text-2); border-bottom: 2px solid transparent; }
.side .tabs button.active { color: var(--accent); border-bottom-color: var(--accent); }
.side .list { flex: 1; overflow-y: auto; padding: 10px; display: flex; flex-direction: column; gap: 4px; }
.conv-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--radius); border: 0; background: none; text-align: left; width: 100%; color: var(--text); font-size: 13.5px; }
.conv-item:hover { background: var(--surface-2); }
.conv-item.active { background: var(--surface-2); box-shadow: inset 3px 0 0 var(--accent); }
.conv-item .t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.conv-item .d { font-size: 11px; color: var(--text-2); flex: none; }
.side .empty { padding: 24px 14px; color: var(--text-2); font-size: 13.5px; text-align: center; }
@media (max-width: 1100px) { .chat-layout { grid-template-columns: 1fr; } .side { display: none; } .side.mobile-open { display: flex; position: fixed; inset: 5px 0 0 auto; width: min(340px, 100%); z-index: 30; box-shadow: -10px 0 40px rgba(0,0,0,.2); } }

/* ---------- Admin ---------- */
.tabs-h { display: flex; gap: 2px; border-bottom: 1px solid var(--border); margin-bottom: 20px; overflow-x: auto; }
.tabs-h button { padding: 10px 14px; background: none; border: 0; border-bottom: 2px solid transparent; font-weight: 700; font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--text-2); white-space: nowrap; }
.tabs-h button.active { color: var(--accent); border-bottom-color: var(--accent); }
.table { width: 100%; border-collapse: collapse; font-size: 14px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.table-wrap { overflow-x: auto; }
.table th { text-align: left; background: var(--primary); color: var(--primary-ink); padding: 10px 12px; font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; }
.table td { padding: 10px 12px; border-top: 1px solid var(--border); vertical-align: middle; }
.table tr:hover td { background: var(--surface-2); }
.table .actions { display: flex; gap: 4px; justify-content: flex-end; }
.admin-agents { display: grid; grid-template-columns: 280px 1fr; gap: 20px; }
.admin-agents .list { display: flex; flex-direction: column; gap: 4px; }
.agent-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--radius); border: 1px solid transparent; background: none; width: 100%; text-align: left; color: var(--text); }
.agent-row:hover { background: var(--surface); border-color: var(--border); }
.agent-row.active { background: var(--surface); border-color: var(--accent); }
.agent-row .ico { width: 30px; height: 30px; border-radius: 4px; display: grid; place-items: center; color: #fff; flex: none; }
.agent-row .ico svg { width: 16px; height: 16px; }
.agent-row .n { font-size: 14px; font-weight: 700; color: var(--primary); }
.agent-row .a { font-size: 12px; color: var(--text-2); }
.agent-row.off { opacity: .55; }
@media (max-width: 900px) { .admin-agents { grid-template-columns: 1fr; } }
.editor { display: flex; flex-direction: column; gap: 18px; }
.editor .head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.editor .head h2 { flex: 1; min-width: 200px; }
.subtabs { display: flex; gap: 6px; flex-wrap: wrap; }
.subtabs button { padding: 7px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); font-size: 13px; color: var(--text-2); }
.subtabs button.active { background: var(--primary); color: var(--primary-ink); border-color: var(--primary); }
.list-editor { display: flex; flex-direction: column; gap: 10px; }
.list-editor .item { display: grid; grid-template-columns: 200px 1fr auto; gap: 8px; align-items: start; }
.list-editor .item.ficha { grid-template-columns: 1fr; }
@media (max-width: 720px) { .list-editor .item { grid-template-columns: 1fr; } }
.kb-list { display: flex; flex-direction: column; gap: 6px; }
.kb-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); font-size: 14px; }
.kb-item .type { font-size: 10px; font-weight: 700; letter-spacing: .1em; padding: 3px 7px; border-radius: 3px; background: var(--surface-2); color: var(--accent); flex: none; }
.dropzone { border: 1.5px dashed var(--border); border-radius: var(--radius); padding: 22px; text-align: center; color: var(--text-2); background: var(--surface); cursor: pointer; transition: border-color .15s; }
.dropzone:hover, .dropzone.drag { border-color: var(--accent); color: var(--accent); }
.icon-picker { display: flex; flex-wrap: wrap; gap: 6px; }
.icon-picker button { width: 38px; height: 38px; border-radius: var(--radius); border: 1px solid var(--border); background: var(--surface); display: grid; place-items: center; color: var(--text-2); }
.icon-picker button.active { border-color: var(--accent); color: var(--accent); box-shadow: 0 0 0 2px rgba(61,139,150,.2); }
.icon-picker svg { width: 18px; height: 18px; }
.color-picker { display: flex; gap: 8px; }
.color-picker button { width: 30px; height: 30px; border-radius: 50%; border: 2px solid transparent; }
.color-picker button.active { border-color: var(--ambar); box-shadow: 0 0 0 2px var(--surface); }
.access-list { display: flex; flex-direction: column; gap: 6px; }
.access-row { display: grid; grid-template-columns: 1fr auto auto; gap: 12px; align-items: center; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); font-size: 14px; }

/* ---------- Modais e toasts ---------- */
.modal-bg { position: fixed; inset: 0; background: rgba(7,21,35,.55); display: grid; place-items: center; z-index: 50; padding: 16px; }
.modal { background: var(--surface); border-radius: var(--radius); width: 100%; max-width: 560px; max-height: 92vh; max-height: 92dvh; overflow-y: auto; box-shadow: 0 30px 80px -20px rgba(0,0,0,.5); }
.modal .gradient-bar { border-radius: var(--radius) var(--radius) 0 0; }
.modal .body { padding: 22px 24px; display: flex; flex-direction: column; gap: 16px; }
.modal .foot { display: flex; justify-content: flex-end; gap: 8px; padding-top: 4px; }
.modal.wide { max-width: 760px; }
.toasts { position: fixed; bottom: 18px; right: 18px; display: flex; flex-direction: column; gap: 8px; z-index: 60; }
.toast { background: var(--tinta); color: #fff; padding: 10px 14px; border-radius: var(--radius); font-size: 14px; box-shadow: var(--shadow); border-left: 3px solid var(--petroleo); max-width: 360px; }
.toast.err { border-left-color: var(--erro); } .toast.ok { border-left-color: var(--ok); }
.temp-pass { font-family: var(--mono); font-size: 20px; letter-spacing: .06em; background: var(--surface-2); padding: 12px 14px; border-radius: var(--radius); display: flex; justify-content: space-between; align-items: center; color: var(--primary); }
.kv { display: grid; grid-template-columns: 160px 1fr; gap: 6px 14px; font-size: 14px; }
.kv dt { color: var(--text-2); } .kv dd { margin: 0; }
.footer-note { margin-top: 30px; font-size: 12px; color: var(--text-2); }
.footer-note b { color: var(--accent); }

/* ===== Central de Conversas ===== */
.nav-badge { margin-left: auto; background: var(--ambar); color: #3a2405; font-size: 11px; font-weight: 800; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; }
.iconbtn.sm { padding: 4px; }
.spinner { width: 30px; height: 30px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 14px; }
@keyframes spin { to { transform: rotate(360deg); } }

.connect-card { display: flex; flex-wrap: wrap; gap: 30px; align-items: center; justify-content: center; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 34px; box-shadow: var(--shadow); }
.connect-mid { text-align: center; max-width: 360px; }
.connect-ico { width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; margin: 0 auto 16px; background: linear-gradient(150deg, var(--gelo), #fff); color: var(--accent); border: 1px solid var(--border); }
.qr-wrap { background: #fff; padding: 14px; border-radius: 12px; border: 1px solid var(--border); }
.qr-wrap img { display: block; border-radius: 6px; }
.qr-steps { max-width: 320px; } .qr-steps h3 { margin: 0 0 10px; font-family: var(--serif); }
.qr-steps ol { margin: 0; padding-left: 18px; } .qr-steps li { margin-bottom: 8px; }

.central { display: flex; flex: 1; min-height: 0; border-top: 1px solid var(--border); }
.cx-list { width: 340px; flex: none; display: flex; flex-direction: column; border-right: 1px solid var(--border); background: var(--surface); min-height: 0; }
.cx-list-head { padding: 12px 14px; border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 10px; }
.cx-title { display: flex; align-items: center; gap: 8px; }
.cx-title b { font-family: var(--serif); font-size: 17px; }
.cx-me { margin-left: auto; font-size: 11px; color: var(--ok); display: inline-flex; align-items: center; gap: 3px; font-weight: 700; }
.cx-search input { width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); font: inherit; color: var(--text); }
.cx-tabs { display: flex; gap: 6px; }
.cx-tabs button { flex: 1; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); border-radius: 999px; padding: 6px; font-size: 12.5px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; gap: 5px; cursor: pointer; }
.cx-tabs button.active { background: var(--primary); color: var(--primary-ink); border-color: var(--primary); }
.cx-items { flex: 1; overflow-y: auto; min-height: 0; }
.cx-empty { padding: 22px 16px; text-align: center; }
.cx-item { width: 100%; display: flex; gap: 11px; padding: 11px 14px; border: 0; border-bottom: 1px solid var(--border); background: transparent; text-align: left; cursor: pointer; align-items: center; }
.cx-item:hover { background: var(--surface-2); }
.cx-item.active { background: var(--gelo); box-shadow: inset 3px 0 0 var(--accent); }
.cx-av { width: 42px; height: 42px; flex: none; border-radius: 50%; background: var(--primary); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 15px; overflow: hidden; }
.cx-av img { width: 100%; height: 100%; object-fit: cover; }
.cx-av.lg { width: 46px; height: 46px; }
.cx-item-mid { flex: 1; min-width: 0; }
.cx-item-top { display: flex; align-items: baseline; gap: 8px; }
.cx-name { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; }
.cx-time { font-size: 11px; color: var(--text-2); flex: none; }
.cx-item-sub { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
.cx-last { flex: 1; font-size: 13px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cx-unread { flex: none; background: var(--ok); color: #fff; font-size: 11px; font-weight: 800; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; }
.cx-item-meta { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; }
.cx-item-meta .chip { padding: 2px 8px; font-size: 10.5px; }
.chip.dept { background: color-mix(in srgb, var(--c, var(--accent)) 16%, transparent); color: var(--c, var(--accent)); }
.chip.who { background: rgba(61,139,150,.14); color: var(--accent); }
.chip.bot { background: rgba(224,147,46,.16); color: #9A5F12; }
.wait { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; color: var(--text-2); font-weight: 700; }
.wait.late { color: var(--erro); }

/* Alerta persistente: conversas sem atendimento (fila) — chama a atenção com tempo ao vivo */
.cx-unattend { display: flex; align-items: center; gap: 8px; margin: 0 8px 6px; padding: 9px 11px; border-radius: 12px;
  background: rgba(224,147,46,.14); color: #8a5410; font-size: 12.5px; cursor: pointer; border: 1px solid rgba(224,147,46,.3); }
.cx-unattend:hover { filter: brightness(.98); }
.cx-unattend.late { background: rgba(214,69,69,.13); color: var(--erro); border-color: rgba(214,69,69,.32); animation: unattendPulse 1.7s ease-in-out infinite; }
/* fase211 — ninguém mais esperando, só conversa já aberta sem resposta: a barra clareia.
   A cor forte fica reservada para quem ninguém olhou — é o que a pessoa precisa ver de longe. */
/* fase221 — VERDE: o que você abriu e ainda não respondeu, nos últimos 5 minutos. É
   registro de progresso, não alarme — por isso não pulsa e não usa a cor de urgência.
   A cor forte (vermelha) fica só para quem ninguém abriu, que é o que pede ação agora. */
.cx-unattend.emtriagem { background: rgba(46,158,91,.11); color: #1f7a54; border-color: rgba(46,158,91,.30); animation: none; }
.cx-unattend.emtriagem .cxu-pulse { animation: none; }
.cx-unattend.emtriagem .cxu-go { color: #1f7a54; }
.cx-unattend .cxu-sub { display: block; font-size: 11.5px; opacity: .8; }
.cx-unattend .cxu-pulse { display: inline-flex; flex: 0 0 auto; }
.cx-unattend.late .cxu-pulse { animation: unattendRing 1.7s ease-in-out infinite; }
.cx-unattend .cxu-txt { flex: 1; min-width: 0; line-height: 1.25; }
.cx-unattend .cxu-go { flex: 0 0 auto; font-weight: 800; white-space: nowrap; }
@keyframes unattendPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(214,69,69,.36); } 50% { box-shadow: 0 0 0 5px rgba(214,69,69,0); } }
@keyframes unattendRing { 0%,100% { transform: rotate(0); } 15% { transform: rotate(-14deg); } 30% { transform: rotate(12deg); } 45% { transform: rotate(-8deg); } 60% { transform: rotate(0); } }
@media (prefers-reduced-motion: reduce) { .cx-unattend.late, .cx-unattend.late .cxu-pulse { animation: none; } }

.cx-panel { flex: 1; min-width: 0; display: flex; flex-direction: column; background: var(--bg); }
.cx-blank { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--text-2); text-align: center; padding: 20px; }
.cx-conv { flex: 1; display: flex; flex-direction: column; min-height: 0; position: relative; }
/* Assistente inline (fase116) — gaveta à direita, não sai da conversa */
.cx-assist { position: absolute; top: 0; right: 0; bottom: 0; width: 340px; max-width: 88%; background: var(--surface); border-left: 1px solid var(--border); box-shadow: -8px 0 24px rgba(0,0,0,.10); display: flex; flex-direction: column; z-index: 6; }
.cxa-head { display: flex; align-items: center; gap: 8px; padding: 11px 14px; border-bottom: 1px solid var(--border); }
.cxa-head b { display: inline-flex; align-items: center; gap: 6px; }
.cxa-body { padding: 12px 14px; overflow: auto; display: flex; flex-direction: column; gap: 14px; }
.cxa-sec { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.cxa-t { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--text-2); }
.cxa-next { font-size: 13px; padding: 6px 10px; border-radius: 8px; background: color-mix(in srgb, var(--accent) 8%, transparent); }
.cxa-next.done { color: var(--ok); background: color-mix(in srgb, var(--ok) 10%, transparent); }
.cx-assist select, .cx-assist textarea { width: 100%; border: 1px solid var(--border); border-radius: 8px; padding: 7px 9px; font: inherit; background: var(--surface); color: var(--text); }
.cx-assist textarea { resize: vertical; }
.cxa-msg { line-height: 1.45; }
@media (max-width: 720px) { .cx-assist { width: 100%; max-width: 100%; } }
/* Chat interno da equipe (fase117) — widget flutuante discreto */
.tc { position: fixed; right: 18px; bottom: 18px; z-index: 400; }
.tc-bubble { position: relative; width: 52px; height: 52px; border-radius: 50%; border: none; background: var(--primary, #0A3D62); color: #fff; display: grid; place-items: center; cursor: pointer; box-shadow: 0 6px 20px rgba(0,0,0,.22); transition: transform .12s, box-shadow .12s; }
.tc-bubble:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0,0,0,.28); }
.tc.open .tc-bubble { opacity: .55; }
.tc-badge { position: absolute; top: -3px; right: -3px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 999px; background: var(--erro, #D64545); color: #fff; font-size: 11px; font-weight: 800; display: grid; place-items: center; border: 2px solid var(--bg, #f7f5ef); }
.tc.has-unread .tc-bubble { animation: tcpulse 2s ease-in-out infinite; }
@keyframes tcpulse { 0%,100% { box-shadow: 0 6px 20px rgba(0,0,0,.22); } 50% { box-shadow: 0 6px 26px color-mix(in srgb, var(--erro) 55%, transparent); } }
.tc-panel { position: absolute; right: 0; bottom: 64px; width: 340px; max-width: calc(100vw - 36px); height: 460px; max-height: calc(100vh - 120px); background: var(--surface, #fff); border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 16px 44px rgba(0,0,0,.24); display: flex; flex-direction: column; overflow: hidden; }
.tc-head { display: flex; align-items: center; gap: 8px; padding: 11px 13px; border-bottom: 1px solid var(--border); }
.tc-head b { display: inline-flex; align-items: center; gap: 6px; }
.tc-search { margin: 8px 12px 4px; padding: 7px 10px; border: 1px solid var(--border); border-radius: 9px; font: inherit; background: var(--surface); color: var(--text); }
.tc-list { flex: 1; overflow: auto; padding: 4px 6px 8px; }
.tc-item { width: 100%; display: flex; align-items: center; gap: 10px; padding: 8px 8px; border: none; background: transparent; border-radius: 10px; cursor: pointer; text-align: left; }
.tc-item:hover { background: color-mix(in srgb, var(--accent) 7%, transparent); }
.tc-av { position: relative; width: 38px; height: 38px; border-radius: 50%; background: var(--wash, #e8e4d8); color: var(--primary); display: grid; place-items: center; font-weight: 700; font-size: 13px; flex: none; }
.tc-av.sm { width: 30px; height: 30px; font-size: 12px; }
.tc-dot { position: absolute; right: -1px; bottom: -1px; width: 11px; height: 11px; border-radius: 50%; border: 2px solid var(--surface, #fff); background: #9AA6AE; }
.tc-dot.online { background: #2E9E5B; } .tc-dot.busy { background: #E0932E; } .tc-dot.away { background: #C9A227; }
.tc-info { min-width: 0; display: flex; flex-direction: column; }
.tc-name { font-weight: 600; font-size: 13.5px; display: flex; align-items: center; gap: 6px; }
.tc-un { background: var(--erro, #D64545); color: #fff; font-size: 10.5px; font-weight: 800; border-radius: 999px; padding: 0 6px; min-width: 17px; height: 17px; display: inline-grid; place-items: center; }
.tc-last { font-size: 12px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 240px; }
.tc-thread { flex: 1; overflow: auto; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.tc-msg { display: flex; flex-direction: column; max-width: 82%; }
.tc-msg.me { align-self: flex-end; align-items: flex-end; }
.tc-msg.them { align-self: flex-start; align-items: flex-start; }
.tc-bubble2 { padding: 7px 11px; border-radius: 12px; font-size: 13.5px; line-height: 1.4; }
.tc-msg.me .tc-bubble2 { background: var(--primary, #0A3D62); color: #fff; border-bottom-right-radius: 4px; }
.tc-msg.them .tc-bubble2 { background: var(--wash, #eee9dd); color: var(--text); border-bottom-left-radius: 4px; }
.tc-time { font-size: 10.5px; color: var(--text-2); margin-top: 2px; }
.tc-compose { display: flex; gap: 6px; padding: 10px; border-top: 1px solid var(--border); }
.tc-compose input { flex: 1; border: 1px solid var(--border); border-radius: 999px; padding: 8px 13px; font: inherit; background: var(--surface); color: var(--text); }
.tc-empty { text-align: center; padding: 20px 12px; }
@media (max-width: 480px) { .tc { right: 12px; bottom: 12px; } .tc-panel { width: calc(100vw - 24px); height: calc(100vh - 100px); } }
.cx-conv-head { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--border); background: var(--surface); }
.cx-conv-name { font-family: var(--serif); font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.cx-back { display: none; }
.cx-conv-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.cx-thread { flex: 1; overflow-y: auto; min-height: 0; padding: 18px 16px; display: flex; flex-direction: column; gap: 6px; background: linear-gradient(var(--bg), var(--bg)); }
.cx-day { text-align: center; margin: 10px 0; } .cx-day span { background: var(--surface-2); color: var(--text-2); font-size: 11.5px; font-weight: 700; padding: 3px 12px; border-radius: 999px; }
.cx-msg { display: flex; } .cx-msg.out { justify-content: flex-end; }
.cx-bubble { max-width: 74%; padding: 8px 12px 6px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); font-size: 14.5px; position: relative; word-wrap: break-word; white-space: pre-wrap; }
.cx-msg.out .cx-bubble { background: var(--bubble-user); color: var(--bubble-user-ink); border-color: transparent; }
.cx-msg-time { display: block; text-align: right; font-size: 10px; opacity: .6; margin-top: 3px; }
.cx-compose { display: flex; gap: 10px; padding: 12px 16px; border-top: 1px solid var(--border); background: var(--surface); }
.cx-compose input { flex: 1; padding: 11px 16px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); font: inherit; color: var(--text); }
.cx-compose .btn { border-radius: 50%; width: 44px; padding: 0; justify-content: center; }

.dept-list { display: flex; flex-direction: column; gap: 10px; max-height: 46vh; overflow-y: auto; margin: 6px 0 14px; }
.dept-row { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; }
.dept-row-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.dept-members { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.check.sm { font-size: 13px; } .check.sm input { width: 14px; height: 14px; }
.dept-new { display: flex; gap: 8px; } .dept-new input { flex: 1; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); font: inherit; color: var(--text); }

@media (max-width: 720px) {
  .cx-list { width: 100%; }
  .central .cx-panel { display: none; }
  .central.show-panel .cx-list { display: none; }
  .central.show-panel .cx-panel { display: flex; }
  .cx-back { display: inline-flex; }
  /* Cabeçalho compacto: uma linha, nome/telefone truncados, ações sem quebrar. */
  .cx-conv-head { gap: 8px; padding: 9px 10px; }
  .cx-conv-head > .grow { min-width: 0; flex: 1; }
  .cx-conv-name { font-size: 15.5px; min-width: 0; }
  .cx-name-txt { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  .cx-conv-head .grow > .small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .cx-conv-name #cxEditName { display: none; }          /* editar nome via ficha; libera espaço */
  .cx-av.lg { width: 38px; height: 38px; font-size: 14px; }
  .cx-conv-actions { flex-wrap: nowrap; gap: 1px; flex: none; }
  .cx-conv-actions .iconbtn.hb { width: 33px; height: 33px; font-size: 17px; }
  .cx-conv-actions .iconbtn.hb svg { width: 16px; height: 16px; }
  .cx-back { width: 33px; height: 33px; }
  /* Barra do funil: quebra com elegância no celular. */
  .cx-funil { padding: 7px 10px; font-size: 12.5px; }
  .cxf-acts { flex-wrap: wrap; }
  /* Área de escrever: colada embaixo, respeitando o "notch"/gestos do aparelho. */
  .cx-compose { padding: 9px 10px calc(9px + env(safe-area-inset-bottom)); gap: 8px; }
  .cx-compose input { padding: 10px 14px; }
  .cx-thread { padding: 14px 12px; -webkit-overflow-scrolling: touch; }
  .cx-bubble { max-width: 85%; }
  /* Lista de conversas ocupa a tela toda com rolagem própria. */
  .cx-items { -webkit-overflow-scrolling: touch; }
}

/* ===== Central Fase 2 ===== */
.connect-actions { display: flex; align-items: center; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
.cx-list-head .grow { flex: 1; }
.cx-presence { display: inline-flex; align-items: center; gap: 5px; }
.cx-presence select { border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text); font-size: 11.5px; font-weight: 700; padding: 3px 6px; }
.pdot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; background: var(--cinza); flex: none; }
.pdot.online { background: var(--ok); } .pdot.busy { background: var(--erro); } .pdot.away { background: var(--ambar); } .pdot.offline { background: #9aa7ad; }
.cx-conn { display: flex; align-items: center; gap: 6px; }
.cx-conn .cx-me { margin: 0; }
.cx-ch { position: absolute; left: 6px; top: 50%; transform: translateY(-50%); width: 4px; height: 30px; border-radius: 3px; }
.cx-item { position: relative; padding-left: 18px; }
.cx-item.waiting { background: rgba(224,147,46,.07); box-shadow: inset 3px 0 0 rgba(224,147,46,.55); }
/* fase217 — o estado da conversa mora na LINHA, onde a pessoa já está olhando. */
.cx-item.triagem { background: rgba(61,139,150,.06); box-shadow: inset 3px 0 0 rgba(61,139,150,.45); }
.cx-item.respondida { background: rgba(46,158,91,.07); box-shadow: inset 3px 0 0 rgba(46,158,91,.5); }
.cx-item.active.waiting, .cx-item.active.triagem, .cx-item.active.respondida { background: var(--gelo); box-shadow: inset 3px 0 0 var(--accent); }
.chip.fila { background: rgba(224,147,46,.18); color: #9A5F12; }
.chip.triagem { background: rgba(61,139,150,.15); color: #2c6a73; }

.hours { display: flex; flex-direction: column; gap: 6px; }
.hrow { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.hrow .check { min-width: 108px; }
.hrow input[type=time] { border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); color: var(--text); padding: 4px 6px; font: inherit; }
.field textarea { border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); color: var(--text); padding: 9px 12px; font: inherit; resize: vertical; }
.field select { border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); color: var(--text); padding: 9px 12px; font: inherit; }

.bot-cards { display: flex; flex-direction: column; gap: 10px; margin-bottom: 10px; }
.bot-card { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--surface); }
.bot-card-h { display: flex; align-items: center; gap: 8px; }
.bot-n { width: 22px; height: 22px; flex: none; border-radius: 50%; background: var(--primary); color: var(--primary-ink); display: grid; place-items: center; font-size: 12px; font-weight: 800; }
.bot-card-h input { flex: 1; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); color: var(--text); padding: 7px 10px; font: inherit; }
.bot-card-h select { flex: none; }
.bc-target { margin-top: 8px; }
.bc-target textarea, .bc-target select { width: 100%; }
.resumo .kv { margin: 14px 0; grid-template-columns: 180px 1fr; }
.resumo .kv dt { align-self: center; }
.resumo .kv dd { display: flex; align-items: center; gap: 6px; }

/* ===== Multicanal: canais (WhatsApp/Telegram) ===== */
.cx-conn { display: flex; align-items: center; gap: 8px; }
.ch-dots { display: inline-flex; gap: 4px; align-items: center; }
.ch-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--c, #3D8B96); box-shadow: 0 0 0 2px rgba(0,0,0,.04); opacity: .35; }
.ch-dot.connected { opacity: 1; }
.ch-dot.qr, .ch-dot.connecting { opacity: .7; animation: chpulse 1.2s ease-in-out infinite; }
@keyframes chpulse { 50% { opacity: .3; } }
.ch-modal { max-width: 560px; }
.ch-list { display: flex; flex-direction: column; gap: 10px; margin: 12px 0; }
.ch-row { border: 1px solid var(--line, #e6e6e6); border-radius: 12px; padding: 12px; background: var(--card, #fff); }
.ch-row-head { display: flex; align-items: center; gap: 10px; }
.ch-row-head .ch-type { color: var(--muted, #6b7280); display: inline-flex; }
.ch-label { flex: 1; min-width: 0; border: 1px solid transparent; background: transparent; font-weight: 600; font-size: 14px; padding: 4px 6px; border-radius: 8px; color: inherit; }
.ch-label:hover, .ch-label:focus { border-color: var(--line, #e6e6e6); background: var(--bg, #faf9f7); outline: none; }
.ch-color { width: 30px; height: 26px; border: none; background: none; padding: 0; cursor: pointer; }
.ch-badge { font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 999px; background: #eceff1; color: #607d8b; white-space: nowrap; }
.ch-badge.connected { background: rgba(37,211,102,.15); color: #1a8a4a; }
.ch-badge.qr, .ch-badge.connecting { background: rgba(245,166,35,.18); color: #b26a00; }
.ch-who { margin-left: 2px; }
.ch-qr { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; margin: 12px 0 4px; }
.ch-qr img { border-radius: 10px; border: 1px solid var(--line, #e6e6e6); }
.ch-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.ch-add { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 6px; }
.connect-more { display: flex; justify-content: center; margin-top: 14px; }

/* ===== Ficha do cliente ===== */
.cx-namebtn { background: none; border: none; padding: 0; font: inherit; font-weight: 700; color: inherit; cursor: pointer; border-bottom: 1px dashed transparent; }
.cx-namebtn:hover { border-bottom-color: currentColor; }
.ficha-modal { max-width: 620px; }
.ficha-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin: 10px 0; }
.ficha-grid .field label { font-size: 12px; }
.ficha-grid input, .ficha-grid select { width: 100%; }
.ficha-extras { margin-top: 12px; border-top: 1px solid var(--line, #e6e6e6); padding-top: 10px; }
.ficha-extras-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.fx-row { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.fx-row .fx-label { flex: 0 0 40%; }
.fx-row .fx-value { flex: 1; }
@media (max-width: 560px) { .ficha-grid { grid-template-columns: 1fr; } }

/* Ficha ativada pela foto de perfil (avatar clicável) */
.cx-avbtn { border: none; padding: 0; cursor: pointer; position: relative; }
.cx-avbtn:hover { filter: brightness(0.94); }
.cx-avbtn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.cx-avbtn::after { content: ""; position: absolute; inset: auto -2px -2px auto; width: 14px; height: 14px; border-radius: 50%; background: var(--primary); border: 2px solid var(--surface, #fff); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3C/svg%3E"); background-size: 9px; background-repeat: no-repeat; background-position: center; }
.cx-name-txt { font-weight: 700; font-size: 15px; }

/* ================= Agenda ================= */
.head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.ag-day { margin-bottom: 22px; }
.ag-day-h { font-weight: 700; color: var(--primary); margin: 0 0 10px; font-size: 14px; letter-spacing: .02em; }
.ag-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.ag-card { background: var(--surface, #fff); border: 1px solid var(--line, #e6e3dc); border-left: 5px solid var(--et, #5C6B72); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.ag-card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ag-time { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--ink-2, #5b6670); font-variant-numeric: tabular-nums; }
.ag-etapa { color: #fff; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; white-space: nowrap; }
.ag-client { font-size: 17px; font-weight: 800; color: var(--ink, #1e2933); line-height: 1.2; }
.ag-his { display: flex; flex-wrap: wrap; gap: 6px; }
.ag-hi { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 8px; background: var(--wash, #f3f1ea); color: var(--ink, #263038); }
.ag-hi.tel { color: var(--primary); }
.ag-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.ag-tag { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--line, #e0ddd4); color: var(--ink-2, #55606a); }
.ag-tag.mod-presencial { background: #eef4f0; color: #2E7D5B; border-color: #cfe6d8; }
.ag-tag.mod-delivery { background: #fdf1e7; color: #B4661A; border-color: #f2d8bf; }
.ag-tag.mod-online { background: #eaf1f7; color: #2A5F86; border-color: #cddff0; }
.ag-tag.mod-videoconferencia { background: #f0ecf7; color: #6A4E9E; border-color: #ddd2ee; }
.ag-tag.proto { background: var(--wash, #f3f1ea); }
.ag-docs { font-size: 12.5px; color: #9a5a00; background: #fff6e6; border: 1px solid #f2e0bd; border-radius: 8px; padding: 6px 9px; display: flex; gap: 6px; align-items: flex-start; }
.ag-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; border-top: 1px dashed var(--line, #e6e3dc); padding-top: 8px; margin-top: 2px; }
.ag-meta { font-size: 11.5px; color: var(--ink-2, #6b7680); }
.ag-acts { display: flex; gap: 6px; }
.btn.xs { font-size: 12px; padding: 4px 8px; }
.ag-form { display: flex; flex-direction: column; gap: 8px; max-height: 62vh; overflow-y: auto; padding-right: 4px; }
.ag-sec { font-weight: 800; color: var(--primary); font-size: 12.5px; letter-spacing: .04em; text-transform: uppercase; margin-top: 8px; }
.att-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.att-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; background: var(--wash, #f3f1ea); border-radius: 8px; padding: 5px 10px; }
.att-row a { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; color: var(--primary); font-weight: 600; font-size: 13px; }
.att-add { display: inline-flex; cursor: pointer; }
.lk-url { display: flex; align-items: center; gap: 8px; background: var(--wash, #f3f1ea); border-radius: 8px; padding: 8px 10px; margin: 8px 0; }
.lk-url a { flex: 1; word-break: break-all; font-size: 13px; }
.row { display: flex; align-items: center; gap: 6px; }
.btn.ghost.danger { color: #A8362F; }
@media (max-width: 560px) { .ag-cards { grid-template-columns: 1fr; } }

/* Produtos */
.prod-head { display: flex; margin-bottom: 8px; }
.prod-list { display: flex; flex-direction: column; gap: 6px; max-height: 60vh; overflow-y: auto; }
.prod-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border: 1px solid var(--line, #e6e3dc); border-radius: 10px; }
.prod-row.off { opacity: .55; }
.prod-main b { font-size: 14px; }
.prod-cat { font-size: 11px; font-weight: 700; color: var(--primary); background: var(--wash, #f3f1ea); padding: 1px 7px; border-radius: 999px; margin-left: 7px; }
.prod-cat.off { color: #a8362f; }
.prod-acts { display: flex; gap: 4px; flex: none; }

/* Segmented toggle (Lista/Funil) */
.seg { display: inline-flex; background: var(--wash, #f0ede4); border-radius: 10px; padding: 2px; }
.seg-b { border: none; background: transparent; padding: 6px 14px; border-radius: 8px; font-weight: 600; font-size: 13px; cursor: pointer; color: var(--ink-2, #5b6670); }
.seg-b.on { background: var(--surface, #fff); color: var(--primary); box-shadow: 0 1px 3px rgba(0,0,0,.08); }

/* Funil / Kanban */
.fn-board { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 10px; align-items: flex-start; }
.fn-col { flex: 0 0 280px; background: var(--wash, #f5f3ec); border-radius: 12px; padding: 8px; }
.fn-col-h { display: flex; align-items: center; justify-content: space-between; font-weight: 800; font-size: 13px; padding: 6px 8px; border-bottom: 3px solid var(--et, #5C6B72); margin-bottom: 8px; color: var(--ink, #22303a); }
.fn-count { background: var(--et, #5C6B72); color: #fff; border-radius: 999px; font-size: 11px; padding: 1px 8px; }
.fn-col-body { display: flex; flex-direction: column; gap: 8px; min-height: 80px; border-radius: 8px; padding: 2px; transition: background .12s; }
.fn-col-body.drag-over { background: rgba(61,139,150,.12); outline: 2px dashed var(--petroleo, #3D8B96); }
.fn-card { background: var(--surface, #fff); cursor: grab; border-left: 5px solid var(--et, #5C6B72); }
.fn-card.dragging { opacity: .5; }
.fn-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 4px; }

/* Banner do funil dentro da conversa */
.cx-funil { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 8px 14px; background: #eef4f4; border-bottom: 1px solid var(--line, #e6e3dc); font-size: 13px; }
.cxf-acts { display: flex; gap: 6px; align-items: center; }
.cxf-done { color: #2E7D5B; font-weight: 700; display: inline-flex; align-items: center; gap: 4px; }
@media (max-width: 560px) { .fn-col { flex-basis: 82vw; } }

/* Copiloto + tags pago/faturado */
.cp-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 8px 0; }
/* Consultar um agente de dentro da conversa (copiloto) */
.cp-ask { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--border); }
.cp-ask-lbl { display: block; font-weight: 700; font-size: 13px; margin-bottom: 6px; }
.cp-ask select, .cp-ask textarea { width: 100%; margin-bottom: 8px; }
.cp-ask .spinner { width: 20px; height: 20px; border-width: 2px; margin: 0; }
.cp-ask-load { display: flex; align-items: center; gap: 8px; padding: 6px 0; }
.cp-ask-ans { margin-top: 8px; background: rgba(61,139,150,.07); border: 1px solid rgba(61,139,150,.2); border-radius: 12px; padding: 10px 12px; }
.cp-ask-who { display: inline-flex; align-items: center; gap: 5px; font-weight: 800; font-size: 12px; color: var(--accent); margin-bottom: 5px; }
.cp-ask-txt { font-size: 13.5px; line-height: 1.5; }

/* Radar comercial (prospecção) */
.rd-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 4px 0 14px; }
.rd-chip { border: 1px solid var(--border); background: var(--surface, #fff); color: var(--text-2); border-radius: 999px; padding: 5px 12px; font-size: 12.5px; font-weight: 700; cursor: pointer; }
.rd-chip b { color: var(--accent); }
.rd-chip.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.rd-chip.active b { color: #fff; }
.rd-soon { font-size: 11.5px; color: var(--text-2); display: inline-flex; align-items: center; gap: 4px; opacity: .7; }
.rd-filterbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 14px; padding: 12px; background: var(--surface, #fff); border: 1px solid var(--border); border-radius: 12px; }
.rd-filterbar input, .rd-filterbar select { min-width: 0; }
.rd-filterbar .rf-lbl { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-2); }
.dc-list { max-height: 46vh; overflow-y: auto; margin-top: 8px; }
.dc-row { display: flex; align-items: center; gap: 10px; padding: 9px 4px; border-bottom: 1px solid var(--border); }
.dc-row:last-child { border-bottom: none; }
.dc-mid { flex: 1; min-width: 0; }
.dc-badge { font-size: 10.5px; font-weight: 700; color: var(--accent); background: rgba(61,139,150,.12); border-radius: 6px; padding: 2px 8px; }
.rd-owner-line { margin-top: 4px; font-size: 13px; display: flex; flex-wrap: wrap; gap: 4px 12px; }
.rd-owner-line a { color: var(--accent); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.rd-addr { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12.5px; background: rgba(61,139,150,.07); border-radius: 8px; padding: 6px 10px; }
.rd-addr b { font-weight: 700; }
.rd-maplink { color: var(--accent); text-decoration: none; display: inline-flex; align-items: center; gap: 3px; font-weight: 700; }
.rd-contact-hi { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; font-size: 12.5px; font-weight: 600; }
.rd-contact-hi a { color: var(--accent); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
/* Mapa de parcerias */
.map-search { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.map-search input { min-width: 180px; }
.map-legend { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin: 4px 0 10px; font-size: 12.5px; color: var(--text-2); }
.map-legend span { display: inline-flex; align-items: center; gap: 6px; }
.mp-leg { display: inline-flex; align-items: center; gap: 6px; background: var(--surface); border: 1px solid var(--border); border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 12.5px; color: var(--text-2); cursor: pointer; transition: opacity .12s, border-color .12s; }
.mp-leg.on { border-color: color-mix(in srgb, var(--accent) 45%, transparent); color: var(--text); font-weight: 600; }
.mp-leg:not(.on) { opacity: .5; text-decoration: line-through; }
.mp-leg i { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 2px solid #fff; box-shadow: 0 0 0 1px var(--border); }
.map-legend i { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 2px solid #fff; box-shadow: 0 0 0 1px var(--border); }
.map-box { height: 62vh; min-height: 360px; width: 100%; border-radius: 14px; overflow: hidden; border: 1px solid var(--border); z-index: 0; }
.leaflet-popup-content { font-size: 13px; line-height: 1.45; }
.leaflet-popup-content a { color: var(--accent); }
.rd-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; }
.rd-card { background: var(--surface, #fff); border: 1px solid var(--border); border-radius: 16px; padding: 14px 15px; display: flex; flex-direction: column; gap: 8px; }
.rd-head { display: flex; align-items: center; gap: 8px; }
.rd-title { display: flex; align-items: center; gap: 7px; font-size: 15px; min-width: 0; }
.rd-title b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rd-tipo { font-size: 10px; font-weight: 800; padding: 1px 7px; border-radius: 999px; text-transform: uppercase; letter-spacing: .04em; }
.rd-tipo.parceiro { background: rgba(224,147,46,.16); color: #9A5F12; }
.rd-tipo.cliente_final { background: rgba(61,139,150,.14); color: var(--accent); }
.rd-status { font-size: 10.5px; font-weight: 800; color: var(--c); border: 1px solid color-mix(in srgb, var(--c) 40%, transparent); border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.rd-score { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 24px; padding: 0 7px; border-radius: 8px; background: linear-gradient(135deg, #2E9E5B, #3D8B96); color: #fff; font-weight: 800; font-size: 13px; }
.rd-meta { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 12px; color: var(--text-2); }
.rd-meta span, .rd-meta a { display: inline-flex; align-items: center; gap: 4px; }
.rd-meta a { color: var(--accent); text-decoration: none; }
.rd-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.rd-tag { font-size: 10.5px; font-weight: 700; border: 1px solid var(--border); border-radius: 6px; padding: 1px 7px; color: var(--text-2); }
.rd-tag.mei { background: #eef1f7; color: #3a4f86; border-color: #cdd7ee; }
.rd-tag.alert { background: rgba(214,69,69,.1); color: var(--erro); border-color: rgba(214,69,69,.3); }
.rd-resumo { font-size: 13px; color: var(--text); margin: 2px 0; line-height: 1.45; }
.rd-actions { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-top: 2px; }
/* Dossiê */
.rd-dossie-body { max-height: 62vh; overflow-y: auto; padding-right: 4px; }
.rd-badge { display: inline-block; font-weight: 800; font-size: 12.5px; padding: 4px 12px; border-radius: 999px; margin-bottom: 10px; }
.rd-badge.parceiro { background: rgba(224,147,46,.16); color: #9A5F12; }
.rd-badge.cliente_final { background: rgba(61,139,150,.14); color: var(--accent); }
.rd-lead-resumo { font-size: 14.5px; line-height: 1.5; font-weight: 600; }
.rd-sec { margin: 12px 0; }
.rd-sec h4 { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--text-2); margin: 0 0 5px; }
.rd-sec p { margin: 0; line-height: 1.5; font-size: 13.5px; }
.rd-sec textarea, .rd-sec input { width: 100%; margin-bottom: 6px; }
.rd-ul { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.5; }
.rd-ul li { margin: 3px 0; }
.rd-dec { padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 13.5px; }
.rd-dec:last-child { border-bottom: none; }
.rd-why { margin-top: 10px; display: flex; align-items: center; gap: 6px; font-weight: 700; font-size: 13px; color: #9A5F12; background: rgba(224,147,46,.12); border-radius: 10px; padding: 8px 12px; }
@media (max-width: 560px) { .rd-list { grid-template-columns: 1fr; } }

/* Acompanhamento do atendimento (agenda) */
.ag-follow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ag-flag { font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: 999px; }
.ag-flag.nao_compareceu { background: rgba(214,69,69,.12); color: var(--erro); }
.ag-flag.emissao_pendente { background: rgba(224,147,46,.16); color: #9A5F12; }
/* Lista de atividades / pendências */
.ativ-row { display: flex; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.ativ-row:last-child { border-bottom: none; }
.ativ-row.late { background: rgba(214,69,69,.04); }
.ativ-tag { display: inline-flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 800; color: var(--c); border: 1px solid color-mix(in srgb, var(--c) 40%, transparent); border-radius: 999px; padding: 2px 8px; white-space: nowrap; flex: 0 0 auto; }
.ativ-mid { flex: 1; min-width: 180px; }
.ativ-note { font-size: 13.5px; line-height: 1.4; }
.ativ-meta { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.ativ-acts { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
/* Modelos de mensagem */
.tpl-row { display: flex; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px solid var(--border); }
.tpl-row:last-child { border-bottom: none; }
.tpl-mid { flex: 1; min-width: 0; }
.tpl-title { font-weight: 700; font-size: 13.5px; }
.tpl-badge { font-size: 10px; font-weight: 700; background: rgba(61,139,150,.14); color: var(--accent); border-radius: 6px; padding: 1px 6px; }
.tpl-body { font-size: 12.5px; color: var(--text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tpl-acts { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.ag-tag.pago { background: #eaf5ee; color: #1f6b43; border-color: #bfe3cd; }
.ag-tag.fat { background: #eef1f7; color: #3a4f86; border-color: #cdd7ee; }

/* Ações rápidas */
.qa-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; }
.qa-btn { position: relative; text-align: left; padding: 12px 12px 22px; border: 1px solid var(--line, #e6e3dc); border-radius: 10px; background: var(--surface, #fff); cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--ink, #22303a); }
.qa-btn:hover { border-color: var(--primary); }
.qa-btn.loading { opacity: .6; }
.qa-type { position: absolute; left: 12px; bottom: 6px; font-size: 10px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: .04em; }

/* Relatório do dia */
.rp-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 14px; }
.rp-bar .field { margin: 0; }
.rp-bar #rp_name { min-width: 150px; }
.rp-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin-bottom: 14px; }
.stat.sm { padding: 10px 12px; }
.stat.sm .v { font-size: 20px; }
.rp-tablewrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); }
.rp-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.rp-table th { text-align: left; font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); padding: 9px 10px; border-bottom: 1px solid var(--border); background: var(--surface-2); position: sticky; top: 0; }
.rp-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.rp-table td.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.rp-table tr:last-child td { border-bottom: 0; }
.rp-table tr.rp-miss { background: rgba(224,147,46,.07); }
/* fase288 — a grade editável da prestação de contas */
.rp-grade td { white-space: nowrap; max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.rp-grade .rp-cel { cursor: cell; }
.rp-grade .rp-cel:hover { background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--accent); border-radius: 4px; }
.rp-grade .rp-cel.rp-salvando { opacity: .55; }
.rp-grade .rp-vazio { color: var(--text-2); opacity: .55; }
.rp-grade .rp-dia { font-variant-numeric: tabular-nums; color: var(--text-2); }
.rp-grade .rp-selo { color: var(--ok); font-weight: 700; margin-right: 5px; }
.rp-in { width: 100%; min-width: 90px; padding: 4px 6px; font-size: 13px; font-family: inherit; border: 1px solid var(--accent); border-radius: 6px; background: var(--surface); color: var(--text); }
.rp-in:focus { outline: none; box-shadow: 0 0 0 3px rgba(61,139,150,.18); }
.rp-pg { display: inline-block; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 700; }
.rp-pg.ok { background: rgba(46,125,91,.14); color: var(--ok); }
.rp-pg.warn { background: rgba(224,147,46,.16); color: #9a6410; }
.rp-pg.bad { background: rgba(168,54,47,.12); color: var(--erro); }
.rp-ok { color: var(--ok); font-weight: 600; }
.rp-conf { color: #9a6410; font-weight: 600; }

/* Parceiros / pagamento para o parceiro */
.ag-tag.pgpara { background: rgba(61,139,150,.14); color: var(--petroleo-escuro); }
.ag-tag.entpar { background: rgba(224,147,46,.16); color: #9a6410; }
.pb-group { border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; margin-bottom: 14px; background: var(--surface); }
.pb-head { display: flex; align-items: center; gap: 8px; font-size: 15px; }
.pb-sum { font-size: 12.5px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.pb-acts { white-space: nowrap; display: flex; gap: 6px; flex-wrap: wrap; }
.rp-table td.pb-acts { padding: 6px 8px; }

/* SIGAR link + contador */
.sigar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.sigar-timer { font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sigar-timer.ok { color: var(--ok); }
.sigar-timer.warn { color: #9a6410; }
.sigar-timer.exp { color: var(--erro); }
/* Meu dia */
.md-row { display: flex; align-items: center; gap: 12px; justify-content: space-between; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 8px; background: var(--surface); flex-wrap: wrap; }
/* Cobrança */
.cb-row { border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; background: var(--surface); }
.cb-row.ult { border-color: var(--erro); background: rgba(168,54,47,.05); }
.cb-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cb-stage { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 20px; background: var(--surface-2); color: var(--text-2); white-space: nowrap; }
.cb-stage.s0 { background: rgba(61,139,150,.12); color: var(--petroleo-escuro); }
.cb-stage.s1 { background: rgba(224,147,46,.14); color: #9a6410; }
.cb-stage.s2 { background: rgba(224,147,46,.20); color: #8a5410; }
.cb-stage.s3 { background: rgba(168,54,47,.14); color: var(--erro); }
.cb-msg { font-size: 13px; color: var(--text); background: var(--surface-2); border-radius: 9px; padding: 10px 12px; margin: 8px 0; line-height: 1.5; }
/* Acréscimos */
.ac-depts { display: flex; flex-wrap: wrap; gap: 6px 16px; padding: 6px 0; }

/* Programa do parceiro + tabela Liberte */
.prog-chip { font-size: 10.5px; font-weight: 700; padding: 3px 9px; border-radius: 20px; letter-spacing: .02em; }
.prog-chip.fidelize { background: rgba(224,147,46,.16); color: #9a6410; }
.prog-chip.liberte { background: rgba(61,139,150,.16); color: var(--petroleo-escuro); }
.lb-tab input.price-in { width: 62px; }
.lb-tab td { padding: 6px 8px; }

/* Cabeçalho da conversa — mais leve */
.cx-conv-actions { display: flex; align-items: center; gap: 4px; }
.iconbtn.hb { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center; border: 1px solid transparent; background: transparent; color: var(--text-2); cursor: pointer; font-size: 18px; line-height: 1; }
.iconbtn.hb:hover { background: var(--surface-2); color: var(--primary); border-color: var(--border); }
.iconbtn.hb.on { background: rgba(61,139,150,.14); color: var(--petroleo-escuro); }
.iconbtn.hb.ok:hover { color: var(--ok); }
.cx-more { position: relative; }
.cx-more-menu { position: absolute; right: 0; top: 40px; z-index: 30; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow); padding: 6px; min-width: 210px; display: flex; flex-direction: column; gap: 2px; }
.cx-more-menu button { display: flex; align-items: center; gap: 9px; padding: 9px 11px; border: 0; background: transparent; border-radius: 8px; cursor: pointer; font-size: 13.5px; color: var(--text); text-align: left; font-family: inherit; }
.cx-more-menu button:hover { background: var(--surface-2); color: var(--primary); }
/* ===== fase226 — UM BOTÃO DE INTELIGÊNCIA no lugar de quatro ícones =====
   Copiloto, assistente, ações rápidas e agente eram quatro desenhos seguidos no cabeçalho:
   um robô, uma faísca, um raio e um fone. Quatro ícones lado a lado não formam quatro
   escolhas — formam uma parede que ninguém lê, e quem precisa do recurso não acha, e quem
   não precisa fica com a tela cheia. Viraram um só, com um menu que DIZ o que cada um faz.
   O nome ao lado do ícone é o que faz a pessoa escolher; o ícone sozinho, não. */
.cx-ia-wrap .cx-more-menu { min-width: 268px; padding: 7px; }
.cx-menu-tit { font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--text-3, #9a9a9a); padding: 5px 11px 6px; font-weight: 700; }
.cx-more-menu button > span { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; }
.cx-more-menu button > span i { font-style: normal; font-size: 11.5px; color: var(--text-2); }
.cx-more-menu button:hover > span i { color: inherit; opacity: .8; }
.cx-more-menu button > svg { flex: none; }
/* O botão fica marcado quando o agente está ligado — é o único estado que precisa
   aparecer de fora, porque significa que a IA pode responder sem ninguém pedir. */
.iconbtn.hb.on { color: var(--ok, #2E9E5B); }

/* Personalização — cor de destaque */
.accent-row { display: flex; gap: 12px; }
.accent-sw { width: 40px; height: 40px; border-radius: 50%; border: 3px solid transparent; cursor: pointer; box-shadow: 0 1px 3px rgba(10,61,98,.25); }
.accent-sw.on { border-color: var(--text); outline: 2px solid var(--surface); }

/* Personalização — menu horizontal (só desktop; no celular continua a gaveta) */
@media (min-width: 901px) {
  .app.horiz { grid-template-columns: 1fr; grid-template-rows: 5px auto 1fr; }
  .app.horiz .sidebar { flex-direction: row; align-items: center; overflow-x: auto; overflow-y: hidden; padding: 0 6px; }
  .app.horiz .sidebar .brand { border-bottom: 0; border-right: 1px solid rgba(255,255,255,.08); padding: 10px 16px 10px 10px; white-space: nowrap; }
  .app.horiz .sidebar .brand .sub { display: none; }
  .app.horiz .sidebar nav { flex: 1; flex-direction: row; align-items: center; overflow-x: auto; overflow-y: hidden; padding: 6px; gap: 3px; }
  .app.horiz .sidebar nav .section { display: none; }
  .app.horiz .navitem { width: auto; white-space: nowrap; padding: 8px 12px; }
  .app.horiz .sidebar .user { border-top: 0; border-left: 1px solid rgba(255,255,255,.08); padding: 8px 12px; white-space: nowrap; }
  .app.horiz .sidebar .user .grow { display: none; }
}

/* Filtro por data na agenda */
.ag-datefilter { display: inline-flex; align-items: center; gap: 4px; }
.ag-datefilter input[type=date] { border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; font-size: 13.5px; background: var(--surface); color: var(--text); font-family: inherit; }

/* Portal do parceiro */
.portal { min-height: 100vh; min-height: 100dvh; background: var(--bg); display: flex; flex-direction: column; }
.pt-head { display: flex; align-items: center; gap: 12px; padding: 14px 22px; background: var(--surface); border-bottom: 1px solid var(--border); }
.pt-logo { height: 30px; }
.pt-brandtxt { display: flex; flex-direction: column; line-height: 1.15; }
.pt-brandtxt b { font-size: 14px; color: var(--primary); }
.pt-brandtxt span { font-size: 11px; color: var(--text-2); letter-spacing: .06em; text-transform: uppercase; }
.pt-who { font-weight: 600; color: var(--text); font-size: 14px; }
.pt-head .iconbtn { color: var(--text-2); }
.pt-head .iconbtn:hover { color: var(--primary); background: var(--surface-2); }
.pt-body { flex: 1; overflow-y: auto; }
.pt-wrap { max-width: 960px; margin: 0 auto; padding: 26px 20px 40px; display: flex; flex-direction: column; gap: 18px; }
.pt-hero { background: linear-gradient(150deg, var(--primary), var(--azul-escuro)); color: #EAF1F4; border-radius: 18px; padding: 30px 28px; box-shadow: var(--shadow); }
.pt-eyebrow { font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase; color: #9FBACB; font-weight: 700; }
.pt-hero h1 { font-family: var(--serif); font-size: 27px; line-height: 1.12; margin: 6px 0 8px; color: #fff; text-wrap: balance; }
.pt-hero p { color: #CFDEE7; font-size: 14.5px; margin: 0; max-width: 60ch; }
.pt-card { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 22px; box-shadow: var(--shadow); }
.pt-card h2 { font-family: var(--serif); font-size: 19px; margin: 0 0 12px; }
.pt-saldo { display: flex; align-items: center; gap: 16px; }
.pt-bignum { font-family: var(--serif); font-size: 46px; color: var(--primary); line-height: 1; font-variant-numeric: tabular-nums; }
.pc-access { margin: 6px 0 4px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pt-foot { text-align: center; color: var(--text-2); font-size: 12.5px; font-family: var(--serif); font-style: italic; padding: 8px; }

/* Próximo passo (sempre aceso) no banner do funil */
.cxf-next { display: inline-flex; align-items: center; gap: 5px; margin-left: 10px; padding: 3px 10px; border-radius: 20px; background: rgba(224,147,46,.16); color: #9a6410; font-size: 12px; font-weight: 600; }
.cxf-next.done { background: rgba(46,125,91,.14); color: var(--ok); }

/* Mídia recebida na conversa */
.cx-media-img { max-width: 220px; max-height: 240px; border-radius: 10px; display: block; margin-bottom: 4px; }
.cx-media-doc { display: inline-flex; align-items: center; gap: 6px; padding: 8px 10px; border-radius: 8px; background: rgba(255,255,255,.12); color: inherit; text-decoration: none; margin-bottom: 4px; font-size: 13px; }
.cx-msg.in .cx-media-doc { background: var(--surface-2); color: var(--text); }
.cx-media-audio { display: block; max-width: 240px; margin-bottom: 4px; }

/* Barra de filtros da agenda */
.ag-filterbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 4px 0 16px; padding: 10px 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; }
.ag-nav { display: inline-flex; align-items: center; gap: 6px; }
.ag-nav input[type=date] { border: 1px solid var(--border); border-radius: 8px; padding: 6px 8px; font-size: 13px; background: var(--surface); color: var(--text); font-family: inherit; }
.ag-navsep { font-size: 12px; color: var(--text-2); }
.iconbtn.agchev { font-size: 22px; line-height: 1; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; color: var(--text-2); }
.iconbtn.agchev:hover { background: var(--surface-2); color: var(--primary); }
.ag-fsel { border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; font-size: 13px; background: var(--surface); color: var(--text); font-family: inherit;
  /* fase291 — sem isto vale a regra global `select { width: 100% }` e cada seletor ocupa uma
     linha inteira: a barra de filtros virava cinco linhas empilhadas. */
  width: auto; max-width: 190px; }
.ag-count { font-size: 12.5px; color: var(--text-2); font-variant-numeric: tabular-nums; }
/* fase284 — busca em toda a agenda */
.ag-busca { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--border); border-radius: 999px; padding: 5px 12px; background: var(--surface); flex: 1 1 260px; min-width: 200px; max-width: 420px; }
.ag-busca:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(61,139,150,.16); }
.ag-busca svg { width: 15px; height: 15px; color: var(--text-2); flex: none; }
.ag-busca input { border: 0; background: transparent; padding: 2px 0; flex: 1; min-width: 0; font-size: 13px; font-family: inherit; color: var(--text); }
.ag-busca input:focus { outline: none; box-shadow: none; }

/* ---- Radar de cobrança proativo (Início + selo no botão) ---- */
.home-cob{display:flex;align-items:center;gap:14px;padding:16px 18px;margin:18px 0 4px;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}
.home-cob .hc-ico{flex:0 0 auto;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}
.home-cob .hc-body{flex:1 1 auto;min-width:0}
.home-cob .hc-title{font-weight:700;font-size:.82rem;letter-spacing:.02em;text-transform:uppercase;color:var(--primary);margin-bottom:2px}
.home-cob .hc-line{color:var(--text);font-size:.95rem;line-height:1.4}
.home-cob .hc-ult{color:var(--erro)}
.home-cob .btn{flex:0 0 auto}
.home-cob.urg{border-color:color-mix(in srgb,var(--erro) 45%,var(--border))}
.home-cob.urg .hc-ico{background:color-mix(in srgb,var(--erro) 14%,transparent);color:var(--erro)}
.home-cob.ok{background:color-mix(in srgb,var(--ok) 8%,var(--surface))}
.home-cob.ok .hc-ico{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}
@media(max-width:640px){.home-cob{flex-wrap:wrap}.home-cob .btn{width:100%}}
.cob-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;
  border-radius:9px;background:var(--primary);color:#fff;font-size:.72rem;font-weight:700;line-height:1}
.cob-badge.urg{background:var(--erro)}

/* ---- Portal: página comercial (material de vendas) ---- */
.pt-comercial .pt-mote{font-family:var(--serif);font-size:1.25rem;color:var(--primary);text-align:center;
  padding:14px 0 6px;font-style:italic}
.pt-acc{border:1px solid var(--border);border-radius:12px;margin:10px 0;background:var(--bg);overflow:hidden}
.pt-acc>summary{cursor:pointer;padding:13px 16px;font-weight:700;color:var(--primary);list-style:none;
  display:flex;align-items:center;gap:8px;user-select:none}
.pt-acc>summary::-webkit-details-marker{display:none}
.pt-acc>summary::before{content:"+";font-size:1.1rem;width:18px;color:var(--primary)}
.pt-acc[open]>summary::before{content:"–"}
.pt-acc[open]>summary{border-bottom:1px solid var(--border)}
.pt-acc>*:not(summary){margin:10px 16px}
.pt-acc>*:not(summary):last-child{margin-bottom:14px}
.pt-acc p{line-height:1.5;color:var(--text)}
.pt-pitch{background:color-mix(in srgb,var(--ambar) 14%,transparent);border-radius:10px;padding:10px 12px !important;color:var(--tinta)}
.pt-steps{padding-left:20px;line-height:1.6}.pt-steps li{margin:4px 0}
.pt-obj,.pt-story{border-left:3px solid var(--primary);padding:6px 0 6px 12px;margin:10px 16px}
.pt-obj b,.pt-story b{display:block;color:var(--tinta);margin-bottom:2px}
.pt-obj span,.pt-story span{color:var(--text);font-size:.92rem;line-height:1.45}

/* ---- Copiloto automático: indicador "acende" no botão ---- */
.iconbtn.hb.has-news{color:var(--ambar);position:relative}
.iconbtn.hb.has-news::after{content:"";position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;
  background:var(--ambar);box-shadow:0 0 0 2px var(--surface);animation:cop-pulse 1.6s ease-in-out infinite}
@keyframes cop-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.55}}
@media(prefers-reduced-motion:reduce){.iconbtn.hb.has-news::after{animation:none}}

/* ===== Polimento mobile geral (chat dos agentes, toolbars, modais, formulários) ===== */
@media (max-width: 900px) {
  .composer { padding: 10px 14px calc(12px + env(safe-area-inset-bottom)); }
  .chat-scroll { padding: 18px 16px; }
  .chat-head { padding: 10px 14px; }
}
@media (max-width: 720px) {
  /* Chat dos agentes: campo colado embaixo, respeitando o notch/gestos */
  .composer { padding: 9px 12px calc(10px + env(safe-area-inset-bottom)); }
  .chat-scroll { padding: 14px 12px; gap: 14px; -webkit-overflow-scrolling: touch; }
  .msg .bubble, .composer-inner { max-width: 100%; }
  /* Barras de ação com muitos botões: quebram para a ESQUERDA (flex-start) em vez de estourar a tela */
  .head-actions { flex-wrap: wrap; gap: 6px; justify-content: flex-start; }
  .head-actions .btn { flex: 0 1 auto; font-size: 11px; padding: 7px 10px; letter-spacing: .02em; }
  .head-actions .btn svg { width: 13px; height: 13px; }
  .head-actions .seg { flex: 0 1 auto; }
  .head-actions .seg-b { padding: 5px 9px; font-size: 12px; }
  .page-head { margin-bottom: 16px; }
  /* Nunca deixa a página rolar na horizontal (a grade da agenda rola dentro do próprio quadro). */
  .page { overflow-x: hidden; }
  /* Modais: começam no topo, altura dinâmica, rolagem própria */
  .modal-bg { padding: 10px; align-items: flex-start; }
  .modal { max-height: 90dvh; }
  /* 16px nos campos evita o zoom automático do celular ao focar (facilita digitar) */
  input, select, textarea { font-size: 16px; }
  /* Nada deve rolar a página inteira na horizontal; tabelas rolam no próprio quadro */
  .table-wrap, .rp-tablewrap, .md table { max-width: 100%; }
}

/* ===== Avatar silhueta + seta de voltar (detalhes do print) ===== */
.cx-av svg { width: 55%; height: 55%; opacity: .92; }
.cx-back svg { width: 20px; height: 20px; }
.cx-media-img { cursor: zoom-in; }
.cx-media-doc[data-view] { cursor: pointer; border: 0; font: inherit; }
.cx-media-video { max-width: 260px; max-height: 300px; border-radius: 10px; display: block; margin-bottom: 4px; background: #000; }

/* ===== Visualizador de mídia na própria tela (imagem, vídeo, PDF) ===== */
.mv-bg { position: fixed; inset: 0; background: rgba(9,23,36,.82); z-index: 60; display: grid; place-items: center; padding: 18px; }
.mv-box { background: var(--surface); border-radius: 14px; max-width: min(940px, 96vw); max-height: 94dvh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 30px 90px -20px rgba(0,0,0,.6); }
.mv-bar { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--border); background: var(--surface); }
.mv-name { font-weight: 700; font-size: 13px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 62vw; }
.mv-stage { display: flex; align-items: center; justify-content: center; background: #0b1a26; min-height: 0; }
.mv-img { max-width: 100%; max-height: 84dvh; display: block; object-fit: contain; }
.mv-vid { max-width: min(900px, 94vw); max-height: 84dvh; background: #000; }
.mv-pdf { width: min(880px, 94vw); height: 84dvh; border: 0; background: #fff; }
.mv-fallback { padding: 40px; color: var(--text-2); }
@media (max-width: 720px) { .mv-bg { padding: 8px; } .mv-box { max-width: 100%; max-height: 96dvh; } .mv-pdf { width: 94vw; height: 80dvh; } }

/* ===== Funis comerciais (kanban) ===== */
.sf-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.sf-count { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: color-mix(in srgb, var(--primary) 14%, transparent); color: var(--primary); font-size: .72rem; font-weight: 800; }
.seg-b.on .sf-count { background: rgba(255,255,255,.25); color: #fff; }
.sf-board { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; align-items: flex-start; }
.sf-col { flex: 0 0 260px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; display: flex; flex-direction: column; max-height: calc(100dvh - 240px); }
.sf-col-h { padding: 10px 12px; font-weight: 700; font-size: 13px; color: var(--primary); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 6px; position: sticky; top: 0; background: var(--surface-2); border-radius: 12px 12px 0 0; }
.sf-col-body { padding: 8px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; min-height: 40px; }
.sf-card { background: var(--surface); border: 1px solid var(--border); border-left: 3px solid var(--primary); border-radius: 9px; padding: 9px 10px; box-shadow: var(--shadow); cursor: grab; }
.sf-card:active { cursor: grabbing; }
.sf-card.dragging { opacity: .45; }
.sf-col-body.drag-over { background: rgba(61,139,150,.12); outline: 2px dashed var(--petroleo, #3D8B96); outline-offset: -3px; border-radius: 0 0 12px 12px; }
.ag-reco { border-left: 3px solid var(--petroleo, #3D8B96); }
.ag-or { text-align: center; color: var(--muted); font-size: 12px; margin: 12px 0 6px; text-transform: uppercase; letter-spacing: .06em; }
.afp-list { display: flex; flex-direction: column; gap: 8px; max-height: 46vh; overflow-y: auto; margin: 8px 0; }
.afp-item { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; cursor: pointer; }
.afp-item:hover { background: var(--surface-2); }
.afp-item input { margin-top: 3px; }
.afp-name { font-weight: 700; font-size: 14px; }
/* Card do funil: linhas de contato/doc/telefone */
.sf-line { display: flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--text); margin-top: 2px; }
.sf-line svg { color: var(--muted); flex: 0 0 auto; }
.sf-doc { color: var(--muted); font-variant-numeric: tabular-nums; }
.sf-indic { color: var(--roxo, #7A4E9E); }
.sf-indic svg { color: var(--roxo, #7A4E9E); }
.sf-linkchip svg { color: var(--petroleo, #3D8B96); }
.pp-item { width: 100%; text-align: left; background: var(--surface); font: inherit; }
.pp-item:hover { background: var(--surface-2); }
.sf-tel { display: inline-flex; align-items: center; gap: 5px; color: var(--petroleo, #3D8B96); font-weight: 600; text-decoration: none; }
.sf-tel:hover { text-decoration: underline; }
.sf-card.sel { outline: 2px solid var(--petroleo, #3D8B96); outline-offset: -1px; }
/* Destaque de abordagem: o card a ligar agora, bem legível */
.sf-card.destaque { border-color: var(--ambar, #E0932E); border-left-color: var(--ambar, #E0932E); box-shadow: 0 0 0 2px var(--ambar, #E0932E), 0 6px 18px rgba(224,147,46,.28); }
.sf-ribbon { display: flex; align-items: center; gap: 5px; margin: -9px -10px 8px; padding: 5px 10px; background: var(--ambar, #E0932E); color: #3a2600; font-size: 11px; font-weight: 800; letter-spacing: .02em; border-radius: 8px 8px 0 0; }
.sf-ribbon svg { color: #3a2600; }
.pcx-fcount { display: inline-block; min-width: 18px; padding: 0 6px; border-radius: 9px; background: var(--surface-2); color: var(--muted); font-size: 11px; font-weight: 700; }
/* Aviso de versão nova publicada */
.update-banner { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 200; display: flex; align-items: center; gap: 10px; padding: 10px 12px 10px 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 999px; box-shadow: 0 8px 28px rgba(0,0,0,.22); font-size: 13.5px; max-width: 94vw; }
.update-banner span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Copiloto de vendas (gaveta na tela do funil) */
.sf-assist { position: fixed; top: 0; right: 0; width: min(380px, 92vw); height: 100dvh; background: var(--surface); border-left: 1px solid var(--border); box-shadow: -12px 0 32px rgba(0,0,0,.18); transform: translateX(102%); transition: transform .22s ease; z-index: 60; display: flex; flex-direction: column; }
.sf-assist.open { transform: translateX(0); }
.sfa-h { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-bottom: 1px solid var(--border); }
.sfa-h b { display: flex; align-items: center; gap: 7px; color: var(--primary); }
.sfa-body { padding: 12px 14px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }
.sfa-card { border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--surface-2); }
.sfa-name { font-weight: 700; font-size: 15px; }
.sfa-facts { display: flex; flex-wrap: wrap; gap: 6px 12px; margin-top: 6px; font-size: 12.5px; color: var(--muted); }
.sfa-facts a, .sfa-facts span { display: inline-flex; align-items: center; gap: 4px; }
.sfa-quick { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.sfa-sec { display: flex; align-items: center; gap: 6px; font-weight: 700; font-size: 12.5px; color: var(--primary); margin-top: 4px; text-transform: uppercase; letter-spacing: .03em; }
.sfa-list { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 5px; font-size: 13px; }
.sfa-list.obj { color: var(--text); }
.sfa-ai { min-height: 20px; }
.sfa-airesp { background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; font-size: 13px; line-height: 1.5; }
.sfa-aiacts { display: flex; gap: 6px; margin-top: 6px; }
@media (max-width: 640px) { .sf-assist { width: 100vw; } }
/* Miniatura da Central inline */
.cx-mini .sfa-body { gap: 8px; }
.cxm-list { display: flex; flex-direction: column; gap: 6px; max-height: 42vh; overflow-y: auto; padding: 8px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }
.cxm-msg { max-width: 85%; padding: 7px 10px; border-radius: 12px; font-size: 13px; line-height: 1.4; word-break: break-word; }
.cxm-msg.them { align-self: flex-start; background: var(--surface); border: 1px solid var(--border); border-bottom-left-radius: 4px; }
.cxm-msg.me { align-self: flex-end; background: #d9f3e6; color: #0b3b28; border-bottom-right-radius: 4px; }
:root[data-theme="dark"] .cxm-msg.me, :root:not([data-theme="light"]) .cxm-msg.me { }
.cxm-sec { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: .03em; }
.cxm-text { width: 100%; resize: vertical; font: inherit; border: 1px solid var(--border); border-radius: 10px; padding: 9px 11px; background: var(--surface); }
.cxm-acts { display: flex; align-items: center; gap: 6px; }
/* Relatório de divergências do Agendor */
.dv { display: flex; flex-direction: column; gap: 8px; margin: 8px 0; }
.dv-head { font-size: 13px; color: var(--text); }
.dv-sec { border: 1px solid var(--border); border-radius: 9px; padding: 8px 10px; font-size: 13px; }
.dv-sec.dv-mv { border-left: 3px solid var(--petroleo, #3D8B96); }
.dv-sec.dv-rm { border-left: 3px solid var(--vermelho, #A8362F); }
.dv-list { margin: 6px 0 0; padding-left: 18px; display: flex; flex-direction: column; gap: 3px; }
.dv-list li { font-size: 12.5px; }
.sf-card-top { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.sf-card-top b { font-size: 13.5px; }
.sf-valor { color: var(--ok); font-weight: 800; font-size: 12px; white-space: nowrap; }
.sf-chip { display: inline-block; margin-top: 5px; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent); }
.sf-next { margin-top: 6px; font-size: 12px; color: var(--text-2); display: flex; align-items: center; gap: 4px; }
.sf-card-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.sf-acts { display: flex; gap: 2px; }
.sf-move { margin-top: 8px; width: 100%; padding: 5px 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); color: var(--text); font: inherit; font-size: 12px; }
.sf-empty { color: var(--text-2); text-align: center; padding: 10px; font-size: 13px; }
.btn.ghost.danger { color: var(--erro); }
@media (max-width: 720px) { .sf-col { flex-basis: 82vw; } }

/* ===== Painel gerencial ===== */
.pn-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 16px; }
.pn-tile { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 16px; box-shadow: var(--shadow); }
.pn-tile .pn-v { font-size: 26px; font-weight: 800; color: var(--primary); line-height: 1.1; }
.pn-tile .pn-l { font-size: 12.5px; color: var(--text-2); margin-top: 4px; }
.pn-tile.ok .pn-v { color: var(--ok); }
.pn-tile.urg { border-color: color-mix(in srgb, var(--erro) 45%, var(--border)); }
.pn-tile.urg .pn-v { color: var(--erro); }
.pn-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.pn-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; box-shadow: var(--shadow); }
.pn-card h3 { font-family: var(--serif); font-size: 15px; margin: 0 0 10px; color: var(--primary); }
.pn-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.pn-row:last-child { border-bottom: 0; }
.pn-row b { font-variant-numeric: tabular-nums; }

/* ===== Cards de renovação: vencimento, atraso, tentativas ===== */
.sf-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.sf-venc { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); }
.sf-venc.prox { background: rgba(224,147,46,.16); color: #9A5F12; }
.sf-venc.venc { background: rgba(168,54,47,.14); color: var(--erro); }
.sf-try { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px; background: rgba(61,139,150,.14); color: var(--accent); }
.sf-card.atrasado { border-left-color: var(--erro); background: color-mix(in srgb, var(--erro) 6%, var(--surface)); }
.sf-card.hoje { border-left-color: var(--ambar); }
.sf-late { color: var(--erro); font-weight: 700; }

/* ===== Roteiro: atalhos de pergunta ao assistente ===== */
.pt-asks { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 16px !important; }

/* ===== Funil: colunas terminais discretas + resultados + alertas ===== */
.sf-col.terminal { flex-basis: 200px; background: transparent; border-style: dashed; opacity: .82; }
.sf-col.terminal:hover { opacity: 1; }
.sf-col.terminal .sf-col-h { background: transparent; color: var(--text-2); }
.sf-col.won .sf-col-h { color: var(--ok); }
.sf-col.lost .sf-col-h { color: var(--erro); }
.sfr-bar { display: flex; align-items: center; gap: 10px; padding: 5px 0; font-size: 13px; }
.sfr-l { flex: 0 0 120px; color: var(--text-2); }
.sfr-track { flex: 1; height: 10px; background: var(--surface-2); border-radius: 999px; overflow: hidden; }
.sfr-fill { display: block; height: 100%; background: var(--primary); border-radius: 999px; }
.sfr-fill.won { background: var(--ok); } .sfr-fill.lost { background: var(--erro); }
.al-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.al-row:last-child { border-bottom: 0; }
.al-mid { flex: 1; min-width: 0; }

/* ===== Link da matriz (agendamento por departamento) ===== */
.btn.matriz { background: var(--ambar, #E0932E); color: #2a1d05; border-color: transparent; font-weight: 700; box-shadow: 0 2px 10px -3px rgba(224,147,46,.5); }
.btn.matriz:hover { filter: brightness(.94); color: #2a1d05; }
.callout.err { border-left-color: var(--erro); color: var(--erro); }
hr.sep { border: none; border-top: 1px solid var(--border); margin: 16px 0; }
.lbl { display: block; font-weight: 600; font-size: 14px; margin: 4px 0 6px; }
.mz-tabs { display: inline-flex; }
.mz-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
.mz-slot { border: 1px solid var(--border); border-radius: 10px; padding: 8px 6px; text-align: center; background: var(--surface); }
.mz-slot b { display: block; font-size: 15px; }
.mz-slot span { font-size: 12px; color: var(--text-2); }
.mz-slot.full { opacity: .45; text-decoration: line-through; }
.mz-days { display: grid; gap: 6px; }
.mz-day { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.mz-day .check { min-width: 78px; margin: 0; }
.mz-day input[type=time] { padding: 4px 6px; }
.mz-ovr-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.mz-ovr-add { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; }
.mz-ovr-add select, .mz-ovr-add input { padding: 6px 8px; }

/* ===== Painel Comercial (cockpit do vendedor) ===== */
@property --p{syntax:'<number>';inherits:false;initial-value:0}
.pcx-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.pcx-kpi{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px 18px;box-shadow:0 3px 12px rgba(0,0,0,.06)}
.pcx-kpi .v{font-family:var(--font-display,Georgia,serif);font-size:32px;font-weight:800;line-height:1}
.pcx-kpi .l{font-size:12.5px;color:var(--text-2);line-height:1.2;font-weight:600}
.pcx-kpi .l a{color:var(--petroleo);cursor:pointer;text-decoration:none;font-weight:700}
.pcx-kpi.pcx-meta{background:linear-gradient(135deg,var(--surface),var(--surface-2))}
.pcx-ring{--p:0;width:58px;height:58px;border-radius:50%;background:conic-gradient(var(--ambar) calc(var(--p)*1%),var(--surface-2) 0);display:grid;place-items:center;transition:--p .6s ease}
.pcx-ring i{width:43px;height:43px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:13px;font-weight:800;color:var(--azul);font-style:normal}
@media(max-width:640px){.pcx-kpi{padding:9px 13px}.pcx-kpi .v{font-size:26px}}
.pcx-norte{background:linear-gradient(150deg,var(--azul),#0c4c78 60%,var(--petroleo));color:#fff;border-radius:18px;padding:20px 22px;position:relative;overflow:hidden;box-shadow:0 12px 30px -18px rgba(10,42,63,.6)}
.pcx-norte.pcx-empty{background:var(--surface);color:var(--text);border:1px solid var(--border)}
.pcx-norte::after{content:"";position:absolute;right:-40px;top:-40px;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,rgba(224,147,46,.4),transparent 70%)}
.pcx-norte.pcx-empty::after{display:none}
.pcx-eye{font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-weight:700;opacity:.9}
.pcx-norte h2{font-size:clamp(19px,2.6vw,25px);margin:8px 0 4px;color:inherit}
.pcx-norte p{margin:0;font-size:13.5px;opacity:.92;max-width:60ch}
.pcx-why{margin-top:10px;font-size:12px;background:rgba(255,255,255,.14);border-radius:8px;padding:6px 10px;display:inline-block}
.pcx-norte.pcx-empty .pcx-why{background:var(--surface-2)}
.pcx-act{margin-top:14px;display:flex;gap:9px;flex-wrap:wrap}
.btn.ok{background:var(--ok);color:#fff;border-color:transparent}
.pcx-cols{display:grid;grid-template-columns:1.5fr 1fr;gap:15px;margin-top:15px}
.pcx-card{margin-bottom:15px}
.pcx-ch{padding:14px 16px 0;display:flex;align-items:center;justify-content:space-between;gap:10px}
.pcx-ch h3{font-size:15.5px;margin:0}
.pcx-cb{padding:12px 16px 16px}
.pcx-lead{display:flex;gap:11px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:12px;margin-bottom:9px;transition:transform .14s,box-shadow .14s}
.pcx-lead:hover{transform:translateY(-2px);box-shadow:0 10px 22px -14px rgba(10,42,63,.4)}
.pcx-av{width:40px;height:40px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px}
.pcx-info{flex:1;min-width:0}
.pcx-info b{font-size:14px}
.pcx-sub{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcx-rz{font-size:11.5px;color:var(--petroleo);margin-top:2px}
.pcx-chip{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.pcx-quente{background:rgba(194,74,62,.14);color:#C24A3E}.pcx-morno{background:rgba(185,130,43,.16);color:#B9822B}
.pcx-novo{background:rgba(46,125,91,.14);color:var(--ok)}.pcx-renov{background:rgba(10,61,98,.1);color:var(--azul)}
.pcx-funnel{margin-bottom:12px}
.pcx-fname{font-size:12px;font-weight:800;color:var(--azul);text-transform:uppercase;letter-spacing:.05em;margin-bottom:7px}
.pcx-stages{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.pcx-st{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:9px}
.pcx-st.late{border-color:#C24A3E;background:rgba(194,74,62,.08)}
.pcx-n{font-family:var(--font-display,Georgia,serif);font-size:19px;font-weight:700}
.pcx-t{font-size:11.5px;font-weight:700}.pcx-g{font-size:10.5px;color:var(--text-2);margin-top:3px;line-height:1.3}
.pcx-flag{font-size:10px;font-weight:700;color:#C24A3E;margin-top:4px}
.pcx-spark{display:flex;align-items:flex-end;gap:8px;height:78px;margin:6px 0 20px}
.pcx-b{flex:1;background:var(--petroleo);border-radius:5px 5px 0 0;position:relative;opacity:.5;transition:height .6s cubic-bezier(.2,.8,.2,1)}
.pcx-b.now{background:var(--ambar);opacity:1}
.pcx-b s{position:absolute;bottom:-18px;left:0;right:0;text-align:center;font-size:10px;color:var(--text-2)}
.pcx-b em{position:absolute;top:-16px;left:0;right:0;text-align:center;font-size:10px;font-weight:800;color:var(--text);font-style:normal}
.pcx-by{font-size:12px;color:var(--text-2);background:var(--surface-2);border-radius:8px;padding:8px 10px;margin-bottom:9px}
.pcx-by b{color:var(--petroleo)}
.pcx-win{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px dashed var(--border)}
.pcx-win:first-child{border-top:none}
.pcx-medal{width:30px;height:30px;border-radius:9px;background:rgba(46,125,91,.14);color:var(--ok);display:grid;place-items:center;font-size:15px;flex:0 0 auto}
.pcx-win b{font-size:13.5px}.pcx-val{margin-left:auto;font-weight:800;color:var(--ok)}
.pcx-pend{margin-top:10px;display:grid;gap:6px}
.pcx-pendrow{display:flex;align-items:center;gap:10px;font-size:13px;flex-wrap:wrap}
.pcx-pendrow>span:first-child{font-weight:600}
.pcx-pendrow .btn{margin-left:auto}
.pcx-cf{position:fixed;inset:0;pointer-events:none;z-index:9999;overflow:hidden}
.pcx-cf i{position:absolute;top:40%;width:9px;height:14px;border-radius:2px}
@media (max-width:900px){.pcx-cols{grid-template-columns:1fr}}


/* Submenu Departamentos + tela do departamento */
.navdep-h{cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none}
.navsec-h{cursor:pointer;display:flex;align-items:center;gap:4px;user-select:none}
.navsec-add{padding:2px;color:var(--ambar);display:inline-flex;flex:0 0 auto}
.navsec-add:hover{opacity:.8}
.navdep-arrow{font-size:11px;opacity:.7;transition:transform .2s;flex:0 0 auto}
.navdep-item{padding-left:10px}
.navdep-dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto;margin-right:2px}
.navdep-loading{padding:6px 12px;opacity:.7;font-size:12px}
.dep-team-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}
.dep-team-row:last-child{border-bottom:none}

/* Ajuda contextual — "ⓘ" discreto com dica */
.ihint{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1.4px solid var(--text-2);color:var(--text-2);font-size:10px;font-weight:700;cursor:help;vertical-align:middle;margin-left:5px;flex:0 0 auto}
.ihint:hover,.ihint:focus{border-color:var(--petroleo);color:var(--petroleo);outline:none}
.ihint-i{line-height:1;font-family:Georgia,serif;font-style:italic}
.ihint-bub{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);background:var(--azul);color:#fff;padding:9px 12px;border-radius:10px;font-size:12.5px;font-weight:400;font-style:normal;line-height:1.4;width:max-content;max-width:250px;text-align:left;box-shadow:0 10px 26px -10px rgba(0,0,0,.55);opacity:0;visibility:hidden;transition:opacity .18s,transform .18s;z-index:60;pointer-events:none;letter-spacing:0;text-transform:none}
.ihint-bub::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--azul)}
.ihint:hover .ihint-bub,.ihint:focus .ihint-bub{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media (max-width:700px){.ihint-bub{left:auto;right:-4px;transform:translateY(4px);max-width:210px}.ihint-bub::after{left:auto;right:10px}.ihint:hover .ihint-bub,.ihint:focus .ihint-bub{transform:translateY(0)}}

/* Completar relatório — o agente pede o que falta */
.rf-block{margin-top:16px;border-top:1px solid var(--border);padding-top:14px}
.rf-block h3{font-size:16px;margin:0 0 4px;display:flex;align-items:center}
.rf-card{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-top:10px}
.rf-head{font-size:14px;margin-bottom:8px}
.rf-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.rf-f{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--text-2)}
.rf-f input,.rf-f select{padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:13px}
.rf-f.rf-chk{flex-direction:row;align-items:center;gap:7px;color:var(--text);align-self:end}
.rf-act{margin-top:10px;text-align:right}

/* ===== Avisos (sino) ===== */
.notif-wrap{position:relative}
.notif-btn{position:relative}
.notif-badge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--erro);color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px var(--surface)}
.notif-list{display:flex;flex-direction:column;max-height:52vh;overflow-y:auto;margin:4px 0}
.notif-item{display:flex;gap:10px;align-items:flex-start;padding:10px 6px;border-bottom:1px solid var(--border);text-decoration:none;color:var(--text)}
.notif-item:last-child{border-bottom:none}
.notif-item .notif-dot{width:8px;height:8px;border-radius:50%;background:transparent;margin-top:6px;flex:0 0 auto}
.notif-item.unread .notif-dot{background:var(--accent)}
.notif-item.unread{background:rgba(61,139,150,.05)}
.notif-txt{flex:1;min-width:0;font-size:13.5px;line-height:1.4}

/* ===== Minha agenda (home) ===== */
.mag-card{background:var(--surface,#fff);border:1px solid var(--border);border-left:5px solid var(--petroleo,#3D8B96);border-radius:16px;padding:14px 16px;margin-bottom:20px}
.mag-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.mag-actions{display:flex;gap:8px;flex-wrap:wrap}
.mag-sec{margin-top:10px}
.mag-sec-t{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2);margin:6px 0 4px}
.mag-item{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.mag-item:last-child{border-bottom:none}
.mag-item.late{background:rgba(214,69,69,.05)}
.mag-mid{flex:1;min-width:160px}
.mag-title{font-size:13.5px;line-height:1.35;font-weight:600}
.mag-when{font-size:12px;color:var(--text-2);margin-top:2px;font-variant-numeric:tabular-nums}
.mag-empty{padding:6px 2px;font-size:13.5px;color:var(--text-2);line-height:1.5}

/* ===== Fila da equipe (agrupada por pessoa) ===== */
.eq-grp{margin-bottom:14px;border:1px solid var(--border);border-radius:12px;padding:8px 12px}
.eq-head{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}

/* ===== Gerente do departamento (toggle) ===== */
.dm-row{display:flex;align-items:center;gap:8px;justify-content:space-between}
.dm-mgr{border:1px solid var(--border);background:var(--surface,#fff);color:var(--text-2);border-radius:999px;padding:2px 9px;font-size:10.5px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.dm-mgr.on{background:rgba(224,147,46,.16);color:#9A5F12;border-color:color-mix(in srgb,#E0932E 40%,transparent)}
.at-colegas{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:2px 10px;max-height:160px;overflow-y:auto;padding:4px 0}

/* ===== fase98: solicitações, preferencial ===== */
.dm-btns{display:inline-flex;gap:5px;flex:0 0 auto}
.dm-pref{border:1px solid var(--border);background:var(--surface,#fff);color:var(--text-2);border-radius:999px;padding:2px 9px;font-size:10.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.dm-pref.on{background:rgba(61,139,150,.14);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
.navdep-star{margin-left:auto;color:#E0A93E;font-size:12px}

/* ===== fase99: régua de renovação (ligar hoje) ===== */
.reno-card{border-left:4px solid var(--ambar,#E0932E)}
.reno-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--ambar,#E0932E);color:#fff;font-size:11px;font-weight:800;margin-left:6px}
.reno-list{display:flex;flex-direction:column;gap:8px}
.reno-row{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:12px}
.reno-row.late{border-color:color-mix(in srgb,var(--erro) 40%,transparent);background:rgba(214,69,69,.04)}
.reno-meta{font-size:12px;color:var(--text-2);margin-top:2px}
.reno-toque{font-weight:700;color:var(--accent)}
.reno-fila{margin:2px 0 10px;padding:8px 10px;border:1px dashed var(--border);border-radius:10px;background:color-mix(in srgb,var(--accent) 5%,transparent);color:var(--text-2);line-height:1.5}
/* Correio interno (fase109) */
.mail-layout{display:grid;grid-template-columns:minmax(230px,300px) 1fr;gap:16px;align-items:start}
@media (max-width:840px){.mail-layout{grid-template-columns:1fr}}
.mail-side{position:sticky;top:8px}
.mail-acc{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:12px}
.mail-acc-ic{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);flex:none}
.mail-acc-ic.setor{background:color-mix(in srgb,var(--petroleo,#166978) 14%,transparent);color:var(--petroleo,#166978)}
.mail-seg{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:6px}
.mail-seg button{border:1px solid transparent;background:transparent;color:var(--text-2);padding:5px 12px;border-radius:999px;cursor:pointer;font-weight:600}
.mail-seg button.on{background:var(--accent);color:#fff}
.mail-msgs{display:flex;flex-direction:column;gap:6px}
.mail-msg{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--border);border-radius:12px}
.mail-msg .grow{cursor:pointer;min-width:0}
.mail-msg .grow b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mail-msg.fail{border-color:color-mix(in srgb,var(--erro) 40%,transparent);background:rgba(214,69,69,.04)}
.mail-compose{display:flex;flex-direction:column;gap:12px}
.mail-editor{min-height:160px;max-height:340px;overflow:auto;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--surface);color:var(--text);line-height:1.55}
.mail-editor.sm{min-height:70px}
.mail-editor:focus{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:1px}
.mail-editor p{margin:0 0 8px}
.mail-cop{background:color-mix(in srgb,var(--accent) 5%,transparent);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.mail-cop textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:8px 10px;font:inherit;background:var(--surface);color:var(--text);resize:vertical}
.mail-tools{align-items:center}
.mail-members{display:flex;flex-wrap:wrap;gap:8px 16px;max-height:160px;overflow:auto;padding:4px 2px}
.mail-preview{border:1px solid var(--border);border-radius:12px;padding:14px 16px;max-height:56vh;overflow:auto;line-height:1.55}
.mail-preview img{max-width:100%;height:auto}
.mail-msg.unseen{background:color-mix(in srgb,var(--accent) 6%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}
.mail-msg.unseen b{font-weight:800}
.mail-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);flex:none}
.mail-inbox-sel{font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);max-width:180px}
.mail-inbox-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.mail-inbox-search{flex:1;min-width:150px;font-size:13px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}
.mail-editor img{max-width:100%;height:auto;border-radius:6px}
.mail-imap{border:1px dashed var(--border);border-radius:10px;padding:8px 10px}
.mail-imap summary{cursor:pointer;font-weight:600;color:var(--text-2)}
.mail-imap[open] summary{margin-bottom:8px}
.mail-atts{margin:6px 0 10px;padding:6px 10px;background:color-mix(in srgb,var(--accent) 5%,transparent);border-radius:8px}
.mail-atts a{color:var(--accent);text-decoration:none;font-weight:600}
.gz-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:12px;margin-bottom:6px}
.gz-row .grow{min-width:0}
/* fase111 — painel de indicadores na Home */
.kpi-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:26px}
.kpi-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.kpi{background:color-mix(in srgb,var(--accent) 5%,transparent);border:1px solid color-mix(in srgb,var(--accent) 14%,transparent);border-radius:12px;padding:12px 14px;text-align:center}
.kpi-v{font-size:26px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;line-height:1}
.kpi-l{font-size:12px;color:var(--text-2);margin-top:4px}
.kpi-foot{margin-top:12px}
/* fase111 — agentes mais discretos, ao final da Home */
.home-agents-h{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--text-2);margin:6px 0 12px}
.home-agents-h svg{opacity:.7}
.agent-grid.discreet{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.agent-grid.discreet .agent-card{padding:12px 14px;gap:6px;background:transparent;border-color:color-mix(in srgb,var(--border) 80%,transparent)}
.agent-grid.discreet .agent-card:hover{background:var(--surface)}
.agent-grid.discreet .agent-card .ico{width:32px;height:32px}
.agent-grid.discreet .agent-card .ico svg{width:17px;height:17px}
.agent-grid.discreet .agent-card h3{font-size:15px}
.agent-grid.discreet .agent-card p{font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.agent-grid.discreet .agent-card .foot .small{font-size:11px}

/* ===== fase100: copiloto do Suporte (sinal + relatório) ===== */
.cx-signal{margin:0 12px 6px;display:flex}
.cx-signal.loading{align-items:center;gap:8px;padding:8px 12px;font-size:13px;color:var(--text-2);background:var(--surface-2,#f3f1ea);border-radius:10px}
.cx-signal.op{align-items:flex-start;gap:10px;padding:10px 12px;background:rgba(224,147,46,.1);border:1px solid color-mix(in srgb,#E0932E 40%,transparent);border-radius:12px}
.cxs-ico{font-size:18px;line-height:1.2}
.cxs-body{flex:1;min-width:0}
.cxs-title{font-weight:800;font-size:13px;color:#9A5F12}
.cxs-motivo{font-size:13px;margin-top:2px}
.cxs-task{font-size:12.5px;margin-top:4px;color:var(--text)}
.cxs-acts{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.sr-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}
.sr-controls select{padding:5px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}
.sr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:6px}
.sr-stat{background:var(--surface-2,#f3f1ea);border:1px solid var(--border);border-radius:12px;padding:12px;text-align:center}
.sr-v{font-size:26px;font-weight:800;line-height:1}
.sr-l{font-size:11.5px;color:var(--text-2);margin-top:4px}
.sr-sec{margin-top:14px}
.sr-sec h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);margin:0 0 6px}
.sr-op{padding:8px 10px;border:1px solid var(--border);border-left:3px solid var(--ambar,#E0932E);border-radius:10px;margin-bottom:6px;font-size:13.5px}
.sr-row{display:flex;justify-content:space-between;gap:8px;padding:6px 2px;border-bottom:1px solid var(--border);font-size:13.5px}
.sr-row:last-child{border-bottom:none}

/* ===== fase101: funil na agenda + cadência ===== */
.mag-funil{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:5px}
.mag-funil-lbl{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:var(--text-2)}
.mag-stage{font-size:12px;padding:3px 6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);max-width:180px}
.mag-rel{font-size:10.5px;font-weight:700;background:var(--surface-2,#f3f1ea);color:var(--text-2);border-radius:6px;padding:1px 7px}
.reno-cad{margin-left:auto;font-size:12px;color:var(--text-2);display:inline-flex;align-items:center;gap:5px}
.reno-cad select{font-size:12px;padding:3px 6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}

/* ===== fase102: botões de acesso ===== */
.ab-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}
.ab-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:118px;min-height:76px;padding:12px 16px;border:none;border-radius:16px;cursor:pointer;font-weight:700;font-size:13.5px;color:#fff;background:linear-gradient(135deg,var(--abc,#3D8B96),color-mix(in srgb,var(--abc,#3D8B96) 72%,#000));box-shadow:0 6px 16px -8px color-mix(in srgb,var(--abc,#3D8B96) 80%,transparent);transition:transform .12s,box-shadow .12s}
.ab-btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px -8px color-mix(in srgb,var(--abc,#3D8B96) 85%,transparent)}
.ab-btn svg{stroke:#fff}
.ab-btn .ab-ext{position:absolute;top:6px;right:8px;opacity:.85}
.ab-manage{--abc:#8a94a0;background:transparent;color:var(--text-2);border:1.5px dashed var(--border);box-shadow:none}
.ab-manage svg{stroke:var(--text-2)}
.ab-manage:hover{transform:none;border-color:var(--accent);color:var(--accent)}
.ab-manage:hover svg{stroke:var(--accent)}
.ab-manage-list{display:flex;flex-direction:column;gap:6px;max-height:52vh;overflow-y:auto}
.ab-mrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.ab-mrow.dragging{opacity:.5}
.ab-drag{cursor:grab;color:var(--text-2);font-weight:800;letter-spacing:-2px}
.ab-swatch{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.ab-swatch svg{stroke:#fff}
.ab-minfo{flex:1;min-width:0}
.ab-swatches{display:flex;gap:8px;flex-wrap:wrap}
.ab-sw{width:28px;height:28px;border-radius:8px;border:2px solid transparent;cursor:pointer}
.ab-sw.on{border-color:var(--text);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}
.ab-icons{display:flex;gap:6px;flex-wrap:wrap}
.ab-ic{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.ab-ic.on{border-color:var(--accent);background:rgba(61,139,150,.12)}
.ab-ic svg,.ab-ic{color:var(--text-2)}
.ab-roles{display:flex;gap:14px;flex-wrap:wrap}

/* ===== fase103: credenciamento ===== */
.cr-actflag{font-size:10px;font-weight:700;color:#9A5F12;background:rgba(224,147,46,.14);border-radius:6px;padding:1px 6px;margin-left:4px}
.cf-stage{border:1px solid var(--border);border-radius:10px;padding:10px;margin-bottom:8px;background:var(--surface)}
.cf-stage-h{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.cf-sname{flex:1;font-weight:700}
.cf-acts{display:flex;flex-direction:column;gap:5px;padding-left:6px;border-left:2px solid var(--border)}
.cf-act{display:flex;align-items:center;gap:6px}
.cf-atitulo{flex:1}
.cf-din{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--text-2);white-space:nowrap}
.cf-din input{width:56px}

/* ===== fase105: meu desempenho ===== */
.ds-hero{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:center;background:var(--surface,#fff);border:1px solid var(--border);border-left:5px solid var(--petroleo,#3D8B96);border-radius:16px;padding:18px 20px;margin-bottom:16px}
.ds-hero.ok{border-left-color:var(--ok,#2E7D5B)}
.ds-score{font-size:44px;font-weight:800;line-height:1;color:var(--primary)}
.ds-score-l{font-size:12px;color:var(--text-2);margin-top:2px}
.ds-rec{margin-top:10px;font-weight:700;font-size:14px}
.ds-rec.up{color:var(--ok,#2E7D5B)}.ds-rec.down{color:#9A5F12}
.ds-hero-r{min-width:240px;flex:1;max-width:420px;display:flex;flex-direction:column;gap:8px}
.ds-cmp{display:flex;align-items:center;gap:10px;font-size:13px}
.ds-cmp span{width:46px;color:var(--text-2)}
.ds-cmp b{font-variant-numeric:tabular-nums}
.ds-bar{flex:1;background:var(--wash,#f0ede4);border-radius:999px;height:12px;overflow:hidden}
.ds-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--petroleo,#3D8B96),var(--azul,#0A3D62));border-radius:999px}
.ds-bar i.med{background:var(--text-2,#8a94a0);opacity:.5}
.ds-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:18px}
.ds-tile{background:var(--surface,#fff);border:1px solid var(--border);border-top:3px solid var(--c,#3D8B96);border-radius:12px;padding:12px 14px}
.ds-v{font-size:26px;font-weight:800;line-height:1;color:var(--c,#3D8B96)}
.ds-l{font-size:12px;color:var(--text-2);margin-top:4px}
.ds-focus{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ds-rank{margin-top:8px}
.ds-rank h3{font-size:14px;margin:0 0 8px}
.ds-rank-list{display:flex;flex-direction:column;gap:5px}
.ds-rank-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface,#fff);cursor:pointer;text-align:left;width:100%}
.ds-rank-row.on{border-color:var(--accent);background:rgba(61,139,150,.08)}
.ds-pos{font-weight:800;color:var(--text-2);width:28px}
.ds-rk-name{font-weight:700;flex:1;min-width:0}
.ds-rk-sub{flex:0 0 auto}
.ds-rk-score{font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums;min-width:36px;text-align:right}
@media(max-width:560px){.ds-rk-sub{display:none}}

/* ===== fase106: régua de acompanhamento (dept config) ===== */
.dc-regua{border-top:1px dashed var(--border);padding-top:12px;margin-top:4px}
.dc-regua .check{font-weight:700}

/* ===== Agenda · grade de horários (Dia/Semana) — fase133 ===== */
.agg-panel{display:flex;gap:12px;flex-wrap:wrap;align-items:stretch;margin-bottom:12px}
.aggp-prox,.aggp-livres,.aggp-cop{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow)}
.aggp-prox{flex:1;min-width:240px;border-left:4px solid var(--ambar)}
.aggp-prox.empty{display:flex;align-items:center;gap:8px;color:var(--text-2);border-left-color:var(--ok)}
.aggp-livres{flex:1;min-width:220px}
.aggp-cop{display:flex;flex-direction:column;gap:8px;justify-content:center;min-width:200px;max-width:280px}
.aggp-k{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2);font-weight:700;margin-bottom:4px}
.aggp-k b{color:var(--primary)}
.aggp-name{font-size:17px;font-weight:800;color:var(--text);line-height:1.2}
.aggp-when{font-size:12.5px;color:var(--text-2);margin-top:2px;display:flex;align-items:center;gap:5px}
.aggp-acts{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap}
.aggp-livre-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:var(--gelo);border:1px solid var(--border);border-radius:8px;padding:6px 9px;margin-top:5px;cursor:pointer;font-size:12.5px;color:var(--text)}
.aggp-livre-row:hover{border-color:var(--ambar)}
.aggp-lr-t{font-variant-numeric:tabular-nums;font-weight:700;color:var(--primary)}
.aggp-lr-n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aggp-take{font-size:11px;font-weight:800;color:var(--ambar);text-transform:uppercase;letter-spacing:.03em}
.agg-periodo{font-weight:800;color:var(--text);font-size:15px;margin:2px 2px 8px;text-transform:capitalize}

.agg-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.agg-scroll{max-height:min(72vh,760px);overflow:auto;position:relative}
.agg-head{display:flex;position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--border)}
.agg-corner{width:58px;flex:none;border-right:1px solid var(--border)}
.agg-dh{flex:1 1 0;min-width:0;padding:7px 6px;text-align:center;border-left:1px solid var(--border)}
.agg-dh.today{background:color-mix(in srgb,var(--ambar) 12%,transparent)}
.agg-dh-top{display:flex;align-items:baseline;justify-content:center;gap:5px}
.agg-dow{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);font-weight:700}
.agg-dnum{font-size:16px;font-weight:800;color:var(--text)}
.agg-dh.today .agg-dnum{color:var(--ambar)}
.agg-allday{margin-top:5px;display:flex;flex-direction:column;gap:3px}
.agg-chip{display:block;font-size:11px;padding:2px 6px;border-radius:5px;background:color-mix(in srgb,var(--et) 16%,var(--surface));border-left:3px solid var(--et);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;text-align:left}
.agg-body{display:flex;position:relative}
.agg-axis{width:58px;flex:none;border-right:1px solid var(--border)}
.agg-hr{position:relative;box-sizing:border-box}
.agg-hr>span{position:absolute;top:-7px;right:6px;font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums}
.agg-col{flex:1 1 0;min-width:0;position:relative;border-left:1px solid var(--border)}
.agg-col.today{background:color-mix(in srgb,var(--ambar) 5%,transparent)}
.agg-slot{box-sizing:border-box;border-top:1px solid var(--border)}
.agg-slot:first-child{border-top:none}
.agg-now{position:absolute;left:0;right:0;height:0;border-top:2px solid #E4572E;z-index:4}
.agg-now::before{content:'';position:absolute;left:-4px;top:-4px;width:7px;height:7px;border-radius:50%;background:#E4572E}
.agg-ev{position:absolute;z-index:3;border-radius:7px;overflow:hidden;cursor:pointer;background:color-mix(in srgb,var(--resp,var(--dept,var(--et))) 18%,var(--surface));border:1px solid color-mix(in srgb,var(--resp,var(--dept,var(--et))) 32%,var(--border));border-left:4px solid var(--resp,var(--et));box-shadow:0 1px 3px rgba(10,61,98,.12);transition:transform .06s,box-shadow .12s}
.agg-ev:hover{box-shadow:0 4px 12px -3px rgba(10,61,98,.32);z-index:6}
.agg-ev.livre{border-style:dashed;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--et) 8%,var(--surface)),color-mix(in srgb,var(--et) 8%,var(--surface)) 7px,color-mix(in srgb,var(--et) 15%,var(--surface)) 7px,color-mix(in srgb,var(--et) 15%,var(--surface)) 14px)}
.agg-ev-in{padding:3px 6px;font-size:11.5px;line-height:1.22;height:100%;box-sizing:border-box;overflow:hidden}
.agg-ev-t{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:5px}
.agg-livre{font-size:9px;font-weight:800;text-transform:uppercase;color:#fff;background:var(--ambar);padding:0 4px;border-radius:4px;letter-spacing:.03em}
.agg-ev-c{font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agg-ev-d{color:var(--text-2);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.agg-pop{position:fixed;z-index:80;width:300px;max-width:calc(100vw - 24px);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px -10px rgba(10,61,98,.4);overflow:hidden}
.agg-pop-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:11px 12px;border-left:4px solid var(--et)}
.agg-pop-t{font-weight:800;color:var(--text);font-size:14.5px;line-height:1.2}
.agg-pop-sub{font-size:12px;color:var(--text-2);margin-top:2px}
.agg-pop-meta{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px}
.agg-pop-etapa{color:#fff;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}
.agg-pop-dep,.agg-pop-resp,.agg-pop-livre{font-size:11.5px;color:var(--text-2);display:inline-flex;align-items:center;gap:4px;background:var(--gelo);padding:2px 8px;border-radius:20px}
.agg-pop-livre{color:var(--ambar);font-weight:700}
.agg-pop-line{padding:0 12px 8px;font-size:12.5px;color:var(--text);display:flex;align-items:center;gap:6px}
.agg-pop-acts{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;border-top:1px solid var(--border);background:var(--gelo)}
.ag-gridmode .ag-fsel[id="agFSort"]{display:none}
/* Modo grade: filtros compactos lado a lado (não empilhados) para a grade subir */
.ag-gridmode .ag-filterbar{margin:2px 0 10px;padding:7px 10px;gap:6px}
.ag-gridmode .ag-fsel{flex:0 1 150px;min-width:120px;max-width:190px;padding:6px 8px}
.ag-gridmode .ag-filterbar{display:none} /* em grade os filtros vão para a lateral (estilo Google) */
@media(max-width:720px){.ag-gridmode .ag-fsel{flex:1 1 46%;max-width:none}}
@media(max-width:720px){
  .agg-scroll{max-height:66vh}
  .agg-corner,.agg-axis{width:44px}
  .agg-hr>span{font-size:10px}
  .agg-panel{flex-direction:column}
}

/* Seletor de agendas do Google (fase133) */
.gg-cals{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow:auto;border:1px solid var(--border);border-radius:9px;padding:6px;background:var(--surface)}
.gg-cal{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--text)}
.gg-cal:hover{background:var(--gelo)}
.gg-cal.main{opacity:.9}
.gg-cal input{width:16px;height:16px;flex:none;accent-color:var(--primary)}
.gg-cal-dot{width:10px;height:10px;border-radius:50%;flex:none}
.gg-cal-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gg-cal-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 7px;border-radius:20px;background:var(--gelo);color:var(--text-2);border:1px solid var(--border)}
.gg-cal-tag.edit{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,var(--border))}
.gg-cal-tag.ro{color:var(--ambar);border-color:color-mix(in srgb,var(--ambar) 40%,var(--border))}

/* Renovação: ações discretas na régua + confirmação de ganho (fase134) */
.reno-acts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.reno-lost{background:none;border:0;color:var(--text-2);font-size:11px;text-decoration:underline;text-underline-offset:2px;cursor:pointer;padding:2px 4px;opacity:.7}
.reno-lost:hover{color:var(--erro);opacity:1}
.btn.xs{padding:4px 8px;font-size:11.5px;border-radius:7px}
.gwin-list{display:flex;flex-direction:column;gap:6px;margin:8px 0;max-height:300px;overflow:auto}
.gwin-row{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;border:1px solid var(--border);border-radius:9px;cursor:pointer;background:var(--surface)}
.gwin-row:hover{border-color:var(--ok)}
.gwin-row input{width:17px;height:17px;margin-top:1px;flex:none;accent-color:var(--ok)}
.gwin-main{display:flex;flex-direction:column;gap:1px}
.gwin-sub{font-size:12px;color:var(--text-2)}

/* ===== Agenda grade — harmonização, calendário, split e drag (fase135) ===== */
/* Painel área nobre mais leve */
.agg-panel{gap:10px;margin-bottom:10px}
.aggp-prox,.aggp-livres,.aggp-cop{box-shadow:none;background:var(--surface-2);border-color:transparent;padding:10px 12px}
.aggp-prox{border-left:3px solid var(--ambar);background:color-mix(in srgb,var(--ambar) 7%,var(--surface))}
.aggp-name{font-size:15.5px}
.agg-wrap{box-shadow:none;border-color:var(--border)}
.agg-slot{border-top-color:color-mix(in srgb,var(--border) 55%,transparent)}

/* Barra compacta de navegação + calendário + conversa ao lado */
.agg-bar{display:flex;align-items:center;gap:6px;margin:0 2px 8px}
.agg-navbtn{width:30px;height:30px;border:1px solid var(--border);background:var(--surface);border-radius:8px;color:var(--text);font-size:17px;line-height:1;cursor:pointer}
.agg-navbtn:hover{border-color:var(--primary);color:var(--primary)}
.agg-period{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 12px;font-weight:800;color:var(--text);cursor:pointer;text-transform:capitalize}
.agg-period:hover{border-color:var(--primary)}
.agg-today{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 11px;font-size:12.5px;color:var(--text-2);cursor:pointer}
.agg-today:hover{color:var(--primary);border-color:var(--primary)}
.agg-splitbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 12px;font-size:12.5px;color:var(--text);cursor:pointer;font-weight:600}
.agg-splitbtn:hover{border-color:var(--petroleo)}
.agg-splitbtn.on{background:var(--petroleo);color:#fff;border-color:var(--petroleo)}

/* Split: grade + conversa lado a lado */
.agg-shell.split{display:flex;gap:12px;align-items:stretch}
.agg-shell.split .agg-main{flex:1 1 auto;min-width:0}
.agg-side{flex:0 0 380px;max-width:44%;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;min-height:420px}
.agg-side-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;padding:24px;text-align:center;color:var(--text-2)}
.agg-side-empty p{max-width:230px;font-size:13px}
.cx-docked{position:static!important;inset:auto!important;width:100%!important;height:100%!important;max-height:none!important;transform:none!important;box-shadow:none!important;border:0!important;border-radius:0!important;display:flex;flex-direction:column;background:transparent!important}
.cx-docked .sfa-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}
.cx-docked .cxm-list{flex:1;min-height:120px}
@media(max-width:860px){.agg-shell.split{flex-direction:column}.agg-side{flex:none;max-width:none;width:100%}}

/* Calendário do mês (popover) */
.agg-cal{width:264px;padding:10px}
.agc-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:14px;color:var(--text)}
.agc-nav{width:26px;height:26px;border:1px solid var(--border);background:var(--surface);border-radius:7px;cursor:pointer;font-size:15px;color:var(--text)}
.agc-nav:hover{border-color:var(--primary);color:var(--primary)}
.agc-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px}
.agc-dow span{text-align:center;font-size:10.5px;color:var(--text-2);font-weight:700}
.agc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.agc-cell{aspect-ratio:1;border:0;background:none;border-radius:7px;font-size:12.5px;color:var(--text);cursor:pointer;position:relative;font-variant-numeric:tabular-nums}
.agc-cell.empty{cursor:default}
.agc-cell:not(.empty):hover{background:var(--surface-2)}
.agc-cell.today{font-weight:800;color:var(--ambar)}
.agc-cell.sel{background:var(--primary);color:#fff}
.agc-cell.has::after{content:'';position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--petroleo)}
.agc-cell.sel.has::after{background:#fff}

/* Arrastar e soltar */
.agg-ev{cursor:grab}
.agg-ev.dragging{opacity:.45;cursor:grabbing}
.agg-drop{position:absolute;left:2px;right:2px;height:0;border-top:2px dashed var(--petroleo);z-index:7;pointer-events:none}
.agg-drop::after{content:attr(data-t);position:absolute;left:0;top:-9px;font-size:10px;font-weight:700;color:var(--petroleo);background:var(--surface);padding:0 3px}

/* ===== Agenda estilo Google: lateral (calendário/filtros/próximo) + grade dominante (fase137) ===== */
.agg-page{display:flex;gap:14px;align-items:flex-start}
.agg-sidebar{flex:0 0 236px;max-width:236px;display:flex;flex-direction:column;gap:12px;position:sticky;top:8px}
.agg-content{flex:1 1 auto;min-width:0}
.agg-create{width:100%;justify-content:center;border-radius:22px;padding:11px 14px;box-shadow:var(--shadow)}
.agg-minical{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:9px}
/* calendário do mês na lateral reaproveita os estilos agc-* do popover */
.agg-minical .agc-cell{font-size:12px}
.agg-sb-panel .agg-panel{flex-direction:column;gap:8px;margin:0}
.agg-sb-panel .aggp-prox,.agg-sb-panel .aggp-livres,.agg-sb-panel .aggp-cop{min-width:0}
.agg-sb-filtros{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 11px;display:flex;flex-direction:column;gap:7px}
.agg-sb-h{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2);font-weight:700}
.agg-sb-filtros .ag-fsel{width:100%;flex:none;max-width:none;font-size:12.5px}
.agg-winbtn{display:flex;align-items:center;gap:7px;justify-content:center;border:1px solid var(--border);background:var(--surface-2);border-radius:8px;padding:7px 10px;font-size:12px;color:var(--text);cursor:pointer}
.agg-winbtn:hover{border-color:var(--primary);color:var(--primary)}
@media(max-width:900px){
  .agg-page{flex-direction:column}
  .agg-sidebar{flex:none;max-width:none;width:100%;position:static;flex-direction:row;flex-wrap:wrap}
  .agg-sidebar>*{flex:1 1 200px}
  .agg-create{flex-basis:100%}
}

/* Caixa de pré-aprovação da régua (fase138) */
.ap-item{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:9px;background:var(--surface)}
.ap-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px;font-size:13px}
.ap-canal{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;color:#fff}
.ap-canal.email{background:var(--azul)}
.ap-canal.whatsapp{background:var(--ok)}
.ap-subj{width:100%;margin-bottom:6px;font-size:13px}
.ap-body{width:100%;font-size:13px;line-height:1.45;resize:vertical;font-family:inherit}
.ap-acts{display:flex;align-items:center;gap:7px;margin-top:8px}
.ap-scope{border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:7px;padding:3px 10px;font-size:12px;cursor:pointer}
.ap-scope.on{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ===== Agenda: visões 1/3/5/semana, card começa pelo nome, grade elevada (fase139) ===== */
/* Seletor de dias no estilo Google (segmentado) */
.agg-spans{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}
.agg-spans button{border:0;background:none;padding:6px 11px;font-size:12.5px;color:var(--text-2);cursor:pointer;border-left:1px solid var(--border)}
.agg-spans button:first-child{border-left:0}
.agg-spans button:hover{color:var(--primary)}
.agg-spans button.on{background:var(--primary);color:#fff}
/* Card do evento: nome em destaque primeiro, hora/responsável embaixo e menor */
.agg-ev-c{font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.agg-ev-t{font-weight:500;color:var(--text-2);font-size:10.5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
/* Elevar a grade: comprime o cabeçalho no modo grade para a grade subir */
.ag-gridmode .page-head{margin-bottom:8px;align-items:center}
.ag-gridmode .page-head .eyebrow,.ag-gridmode .page-head .lead{display:none}
.ag-gridmode .page-head h1{font-size:22px;margin:0}
.ag-gridmode .page{padding-top:6px}

/* ===== fase140: seletor de DDI (Nova conversa) ===== */
.ddi-row{display:flex;gap:8px;align-items:stretch}
.ddi-row #ncDDI{flex:0 0 auto;max-width:190px;font-size:14px}
.ddi-row #ncPhone{flex:1 1 auto;min-width:0}
@media (max-width:520px){.ddi-row{flex-wrap:wrap}.ddi-row #ncDDI{max-width:none;flex:1 1 100%}}

/* ===== fase140: copiloto de atendimento (agenda) ===== */
.sf-assist.acop .sfa-body{display:flex;flex-direction:column;gap:12px}
.acop-steps{display:flex;flex-wrap:wrap;gap:6px}
.acop-pill{display:flex;align-items:center;gap:6px;border:1px solid var(--line,#dfe6e9);background:#fff;border-radius:999px;padding:4px 10px 4px 4px;cursor:pointer;font-size:12px;color:var(--ink-2,#5c6b72);transition:.15s}
.acop-pill .acop-n{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#eef2f4;color:#5c6b72;font-weight:700;font-size:11px}
.acop-pill:hover{border-color:var(--brand,#0A3D62)}
.acop-pill.sug{border-color:#C98A00}
.acop-pill.sug .acop-n{background:#FFE9BF;color:#8a5f00}
.acop-pill.on{background:var(--brand,#0A3D62);border-color:var(--brand,#0A3D62);color:#fff}
.acop-pill.on .acop-n{background:rgba(255,255,255,.25);color:#fff}
.acop-panel{display:flex;flex-direction:column;gap:8px}
.acop-acts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.acop-acts .btn.primary{margin-left:auto}
.acop-adv{margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}
.acop-mini{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.acop-mini input{flex:1 1 140px;min-width:0;padding:7px 9px;border:1px solid var(--line,#dfe6e9);border-radius:8px;font-size:13px}
.acop-chat{border-top:1px dashed var(--line,#dfe6e9);padding-top:10px}
.acop-chatrow{display:flex;gap:6px}
.acop-chatrow input{flex:1 1 auto;min-width:0;padding:8px 10px;border:1px solid var(--line,#dfe6e9);border-radius:8px;font-size:13px}
.sf-assist.acop .chip{color:#fff;background:var(--et,#5C6B72);border:none;padding:2px 8px;border-radius:999px;font-size:11px}

/* ===== fase141: Cabine de Atendimento (agenda + Central numa tela) ===== */
.cabine{display:flex;flex-direction:column;height:calc(100vh - 96px);min-height:520px}
.cab-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 4px 10px}
.cab-tabs{display:flex;gap:6px;flex-wrap:wrap}
.cab-tab{display:flex;align-items:center;gap:7px;border:1px solid var(--linha,#dfe6e9);background:#fff;border-radius:10px;padding:7px 12px;font-size:13px;font-weight:600;color:var(--ink-2,#5c6b72);cursor:pointer}
.cab-tab .cab-sq{width:12px;height:12px;border-radius:4px;flex:0 0 auto}
.cab-tab.on{border-color:var(--brand,#0A3D62);color:var(--brand,#0A3D62);box-shadow:inset 0 0 0 1px var(--brand,#0A3D62)}
.cab-focus.seg{display:inline-flex;background:var(--surface-2,#f5f8fa);border:1px solid var(--linha,#dfe6e9);border-radius:10px;padding:3px}
.cab-focus.seg button{border:0;background:transparent;color:var(--ink-2,#5c6b72);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.cab-focus.seg button.on{background:var(--brand,#0A3D62);color:#fff}
.cab-cockpit{flex:1;min-height:0;display:grid;gap:12px}
.cab-cockpit.dividido{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr)}
.cab-cockpit.agenda{grid-template-columns:minmax(0,1fr) minmax(0,340px)}
.cab-cockpit.conversas{grid-template-columns:minmax(0,340px) minmax(0,1fr)}
.cab-cockpit.conversas .cab-agenda{order:0}.cab-cockpit.conversas .cab-central{order:1}
.cab-zone{min-width:0;min-height:0;border:1px solid var(--linha,#dfe6e9);border-radius:14px;background:#fff;overflow:hidden;display:flex;flex-direction:column}
.cab-agenda{overflow:auto}
.cab-agenda #agBody{padding:8px}
.cab-central{min-height:0}
/* A Central embutida ocupa toda a zona */
.cab-central .central.embed{position:static;height:100%;display:flex;border:0;border-radius:0;box-shadow:none}
.cab-central .central.embed .cx-list{flex:0 0 clamp(220px,34%,320px)}
.cab-central .central.embed .cx-panel{flex:1;min-width:0}
.cab-noconn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;color:var(--ink-2,#5c6b72);text-align:center;padding:24px}
.cab-cfg{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.cab-cfg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--linha,#dfe6e9);border-radius:10px}
.cab-cfg-row .check{display:flex;align-items:center;gap:8px;flex:1;font-weight:600}
.cab-cfg-row .cab-sq{width:12px;height:12px;border-radius:4px;display:inline-block}
.cab-cfg-row .cabc-focus{flex:0 0 auto;max-width:180px}
/* Foco: some a zona não-dominante em telas estreitas via toggle; em telas largas mostra as duas */
@media (max-width:900px){
  .cabine{height:auto}
  .cab-cockpit.dividido,.cab-cockpit.agenda,.cab-cockpit.conversas{grid-template-columns:1fr}
  .cab-zone{min-height:420px}
}

/* ===== fase142: Nomes/ícones/menus editáveis (master) ===== */
.nm-wrap{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:12px 0}
.nm-col h3{font-size:13px;color:var(--brand,#0A3D62);margin:0 0 8px}
.nm-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.nm-row .nm-gly{width:26px;height:26px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:var(--ink-2,#5c6b72);background:var(--surface-2,#f5f8fa);border-radius:7px}
.nm-row .nm-icon{flex:0 0 auto;max-width:120px;font-size:12px}
.nm-row .nm-lbl,.nm-row .nm-slbl,.nm-row .nm-etp{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--linha,#dfe6e9);border-radius:8px;font-size:13px;font-family:inherit}
.nm-row .nm-hide{flex:0 0 auto;display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ink-3,#8496a0);white-space:nowrap}
.nm-row.nm-sec .nm-gly{font-size:10px}
@media (max-width:760px){.nm-wrap{grid-template-columns:1fr}}

/* ===== fase143: copiloto de atendimento — refino de design + iniciar em outro número ===== */
.sf-assist.acop{--acc:#0A3D62}
.sf-assist.acop .sfa-h{background:linear-gradient(180deg,#0C3452,#0A2C46);color:#eaf3f7}
.sf-assist.acop .sfa-h b,.sf-assist.acop .sfa-h .iconbtn{color:#eaf3f7}
.sf-assist.acop .sfa-body{gap:14px;padding:14px}
.sf-assist.acop .sfa-card{background:var(--surface-2,#f5f8fa);border:1px solid var(--linha,#e4ecef);border-radius:12px;padding:11px 13px}
.sf-assist.acop .sfa-name{font-size:15px;font-weight:700;color:var(--text)}
.sf-assist.acop .sfa-facts{margin-top:6px;gap:8px}
.sf-assist.acop .sfa-sec{font-size:11px;letter-spacing:.02em;text-transform:uppercase;color:var(--teal,#2C6E7F);font-weight:700}
/* Stepper mais limpo e conectado */
.acop-steps{gap:5px;padding:2px 0}
.acop-pill{border-radius:10px;padding:5px 10px 5px 5px;transition:.15s;box-shadow:0 1px 1px rgba(16,50,63,.04)}
.acop-pill .acop-n{width:19px;height:19px}
.acop-pill.on{box-shadow:0 2px 8px rgba(10,61,98,.22)}
.acop-pill.sug:not(.on){background:#fff8ec}
/* Caixa de mensagem */
.acop-panel .cxm-text,.sf-assist.acop textarea{border-radius:11px;border:1px solid var(--linha,#dcE6EB);padding:11px 12px;line-height:1.5;font-size:13px;background:#ffff;transition:border-color .15s,box-shadow .15s}
.acop-panel .cxm-text:focus{outline:none;border-color:var(--teal,#2C6E7F);box-shadow:0 0 0 3px rgba(44,110,127,.12)}
.acop-acts .btn.primary{box-shadow:0 2px 8px rgba(10,61,98,.2)}
/* Seção "Fale com o copiloto" e "Iniciar em outro número" como cartões suaves */
.acop-chat,.acop-quick{border:1px solid var(--linha,#e4ecef);border-radius:12px;padding:11px 12px;background:#fff}
.acop-quick{background:linear-gradient(180deg,#f7fbfc,#fff)}
.acop-qrow{display:flex;gap:7px;align-items:center;margin-top:7px;flex-wrap:wrap}
.acop-qrow #acopQDDI{flex:0 0 auto;max-width:118px;font-size:12.5px}
.acop-qin{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--linha,#dcE6EB);border-radius:9px;font-size:13px;font-family:inherit}
.acop-quick #acopQName{width:100%}
.acop-qrow .btn{flex:0 0 auto}
.small.ok{color:var(--ok,#2E7D5B)}
.small.ok a{color:var(--teal,#2C6E7F)}

/* ===== fase144: WhatsApp de fácil acesso na agenda ===== */
.btn.wa{background:#1FA855;border-color:#1FA855;color:#fff}
.btn.wa:hover{background:#1b9a4e;border-color:#1b9a4e}
.agg-pop-wa{display:inline-flex;align-items:center;gap:6px;width:100%;justify-content:flex-start;margin:2px 0 8px;padding:7px 10px;border:1px solid #bfe6cd;background:#eefaf1;color:#166b39;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.agg-pop-wa:hover{background:#e2f6e8;border-color:#9fdcb4}

/* ===== fase145: bloqueios/extensões na grade + capacidade por horário ===== */
.agg-ovr{position:absolute;left:2px;right:2px;border-radius:6px;font-size:10px;padding:2px 5px;overflow:hidden;z-index:1;pointer-events:none;display:flex;align-items:flex-start;line-height:1.15}
.agg-ovr span{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agg-ovr.block{background:repeating-linear-gradient(45deg,rgba(176,69,62,.10),rgba(176,69,62,.10) 7px,rgba(176,69,62,.17) 7px,rgba(176,69,62,.17) 14px);border:1px dashed rgba(176,69,62,.5);color:#8a352f}
.agg-ovr.extend{background:rgba(46,125,91,.09);border:1px dashed rgba(46,125,91,.45);color:#1f6b46}
.agg-ev{z-index:2}

/* ===== fase147: contabilidades novas (Grande Vitória) ===== */
.ct-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;margin:10px 0}
.ct-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;border:1px solid var(--linha,#e4ecef);border-radius:10px;background:#fff}
.ct-item.ja{opacity:.6}
.ct-item .chip{font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px;background:#eef2f4;color:#5c6b72}
.ct-item .chip.ok{background:#eafaf0;color:#1f7a48}

/* ===== fase148: máquina de prospecção ===== */
.prosp-status{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.prosp-status .chip{font-size:11px;font-weight:700;border-radius:999px;padding:3px 10px;background:#eef2f4;color:#5c6b72}
.prosp-status .chip.ok{background:#eafaf0;color:#1f7a48}
.prosp-cfg{border:1px solid var(--linha,#e4ecef);border-radius:12px;padding:8px 12px;margin:6px 0;background:var(--surface-2,#f7fafb)}
.prosp-cfg summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--brand,#0A3D62);display:flex;align-items:center;gap:6px}
.prosp-cfg[open]{padding-bottom:12px}
.prosp-muns{display:flex;flex-wrap:wrap;gap:10px}
.prosp-muns .check{font-size:12.5px}

/* ===== fase149 — Parcerias: solicitações pendentes, página de parceria, fatura ===== */
.prog-chip.liberte_max { background: rgba(10,61,98,.14); color: #0A3D62; }
.pend-box { border: 1px solid rgba(224,147,46,.5); background: rgba(224,147,46,.07); border-radius: 12px; padding: 12px 14px; margin-bottom: 14px; }
.pend-head { font-weight: 700; color: #9a6410; font-size: 13.5px; display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.pend-row { display: flex; gap: 12px; align-items: flex-start; padding: 10px 0; border-top: 1px dashed rgba(224,147,46,.35); }
.pend-row:first-of-type { border-top: 0; }
/* fase311 — o que o contador respondeu no diagnóstico, em palavras, para quem vai ligar. */
.prog-chip.agr { background: rgba(61,139,150,.14); color: #2b6b74; }
.pend-diag { margin-top: 6px; display: grid; gap: 3px; font-size: 12.5px; color: var(--muted); }
.pend-diag svg { color: var(--verde, #3D8B96); vertical-align: -1px; }
.pend-main { flex: 1; min-width: 0; }
.pend-acts { display: flex; gap: 6px; flex: none; }
.pp-link { display: flex; gap: 8px; align-items: center; margin: 6px 0 14px; flex-wrap: wrap; }
.pp-link input { flex: 1; min-width: 200px; padding: 9px 11px; border: 1px solid var(--linha); border-radius: 9px; font-size: 13px; background: var(--surface); color: var(--text); }
.pp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
@media (max-width: 760px) { .pp-grid { grid-template-columns: 1fr; } }
.pp-preview { border: 1px solid var(--linha); border-radius: 12px; overflow: hidden; background: #fff; }
.pp-frame-lbl { font-size: 12px; font-weight: 600; color: var(--text-2); padding: 8px 12px; border-bottom: 1px solid var(--linha); background: var(--gelo); }
#ppFrame { width: 100%; height: 460px; border: 0; display: block; }
.ft-atd { margin: 8px 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ft-grp { border: 1px solid var(--linha); border-radius: 12px; padding: 14px; margin-top: 12px; background: var(--surface); }
.ft-grp-h { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.ft-grp-tot { font-size: 14px; color: var(--text-2); }
.ft-grp-tot b { color: var(--azul); }
.ft-tab { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 13px; }
.ft-tab th { text-align: left; color: var(--text-2); font-weight: 600; font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em; padding: 6px 8px; border-bottom: 1px solid var(--linha); }
.ft-tab td { padding: 7px 8px; border-bottom: 1px solid var(--gelo); }
.ft-tab .num { text-align: right; font-variant-numeric: tabular-nums; }

/* ===== fase150 — App mobile (barra inferior) + Central estilo WhatsApp ===== */
.tabbar { display: none; }
@media (max-width: 720px) {
  .tabbar {
    display: flex; align-items: flex-end; justify-content: space-around;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
    background: var(--surface); border-top: 1px solid var(--border);
    padding: 5px 6px calc(5px + env(safe-area-inset-bottom));
    box-shadow: 0 -4px 16px -12px rgba(10,61,98,.22);
  }
  /* Conteúdo rola por baixo da barra fixa (a barra fica sempre pinada — não “treme” ao carregar). */
  .page { padding-bottom: calc(66px + env(safe-area-inset-bottom)); }
  .cx-items { padding-bottom: calc(60px + env(safe-area-inset-bottom)); }
  body.chat-open .page { padding-bottom: 24px; }
  .tabbar .tab {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px;
    background: none; border: 0; cursor: pointer; color: var(--text-2);
    font: inherit; font-size: 10px; font-weight: 600; letter-spacing: .01em; padding: 3px 2px; text-decoration: none;
  }
  .tabbar .tab svg { width: 21px; height: 21px; }
  .tabbar .tab.on { color: var(--primary); }
  .tabbar .tab-primary { position: relative; }
  .tabbar .tab-primary .tab-fab {
    display: grid; place-items: center; width: 44px; height: 44px; margin-top: -13px; margin-bottom: 2px;
    background: linear-gradient(145deg, var(--azul), var(--petroleo)); color: #fff; border-radius: 50%;
    box-shadow: 0 2px 8px rgba(10,61,98,.20); border: 2px solid var(--surface);
  }
  .tabbar .tab-primary .tab-fab svg { width: 20px; height: 20px; }
  .tabbar .tab-primary.on .tab-fab { box-shadow: 0 2px 10px rgba(47,126,138,.4); }
  .tabbar .tab-primary.on { color: var(--primary); }
  .tabbar .tab-badge {
    position: absolute; top: -17px; right: calc(50% - 20px); min-width: 16px; height: 16px;
    background: var(--erro); color: #fff; border-radius: 999px; font-size: 9.5px; font-weight: 700;
    display: grid; place-items: center; padding: 0 4px; border: 2px solid var(--surface);
  }
  /* Chat interno flutuante não cobre a barra: sobe acima dela e some dentro da conversa. */
  #teamChat.tc { right: 13px; bottom: calc(70px + env(safe-area-inset-bottom)); }
  body.chat-open #teamChat.tc { display: none; }
  /* Dentro de uma conversa / chat cheio, esconde a barra (classe leve no body — sem :has). */
  body.chat-open .tabbar { display: none; }
}

/* ===== fase222 — MAIS PERTO DO WHATSAPP, nos detalhes que o olho reconhece =====
   O pedido foi "parecer ao máximo com o WhatsApp". O que faz reconhecer não é a cor: é o
   RABICHO da bolha, a largura em que o texto quebra, a sombra de 1px que descola a bolha do
   fundo e a altura da linha na lista. São esses quatro que aqui estavam diferentes. */

/* Central com cara de WhatsApp (leve: sem gradientes/sombras que travam o scroll) */
.cx-thread { background: #efeae2; }
/* Sombra fina embaixo da bolha — é ela que dá a sensação de papel sobre o fundo. */
.cx-bubble { box-shadow: 0 1px .5px rgba(11,20,26,.13); max-width: 65%; font-size: 14.2px; line-height: 19px; padding: 6px 9px 8px; }
/* O RABICHO. No WhatsApp ele é um triangulinho na primeira bolha de cada bloco; nas
   seguintes (continuação do mesmo autor) não aparece — por isso o seletor ignora .cont. */
.cx-msg:not(.cont) .cx-bubble::after {
  content: ''; position: absolute; top: 0; width: 8px; height: 13px; background: inherit;
}
.cx-msg.in:not(.cont) .cx-bubble::after { left: -7px; clip-path: polygon(100% 0, 100% 100%, 0 0); border-top-left-radius: 3px; }
.cx-msg.out:not(.cont) .cx-bubble::after { right: -7px; clip-path: polygon(0 0, 0 100%, 100% 0); border-top-right-radius: 3px; }
.cx-msg:not(.cont) .cx-bubble { overflow: visible; }
.cx-msg.cont .cx-bubble { border-radius: 8px; }
.cx-msg.out .cx-bubble { background: #d9fdd3; color: #111b21; border-color: transparent; }
.cx-msg.in .cx-bubble { background: #ffffff; color: #111b21; border-color: transparent; }
.cx-bubble { border-radius: 8px; }
.cx-msg.out .cx-bubble { border-top-right-radius: 2px; }
.cx-msg.in .cx-bubble { border-top-left-radius: 2px; }
.cx-msg-time { color: #667781; opacity: 1; }
.cx-compose .btn.primary, .cx-compose button[type="submit"] { background: #00a884; border-color: #00a884; color: #fff; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .cx-thread { background-color: #0b141a; background-image: none; }
  :root:not([data-theme="light"]) .cx-msg.out .cx-bubble { background: #005c4b; color: #e9edef; }
  :root:not([data-theme="light"]) .cx-msg.in .cx-bubble { background: #202c33; color: #e9edef; }
  :root:not([data-theme="light"]) .cx-msg-time { color: #8696a0; }
}
:root[data-theme="dark"] .cx-thread { background-color: #0b141a; background-image: none; }
:root[data-theme="dark"] .cx-msg.out .cx-bubble { background: #005c4b; color: #e9edef; }
:root[data-theme="dark"] .cx-msg.in .cx-bubble { background: #202c33; color: #e9edef; }
:root[data-theme="dark"] .cx-msg-time { color: #8696a0; }
/* fase222 — o rabicho herda a cor da bolha, então no escuro ele acompanha sozinho; só a
   sombra precisa sumir, porque sobre fundo escuro ela vira uma mancha. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .cx-bubble { box-shadow: none; }
}
:root[data-theme="dark"] .cx-bubble { box-shadow: none; }
@media (max-width: 760px) { .cx-bubble { max-width: 82%; } .cx-item::after { left: 62px; } }

/* ===== fase151 — Botão "Instalar o app" na tela de entrada ===== */
.pwa-cta {
  display: flex; align-items: center; gap: 14px; margin-top: 22px;
  padding: 16px; border-radius: 16px;
  background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.22);
  backdrop-filter: blur(6px); box-shadow: 0 10px 30px rgba(0,0,0,.14); flex-wrap: wrap;
}
.pwa-cta-ico img { width: 46px; height: 46px; border-radius: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.pwa-cta-txt { flex: 1; min-width: 150px; color: #fff; }
.pwa-cta-txt b { display: block; font-size: 15px; }
.pwa-cta-txt span { display: block; font-size: 12.5px; opacity: .85; margin-top: 2px; line-height: 1.4; }
.pwa-cta-btn {
  background: var(--ambar); color: #3a2600; border: 0; border-radius: 999px; font-weight: 700;
  padding: 11px 18px; display: inline-flex; align-items: center; gap: 7px; box-shadow: 0 6px 18px rgba(224,147,46,.4);
}
.pwa-cta-btn:hover { filter: brightness(1.04); }
@media (max-width: 860px) { .pwa-cta { margin-top: 16px; } .pwa-cta-btn { width: 100%; justify-content: center; } }

/* ===== fase154 — barra fixa, carregamento instantâneo da Central e acabamento mais fino ===== */
/* Esqueleto leve enquanto a lista de conversas chega (percepção de rapidez). */
.cx-skel { padding: 6px 0; }
.cx-skel-row { height: 54px; margin: 0 12px 3px; border-radius: 10px;
  background: linear-gradient(90deg, var(--surface-2) 25%, var(--gelo) 37%, var(--surface-2) 63%);
  background-size: 400% 100%; animation: cxsh 1.2s ease-in-out infinite; opacity: .7; }
@keyframes cxsh { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .cx-skel-row { animation: none; } }
/* Acabamento mais fino: divisórias e sombras mais suaves onde pesava. */
.cx-item { border-bottom-color: var(--gelo); }
.cx-list-head { border-bottom-color: var(--gelo); }
/* fase222 — a linha da lista na métrica do WhatsApp: foto maior, nome sem negrito pesado,
   prévia num tom mais claro, e a divisória começando DEPOIS da foto, não na borda da tela. */
.cx-item { padding-top: 10px; padding-bottom: 10px; border-bottom: 0; }
.cx-item::after {
  content: ''; position: absolute; left: 71px; right: 0; bottom: 0; height: 1px; background: var(--gelo);
}
.cx-item:last-child::after { display: none; }
.cx-av { width: 49px; height: 49px; font-size: 16px; }
.cx-name { font-weight: 500; font-size: 16px; letter-spacing: -.1px; }
.cx-last { font-size: 13.5px; }
.cx-time { font-size: 11.5px; }

/* ===== fase156 — compositor estilo WhatsApp: emojis, anexos e áudio ===== */
.cx-compose { align-items: flex-end; position: relative; }
.cx-compose textarea {
  flex: 1; min-width: 0; padding: 10px 16px; border: 1px solid var(--border); border-radius: 20px;
  background: var(--bg); font: inherit; color: var(--text); resize: none; line-height: 1.4;
  /* fase176 — a regra global `textarea { min-height: 90px }` deixava a caixa de escrever
     com 90px de altura fixa e o texto grudado no topo; com isso o auto-crescimento nunca
     funcionava (o scrollHeight já nascia inflado). Aqui ela começa com UMA linha e cresce
     conforme se digita, até 120px, exatamente como no WhatsApp. */
  min-height: 0; height: 42px; max-height: 120px; overflow-y: auto;
}
.cx-compose textarea:focus { outline: none; border-color: var(--accent); }
.cxc-ic { flex: none; color: var(--text-2); width: 40px; height: 40px; }
.cxc-ic:hover { color: var(--primary); }
.cxc-mic { color: #00a884; }
.cxc-send { flex: none; }
/* Painel de emojis */
.cxc-emoji {
  position: absolute; left: 10px; right: 10px; bottom: 64px; z-index: 30; max-height: 210px; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow);
  padding: 8px; display: grid; grid-template-columns: repeat(8, 1fr); gap: 2px;
}
.cxc-emoji button { border: 0; background: none; font-size: 22px; line-height: 1; padding: 6px 0; cursor: pointer; border-radius: 8px; }
.cxc-emoji button:hover { background: var(--surface-2); }
/* Menu de anexos */
.cxc-attach {
  position: absolute; left: 10px; bottom: 64px; z-index: 30; min-width: 190px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); padding: 6px;
}
.cxc-attach button {
  display: flex; align-items: center; gap: 10px; width: 100%; border: 0; background: none; cursor: pointer;
  padding: 11px 12px; border-radius: 10px; font: inherit; font-size: 15px; color: var(--text); text-align: left;
}
.cxc-attach button:hover { background: var(--surface-2); }
/* Barra de gravação de áudio */
.cxc-rec {
  display: flex; align-items: center; gap: 12px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--border); background: var(--surface);
}
.cxc-rec-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--erro); animation: cxrec 1s ease-in-out infinite; }
.cxc-rec-time { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--text); }
@keyframes cxrec { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) { .cxc-rec-dot { animation: none; } }
/* Mídia enviada/recebida no balão */
.cx-media-img { max-width: 220px; border-radius: 10px; display: block; cursor: pointer; }
.cx-media-audio { max-width: 240px; height: 40px; }
.cx-media-video { max-width: 240px; border-radius: 10px; }

/* ===== fase160 — Agenda no celular: barra de navegação quebra certinho, nada some ===== */
@media (max-width: 720px) {
  .agg-bar { flex-wrap: wrap; row-gap: 8px; }
  .agg-bar > .grow { display: none; }                 /* sem espaçador que empurrava os botões para fora */
  .agg-period { min-width: 0; max-width: 56vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; padding: 6px 10px; }
  .agg-spans { flex: 1 1 100%; order: 9; justify-content: center; }   /* Dia/3/5/Semana em uma linha só, inteiros */
  .agg-splitbtn { order: 10; font-size: 11.5px; padding: 6px 10px; }
  .agg-scroll { -webkit-overflow-scrolling: touch; }
  .agg-sidebar > * { flex: 1 1 150px; min-width: 0; }
  /* Evita que qualquer parte da grade force a página a rolar/cortar na direita */
  .agg-content, .agg-wrap, .agg-shell, .agg-main { max-width: 100%; min-width: 0; }
}

/* ===== fase161 — Compositor NATIVO estilo WhatsApp (emojis por categoria, folha de anexos, pré-visualização, áudio com revisão) ===== */
.cx-conv { position: relative; }
/* Emojis: abas de categoria + grade */
.cxc-emoji { display: block; padding: 0; max-height: 280px; overflow: hidden; }
.cxe-tabs { display: flex; gap: 2px; padding: 6px 6px 4px; border-bottom: 1px solid var(--border); background: var(--surface-2); position: sticky; top: 0; }
.cxe-tabs button { flex: 1; border: 0; background: none; font-size: 19px; padding: 6px 0; border-radius: 8px; cursor: pointer; opacity: .55; }
.cxe-tabs button.on { background: var(--surface); opacity: 1; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.cxe-lbl { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); padding: 8px 12px 2px; }
.cxe-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 2px; padding: 4px 8px 10px; max-height: 200px; overflow-y: auto; }
.cxe-grid button { border: 0; background: none; font-size: 24px; line-height: 1; padding: 7px 0; cursor: pointer; border-radius: 8px; }
.cxe-grid button:hover, .cxe-grid button:active { background: var(--surface-2); }
/* Folha de anexos: tiles coloridos como no WhatsApp */
.cxc-attach { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 12px 10px 10px; min-width: 0; left: 10px; right: 10px; border-radius: 16px; }
.cxc-attach button { flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 8px 4px; font-size: 12px; color: var(--text-2); }
.att-ic { width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; box-shadow: 0 3px 10px rgba(10,61,98,.18); }
.att-cam { background: linear-gradient(145deg, #E45D7B, #C23A5A); }
.att-gal { background: linear-gradient(145deg, #A85CE6, #7E3BC9); }
.att-doc { background: linear-gradient(145deg, #5A6BE6, #3F4EC7); }
.att-tpl { background: linear-gradient(145deg, #2F9E8A, #1F7A6A); }
/* Pré-visualização antes de enviar (foto grande ou cartão do documento) */
.cxc-preview { position: absolute; inset: 0; z-index: 40; background: rgba(10,20,26,.96); color: #fff; display: flex; flex-direction: column; }
.cxc-preview[hidden] { display: none; }
.cxp-head { display: flex; align-items: center; gap: 10px; padding: 10px 12px; font-size: 15px; }
.cxp-head .iconbtn { color: #fff; }
.cxp-body { flex: 1; min-height: 0; display: grid; place-items: center; padding: 8px 14px; }
.cxp-body img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 10px; }
.cxp-doc { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); border-radius: 14px; padding: 22px 26px; text-align: center; max-width: 300px; }
.cxp-doc-ic { display: block; margin: 0 auto 8px; color: #cfe3ea; }
.cxp-doc-nm { font-weight: 700; word-break: break-word; }
.cxp-foot { display: flex; align-items: flex-end; gap: 10px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: rgba(0,0,0,.35); }
.cxp-foot textarea { flex: 1; min-width: 0; resize: none; border: 0; border-radius: 20px; padding: 10px 14px; font: inherit; background: rgba(255,255,255,.12); color: #fff; max-height: 90px; }
.cxp-foot textarea::placeholder { color: rgba(255,255,255,.65); }
.cxp-foot textarea:focus { outline: none; background: rgba(255,255,255,.18); }
/* Status de envio (chip discreto acima do campo) */
.cxc-sending { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-2); padding: 6px 16px; background: var(--surface); border-top: 1px solid var(--border); }
.cxc-sending .spinner { width: 14px; height: 14px; border-width: 2px; }
/* Gravação: medidor ao vivo; revisão: play + barra de progresso */
.cxc-rec { gap: 10px; }
.cxr-trash { color: var(--erro); }
.cxr-meter { flex: 1; display: flex; align-items: center; gap: 2px; height: 26px; min-width: 0; }
.cxr-meter i { flex: 1; height: 3px; border-radius: 2px; background: #00a884; transition: height .08s linear; }
.cxr-play { width: 36px; height: 36px; border-radius: 50%; background: #00a884; color: #fff; display: grid; place-items: center; }
.cxr-track { flex: 1; height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; }
.cxr-fill { height: 100%; width: 0; background: #00a884; transition: width .15s linear; }
.cxc-rec.review .cxc-rec-time { font-weight: 600; color: var(--text-2); font-size: 12.5px; }

/* ===== fase162 — Central leve, orgânica e harmônica (linha do tempo viva como no WhatsApp) ===== */
/* Fundo com textura sutil (papel de parede), rolagem suave e sem "pulos" */
.cx-thread {
  gap: 3px; padding: 14px 12px 10px; scroll-behavior: auto; overscroll-behavior: contain; scrollbar-width: thin;
  background-color: #ece5dd;
  background-image: radial-gradient(rgba(0,0,0,.035) 1px, transparent 1.4px), radial-gradient(rgba(255,255,255,.55) 1px, transparent 1.6px);
  background-size: 22px 22px, 22px 22px; background-position: 0 0, 11px 11px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .cx-thread { background-image: radial-gradient(rgba(255,255,255,.035) 1px, transparent 1.4px), radial-gradient(rgba(0,0,0,.35) 1px, transparent 1.6px); }
}
:root[data-theme="dark"] .cx-thread { background-image: radial-gradient(rgba(255,255,255,.035) 1px, transparent 1.4px), radial-gradient(rgba(0,0,0,.35) 1px, transparent 1.6px); }
/* Bolhas: orelha só na primeira da sequência; continuação fica mais junta */
.cx-msg { margin-top: 6px; }
.cx-msg.cont { margin-top: 0; }
.cx-msg.cont .cx-bubble { border-top-left-radius: 8px; border-top-right-radius: 8px; }
.cx-bubble { box-shadow: 0 1px .5px rgba(11,20,26,.13); padding: 6px 8px 5px 10px; line-height: 1.38; }
.cx-msg.out .cx-bubble { border-top-right-radius: 2px; }
.cx-msg.in .cx-bubble { border-top-left-radius: 2px; }
.cx-msg.cont.out .cx-bubble { border-top-right-radius: 8px; }
.cx-msg.cont.in .cx-bubble { border-top-left-radius: 8px; }
.cx-bubble a { color: #027eb5; text-decoration: underline; word-break: break-all; }
.cx-bubble code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; background: rgba(0,0,0,.06); padding: 1px 4px; border-radius: 4px; }
.cx-bubble s { opacity: .8; }
/* Hora + recibo no canto (fluem com o texto, como no WhatsApp) */
.cx-msg-meta { float: right; display: inline-flex; align-items: center; gap: 3px; margin: 6px 0 -3px 8px; line-height: 1; }
.cx-msg-meta .cx-msg-time { display: inline; margin: 0; font-size: 10.5px; }
.cx-tick { display: inline-flex; color: #8696a0; }
.cx-tick.read { color: #53bdeb; }
.cx-tick.pending { color: #8696a0; opacity: .8; }
.cx-tick.failed { color: #e0524f; }
/* fase206 — mensagem nossa que o aparelho do cliente ainda não confirmou. Clicável: reenvia. */
.cx-tick.semconf { color: #B9781C; cursor: pointer; gap: 1px; align-items: center; }
.cx-tick.semconf i { font-style: normal; font-weight: 800; font-size: 11px; line-height: 1; }
.cx-tick.semconf:hover { color: #8c5a12; }
/* fase209 — enviada pelo aparelho: não dá para saber daqui, e a marca diz isso. */
.cx-tick.nosabe { color: #8696a0; opacity: .55; }
.cx-msg.media-only .cx-msg-meta { position: absolute; right: 8px; bottom: 6px; margin: 0; padding: 2px 6px; border-radius: 999px; background: rgba(0,0,0,.35); }
.cx-msg.media-only .cx-msg-meta .cx-msg-time, .cx-msg.media-only .cx-tick { color: #fff; }
.cx-msg.media-only .cx-tick.read { color: #53bdeb; }
/* Chegada suave (respeita "reduzir movimento") */
@keyframes cxIn { from { opacity: 0; transform: translateY(6px) scale(.985); } to { opacity: 1; transform: none; } }
.cx-msg.new { animation: cxIn .18s cubic-bezier(.2,.7,.3,1); }
.cx-msg.out.new { transform-origin: right bottom; }
.cx-msg.in.new { transform-origin: left bottom; }
/* Separador de dia fixo no topo enquanto rola */
.cx-day { position: sticky; top: -2px; z-index: 3; margin: 8px 0 4px; }
.cx-day span { background: rgba(255,255,255,.92); color: #54656f; box-shadow: 0 1px .5px rgba(11,20,26,.13); font-weight: 600; font-size: 11.5px; padding: 4px 12px; backdrop-filter: blur(4px); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .cx-day span { background: rgba(24,33,38,.92); color: #8696a0; } }
:root[data-theme="dark"] .cx-day span { background: rgba(24,33,38,.92); color: #8696a0; }
/* Pílula "↓ novas" quando você está lendo mais acima */
.cx-jump {
  position: absolute; right: 14px; bottom: 74px; z-index: 12; width: 42px; height: 42px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--surface); color: var(--text-2); box-shadow: 0 2px 8px rgba(11,20,26,.22); display: grid; place-items: center;
  animation: cxIn .18s ease-out;
}
.cx-jump[hidden] { display: none; }
.cx-jump .cxj-n { position: absolute; top: -6px; right: -4px; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: #25d366; color: #fff; font-size: 11.5px; font-weight: 700; display: grid; place-items: center; }
/* "digitando…": texto verde no cabeçalho e na lista + balão de pontinhos na conversa */
.cx-typing-txt { color: #00a884; font-weight: 600; }
.cx-typing-row { display: flex; margin-top: 6px; }
.cx-typing-row[hidden] { display: none; }
.cx-typing { display: inline-flex; gap: 4px; align-items: center; padding: 10px 12px; min-height: 0; }
.cx-typing i { width: 7px; height: 7px; border-radius: 50%; background: #8696a0; animation: cxDot 1.2s infinite ease-in-out; }
.cx-typing i:nth-child(2) { animation-delay: .15s; } .cx-typing i:nth-child(3) { animation-delay: .3s; }
@keyframes cxDot { 0%, 60%, 100% { transform: translateY(0); opacity: .5; } 30% { transform: translateY(-4px); opacity: 1; } }
/* Microfone ↔ enviar: um só botão redondo que troca conforme você escreve (como no WhatsApp) */
.cx-compose .cxc-send, .cx-compose .cxc-mic { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; flex: none; padding: 0; }
.cx-compose .cxc-mic { background: #00a884; color: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.cx-compose .cxc-mic:hover { color: #fff; background: #06937a; }
.cx-compose .cxc-send { background: #00a884; border-color: #00a884; animation: cxIn .16s ease-out; }
.cx-compose:not(.has-text) .cxc-send { display: none; }
.cx-compose.has-text .cxc-mic { display: none; }
.cx-compose textarea { transition: border-color .15s ease; }
@media (prefers-reduced-motion: reduce) {
  .cx-msg.new, .cx-jump, .cx-compose .cxc-send { animation: none; }
  .cx-typing i { animation: none; opacity: .8; }
}

/* ===== fase163 — Menu recolhível (só ícones) ===== */
.sidebar .brand { position: relative; }
.sidebar .brand .brand-mini { display: none; width: 34px; height: 34px; object-fit: contain; margin: 0 auto; }
.nav-rail-btn {
  position: absolute; right: 8px; top: 10px; width: 26px; height: 26px; border-radius: 50%; border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06); color: var(--sidebar-ink-2); display: grid; place-items: center; cursor: pointer; transition: background .15s, color .15s, transform .2s;
}
.nav-rail-btn:hover { background: rgba(255,255,255,.14); color: #fff; }
.nav-rail-btn svg { transition: transform .2s; }
@media (max-width: 900px) { .nav-rail-btn { display: none; } }
@media (min-width: 901px) {
  .app { transition: grid-template-columns .2s ease; }
  .app.rail:not(.horiz) { grid-template-columns: 76px 1fr; }
  .app.rail:not(.horiz) .sidebar .brand { padding: 14px 8px 12px; text-align: center; }
  .app.rail:not(.horiz) .sidebar .brand .brand-logo, .app.rail:not(.horiz) .sidebar .brand .sub { display: none; }
  .app.rail:not(.horiz) .sidebar .brand .brand-mini { display: block; }
  .app.rail:not(.horiz) .nav-rail-btn { position: static; margin: 10px auto 0; }
  .app.rail:not(.horiz) .nav-rail-btn svg { transform: rotate(180deg); }
  .app.rail:not(.horiz) .sidebar nav { padding: 10px 8px; align-items: stretch; }
  .app.rail:not(.horiz) .sidebar .section { padding: 0; height: 1px; margin: 8px 12px; background: rgba(255,255,255,.1); font-size: 0; overflow: hidden; }
  .app.rail:not(.horiz) .sidebar .section > * { display: none; }
  .app.rail:not(.horiz) .navitem { justify-content: center; padding: 11px 0; gap: 0; position: relative; }
  .app.rail:not(.horiz) .navitem > span:not(.nav-badge):not(.navdep-dot):not(.navdep-star) { display: none; }
  .app.rail:not(.horiz) .navitem .navclick > span { display: none; }
  .app.rail:not(.horiz) .navitem svg { width: 21px; height: 21px; opacity: .95; }
  .app.rail:not(.horiz) .navitem .nav-badge { position: absolute; top: 4px; right: 6px; margin: 0; min-width: 16px; height: 16px; font-size: 10px; padding: 0 4px; }
  .app.rail:not(.horiz) .navdep-item .navdep-dot { width: 14px; height: 14px; border-radius: 4px; margin: 0; }
  .app.rail:not(.horiz) .navdep-star { display: none !important; }
  .app.rail:not(.horiz) .navdep-loading { display: none; }
  .app.rail:not(.horiz) .sidebar .user { flex-wrap: wrap; justify-content: center; padding: 10px 6px; gap: 4px; }
  .app.rail:not(.horiz) .sidebar .user .grow { display: none; }
  .app.rail:not(.horiz) .sidebar .user .avatar { width: 32px; height: 32px; font-size: 12px; flex-basis: 100%; margin: 0 auto 4px; }
  .app.rail:not(.horiz) .sidebar .user .iconbtn { width: 22px; height: 22px; padding: 0; }
}

/* Funil: lotes */
.fn-more { width: 100%; margin-top: 6px; justify-content: center; }

/* ===== fase163 — Painel de indicadores (3 níveis) ===== */
.ind-levels { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.ind-level { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 10px 16px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); cursor: pointer; min-width: 170px; text-align: left; transition: border-color .15s, box-shadow .15s; }
.ind-level b { font-size: 14px; color: var(--text); }
.ind-level span { font-size: 11.5px; color: var(--text-2); }
.ind-level:hover { border-color: var(--petroleo); }
.ind-level.on { border-color: var(--azul); box-shadow: inset 0 -3px 0 var(--ambar), 0 4px 14px rgba(10,61,98,.08); }
.ind-level.on b { color: var(--azul); }
.ind-sec { margin-top: 18px; }
.ind-sec h3 { margin: 0 0 10px; font-size: 15px; }
.ind-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.ind-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px 10px; min-width: 0; border-top: 3px solid var(--line, var(--border)); }
.ind-card.ok { border-top-color: #2f9e6e; } .ind-card.warn { border-top-color: var(--ambar); } .ind-card.low { border-top-color: #d9534f; }
.ind-card.wide { grid-column: span 2; }
.ind-l { font-size: 11.5px; color: var(--text-2); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; display: flex; gap: 6px; align-items: center; }
.ind-hint { cursor: help; opacity: .6; font-weight: 400; text-transform: none; letter-spacing: 0; }
.ind-v { font-size: 26px; font-weight: 700; color: var(--text); margin-top: 4px; font-variant-numeric: tabular-nums; line-height: 1.1; }
.ind-v small { font-size: 13px; font-weight: 600; color: var(--text-2); margin-left: 2px; }
.ind-bar { height: 6px; border-radius: 999px; background: var(--surface-2); overflow: hidden; margin-top: 8px; }
.ind-bar i { display: block; height: 100%; border-radius: 999px; background: var(--petroleo); transition: width .4s ease; }
.ind-card.ok .ind-bar i { background: #2f9e6e; } .ind-card.warn .ind-bar i { background: var(--ambar); } .ind-card.low .ind-bar i { background: #d9534f; }
.ind-meta { display: flex; justify-content: space-between; font-size: 11.5px; color: var(--text-2); margin-top: 5px; }
.ind-meta b { color: var(--text); }
.ind-delta { font-size: 11.5px; padding: 2px 8px; border-radius: 999px; background: var(--surface-2); color: var(--text-2); white-space: nowrap; }
.ind-delta.up { background: #e6f5ec; color: #1f6b43; } .ind-delta.down { background: #fdeceb; color: #a8362f; }
/* Foco do dia */
.ind-foco { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; border-radius: 14px; background: linear-gradient(120deg, var(--azul), #0C4C63); color: #fff; margin-bottom: 4px; flex-wrap: wrap; }
.ind-foco .eyebrow { color: rgba(255,255,255,.7); }
.ind-foco-n { font-size: 18px; font-weight: 700; margin-top: 2px; }
.ind-foco .muted { color: rgba(255,255,255,.75); }
/* Placar */
.ind-rank { display: flex; flex-direction: column; gap: 6px; }
.ind-rk { display: grid; grid-template-columns: 40px 1fr auto auto; gap: 10px; align-items: center; padding: 9px 12px; border-radius: 10px; background: var(--surface); border: 1px solid var(--border); }
.ind-rk.me { border-color: var(--petroleo); background: #eef6f7; }
.ind-pos { font-weight: 700; text-align: center; }
.ind-rk-n { font-weight: 600; }
.ind-rk b { font-variant-numeric: tabular-nums; color: var(--azul); }
.ind-list { display: flex; flex-direction: column; gap: 4px; }
.ind-li { display: flex; gap: 10px; align-items: baseline; padding: 8px 12px; border-radius: 10px; background: var(--surface); border: 1px solid var(--border); cursor: pointer; text-align: left; width: 100%; font: inherit; color: var(--text); }
.ind-li:hover { border-color: var(--petroleo); }
.ind-li b { font-variant-numeric: tabular-nums; min-width: 44px; }
/* Termômetro da meta (tático) */
.ind-mes { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.ind-mes b { font-size: 16px; text-transform: capitalize; }
.ind-termo { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 16px 18px; }
.ind-termo-h { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.ind-termo-n { font-size: 30px; font-weight: 700; color: var(--azul); line-height: 1; }
.ind-termo-n small { font-size: 13px; color: var(--text-2); font-weight: 600; }
.ind-termo-p { font-size: 26px; font-weight: 700; color: var(--text-2); }
.ind-termo.ok .ind-termo-p { color: #2f9e6e; } .ind-termo.warn .ind-termo-p { color: var(--ambar); } .ind-termo.low .ind-termo-p { color: #d9534f; }
.ind-termo-bar { position: relative; height: 14px; border-radius: 999px; background: var(--surface-2); margin-top: 12px; overflow: visible; }
.ind-termo-bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--petroleo), var(--azul)); transition: width .5s ease; }
.ind-termo.ok .ind-termo-bar i { background: linear-gradient(90deg, #2f9e6e, #1f6b43); }
.ind-termo-mark { position: absolute; top: -5px; width: 2px; height: 24px; background: var(--ambar); border-radius: 2px; }
.ind-termo-mark::after { content: 'hoje'; position: absolute; top: 24px; left: -12px; font-size: 10px; color: var(--text-2); }
.ind-termo-t { margin-top: 20px; font-size: 13px; color: var(--text-2); display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.ind-termo-t b { color: var(--text); }
/* Barras leves */
.ind-bars { display: flex; align-items: flex-end; gap: 3px; height: 90px; margin-top: 14px; }
.ind-bcol { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 3px; }
.ind-bcol i { display: block; width: 100%; max-width: 28px; border-radius: 4px 4px 0 0; background: var(--petroleo); opacity: .85; transition: height .4s ease; }
.ind-bcol:last-child i { background: var(--azul); opacity: 1; }
.ind-bcol span { font-size: 9.5px; color: var(--text-2); }
.ind-chart { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; }
.ind-chart-h { display: flex; justify-content: space-between; align-items: center; }
.ind-mix { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.ind-mix-row { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr auto auto; gap: 10px; align-items: center; font-size: 13px; }
.ind-mix-row .ind-bar { margin: 0; } .ind-mix-row small { color: var(--text-2); min-width: 36px; text-align: right; }
.ind-table td, .ind-table th { font-variant-numeric: tabular-nums; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .ind-rk.me { background: #12303a; } :root:not([data-theme="light"]) .ind-delta.up { background: #123d2a; color: #8fd9b0; } :root:not([data-theme="light"]) .ind-delta.down { background: #4a1f1d; color: #f2a8a3; } }
:root[data-theme="dark"] .ind-rk.me { background: #12303a; } :root[data-theme="dark"] .ind-delta.up { background: #123d2a; color: #8fd9b0; } :root[data-theme="dark"] .ind-delta.down { background: #4a1f1d; color: #f2a8a3; }
@media (max-width: 720px) { .ind-level { min-width: 0; flex: 1 1 30%; padding: 8px 10px; } .ind-level span { display: none; } .ind-grid { grid-template-columns: repeat(2, 1fr); } .ind-card.wide { grid-column: span 2; } .ind-rk { grid-template-columns: 34px 1fr auto; } .ind-rk-s { grid-column: 2 / -1; } .ind-bcol span { display: none; } }
@media (prefers-reduced-motion: reduce) { .app, .ind-bar i, .ind-termo-bar i, .ind-bcol i { transition: none; } }

/* ===== fase164 — A entrada: moldura, respiro e a assinatura que se escreve (inspiração: relojoaria fina) ===== */
.auth.lux { display: block; min-height: 100vh; min-height: 100dvh; background: var(--bg); padding: 18px; box-sizing: border-box; }
.lux-frame {
  position: relative; min-height: calc(100dvh - 36px); border: 1px solid rgba(224,147,46,.55); outline: 1px solid rgba(10,61,98,.06); outline-offset: 4px;
  display: grid; grid-template-rows: auto 1fr auto; grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr); background: var(--surface);
}
.lux-top, .lux-foot { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 26px; font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--text-2); }
.lux-top { border-bottom: 1px solid var(--border); }
.lux-foot { border-top: 1px solid var(--border); }
.lux-foot-c { font-family: var(--serif); text-transform: none; letter-spacing: .04em; font-size: 13px; font-style: italic; color: var(--text-2); }
.lux-wordmark i { font-style: normal; color: var(--ambar); margin: 0 6px; }
/* Painel-herói: o azul da casa, com a fita dourada e a assinatura */
.lux-hero { position: relative; overflow: hidden; background: linear-gradient(160deg, #07253d 0%, #0A3D62 52%, #0f5468 100%); color: #fff; display: flex; flex-direction: column; justify-content: space-between; padding: clamp(28px, 5vw, 64px) clamp(28px, 6vw, 84px); min-height: 520px; }
.lux-hero::after { content: ''; position: absolute; inset: 0; background: radial-gradient(720px 480px at 100% 0%, rgba(61,139,150,.35), transparent 60%), radial-gradient(560px 420px at 0% 100%, rgba(224,147,46,.10), transparent 60%); pointer-events: none; }
.lux-hero > * { position: relative; z-index: 1; }
.lux-ribbon { position: absolute; left: -10px; top: -20px; height: calc(100% + 40px); width: 120px; z-index: 0; opacity: .9; }
.lux-ribbon path { stroke-dasharray: 1400; stroke-dashoffset: 1400; animation: luxDraw 2.4s cubic-bezier(.4,0,.2,1) .2s forwards; }
@keyframes luxDraw { to { stroke-dashoffset: 0; } }
.lux-hero-in { max-width: 560px; margin-left: clamp(24px, 4vw, 56px); }
.lux-sig .logo { width: min(320px, 78%); display: block; -webkit-mask-image: linear-gradient(90deg, #000 0 50%, transparent 50% 100%); mask-image: linear-gradient(90deg, #000 0 50%, transparent 50% 100%); -webkit-mask-size: 200% 100%; mask-size: 200% 100%; -webkit-mask-position: 100% 0; mask-position: 100% 0; animation: luxWrite 1.7s cubic-bezier(.5,0,.3,1) .35s forwards; }
@keyframes luxWrite { to { -webkit-mask-position: 0 0; mask-position: 0 0; } }
.lux-eyebrow { margin-top: 38px; font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: #E8B25A; font-weight: 700; }
.lux-hero h1 { color: #fff; font-size: clamp(32px, 3.4vw, 50px); line-height: 1.12; margin-top: 12px; letter-spacing: -.01em; max-width: 14ch; }
.lux-lead { color: #C9DCE2; font-size: 16.5px; line-height: 1.55; max-width: 44ch; margin: 16px 0 0; }
.lux-proof { display: flex; gap: 26px; margin-top: 30px; flex-wrap: wrap; }
.lux-proof-i { display: flex; flex-direction: column; gap: 2px; padding-left: 14px; border-left: 1px solid rgba(255,255,255,.22); }
.lux-proof-i b { font-size: 14px; color: #fff; font-weight: 600; }
.lux-proof-i small { font-size: 12px; color: #9FBACB; }
.lux-stars { color: #E8B25A; letter-spacing: 2px; font-size: 13px; }
.lux-quote { margin: 40px 0 0 clamp(24px, 4vw, 56px); font-family: var(--serif); font-size: 17px; color: #EAF1F4; border-left: 2px solid var(--ambar); padding-left: 14px; font-style: italic; max-width: 40ch; }
/* O lado da carta: branco, linhas finas, uma saudação */
.lux-main { display: flex; align-items: center; justify-content: center; padding: 48px 32px; }
.lux-box { max-width: 380px; gap: 22px; }
.lux-box h2 { font-size: 32px; margin-top: 6px; color: var(--primary); }
.lux-stroke { width: 88px; height: 12px; display: block; margin-top: 4px; }
.lux-stroke path { stroke-dasharray: 160; stroke-dashoffset: 160; animation: luxDraw .9s ease-out 1.1s forwards; }
.lux-hint { color: var(--text-2); font-size: 14px; margin: 8px 0 0; }
.lux-box .field label { font-size: 10.5px; letter-spacing: .16em; }
.lux-box .field input { border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: transparent; padding: 10px 2px; font-size: 16px; }
.lux-box .field input:focus { outline: none; border-bottom-color: var(--primary); box-shadow: 0 1px 0 var(--primary); }
.lux-btn { height: 48px; border-radius: 3px; letter-spacing: .16em; text-transform: uppercase; font-size: 12.5px; font-weight: 700; }
.lux-pwa { background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; box-shadow: none; }
.lux-pwa .pwa-cta-txt { color: var(--text); } .lux-pwa .pwa-cta-txt span { color: var(--text-2); opacity: 1; }
.lux-pwa .pwa-cta-btn { padding: 8px 12px; font-size: 12px; }
/* Entrada suave, em sequência */
.lux-in { opacity: 0; transform: translateY(10px); animation: luxIn .7s cubic-bezier(.2,.7,.3,1) forwards; animation-delay: calc(var(--i, 0) * 110ms + 150ms); }
@keyframes luxIn { to { opacity: 1; transform: none; } }
/* Momento da assinatura ao entrar */
.lux-welcome { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; text-align: center; color: #fff; background: linear-gradient(160deg, #07253d, #0A3D62 55%, #0f5468); pointer-events: none; animation: luxIn .35s ease-out forwards; transition: opacity .5s ease; }
.lux-welcome.out { opacity: 0; }
.lux-welcome-e { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: #E8B25A; font-weight: 700; }
.lux-welcome-n { font-family: var(--serif); font-size: clamp(34px, 5vw, 56px); margin-top: 10px; }
.lux-welcome .lux-stroke { margin: 8px auto 0; width: 110px; height: 14px; }
.lux-welcome .lux-stroke path { animation-delay: .3s; }
.lux-welcome-s { margin-top: 14px; font-family: var(--serif); font-style: italic; color: #C9DCE2; font-size: 15px; }
/* A rubrica da casa sob os títulos de página (identidade que acompanha o sistema inteiro) */
.page-head h1::after { content: ''; display: block; width: 58px; height: 8px; margin-top: 7px; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 14'><path d='M2 9 C 20 2, 34 12, 52 7 S 84 3, 118 8' fill='none' stroke='%23E0932E' stroke-width='2' stroke-linecap='round'/></svg>") no-repeat left center / contain; opacity: .9; }
@media (max-width: 860px) {
  .auth.lux { padding: 10px; }
  .lux-frame { min-height: calc(100dvh - 20px); grid-template-columns: 1fr; grid-template-rows: auto auto 1fr auto; }
  .lux-top { padding: 10px 14px; font-size: 9.5px; } .lux-date { display: none; }
  .lux-hero { min-height: 0; padding: 26px 22px 24px; }
  .lux-ribbon { opacity: .4; left: -30px; }
  .lux-hero-in { margin-left: 8px; }
  .lux-sig .logo { width: min(240px, 80%); }
  .lux-eyebrow { margin-top: 22px; }
  .lux-hero h1 { font-size: 27px; }
  .lux-lead { font-size: 15px; }
  .lux-proof { gap: 14px; margin-top: 18px; }
  .lux-quote { display: none; }
  .lux-main { padding: 26px 18px 18px; }
  .lux-box h2 { font-size: 26px; }
  .lux-foot { padding: 10px 14px; font-size: 9.5px; justify-content: center; } .lux-foot span:not(.lux-foot-c) { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .lux-in { animation: none; opacity: 1; transform: none; }
  .lux-ribbon path, .lux-stroke path { animation: none; stroke-dashoffset: 0; }
  .lux-sig .logo { animation: none; -webkit-mask-image: none; mask-image: none; }
  .lux-welcome { display: none; }
}

/* ===== fase165 — mais familiaridade: a pena que escreve, vídeo de fundo, "Na casa agora", alternativas de copy ===== */
.lux-sig { position: relative; display: inline-block; }
.lux-pen { position: absolute; width: 22px; height: 22px; pointer-events: none; opacity: 0; filter: drop-shadow(0 2px 3px rgba(0,0,0,.35)); }
.lux-sig .lux-pen { top: 58%; left: 26%; animation: luxPenSig 1.7s cubic-bezier(.5,0,.3,1) .35s forwards; }
@keyframes luxPenSig { 0% { left: 26%; top: 60%; opacity: 0; } 8% { opacity: 1; } 30% { top: 68%; } 55% { top: 61%; } 80% { top: 67%; } 96% { opacity: 1; } 100% { left: 100%; top: 58%; opacity: 0; } }
.lux-rubrica { position: relative; display: inline-block; }
.lux-rubrica .lux-pen { width: 16px; height: 16px; top: -8px; left: 0; animation: luxPenRub .9s ease-out 1.1s forwards; }
@keyframes luxPenRub { 0% { left: 0; top: -2px; opacity: 0; } 10% { opacity: 1; } 35% { top: -8px; } 65% { top: -3px; } 90% { opacity: 1; } 100% { left: 84px; top: -6px; opacity: 0; } }
.lux-welcome .lux-rubrica .lux-pen { animation-delay: .3s; }
.lux-welcome .lux-rubrica { display: block; margin: 8px auto 0; width: 110px; }
/* Vídeo de fundo: fica atrás de tudo, com o azul da casa por cima para o texto continuar legível */
.lux-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; opacity: .55; filter: saturate(.85); }
.lux-hero.has-video::before { content: ''; position: absolute; inset: 0; z-index: 0; background: linear-gradient(160deg, rgba(7,37,61,.78) 0%, rgba(10,61,98,.70) 55%, rgba(15,84,104,.66) 100%); }
.lux-hero.has-video .lux-ribbon { opacity: .7; }
/* Movimento próprio sem vídeo: luz que respira devagar no painel (sutil) */
.lux-hero:not(.has-video)::after { animation: luxBreath 14s ease-in-out infinite alternate; }
@keyframes luxBreath { from { transform: translate3d(0,0,0); opacity: 1; } to { transform: translate3d(-3%, 2%, 0) scale(1.06); opacity: .85; } }
/* Na casa agora */
.casa-card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 12px 16px; margin-bottom: 14px; }
.casa-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.casa-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.casa-p { display: inline-flex; align-items: center; gap: 7px; padding: 4px 10px 4px 4px; border-radius: 999px; background: var(--surface-2); font-size: 13px; }
.casa-p .avatar.sm { width: 24px; height: 24px; font-size: 10px; }
.casa-p i { width: 7px; height: 7px; border-radius: 50%; background: #2f9e6e; }
.casa-p.busy i { background: #d9534f; } .casa-p.away i { background: var(--ambar); }
/* Alternativas de copy no modal da entrada */
.en-alts { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; margin-top: 6px; }
.en-alt { text-align: left; border: 1px solid var(--border); background: var(--surface); border-radius: 10px; padding: 8px 10px; cursor: pointer; display: flex; flex-direction: column; gap: 2px; font: inherit; color: var(--text); }
.en-alt b { font-size: 13px; } .en-alt span { font-size: 12px; color: var(--text-2); font-family: var(--serif); }
.en-alt:hover, .en-alt.on { border-color: var(--petroleo); box-shadow: inset 0 -2px 0 var(--ambar); }
@media (prefers-reduced-motion: reduce) { .lux-pen { display: none; } .lux-hero:not(.has-video)::after { animation: none; } }

/* ===== fase165 — fluidez: a moldura se desenha, o painel entra como cortina, luz segue o cursor, campos respiram ===== */
.auth.lux { background: radial-gradient(1200px 700px at 50% 30%, var(--surface), var(--bg) 70%); }
.lux-frame { animation: luxFrame 1.4s ease-out both; }
@keyframes luxFrame { from { border-color: transparent; outline-color: transparent; } to { border-color: rgba(224,147,46,.55); outline-color: rgba(10,61,98,.06); } }
.lux-hero { clip-path: inset(0 100% 0 0); animation: luxCurtain 1.1s cubic-bezier(.16,1,.3,1) .05s forwards; padding: clamp(24px, 4vw, 52px) clamp(28px, 5vw, 72px); }
@keyframes luxCurtain { to { clip-path: inset(0 0 0 0); } }
.lux-hero::after { background: radial-gradient(720px 480px at var(--mx, 100%) var(--my, 0%), rgba(61,139,150,.38), transparent 60%), radial-gradient(560px 420px at 0% 100%, rgba(224,147,46,.10), transparent 60%); transition: background-position .5s ease-out; }
.lux-hero:not(.has-video)::after { animation: none; }
.lux-hero h1 { font-size: clamp(30px, 3.1vw, 46px); max-width: 15ch; }
.lux-lead { margin-top: 14px; }
.lux-proof { margin-top: 24px; }
.lux-quote { margin-top: 30px; }
.lux-sig .lux-pen { top: 66%; }
.lux-in { transform: translateY(14px); animation-duration: .95s; animation-timing-function: cubic-bezier(.16,1,.3,1); animation-delay: calc(var(--i, 0) * 120ms + 260ms); }
/* Campos: a linha cresce da esquerda ao focar; o rótulo acende */
.lux-box .field { position: relative; }
.lux-box .field input { background-image: linear-gradient(var(--primary), var(--primary)); background-size: 0% 2px; background-repeat: no-repeat; background-position: left bottom; transition: background-size .45s cubic-bezier(.16,1,.3,1), border-color .2s; }
.lux-box .field input:focus { box-shadow: none; border-bottom-color: var(--border); background-size: 100% 2px; }
.lux-box .field:focus-within label { color: var(--primary); }
.lux-box .field label { transition: color .2s; }
.lux-pass input { padding-right: 34px; }
.lux-eye { position: absolute; right: 0; bottom: 6px; width: 30px; height: 30px; border: 0; background: none; color: var(--text-2); cursor: pointer; border-radius: 50%; display: grid; place-items: center; transition: color .2s, background .2s; }
.lux-eye:hover, .lux-eye.on { color: var(--primary); background: var(--surface-2); }
/* Botão: leve elevação e um brilho que passa ao pousar o mouse */
.lux-btn { position: relative; overflow: hidden; transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s; }
.lux-btn::after { content: ''; position: absolute; top: 0; left: -60%; width: 40%; height: 100%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.18), transparent); transform: skewX(-18deg); transition: left .6s ease; }
.lux-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(10,61,98,.22); }
.lux-btn:hover::after { left: 120%; }
.lux-btn.loading { opacity: .85; }
.lux-btn .spinner { width: 14px; height: 14px; border-width: 2px; border-color: rgba(255,255,255,.35); border-top-color: #fff; display: inline-block; vertical-align: -2px; margin-right: 6px; }
.lux-pwa { transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s; }
.lux-pwa:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(10,61,98,.10); }
.lux-proof-i, .lux-quote { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.lux-proof-i:hover { transform: translateX(3px); }
@media (max-width: 860px) { .lux-hero { clip-path: none; animation: none; } }
@media (prefers-reduced-motion: reduce) { .lux-frame, .lux-hero { animation: none; clip-path: none; } .lux-btn::after { display: none; } }
.navitem .navclick { display: flex; align-items: center; gap: 10px; }

/* ===== fase166 — A entrada como UMA tela só: orgânica, clara, sem moldura e sem emenda ===== */
/* Fora a barra do topo e a moldura: a marca já se apresenta no próprio painel. */
.auth.lux .lux-top, .auth.lux .lux-frame { display: none; }
.auth.lux {
  padding: 0; min-height: 100dvh; overflow: hidden;
  background: radial-gradient(1400px 900px at 78% 18%, #ffffff, var(--gelo) 62%, #e6eef1 100%);
}
.lux-stage {
  position: relative; min-height: 100dvh; display: grid; align-items: center;
  grid-template-columns: minmax(0, 1.04fr) minmax(340px, .96fr); isolation: isolate;
}
/* A forma: uma onda azul que nasce fora da tela e sai por ela — nada de retângulo, nada de borda */
.lux-shape {
  position: absolute; z-index: 0; inset: -12% auto -12% -14%; width: 74%;
  background: linear-gradient(150deg, #06253d 0%, #0A3D62 46%, #14697d 100%);
  border-radius: 0 48% 44% 0 / 0 54% 46% 0; overflow: hidden;
  box-shadow: 40px 0 90px -60px rgba(10, 61, 98, .5);
  animation: luxRise 1.3s cubic-bezier(.16, 1, .3, 1) both;
}
@keyframes luxRise { from { transform: translateX(-3%) scale(1.04); opacity: 0; } to { transform: none; opacity: 1; } }
.lux-shape::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(760px 560px at var(--mx, 62%) var(--my, 22%), rgba(61, 139, 150, .42), transparent 62%),
              radial-gradient(520px 420px at 10% 96%, rgba(224, 147, 46, .13), transparent 60%);
  transition: background .6s ease-out;
}
.auth.lux .lux-ribbon { left: 4%; top: -10%; height: 120%; width: 140px; opacity: .85; }
.auth.lux .lux-video { opacity: .5; }
.lux-stage.has-video .lux-shape::before {
  content: ''; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(150deg, rgba(6, 37, 61, .8) 0%, rgba(10, 61, 98, .7) 50%, rgba(20, 105, 125, .62) 100%);
}
/* O texto do painel — sem caixa, sem borda, só ar */
.auth.lux .lux-hero {
  position: relative; z-index: 1; background: none; overflow: visible; clip-path: none; animation: none;
  min-height: 0; display: block; padding: clamp(40px, 6vh, 80px) clamp(28px, 4vw, 56px) clamp(40px, 6vh, 80px) clamp(40px, 7vw, 110px);
}
.auth.lux .lux-hero::before, .auth.lux .lux-hero::after { content: none; }
.auth.lux .lux-hero-in { margin: 0; max-width: 30ch; }
.auth.lux .lux-sig .logo { width: min(300px, 74%); }
.auth.lux .lux-eyebrow { margin-top: 34px; font-size: 10.5px; letter-spacing: .26em; color: #E8B25A; }
.auth.lux .lux-hero h1 { font-size: clamp(31px, 3.5vw, 52px); line-height: 1.1; margin-top: 14px; letter-spacing: -.015em; max-width: 100%; }
.auth.lux .lux-lead { font-size: 16px; line-height: 1.6; color: #BFD6DE; max-width: 34ch; margin-top: 16px; }
/* Prova social em uma linha só — leve, sem molduras */
.auth.lux .lux-proof { display: flex; flex-direction: column; gap: 4px; margin-top: 32px; }
.auth.lux .lux-stars { color: #E8B25A; letter-spacing: 3px; font-size: 12px; }
.lux-proof-t { font-size: 13px; color: #EAF1F4; }
.lux-proof-t i { color: rgba(232, 178, 90, .8); font-style: normal; margin: 0 2px; }
.lux-proof-t.dim { color: #94AFBD; font-size: 12.5px; }
/* A carta: centrada, respirando, sem nada em volta */
.auth.lux .lux-main { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: clamp(32px, 5vh, 64px) clamp(24px, 4vw, 64px); gap: 26px; }
.auth.lux .lux-box { max-width: 340px; width: 100%; gap: 20px; }
.auth.lux .lux-box h2 { font-size: clamp(28px, 2.4vw, 34px); margin: 0; }
.auth.lux .lux-hint { font-size: 14.5px; color: var(--text-2); margin-top: 10px; }
.auth.lux .lux-btn { margin-top: 4px; }
.lux-sem { text-align: center; margin: 0; opacity: .75; }
/* App no bolso: uma linha discreta, clicável inteira */
.lux-app { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; padding: 10px 12px; border: 1px solid var(--border); border-radius: 14px; background: rgba(255, 255, 255, .6); cursor: pointer; font: inherit; color: var(--text); transition: border-color .25s, transform .25s cubic-bezier(.16, 1, .3, 1), box-shadow .25s; }
.lux-app:hover { border-color: var(--petroleo); transform: translateY(-1px); box-shadow: 0 8px 20px rgba(10, 61, 98, .08); }
.lux-app-i img { width: 34px; height: 34px; border-radius: 9px; display: block; }
.lux-app-t { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.lux-app-t b { font-size: 13.5px; font-weight: 600; }
.lux-app-t small { font-size: 11.5px; color: var(--text-2); }
.lux-app-b { font-size: 11.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--primary); white-space: nowrap; }
/* Rodapé: um sussurro, a frase da casa */
.auth.lux .lux-foot { display: block; border: 0; padding: 0; text-align: center; font-family: var(--serif); font-style: italic; font-size: 14px; letter-spacing: .01em; text-transform: none; color: var(--text-2); opacity: .8; max-width: 34ch; }
@media (max-width: 900px) {
  .lux-stage { grid-template-columns: 1fr; grid-template-rows: auto 1fr; align-items: start; }
  .lux-shape { inset: -18% -12% auto -12%; width: auto; height: min(66%, 560px); border-radius: 0 0 46% 46% / 0 0 13% 13%; box-shadow: 0 40px 80px -60px rgba(10, 61, 98, .6); }
  .auth.lux .lux-ribbon { left: 8%; top: -6%; height: 112%; width: 110px; opacity: .55; }
  .auth.lux .lux-hero { padding: clamp(30px, 6vh, 54px) 26px 18px; }
  .auth.lux .lux-hero-in { max-width: 26ch; }
  .auth.lux .lux-sig .logo { width: min(250px, 78%); }
  .auth.lux .lux-eyebrow { margin-top: 24px; }
  .auth.lux .lux-hero h1 { font-size: clamp(28px, 8vw, 36px); }
  .auth.lux .lux-lead { font-size: 15px; max-width: 30ch; }
  .auth.lux .lux-proof { margin-top: 22px; }
  .auth.lux .lux-main { padding: 26px 24px calc(28px + env(safe-area-inset-bottom)); gap: 20px; align-items: stretch; }
  .auth.lux .lux-box { max-width: 100%; }
  .auth.lux .lux-foot { align-self: center; }
}
@media (prefers-reduced-motion: reduce) { .lux-shape { animation: none; } }
/* Ajustes finos da fase166: a fita por cima da luz, título em duas linhas, logo com presença */
.auth.lux .lux-shape::after { z-index: 1; }
.auth.lux .lux-ribbon { z-index: 2; }
.lux-stage.has-video .lux-shape::before { z-index: 1; }
.auth.lux .lux-hero-in { max-width: min(36ch, 100%); }
.auth.lux .lux-hero h1 { font-size: clamp(30px, 3vw, 44px); }
.auth.lux .lux-sig .logo { width: min(320px, 82%); }
@media (max-width: 900px) { .auth.lux .lux-hero-in { max-width: 100%; } }

/* ===== fase166b — a caneta dourada escrevendo e o amanhecer ===== */
/* A forma agora mora dentro do painel: no celular ela abraça o texto, sem nada cair fora dela. */
.auth.lux .lux-hero { position: relative; }
.auth.lux .lux-shape { inset: -14% -9% -14% -16%; width: auto; }
/* Amanhecer: uma luz quente que sobe devagar no horizonte da onda */
.lux-dawn { position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(120% 62% at 26% 118%, rgba(232, 178, 90, .40) 0%, rgba(224, 147, 46, .16) 34%, transparent 68%),
              radial-gradient(80% 40% at 78% 106%, rgba(243, 208, 138, .18), transparent 62%);
  transform: translateY(14%); opacity: 0; animation: luxDawn 3.4s cubic-bezier(.16, 1, .3, 1) .5s forwards; }
@keyframes luxDawn { to { transform: none; opacity: 1; } }
/* Um fio de luz no fio da curva — o sol tocando a borda */
.auth.lux .lux-shape { box-shadow: 40px 0 90px -60px rgba(10, 61, 98, .5), inset -1px 0 0 rgba(243, 208, 138, .22); }
/* A assinatura dourada que se escreve */
.lux-assina-wrap { margin-top: 26px; max-width: 320px; }
.lux-assina { width: 100%; height: auto; display: block; overflow: visible; }
.lux-assina #luxPath { stroke-dasharray: 900; stroke-dashoffset: 900; animation: luxSign 2.6s cubic-bezier(.45, .05, .3, 1) 1.1s forwards; }
@keyframes luxSign { to { stroke-dashoffset: 0; } }
.lux-nib { filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .45)); opacity: 0; }
@media (max-width: 900px) {
  .auth.lux .lux-shape { inset: -18% -13% -9% -13%; }
  .lux-assina-wrap { margin-top: 18px; max-width: 240px; }
}
@media (prefers-reduced-motion: reduce) {
  .lux-dawn { animation: none; opacity: 1; transform: none; }
  .lux-assina #luxPath { animation: none; stroke-dashoffset: 0; }
  .lux-nib { display: none; }
}
/* Ajustes: largura do título em pixels (ch mede a fonte do pai, não a do h1), amanhecer mais quente */
.auth.lux .lux-hero-in { max-width: 540px; }
.auth.lux .lux-hero h1 { max-width: 12.5em; }
.auth.lux .lux-lead { max-width: 33em; }
.lux-dawn {
  background: radial-gradient(115% 58% at 22% 122%, rgba(243, 208, 138, .46) 0%, rgba(224, 147, 46, .22) 30%, rgba(224, 147, 46, .06) 52%, transparent 70%),
              radial-gradient(70% 34% at 72% 112%, rgba(255, 214, 150, .20), transparent 60%);
}
@media (max-width: 900px) { .auth.lux .lux-hero-in { max-width: 100%; } .auth.lux .lux-hero h1 { max-width: 100%; } }
/* A onda precisa cobrir a tela toda: o painel estica e centraliza o conteúdo por dentro */
.lux-stage { align-items: stretch; }
.auth.lux .lux-hero { display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 900px) { .lux-stage { align-items: start; } .auth.lux .lux-hero { display: block; } }
/* Amanhecer: o sol nasce atrás da onda — um halo que sobe e aquece a base do azul */
.lux-sun { position: absolute; left: 8%; bottom: -26%; width: 58%; aspect-ratio: 1; z-index: 1; pointer-events: none; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 226, 176, .30) 0%, rgba(240, 186, 110, .16) 38%, transparent 68%);
  filter: blur(6px); transform: translateY(34%); opacity: 0; animation: luxSun 4.2s cubic-bezier(.16, 1, .3, 1) .7s forwards; }
@keyframes luxSun { to { transform: translateY(0); opacity: 1; } }
.auth.lux .lux-hero-in { position: relative; z-index: 2; }
@media (prefers-reduced-motion: reduce) { .lux-sun { animation: none; opacity: 1; transform: none; } }
/* Celular: a onda acompanha a altura do texto (a regra antiga fixava 66% e cortava o conteúdo) */
@media (max-width: 900px) {
  .auth.lux .lux-shape { inset: -16% -13% -7% -13%; height: auto; width: auto; border-radius: 0 0 46% 46% / 0 0 11% 11%; }
  .auth.lux .lux-hero { padding-bottom: 30px; }
  .lux-sun { left: 14%; bottom: -34%; width: 78%; }
}
@media (max-width: 900px) { .auth.lux .lux-main { padding-top: 34px; } .lux-sun { opacity: .85; } }

/* ===== fase167 — a nota do Google ao vivo ===== */
.lux-g { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(232, 178, 90, .35); padding-bottom: 1px; transition: border-color .2s, color .2s; }
.lux-g:hover { border-color: #E8B25A; color: #fff; }
.lux-live { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: #6fd6a8; margin-left: 7px; vertical-align: middle; box-shadow: 0 0 0 0 rgba(111, 214, 168, .6); animation: luxLive 2.4s ease-out infinite; }
@keyframes luxLive { 0% { box-shadow: 0 0 0 0 rgba(111, 214, 168, .55); } 70% { box-shadow: 0 0 0 7px rgba(111, 214, 168, 0); } 100% { box-shadow: 0 0 0 0 rgba(111, 214, 168, 0); } }
/* Painel do master: escolher o lugar no Google */
.gl-box { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; background: var(--surface-2); }
.gl-op { display: flex; flex-direction: column; gap: 1px; width: 100%; text-align: left; border: 1px solid var(--border); background: var(--surface); border-radius: 10px; padding: 8px 10px; margin-top: 6px; cursor: pointer; font: inherit; color: var(--text); }
.gl-op:hover { border-color: var(--petroleo); }
.gl-op b { font-size: 13.5px; } .gl-op span { font-size: 12px; color: var(--text-2); } .gl-op em { font-size: 12px; color: var(--ambar); font-style: normal; }
@media (prefers-reduced-motion: reduce) { .lux-live { animation: none; } }

/* ===== fase169 — o app no celular: menos barra, mais conteúdo ===== */
/* Barra de ações vira "Mais" */
.ha-more { position: relative; }
.ha-more-b { white-space: nowrap; }
.ha-n { background: var(--surface-2); color: var(--text-2); border-radius: 999px; padding: 0 6px; font-size: 11px; font-weight: 700; margin-left: 2px; }
.ha-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 232px; max-height: 62vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.ha-menu[hidden] { display: none; }
.ha-menu > * { width: 100%; justify-content: flex-start !important; border: 0 !important; background: none !important; border-radius: 9px; padding: 10px 12px !important; font-size: 14px; }
.ha-menu > *:hover { background: var(--surface-2) !important; }
@media (max-width: 720px) {
  /* Cabeçalho de página mais enxuto: o título manda, o resto sussurra */
  .page-head { margin-bottom: 14px; gap: 10px; }
  .page-head .lead { font-size: 13.5px; line-height: 1.45; }
  .page-head .eyebrow { font-size: 10px; letter-spacing: .1em; }
  .head-actions { justify-content: flex-start; gap: 6px; }
  /* Agenda: calendário e cards empilhados (estavam lado a lado num telefone) */
  .agg-sidebar { flex-direction: column !important; }
  .agg-minical { flex: 1 1 auto !important; width: 100%; }
  .aggp-prox, .aggp-livres, .aggp-cop { min-width: 0; }
  .agg-page { flex-direction: column; }
  /* Funil: cards compactos — cabem 5 por tela em vez de 2,5 */
  .fn-card, .ag-card { padding: 10px 12px; }
  .fn-card .ag-client { font-size: 14px !important; }
  .fn-card .ag-time { font-size: 11px; }
  .fn-card .ag-tags { gap: 4px; margin-top: 4px; }
  .fn-card .ag-tag { font-size: 10.5px; padding: 1px 7px; }
  .fn-card-foot { margin-top: 6px; }
  .fn-card-foot .btn.xs { padding: 4px 8px; font-size: 11px; }
  .fn-col-h { padding: 10px 12px; }
  /* O balão do chat interno não pode tapar botão */
  #teamChat.tc { transform: scale(.86); transform-origin: bottom right; }
}
/* Agenda no celular: quem abre quer VER O DIA — a grade vem primeiro, calendário e apoios depois */
@media (max-width: 720px) {
  .agg-page { display: flex; flex-direction: column; }
  .agg-content { order: 1; }
  .agg-sidebar { order: 2; gap: 10px; }
  .agg-minical { order: 2; }
  .aggp-prox { order: 1; }
}
/* fase170 — copy leve: a frase curta pede mais ar e um pouco mais de corpo */
.auth.lux .lux-lead { font-size: 17.5px; color: #CFE0E7; margin-top: 18px; max-width: 30em; }
.auth.lux .lux-assina-wrap { margin-top: 34px; }
@media (max-width: 900px) { .auth.lux .lux-lead { font-size: 15.5px; margin-top: 14px; } .auth.lux .lux-assina-wrap { margin-top: 22px; } }

/* ===== fase171 — controles de conexão precisos (WhatsApp, Telegram, Instagram) ===== */
.ch-row { border: 1px solid var(--border); border-radius: 14px; padding: 12px 14px; background: var(--surface); margin-bottom: 10px; border-left: 4px solid var(--border); }
.ch-row.connected { border-left-color: #2f9e6e; }
.ch-row.qr { border-left-color: var(--ambar); }
.ch-row.connecting { border-left-color: var(--petroleo); }
.ch-erro { margin: 8px 0 0; padding: 8px 10px; border-radius: 10px; background: #fdf3e7; color: #8a5a12; font-size: 12.5px; display: flex; gap: 7px; align-items: flex-start; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .ch-erro { background: #3a2a12; color: #f0c98a; } }
:root[data-theme="dark"] .ch-erro { background: #3a2a12; color: #f0c98a; }
/* QR com relógio: o técnico vê quanto tempo resta antes de expirar */
.ch-qr { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-top: 10px; padding: 12px; border-radius: 12px; background: var(--surface-2); }
.ch-qr img { border-radius: 8px; background: #fff; padding: 6px; }
.ch-qr-side { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; min-width: 200px; flex: 1; }
.ch-qr-clock { font-size: 12.5px; font-weight: 700; color: var(--text-2); font-variant-numeric: tabular-nums; }
.ch-qr-clock.urgente { color: #d9534f; }
.ch-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
.ch-reset { border-color: var(--ambar) !important; color: #8a5a12 !important; }
.ch-reset:hover { background: #fdf3e7 !important; }
/* Instagram: webhook para copiar */
.ch-ig { margin-top: 10px; padding: 10px 12px; border-radius: 12px; background: var(--surface-2); display: flex; flex-direction: column; gap: 6px; }
.ch-copy { display: flex; align-items: center; gap: 8px; }
.ch-copy code { flex: 1; min-width: 0; font-size: 11.5px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 5px 8px; overflow-x: auto; white-space: nowrap; }
/* Diagnóstico */
.dg { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; }
.dg-l { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--border); font-size: 13.5px; }
.dg-l span { color: var(--text-2); }
.dg-passos { margin: 8px 0 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; font-size: 13.5px; }
@media (max-width: 720px) { .ch-qr { flex-direction: column; align-items: stretch; } .ch-qr img { align-self: center; } }
/* fase172 — lista da Central em lotes */
.cx-mais { width: 100%; border: 0; border-top: 1px solid var(--border); background: none; color: var(--primary); font: inherit; font-size: 13px; font-weight: 600; padding: 12px; cursor: pointer; }
.cx-mais:hover { background: var(--surface-2); }
/* fase203 — rodapé da lista: quantas estão na tela, quantas existem, e como ver todas. */
.cx-rodape { display: flex; flex-direction: column; align-items: stretch; gap: 2px; border-top: 1px solid var(--border); padding-bottom: 10px; }
.cx-rodape .cx-mais { border-top: 0; padding-bottom: 6px; }
.cx-todas { border: 0; background: none; color: var(--muted); font: inherit; font-size: 12.5px; padding: 2px 12px 6px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.cx-todas:hover { color: var(--primary); }
.cx-todas[disabled] { opacity: .6; cursor: default; text-decoration: none; }
.cx-rodape > .small { text-align: center; }
/* fase203 — marca do número principal na tela de Canais. */
.ch-principal { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ok, #2E9E5B); border: 1px solid currentColor; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }

/* ===== fase174 — carregar histórico anterior + ações de diagnóstico ===== */
.cx-antes {
  display: block; margin: 10px auto 14px; padding: 7px 16px;
  border: 1px solid var(--border); border-radius: 999px;
  background: var(--card); color: var(--primary);
  font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  box-shadow: 0 1px 3px rgba(10, 61, 98, .08); transition: background .15s, border-color .15s;
}
.cx-antes:hover:not(:disabled) { background: var(--bg); border-color: var(--primary); }
.cx-antes:disabled { opacity: .7; cursor: default; }
.dg-acoes { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 6px; }
.dg-acoes .btn { flex: 0 1 auto; }



/* ===== fase176 — balão do chat interno: pode ser ARRASTADO para onde a pessoa quiser ===== */
.tc-bubble { cursor: grab; touch-action: none; }
.tc.arrastando .tc-bubble { cursor: grabbing; transform: scale(1.06); box-shadow: 0 14px 30px rgba(0,0,0,.3); }
.tc.arrastando { transition: none; }
/* Enquanto não for movido pela pessoa, ele sobe sozinho quando uma conversa está aberta,
   para não ficar em cima do botão de enviar. */
body.chat-open #teamChat.tc:not(.movido) { bottom: 98px; }
/* O painel abre para o lado/altura que couber, conforme onde o balão foi parar. */
.tc.pra-cima .tc-panel { bottom: auto; top: 64px; }
.tc.pra-esquerda .tc-panel { right: auto; left: 0; }

/* fase177 — botão "buscar nome" girando enquanto consulta o aparelho */
.iconbtn.girando svg { animation: cvGira 1s linear infinite; }
@keyframes cvGira { to { transform: rotate(360deg); } }

/* ===== fase178 — mídia: baixar do WhatsApp, ver e salvar ===== */
.cx-media-wrap { position: relative; display: block; }
.cx-media-save {
  position: absolute; top: 6px; right: 6px; width: 28px; height: 28px; border-radius: 50%;
  background: rgba(0,0,0,.55); color: #fff; display: grid; place-items: center; text-decoration: none;
  opacity: 0; transition: opacity .15s;
}
.cx-media-wrap:hover .cx-media-save, .cx-doc:hover .cx-media-save { opacity: 1; }
.cx-media-save:hover { background: rgba(0,0,0,.75); }
.cx-doc { display: flex; align-items: center; gap: 6px; }
.cx-doc .cx-media-save { position: static; opacity: .6; width: 26px; height: 26px; background: transparent; color: var(--text-2); }
.cx-doc .cx-media-save:hover { opacity: 1; background: var(--surface-2); color: var(--primary); }
.cx-media-get {
  display: inline-flex; align-items: center; gap: 7px; width: 100%; padding: 9px 12px; margin-bottom: 4px;
  border: 1px dashed var(--border); border-radius: 10px; background: var(--surface);
  color: var(--primary); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; text-align: left;
}
.cx-media-get:hover:not(:disabled) { background: var(--bg); border-style: solid; }
.cx-media-get:disabled { opacity: .75; cursor: default; }
.cx-media-get .spinner { width: 14px; height: 14px; border-width: 2px; }
.cx-msg.out .cx-media-get { background: rgba(255,255,255,.55); }

/* fase179 — recibo (✓ / ✓✓ / ✓✓ azul) ao lado da prévia na lista de conversas */
.cx-item-sub > .cx-tick { flex: none; margin-right: 3px; }
.cx-item-sub > .cx-tick svg { width: 15px; height: 13px; }

/* fase180 — selos de conversa fora da caixa */
.chip.bloq { background: color-mix(in srgb, var(--erro) 12%, transparent); color: var(--erro); }
.chip.tranc { background: var(--surface-2); color: var(--text-2); }
.cx-more-menu button.perigo { color: var(--erro); }

/* fase181 — áudio dentro do visualizador de mídia */
.mv-aud { width: min(520px, 86vw); }
.cx-media-zoom { position: absolute; top: 6px; right: 40px; width: 28px; height: 28px; border: 0; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; display: grid; place-items: center; cursor: pointer; opacity: 0; transition: opacity .15s; }
.cx-media-wrap:hover .cx-media-zoom { opacity: 1; }

/* fase184 — canal de origem visível e botão de silenciar */
.chip.canal { background: color-mix(in srgb, var(--c, #3D8B96) 14%, transparent); color: var(--c, #3D8B96); font-weight: 600; }
.cx-via { color: var(--text-2); }
.iconbtn.cx-som.mudo { color: var(--erro, #D64545); opacity: .9; }

/* fase185 — botão de som com rótulo, para ser encontrado de primeira */
.btn.cx-som { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; }
.btn.cx-som.mudo { color: var(--erro, #D64545); border-color: color-mix(in srgb, var(--erro) 40%, transparent); }
.cx-som-txt { font-size: 12px; font-weight: 600; }
@media (max-width: 720px) { .cx-som-txt { display: none; } }

/* fase186 — aviso de conexão ao vivo caída */
#cxConn.offline .ch-dots { opacity: .4; filter: grayscale(1); }
.btn.cx-live { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; color: var(--erro, #D64545); border-color: color-mix(in srgb, var(--erro) 40%, transparent); }
.btn.cx-live span { font-size: 12px; font-weight: 600; }
.btn.cx-live[hidden] { display: none !important; }
@media (max-width: 720px) { .btn.cx-live span { display: none; } }

/* fase186 — faixa de alerta: número da casa fora do ar */
/* fase198 — cartão de contato encaminhado */
/* a bolha normal preserva quebras de linha do texto (white-space: pre-wrap); dentro do
   cartão isso transformava a indentação do HTML em linhas em branco e esticava a bolha. */
.cx-bubble.cx-contato { padding: 6px; white-space: normal; }
.ct-card { min-width: 210px; }
/* fase215 — cabeçalho de identidade da ficha: foto, nome e número num lugar só. */
.fi-id { display: flex; gap: 14px; align-items: flex-start; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-2); margin-bottom: 14px; }
.fi-av { width: 56px; height: 56px; flex: none; border-radius: 50%; overflow: hidden; display: grid; place-items: center;
  background: var(--primary); color: #fff; font-weight: 700; font-size: 19px; }
.fi-av img { width: 100%; height: 100%; object-fit: cover; }
.fi-id-txt { min-width: 0; flex: 1; }
.fi-linha { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.fi-nome { font-size: 16px; }
.fi-tel { font-variant-numeric: tabular-nums; }
.btn.xs { font-size: 11.5px; padding: 3px 8px; border-radius: 7px; display: inline-flex; align-items: center; gap: 4px; text-decoration: none; }
/* fase208 — contatos lidos de dentro da planilha, dentro da própria bolha */
.pl-caixa { margin-top: 8px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); overflow: hidden; max-width: 460px; }
.pl-topo { display: flex; align-items: center; gap: 6px; padding: 7px 10px; border-bottom: 1px solid var(--border); font-size: 12.5px; background: var(--surface-2); }
.pl-lista { max-height: 260px; overflow-y: auto; }
.pl-linha { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 10px; }
.pl-linha + .pl-linha { border-top: 1px solid var(--border); }
.pl-nome { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.pl-nome b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pl-tel { font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
.pl-acoes { display: flex; gap: 2px; flex: none; }
.iconbtn.xs { width: 26px; height: 26px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; }
.pl-ler { margin-top: 8px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--surface); color: var(--primary); font: inherit; font-size: 12.5px; font-weight: 600; padding: 7px 11px; border-radius: 9px; cursor: pointer; }
.pl-ler:hover { background: var(--surface-2); }
.pl-ler[disabled] { opacity: .6; cursor: default; }
.ct-card + .ct-card { margin-top: 8px; border-top: 1px solid var(--border); padding-top: 8px; }
.ct-topo { display: flex; gap: 10px; align-items: flex-start; padding: 4px 4px 2px; }
.ct-ini { width: 34px; height: 34px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: var(--primary); color: #fff; font-size: 12px; font-weight: 700; }
/* fase217 — o número em tamanho de leitura: quem vai ligar do fixo precisa LER, não clicar. */
.ct-tel { font-variant-numeric: tabular-nums; font-size: 15px; font-weight: 600; letter-spacing: .01em; }
/* O cartão inteiro é o botão de abrir a conversa. */
.ct-card.ct-clicavel { cursor: pointer; border-radius: 10px; transition: background .12s; }
.ct-card.ct-clicavel:hover { background: color-mix(in srgb, var(--primary) 7%, transparent); }
.ct-card.ct-clicavel:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.ct-dica { font-size: 11.5px; color: var(--primary); display: inline-flex; align-items: center; gap: 4px; align-self: center; }
.ct-sug { padding: 0 4px; }
.ct-sug-linha { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 0; }
.ct-sug-linha + .ct-sug-linha { border-top: 1px solid var(--border); }
/* fase228 — o que veio no cartão, visível de um jeito ou de outro. */
.ct-mail { font-size: 13px; }
.ct-mail a { color: var(--primary); text-decoration: none; }
.ct-mail a:hover { text-decoration: underline; }
.ct-dotexto { font-size: 10.5px; font-weight: 600; color: var(--voce, #B9781C); border: 1px solid currentColor; border-radius: 999px; padding: 0 6px; vertical-align: 2px; cursor: help; }
.ct-cru { margin: 8px 4px 0; font-size: 12px; }
.ct-cru summary { cursor: pointer; color: var(--primary); }
.ct-cru pre { margin: 6px 0 0; padding: 8px 10px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 8px;
  max-height: 180px; overflow: auto; white-space: pre-wrap; word-break: break-word; font-size: 11.5px; line-height: 1.45; }
/* fase223 — escolher o departamento ao abrir um contato novo. */
.ed-op { display: flex; align-items: center; gap: 9px; justify-content: flex-start; width: 100%; text-align: left; padding: 11px 13px; }
.ed-cor { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.ed-op[disabled] { opacity: .55; }
.ct-acoes { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; padding: 0 4px 2px; }
.ct-acoes .btn { font-size: 12px; padding: 4px 9px; text-decoration: none; }
.ct-acoes a.btn:hover { text-decoration: none; }

/* fase198 — painel de arquivos da conversa */
.arq-barra { display: flex; align-items: center; gap: 10px; justify-content: space-between; flex-wrap: wrap;
  padding: 9px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface);
  font-size: 13px; margin-bottom: 12px; }
.arq-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px;
  max-height: 60vh; overflow-y: auto; padding-right: 2px; }
.arq-item { display: flex; gap: 10px; align-items: center; padding: 8px; border: 1px solid var(--border);
  border-radius: 10px; background: var(--surface); cursor: pointer; transition: border-color .15s; }
.arq-item:hover { border-color: var(--primary); }
.arq-item.sem { cursor: default; opacity: .72; }
.arq-capa { width: 52px; height: 52px; flex: none; border-radius: 8px; overflow: hidden; background: var(--bg);
  display: grid; place-items: center; color: var(--text-2); }
.arq-capa img { width: 100%; height: 100%; object-fit: cover; }
.arq-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.arq-txt b { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.arq-tag { font-size: 11px; color: var(--text-3, #8a9aa1); font-style: italic; }
.arq-baixar { flex: none; color: var(--text-2); padding: 6px; border-radius: 6px; }
.arq-baixar:hover { color: var(--primary); background: var(--bg); }

/* fase198 — o aviso de número fora do ar precisa ser NOTADO, não gritado: uma linha
   discreta com um risco na lateral, e a ação como link de texto em vez de botão vermelho.
   Quem precisa agir já entende; quem não pode agir não leva um susto a cada abertura. */
.cx-canal-off {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  margin: 6px 10px; padding: 7px 11px; border-radius: 8px;
  background: color-mix(in srgb, var(--erro, #D64545) 5%, transparent);
  border: 1px solid color-mix(in srgb, var(--erro, #D64545) 16%, transparent);
  border-left: 2px solid color-mix(in srgb, var(--erro, #D64545) 55%, transparent);
  font-size: 12px; line-height: 1.45; color: var(--text-2);
}
.cx-canal-off[hidden] { display: none !important; }
.cxo-txt { flex: 1; min-width: 180px; display: flex; flex-direction: column; gap: 1px; }
.cx-canal-off b { color: var(--text); font-weight: 600; }
.cx-canal-off .cxo-forte { color: color-mix(in srgb, var(--erro, #D64545) 80%, var(--text)); }
.cx-canal-off .btn {
  background: transparent; color: var(--text-2); border: 0; padding: 2px 4px;
  font-size: 12px; text-decoration: underline; text-underline-offset: 3px; flex: none;
}
.cx-canal-off .btn:hover { color: var(--primary); background: transparent; }

/* fase186 — registro de eventos */
.lg-filtros { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 10px; }
.lg-filtros .btn.on { background: var(--primary); color: #fff; border-color: var(--primary); }
.lg-wrap { max-height: 54vh; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.lg-tab { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.lg-tab td { padding: 7px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.lg-tab tr:last-child td { border-bottom: 0; }
.lg-h { white-space: nowrap; color: var(--text-2); font-variant-numeric: tabular-nums; }
.lg-tag { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 11px; font-weight: 700; background: var(--surface-2); color: var(--text-2); }
.lg-tag.ok { background: color-mix(in srgb, #2E9E5B 15%, transparent); color: #2E9E5B; }
.lg-tag.aviso { background: color-mix(in srgb, #C9A227 18%, transparent); color: #8a6d00; }
.lg-tag.erro { background: color-mix(in srgb, var(--erro) 14%, transparent); color: var(--erro); }
.lg-erro td { background: color-mix(in srgb, var(--erro) 5%, transparent); }

/* fase187 — falar com o contato por outro número da casa */
/* fase202 — motor de recebimento à vista e zona de risco */
.mt-lista { display: flex; flex-direction: column; gap: 4px; max-height: 58vh; overflow-y: auto; }
.mt-item { display: grid; grid-template-columns: 26px 1fr; gap: 8px; align-items: start; padding: 8px 10px;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface); font-size: 13.5px; }
.mt-item span span { display: block; }
.mt-item.ok .mt-sel { color: var(--ok, #2E7D5B); }
.mt-item.nok { border-color: var(--erro, #D64545); }
.mt-item.nok .mt-sel { color: var(--erro, #D64545); }
.zona-risco { border: 1px solid color-mix(in srgb, var(--erro, #D64545) 35%, var(--border));
  border-left: 3px solid var(--erro, #D64545); border-radius: 0 12px 12px 0;
  background: color-mix(in srgb, var(--erro, #D64545) 4%, var(--surface)); padding: 16px 18px; }
.zr-nums { display: flex; flex-wrap: wrap; gap: 20px; margin: 12px 0; }
.zr-nums > div { display: flex; flex-direction: column; }
.zr-nums b { font-size: 21px; font-variant-numeric: tabular-nums; color: var(--erro, #D64545); }
.zr-nums span { font-size: 12px; color: var(--text-2); }

/* fase196 — verificação em duas etapas */
.mfa-box { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
.mfa-on, .mfa-off { display: flex; align-items: center; gap: 14px; justify-content: space-between; flex-wrap: wrap; }
.mfa-on b, .mfa-off b { display: inline-flex; align-items: center; gap: 6px; }
.mfa-on { color: var(--ok, #2E7D5B); }
.mfa-qr { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; margin: 14px 0 18px; }
.mfa-qr img { border: 1px solid var(--border); border-radius: 10px; background: #fff; padding: 6px; }
.mfa-chave { display: inline-block; margin-top: 6px; font-size: 15px; letter-spacing: .08em; padding: 6px 10px; border-radius: 6px; background: var(--bg); border: 1px solid var(--border); }
.mfa-codigos { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; margin: 14px 0 18px; }
.mfa-codigos code { text-align: center; padding: 9px 6px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); font-size: 15px; letter-spacing: .06em; }

/* fase195 — dados e guarda */
h3.sec { font-size: 15px; margin: 22px 0 2px; color: var(--text); }
.du { border: 1px solid var(--border); border-radius: 12px; background: var(--surface); padding: 6px 14px; }
.du-row { display: grid; grid-template-columns: minmax(150px, 1.3fr) minmax(60px, 2fr) auto; gap: 12px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.du-row:last-of-type { border-bottom: 0; }
.du-n { color: var(--text-2); }
.du-b { height: 7px; border-radius: 4px; background: color-mix(in srgb, var(--primary) 16%, transparent); position: relative; overflow: hidden; }
.du-b::after { content: ''; position: absolute; inset: 0 auto 0 0; width: var(--pct, 0%); background: var(--primary); border-radius: 4px; }
.du-v { font-variant-numeric: tabular-nums; white-space: nowrap; font-size: 13.5px; }
.du-total { padding: 10px 0; border-top: 2px solid var(--border); text-align: right; font-size: 14px; }
.rt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; }
.rt-in { display: flex; align-items: center; gap: 8px; }
.rt-in input[type=number] { max-width: 92px; }
.rt-in > span { color: var(--text-2); font-size: 14px; }
@media (max-width: 640px) { .du-row { grid-template-columns: 1fr auto; } .du-b { display: none; } }

/* fase191 — painel de cópias de segurança */
.bk-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.bk-card { padding: 14px 16px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.bk-card .bk-lbl { font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); }
.bk-card .bk-val { font-size: 19px; font-weight: 600; margin: 4px 0 6px; }
.bk-card.ok { border-color: color-mix(in srgb, #1f9d55 45%, var(--border)); }
.bk-card.alerta { border-color: color-mix(in srgb, #c77700 60%, var(--border)); background: color-mix(in srgb, #c77700 7%, var(--surface)); }

/* fase189 — apagar para todos: aparece só ao passar o mouse na própria mensagem */
.cx-msg .cx-bubble { position: relative; }
.cx-apagar {
  /* a bolha enviada encosta na borda direita: o botão fica à ESQUERDA dela, para dentro da tela */
  position: absolute; top: 2px; left: -30px; width: 24px; height: 24px; padding: 0;
  display: grid; place-items: center; border: 0; border-radius: 6px; background: transparent;
  color: var(--text-3, #9a9a9a); cursor: pointer; opacity: 0; transition: opacity .15s, color .15s;
}
.cx-msg:hover .cx-apagar, .cx-apagar:focus-visible { opacity: 1; }
.cx-apagar:hover { color: #c0392b; background: color-mix(in srgb, #c0392b 10%, transparent); }
@media (max-width: 760px) { .cx-apagar { left: auto; right: 2px; top: -24px; opacity: 1; } }
/* fase213 — editar (15 min, como no WhatsApp). Fica acima do apagar, mesmo comportamento. */
.cx-editar {
  position: absolute; top: 30px; left: -30px; width: 24px; height: 24px; padding: 0;
  display: grid; place-items: center; border: 0; border-radius: 6px; background: transparent;
  color: var(--text-3, #9a9a9a); cursor: pointer; opacity: 0; transition: opacity .15s, color .15s;
}
.cx-msg:hover .cx-editar, .cx-editar:focus-visible { opacity: 1; }
.cx-editar:hover { color: var(--primary, #3D8B96); background: color-mix(in srgb, var(--primary) 10%, transparent); }
@media (max-width: 760px) { .cx-editar { left: auto; right: 30px; top: -24px; opacity: 1; } }
/* A marca de editada vale para os dois lados: o cliente também corrige o que escreveu. */
.cx-editada { font-size: 11px; opacity: .7; font-style: italic; margin-right: 4px; cursor: help; }

/* fase189 — mensagem apagada (por nós ou pelo contato) */
.cx-msg.revoked .cx-bubble { opacity: .6; font-style: italic; }
.cx-msg.revoked .cx-apagar { display: none; }

/* fase188 — alternador de número (pastilhas no cabeçalho da conversa) */
.cx-canais { display: inline-flex; gap: 4px; align-items: center; margin-right: 4px; }
.cx-canal {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-2);
  font: inherit; font-size: 11.5px; line-height: 1; cursor: pointer; transition: .15s;
}
.cx-canal:hover:not(:disabled) { border-color: var(--cc); color: var(--text); background: var(--bg); }
.cx-canal .cx-canal-pt { width: 7px; height: 7px; border-radius: 50%; background: var(--cc); flex: none; }
.cx-canal.on { background: color-mix(in srgb, var(--cc) 14%, transparent); border-color: var(--cc); color: var(--text); font-weight: 600; cursor: default; }
.cx-canal.off { opacity: .45; cursor: not-allowed; }
.cx-canal.off .cx-canal-pt { background: var(--text-3, #999); }
@media (max-width: 900px) { .cx-canal .cx-canal-tx { display: none; } .cx-canal { padding: 5px; } }

/* fase188 — faixa de saúde do recebimento no registro de eventos */
.lg-saude { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 9px 12px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface); font-size: 13px; margin: 0 0 10px; }
.lg-saude.bom { border-color: color-mix(in srgb, #1f9d55 45%, var(--border)); }
.lg-saude.atencao { border-color: color-mix(in srgb, #c77700 55%, var(--border)); background: color-mix(in srgb, #c77700 7%, var(--surface)); }
.lg-saude.ruim { border-color: color-mix(in srgb, #c0392b 55%, var(--border)); background: color-mix(in srgb, #c0392b 8%, var(--surface)); }

.iconbtn.cx-troca { color: var(--text-2); }
.iconbtn.cx-troca:hover { color: var(--primary); }
.oc-lista { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 14px; }
.oc-item {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 11px 13px; border: 1px solid var(--border); border-radius: 11px;
  background: var(--surface); color: var(--text); font: inherit; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.oc-item:hover:not(:disabled) { border-color: var(--primary); background: var(--bg); }
.oc-item:disabled { opacity: .55; cursor: not-allowed; }
.oc-cor { width: 4px; align-self: stretch; border-radius: 3px; flex: none; }
.oc-info { flex: 1; display: flex; flex-direction: column; min-width: 0; }

/* ── fase229 — clicar no nome para trocar (departamento da conversa) ── */
.cx-dep-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--card);
  color:var(--ink);border-radius:999px;padding:1px 9px;font-size:11.5px;line-height:17px;cursor:pointer;
  font-weight:600;vertical-align:baseline;transition:background .12s,border-color .12s}
.cx-dep-chip:hover{background:var(--bg-2,#f2f4f5);border-color:var(--brand,#3D8B96)}
.cx-dep-chip.vazio{color:var(--muted);font-weight:500;border-style:dashed}
.cx-dep-cor{width:7px;height:7px;border-radius:50%;display:inline-block}
.ed-op.atual{border-color:var(--brand,#3D8B96);box-shadow:inset 0 0 0 1px var(--brand,#3D8B96)}

/* ── fase229 — lápis do master no próprio menu ── */
.navitem{position:relative}
.nav-edit{position:absolute;right:6px;top:50%;transform:translateY(-50%);opacity:0;
  border:0;background:transparent;color:inherit;cursor:pointer;padding:3px;border-radius:6px;
  display:inline-flex;align-items:center;transition:opacity .12s,background .12s}
.navitem:hover .nav-edit,.section:hover .nav-edit{opacity:.62}
.nav-edit:hover{opacity:1;background:rgba(255,255,255,.14)}
.section{position:relative}
.section .nav-edit{right:8px}
.nm-row.nm-foco{outline:2px solid var(--brand,#3D8B96);outline-offset:3px;border-radius:8px}

.ch-online{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;margin:0 0 12px;background:var(--card)}
.ch-online input{margin-top:2px}

/* ═══════════ fase230 — reagir e o menu da mensagem (geometria do WhatsApp) ═══════════
   Os dois botões antigos (cx-editar / cx-apagar) saem de cena: o que eles faziam agora
   mora dentro do menu da setinha. As regras deles ficam no arquivo sem alvo — inofensivas —
   e o que manda é daqui para baixo. */
.cx-msg { position: relative; align-items: flex-end; }
.cx-msg .cx-bubble { position: relative; }

/* 😊 fora da bolha, do lado de fora da conversa — aparece ao passar o mouse */
.cx-reagir{
  opacity:0;border:0;background:transparent;color:var(--muted,#667781);cursor:pointer;
  padding:4px;border-radius:50%;align-self:flex-end;margin:0 2px 2px;line-height:0;
  transition:opacity .12s,color .12s,background .12s;flex:0 0 auto}
/* Do lado de fora da bolha e virado para o meio da conversa: à esquerda no que sai daqui,
   à direita no que chega — que é onde a mão já procura, porque é assim no WhatsApp. */
.cx-msg.out .cx-reagir{order:-1}
.cx-msg.in .cx-reagir{order:2}
.cx-msg:hover .cx-reagir,.cx-reagir:focus-visible{opacity:.75}
.cx-reagir:hover{opacity:1;color:var(--primary,#3D8B96);background:color-mix(in srgb, var(--primary,#3D8B96) 12%, transparent)}

/* ▾ dentro da bolha, no canto — com o degradê do WhatsApp por trás */
.cx-seta{
  position:absolute;top:1px;right:1px;opacity:0;border:0;cursor:pointer;color:#667781;
  padding:2px 3px 4px 10px;border-radius:0 8px 0 10px;line-height:0;
  background:linear-gradient(to left, var(--bubble-user,#d9fdd3) 60%, transparent);
  transition:opacity .12s}
.cx-msg.in .cx-seta{background:linear-gradient(to left, var(--bubble-other,#fff) 60%, transparent)}
.cx-msg:hover .cx-seta,.cx-seta:focus-visible{opacity:1}
.cx-seta:hover{color:#111b21}
@media (max-width: 760px){ .cx-reagir,.cx-seta{opacity:.55} }

/* as reações penduradas na quina da bolha */
.cx-reacoes{
  position:absolute;bottom:-11px;left:8px;display:inline-flex;align-items:center;gap:2px;
  background:var(--card,#fff);border:1px solid var(--line,#e9edef);border-radius:999px;
  padding:1px 7px;font-size:12px;line-height:17px;cursor:pointer;
  box-shadow:0 1px 2px rgba(11,20,26,.13);z-index:2}
.cx-msg.out .cx-reacoes{left:auto;right:8px}
.cx-reacoes.minha{border-color:var(--primary,#3D8B96)}
.cx-reacoes b{font-size:10.5px;font-weight:600;margin-left:2px;opacity:.7}
.cx-msg{margin-bottom:2px}
.cx-msg:has(.cx-reacoes){margin-bottom:13px}

/* o balãozinho flutuante — serve para a barra de emojis e para o menu */
.cx-pop{position:fixed;z-index:9000;background:var(--card,#fff);border:1px solid var(--line,#e9edef);
  border-radius:12px;box-shadow:0 8px 28px rgba(11,20,26,.22);padding:4px;max-width:min(320px,94vw)}
.cxr-bar{display:flex;align-items:center;gap:2px}
.cxr-bar.compacta{padding-bottom:4px;border-bottom:1px solid var(--line,#e9edef);margin-bottom:4px}
.cxr-op,.cxr-mais{border:0;background:transparent;cursor:pointer;font-size:21px;line-height:1;
  padding:5px 6px;border-radius:50%;transition:transform .1s,background .12s}
.cxr-op:hover,.cxr-mais:hover{transform:scale(1.22);background:var(--surface-2,#f0f2f5)}
.cxr-op.on{background:color-mix(in srgb, var(--primary,#3D8B96) 18%, transparent)}
.cxr-mais{color:var(--muted,#667781);display:inline-flex;align-items:center;padding:7px}
.cxr-painel{max-height:270px;overflow:auto}
.cxm-menu{display:flex;flex-direction:column;min-width:210px}
.cxm-op{display:flex;align-items:center;gap:9px;border:0;background:transparent;cursor:pointer;
  padding:9px 12px;border-radius:8px;text-align:left;font-size:13.5px;color:var(--ink,#111b21)}
.cxm-op:hover{background:var(--surface-2,#f0f2f5)}
.cxm-op.perigo{color:#c0392b}
.cxm-op.perigo:hover{background:color-mix(in srgb, #c0392b 10%, transparent)}
.cxm-op.inerte{color:var(--muted,#667781);cursor:default}
.cxm-op[disabled]{opacity:.6}

/* fase231 — o cartão de contato lido de dentro de um arquivo .vcf */
.ct-arquivo{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.ct-sobre{font-size:11.5px;color:var(--muted,#667781);margin-top:3px;line-height:1.35}

/* fase232 — a transcrição do áudio, dentro da própria bolha */
.cx-transc{margin-top:6px;padding:7px 9px;border-radius:8px;background:rgba(11,20,26,.05);
  font-size:12.5px;line-height:1.45;color:var(--ink,#111b21);max-width:min(52ch,100%)}
.cx-transc.erro{background:color-mix(in srgb, #c0392b 8%, transparent);color:#8c2f26}
.cx-transc-tit{display:flex;align-items:center;gap:4px;font-size:10px;text-transform:uppercase;
  letter-spacing:.06em;opacity:.6;margin-bottom:3px}
.cx-transc-btn{margin-top:6px;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line,#e9edef);
  background:transparent;color:inherit;border-radius:999px;padding:3px 10px;font-size:11.5px;cursor:pointer;opacity:.8}
.cx-transc-btn:hover{opacity:1;border-color:var(--primary,#3D8B96);color:var(--primary,#3D8B96)}
.cx-transc-btn[disabled]{opacity:.5;cursor:default}

/* fase234 — o cartão que diz o tamanho da máquina */
.mq-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0 0 16px;background:var(--card)}
.mq-card.alerta{border-color:#c0392b}
.mq-linhas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 18px;margin:8px 0 10px}
.mq-conc{font-size:12.5px;line-height:1.45;padding-top:9px;border-top:1px solid var(--line)}
.mq-mods{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.mq-mod{font-size:11px;border:1px solid var(--line);border-radius:999px;padding:2px 9px;opacity:.5}
.mq-mod.cabe{opacity:1;border-color:var(--ok,#2E9E5B);color:var(--ok,#2E9E5B);font-weight:600}

/* fase235 — a aba "Aguardando" e o painel da faxina */
.cx-tab-n{display:inline-block;margin-left:5px;background:#c0392b;color:#fff;border-radius:999px;
  font-size:10px;font-weight:700;padding:0 5px;line-height:15px;min-width:15px;text-align:center}
.cx-tabs button.active .cx-tab-n{background:#fff;color:#c0392b}
.cx-vazio{padding:26px 18px;text-align:center;display:flex;flex-direction:column;gap:5px}
.fx-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0 0 16px;background:var(--card)}
.fx-num{display:flex;flex-wrap:wrap;gap:22px;margin:10px 0}
.fx-num div{display:flex;flex-direction:column}
.fx-num b{font-size:21px;line-height:1.1;font-variant-numeric:tabular-nums}
.fx-num span{font-size:11.5px;color:var(--muted)}
.fx-num .fx-vai b{color:var(--primary,#3D8B96)}
.fx-dias{display:flex;align-items:center;gap:8px;font-size:13px;flex-wrap:wrap;margin:4px 0 10px}
.fx-porque{font-size:12.5px;margin:6px 0 10px}
.fx-porque summary{cursor:pointer;color:var(--muted)}
.fx-porque ul{margin:7px 0 0 18px;line-height:1.6}
.fx-acoes{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--line)}

/* fase236 — interruptores dos serviços de fora */
.ap-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:0 0 16px;background:var(--card)}
.ap-lista{display:flex;flex-direction:column;gap:2px}
.ap-linha{display:flex;gap:12px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line)}
.ap-linha:last-child{border-bottom:0}
.ap-linha.off{opacity:.72}
.ap-off{margin-left:7px;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#c0392b;
  border:1px solid currentColor;border-radius:999px;padding:0 6px}
.ap-sem{color:#8c2f26;margin-top:2px}
.ap-sw{position:relative;display:inline-block;width:38px;height:22px;flex:0 0 auto;margin-top:2px}
.ap-sw input{opacity:0;width:0;height:0;position:absolute}
.ap-sw span{position:absolute;inset:0;background:#c9cfd3;border-radius:999px;transition:background .15s;cursor:pointer}
.ap-sw span::before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;
  border-radius:50%;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.ap-sw input:checked + span{background:var(--ok,#2E9E5B)}
.ap-sw input:checked + span::before{transform:translateX(16px)}
.ap-sw input:disabled + span{opacity:.5;cursor:default}
.ap-transc{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.ap-transc button{margin-right:6px}

/* fase237 — saúde do envio */
.cx-envio-aviso{display:flex;align-items:center;gap:9px;padding:9px 12px;margin:0 0 6px;border-radius:10px;
  background:color-mix(in srgb,#c0392b 10%,transparent);border:1px solid color-mix(in srgb,#c0392b 35%,transparent);
  color:#8c2f26;font-size:12.5px;line-height:1.4}
.se-num{display:flex;flex-wrap:wrap;gap:22px;margin:4px 0 6px}
.se-num div{display:flex;flex-direction:column}
.se-num b{font-size:21px;line-height:1.1;font-variant-numeric:tabular-nums}
.se-num span{font-size:11.5px;color:var(--muted)}
.se-num .bom b{color:var(--ok,#2E9E5B)}
.se-num .ruim b{color:#c0392b}
.se-motivos{margin:6px 0 0 18px;font-size:12.5px;line-height:1.7}
.se-barras{display:flex;gap:3px;align-items:flex-end;height:130px;margin-top:8px;overflow-x:auto;padding-bottom:2px}
.se-b{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:34px;height:100%;justify-content:flex-end}
.se-col{width:20px;background:var(--surface-2,#eef1f2);border-radius:3px;display:flex;align-items:flex-end;overflow:hidden;min-height:3px}
.se-col i{display:block;width:100%;border-radius:3px}
.se-col i.ok{background:var(--ok,#2E9E5B)} .se-col i.meio{background:#E0932E} .se-col i.ruim{background:#c0392b}
.se-h{font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.se-p{font-size:9.5px;font-weight:600;font-variant-numeric:tabular-nums}
.se-p.ok{color:var(--ok,#2E9E5B)} .se-p.meio{color:#E0932E} .se-p.ruim{color:#c0392b}
.se-lista{max-height:180px;overflow:auto;font-size:12.5px;line-height:1.8;margin-top:5px}
.lt-passos{margin:10px 0 0 0;padding-left:18px;font-size:13px;line-height:1.75}
.lt-h{display:inline-block;min-width:92px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:11.5px}
.lt-ev{margin:6px 0 0 18px;font-size:12px;line-height:1.7}
.lt-ev li.erro{color:#c0392b} .lt-ev li.aviso{color:#8a6d1f}

/* fase241 — o recorte da aba "Aguardando", explicado */
.cx-agexp{display:flex;flex-direction:column;gap:5px;text-align:left;padding:10px 12px;line-height:1.45}

/* fase296 — TRILHO DE ATALHOS NA AGENDA. Os mesmos botoes da home, mas so o icone e
   empilhados a direita: na home eles sao cartoes que comem metade da altura do celular.
   Fica colado na borda, estreito, e sai da frente do conteudo. */
.ag-com-trilho { position: relative; padding-right: 52px; }
.ab-trilho {
  position: absolute; top: 0; right: 0; width: 44px;
  display: flex; flex-direction: column; gap: 6px; align-items: center; z-index: 3;
}
.ab-mini {
  width: 38px; height: 38px; display: grid; place-items: center;
  border: 1px solid var(--line, #e6e3dc); border-radius: 10px;
  background: var(--surface, #fff); color: var(--abc, var(--azul, #0A3D62));
  cursor: pointer; transition: transform .12s ease, box-shadow .12s ease;
}
.ab-mini:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(10,61,98,.12); }
.ab-mini:active { transform: none; }
@media (max-width: 720px) {
  .ag-com-trilho { padding-right: 46px; }
  .ab-trilho { width: 38px; }
  .ab-mini { width: 34px; height: 34px; }
}

/* ═══ fase298 — Financeiro · diário por AGR ═══
   A tabela é larga de propósito: são as 16 colunas da planilha, e cortar coluna aqui seria
   pedir para a AGR voltar ao Excel. O scroll horizontal é o preço certo a pagar. As linhas
   que ainda faltam conferir ficam marcadas em âmbar — uma tabela toda igual esconde o que
   precisa de gente. */
.fn-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
table.fn-tab { border-collapse: collapse; font-size: 13px; min-width: 100%; }
table.fn-tab th { text-align: left; font-weight: 600; white-space: nowrap; padding: 8px 6px; border-bottom: 1px solid var(--border); background: var(--surface-2); position: sticky; top: 0; }
table.fn-tab td { padding: 4px 6px; border-bottom: 1px solid var(--border); vertical-align: top; }
table.fn-tab tr.falta td:last-child { color: var(--ambar); }
table.fn-tab tr.ok td:last-child .ok { color: var(--ok); }
.fn-in { width: 100%; min-width: 70px; padding: 5px 6px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: inherit; font: inherit; }
.fn-in:hover { border-color: var(--border); }
.fn-in:focus { border-color: var(--petroleo); background: var(--surface-2); outline: none; }
.fn-in.salvando { opacity: .6; }
.fn-in.erro { border-color: var(--erro); }
.fn-cob { font-size: 11px; color: var(--text-2); padding-left: 6px; }
.fn-conf { white-space: nowrap; font-size: 12px; }
.fn-alerta { display: inline-block; margin-top: 3px; padding: 1px 6px; border-radius: 999px; background: rgba(168,54,47,.14); color: var(--erro); font-size: 11px; }
.fn-cop { margin-top: 16px; border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; background: var(--surface); }
.fn-cop h3 { margin: 0 0 4px; display: flex; align-items: center; gap: 6px; }
.fn-cop-resp { white-space: pre-wrap; max-height: 220px; overflow: auto; margin: 10px 0; }
.fn-cop-linha { display: flex; gap: 8px; }
.fn-cop-linha input { flex: 1; padding: 9px 11px; }
.fn-masc { display: inline-block; padding: 5px 6px; color: var(--text-2); font-size: 12px; cursor: not-allowed; }

/* ═══ fase299 — Financeiro: abas, painel e textos ═══
   As caixas do painel seguem a ordem do Consolidador, porque a ordem É o raciocínio:
   primeiro quanto o negócio fez, depois o que trava a emissão, depois o que trava o caixa.
   Cor só onde há ação a tomar — um painel todo colorido não destaca nada. */
.fn-abas { display: flex; gap: 4px; flex-wrap: wrap; margin: 14px 0 12px; border-bottom: 1px solid var(--border); }
.fn-aba { background: transparent; border: 0; border-bottom: 2px solid transparent; color: var(--text-2); padding: 8px 12px; cursor: pointer; font: inherit; font-size: 14px; border-radius: 8px 8px 0 0; }
.fn-aba:hover { background: var(--surface-2); color: var(--text); }
.fn-aba.on { color: var(--petroleo-escuro); border-bottom-color: var(--petroleo); font-weight: 600; }
.fn-aba-n { font-size: 11px; opacity: .7; }
.fn-h { margin: 18px 0 8px; font-size: 14px; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; }
.fn-caixas { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.fn-caixa { border: 1px solid var(--border); border-left: 3px solid var(--border); border-radius: var(--radius); padding: 10px 12px; background: var(--surface); display: flex; flex-direction: column; gap: 2px; }
.fn-caixa-r { font-size: 11px; color: var(--text-2); text-transform: uppercase; letter-spacing: .03em; }
.fn-caixa b { font-size: 20px; }
.fn-caixa-s { font-size: 11px; color: var(--text-2); }
.fn-caixa.ok { border-left-color: var(--ok); }
.fn-caixa.ambar { border-left-color: var(--ambar); }
.fn-caixa.erro { border-left-color: var(--erro); }
.fn-caixa.erro b { color: var(--erro); }
.fn-duas { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 900px) { .fn-duas { grid-template-columns: 1fr; } }
table.fn-tab .num { text-align: right; white-space: nowrap; }
table.fn-mini { width: 100%; }
table.fn-tab tr.fn-tot td { font-weight: 600; border-top: 2px solid var(--border); }
table.fn-tab tr.fn-fora td, table.fn-tab tr.fn-zero td { color: var(--text-2); }
.fn-ro { display: inline-block; padding: 5px 2px; }
.fn-data { white-space: nowrap; color: var(--text-2); }
.fn-busca { display: flex; gap: 8px; margin-bottom: 12px; }
.fn-busca input { flex: 1; padding: 9px 11px; }
.fn-texto { border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 12px; background: var(--surface); }
.fn-texto-cab { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-bottom: 1px solid var(--border); }
.fn-texto pre { margin: 0; padding: 12px; white-space: pre-wrap; font: inherit; font-size: 13px; }
.fn-nova { display: flex; gap: 8px; margin: 10px 0 12px; flex-wrap: wrap; align-items: center; }
.fn-nova input { padding: 8px 10px; min-width: 130px; }
.fn-anexo { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-2); margin-bottom: 6px; }
.fn-x { background: transparent; border: 0; color: var(--erro); cursor: pointer; font-size: 15px; line-height: 1; padding: 0 4px; }

/* fase300 — o cabeçalho do Financeiro. Os selects herdavam `width:100%` de uma regra geral
   e cada um ocupava uma linha inteira: três barras enormes empilhadas no topo. Aqui eles
   voltam ao tamanho do conteúdo. */
.fn-topo { gap: 8px; align-items: center; }
.fn-topo select, .fn-topo input[type="date"] { width: auto; min-width: 120px; padding: 7px 10px; }
.fn-ignorados { margin: 10px 0 0; font-size: 12px; color: var(--text-2); font-style: italic; }
.fn-campo { font-size: 12px; margin: 2px 0; align-items: flex-start; }
.fn-campo input { margin-top: 2px; }
.fn-origem { font-size: 11px; color: var(--text-2); font-style: italic; margin-top: 4px; }

/* ═══ fase304 — a ficha da linha e o acabamento do topo ═══
   A tabela de 16 colunas continua, para quem quer varrer o dia com o olho. Mas completar
   um pedido acontece na FICHA: tudo dele junto, agrupado como a cabeça agrupa, com o campo
   que falta marcado. Uma tabela larga é boa para conferir e ruim para preencher. */
.fn-topo-filtros { gap: 8px; align-items: center; flex-wrap: wrap; }
.fn-topo-acoes { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.fn-vazio { border: 1px dashed var(--border); border-radius: var(--radius); padding: 22px; display: flex; flex-direction: column; gap: 8px; color: var(--text-2); font-size: 14px; }
.fn-vazio b { color: var(--text); }
table.fn-tab tbody tr { cursor: pointer; }
table.fn-tab tbody tr:hover { background: var(--surface-2); }
.fi-estado { border-radius: var(--radius); padding: 10px 12px; margin: 10px 0; font-size: 14px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fi-estado.ok { background: rgba(46,125,91,.12); color: var(--ok); }
.fi-estado.falta { background: rgba(224,147,46,.12); color: var(--ambar); }
.fi-cop { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.fi-proposta { border: 1px solid var(--petroleo); border-radius: var(--radius); padding: 12px; margin: 10px 0; background: var(--surface-2); }
.fi-proposta > b { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.fi-grupo { margin-top: 16px; }
.fi-grupo h3 { margin: 0 0 8px; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-2); }
.fi-campos { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; }
.fi-campo { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.fi-campo > span { color: var(--text-2); font-size: 12px; }
.fi-campo > span i { color: var(--ambar); font-style: normal; font-weight: 600; }
.fi-campo.vazio .fi-in { border-color: var(--ambar); }
.fi-in { width: 100%; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: inherit; font: inherit; font-size: 13px; }
.fi-in:focus { border-color: var(--petroleo); outline: none; }
.fi-in.salvando { opacity: .6; }
.fi-in.erro { border-color: var(--erro); }
.fi-travado { padding: 8px 10px; border: 1px dashed var(--border); border-radius: 8px; color: var(--text-2); font-size: 13px; }
.fi-conversa { display: flex; flex-direction: column; gap: 6px; max-height: 220px; overflow: auto; }
.fi-msg { font-size: 12.5px; padding: 6px 9px; border-radius: 8px; background: var(--surface-2); }
.fi-msg.in { border-left: 2px solid var(--petroleo); }
.fi-msg.out { border-left: 2px solid var(--ambar); }
.fi-msg b { color: var(--text-2); font-weight: 600; margin-right: 4px; }

/* fase306 — as linhas em branco, como na planilha. Elas ficam discretas: são convite, não
   ruído. A da vez ganha destaque quando a pessoa entra nela. */
table.fn-tab tr.fn-branca { opacity: .75; }
table.fn-tab tr.fn-branca:focus-within { opacity: 1; background: var(--surface-2); }
table.fn-tab tr.fn-branca td { border-bottom-style: dashed; }
table.fn-tab tr.fn-branca.salvando { opacity: .45; }
table.fn-tab tr.fn-branca .fn-in::placeholder { font-style: italic; }

/* fase307 — o lápis por linha e o quadro de conferência.
   O lápis existe porque "clique na linha" não é uma instrução: ninguém adivinha um clique.
   E o quadro de divergência é vermelho de propósito — trocar o que uma pessoa digitou não
   pode parecer a mesma coisa que preencher um campo vazio. */
.fn-lapis { width: 34px; text-align: center; padding: 2px !important; }
.fn-lapis .iconbtn { opacity: .45; }
table.fn-tab tbody tr:hover .fn-lapis .iconbtn { opacity: 1; color: var(--petroleo); }
.fi-diverge { border-left: 3px solid var(--erro); background: rgba(168,54,47,.08); border-radius: 0 8px 8px 0; padding: 10px 12px; margin: 10px 0; }
.fi-diverge > b { display: flex; align-items: center; gap: 6px; color: var(--erro); }
.fi-diverge p { margin: 4px 0 8px; }
.fi-antes { text-decoration: line-through; opacity: .7; }
.fi-depois { color: var(--ok); font-weight: 600; }

/* fase308 — a tela das listas da casa. Seis grupos recolhidos: cada um mostra a semente em
   caixas de marcar (desmarcar = esconder), o que foi acrescentado, e — nas listas que têm
   comportamento — a qual oficial cada opção nova responde. */
.fl-box { max-height: 58vh; overflow: auto; margin-top: 12px; }
.fl-g { border: 1px solid var(--border); border-radius: 10px; margin-bottom: 8px; background: var(--surface); }
.fl-g > summary { cursor: pointer; padding: 10px 12px; font-weight: 600; font-size: 13px; }
.fl-g[open] > summary { border-bottom: 1px solid var(--border); }
.fl-g > *:not(summary) { margin-left: 12px; margin-right: 12px; }
.fl-g > div:last-child { margin-bottom: 12px; }
.fl-lista { display: flex; flex-wrap: wrap; gap: 6px 14px; padding-top: 10px; }
.fl-i { display: flex; align-items: center; gap: 6px; font-size: 13px; cursor: pointer; }
.fl-i.travado { cursor: default; opacity: .85; }
.fl-cad { font-size: 10px; font-weight: 400; }
.fl-t { margin: 12px 0 4px; }
.fl-s { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 13px; }
.fl-s select { width: auto; flex: 0 1 220px; }
@media (max-width: 720px) { .fl-lista { gap: 8px 10px; } .fl-s { flex-wrap: wrap; } }

/* fase308 — a pergunta do botão $ quando não há comprovante: é fatura do parceiro, e de qual? */
.nc-pq { margin: 12px 0 6px; }
.nc-parc { display: flex; gap: 8px; align-items: center; }
.nc-parc select { flex: 1 1 auto; min-width: 0; }
@media (max-width: 720px) { .nc-parc { flex-wrap: wrap; } .nc-parc .btn { width: 100%; } }

/* fase309 — os dois blocos da revisão das tarefas do dia */
.fi-h { margin: 18px 0 2px; font-size: 13px; }
.fi-h:first-of-type { margin-top: 10px; }

/* ═══ fase313 — A ENTRADA NO CELULAR ═══════════════════════════════════════════════════
   Medido num iPhone de 390×844: o herói ocupava 516px — 61% da primeira dobra — e o botão
   ENTRAR ficava PARA BAIXO dela. Quem abre o sistema todo dia tinha que rolar para entrar.
   A beleza fica: o azul, a logo que se escreve, a saudação pelo nome, a prova do Google.
   O que sai do caminho é o que é decoração pura numa tela de 390px — a rubrica desenhada
   (a logo logo acima já traz a assinatura da casa) — e o resto encolhe junto, no mesmo
   compasso, até a senha e o botão caberem sem rolar. No computador nada muda. */
@media (max-width: 620px) {
  .auth.lux .lux-hero { padding: clamp(22px, 4vh, 34px) 22px 14px; }
  .auth.lux .lux-hero-in { max-width: 100%; }
  .auth.lux .lux-sig .logo { width: min(186px, 60%); }
  .auth.lux .lux-eyebrow { margin-top: 15px; font-size: 9.5px; letter-spacing: .22em; }
  .auth.lux .lux-hero h1 { font-size: clamp(24px, 7vw, 31px); margin-top: 8px; line-height: 1.14; }
  .auth.lux .lux-lead { font-size: 14.5px; margin-top: 8px; max-width: 34ch; }
  /* a rubrica desenhada é o único elemento puramente decorativo aqui — e custa ~90px */
  .auth.lux .lux-assina-wrap { display: none; }
  .auth.lux .lux-proof { margin-top: 14px; gap: 2px; }
  .lux-proof-t { font-size: 12.5px; }
  .lux-proof-t.dim { font-size: 11.5px; }
  .lux-shape { height: min(50%, 420px); }

  .auth.lux .lux-main { padding: 18px 22px calc(20px + env(safe-area-inset-bottom)); gap: 14px; }
  .auth.lux .lux-box { gap: 14px; }
  .auth.lux .lux-box h2 { font-size: 25px; }
  .auth.lux .lux-hint { font-size: 13.5px; margin-top: 6px; }
  .auth.lux .lux-box .form { gap: 12px; }
  /* alvo de toque confortável sem engordar a coluna */
  .auth.lux .lux-box .field input { padding: 12px 2px; }
  .auth.lux .lux-btn { height: 52px; margin-top: 2px; }
  .lux-sem { font-size: 12px; }
  .auth.lux .lux-foot { font-size: 13px; }
}
/* Celular deitado: a dobra tem 390px de altura. Aqui o herói vira uma tarja e a carta manda. */
@media (max-height: 520px) and (orientation: landscape) {
  .auth.lux .lux-assina-wrap, .auth.lux .lux-proof, .auth.lux .lux-foot { display: none; }
  .auth.lux .lux-hero { padding: 18px 22px 12px; }
  .auth.lux .lux-hero h1 { font-size: 24px; }
  .auth.lux .lux-main { padding: 16px 22px; }
}

/* ═══ fase313 — O TOPO DO FINANCEIRO, POR ASSUNTO ══════════════════════════════════════
   Seis botões em fila é uma lista, não uma organização: a pessoa lê os seis toda vez para
   achar um. Agrupados por assunto — o que a IA faz, o que você leva, o que a casa configura
   — a pessoa lê o rótulo do grupo e já sabe onde olhar. Mesmos botões, mesmos cliques. */
.fn-grupo { display: inline-flex; flex-direction: column; gap: 5px; padding: 8px 12px 9px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface); }
.fn-grupo-r { font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--text-2); font-weight: 700; }
.fn-grupo-b { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.fn-grupo .btn { padding: 8px 13px; font-size: 13.5px; }
.fn-grupo[data-g="copiloto"] { border-color: color-mix(in srgb, var(--petroleo) 40%, var(--border)); }
.fn-grupo[data-g="copiloto"] .fn-grupo-r { color: var(--petroleo); }

/* ═══ fase313 — AS ABAS EM UMA LINHA SÓ NO CELULAR ════════════════════════════════════
   Dez abas quebravam em três fileiras (126px) e o primeiro número aparecia a 1.156px do
   topo, num aparelho de 844. Agora é uma fita que desliza com o dedo: uma linha, a aba
   escolhida sempre visível, e os números logo abaixo. */
@media (max-width: 720px) {
  .fn-abas { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
    margin: 10px -16px 10px; padding: 0 16px; scroll-snap-type: x proximity; }
  .fn-abas::-webkit-scrollbar { display: none; }
  .fn-aba { flex: 0 0 auto; scroll-snap-align: start; white-space: nowrap; padding: 9px 12px; }

  /* Os três grupos numa fita que desliza: o primeiro inteiro, os outros espiando — que é
     como o dedo sabe que tem mais. Empilhados, custavam 330px antes do primeiro número. */
  .fn-topo-acoes { gap: 8px; margin-top: 10px; flex-wrap: nowrap; overflow-x: auto;
    scrollbar-width: none; -webkit-overflow-scrolling: touch; margin-inline: -16px; padding: 2px 16px; }
  .fn-topo-acoes::-webkit-scrollbar { display: none; }
  .fn-grupo { flex: 0 0 auto; padding: 7px 10px 8px; }
  .fn-grupo-b { flex-wrap: nowrap; }
  .fn-grupo .btn { flex: 0 0 auto; padding: 9px 12px; }
  .fn-topo-filtros select, .fn-topo-filtros input[type="date"] { flex: 1 1 calc(50% - 4px); min-width: 0; }
  /* O subtítulo da página explica o sistema a quem chega; quem abre no celular já sabe. */
  .page-head > div > p.muted { display: none; }
}

/* ═══ fase313 — AJUSTES FINOS, O SISTEMA INTEIRO ══════════════════════════════════════
   Coisas pequenas que só aparecem quando a gente usa de verdade num aparelho de 390px. */
@media (max-width: 720px) {
  /* Alvo de toque. A recomendação é 44px; havia dezenas de botões com 28 e 30 — o dedo
     erra, a pessoa toca de novo, e o sistema parece lento quando na verdade é apertado. */
  .btn, .btn.sm, .seg-b, .chip, .fn-aba { min-height: 40px; }
  .btn.sm { padding-inline: 12px; }
  /* "Conversa ao lado" abre a conversa ao LADO da grade. Num telefone não existe lado. */
  .agg-splitbtn { display: none; }
  /* Âncoras não param debaixo do cabeçalho fixo. */
  [id] { scroll-margin-top: 78px; }
  /* Tabela larga rola sozinha em vez de espremer a coluna e quebrar o número no meio. */
  .fn-wrap, .ft-tab-wrap, .rp-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}
/* Botão que é <a> não é link de texto: nada de sublinhado dentro de um botão. */
a.btn, a.btn:hover, .fn-grupo a.btn { text-decoration: none; }

/* fase314 — a tela dos copilotos */
.cp-lista { display: grid; gap: 12px; margin: 12px 0; }
.cp-item { border: 1px solid var(--border); border-radius: 13px; padding: 12px 14px; background: var(--surface); }
.cp-cab { display: flex; align-items: center; gap: 8px; }
.cp-onde { font-size: 12px; color: var(--text-2); }
.cp-faz { margin: 4px 0 8px; }
.cp-selo { font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--text-2); border: 1px solid var(--border); border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.cp-selo.ok { color: var(--petroleo); border-color: color-mix(in srgb, var(--petroleo) 45%, var(--border)); }
.cp-selo.err { color: var(--ambar); border-color: color-mix(in srgb, var(--ambar) 45%, var(--border)); }
.cp-pre { white-space: pre-wrap; font-family: var(--sans, inherit); font-size: 13px; color: var(--text); background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; margin: 8px 0 0; }
@media (max-width: 720px) { .cp-cab { flex-wrap: wrap; } .cp-item .fl-s { flex-wrap: wrap; } .cp-item select { flex: 1 1 100%; } }


/* ═══ fase320 — A FICHA DO PARCEIRO ═══════════════════════════════════════════════════
   Uma linha por assunto: rótulo à esquerda, o valor no meio, a ação à direita. É uma ficha
   para CONFERIR, não um formulário para preencher — por isso lê em diagonal. */
.pc-ficha{border:1px solid var(--linha,#D9E1E5);border-radius:10px;overflow:hidden;margin:12px 0 16px}
.pcf-linha{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 14px;border-bottom:1px solid var(--linha,#D9E1E5)}
.pcf-linha:last-child{border-bottom:0}
.pcf-linha:nth-child(odd){background:rgba(10,61,98,.025)}
.pcf-r{flex:0 0 150px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#5C6B72)}
.pcf-v{flex:1 1 240px;min-width:0;font-size:14px}
.pcf-url{background:var(--gelo,#EAF1F4);padding:5px 9px;border-radius:5px;font-size:13px;word-break:break-all}
.pcf-linha select.fi-in{max-width:280px}
@media(max-width:640px){
  .pcf-r{flex:1 1 100%}
  .pcf-linha{gap:8px}
}

/* ═══ fase321 — A AGENDA QUE A EQUIPE QUER USAR ═════════════════════════════════════════
   Tres mudancas de leitura, nenhuma decorativa: a COR de quem atende (a equipe procura o
   proprio dia antes de ler nome nenhum), a MODALIDADE dentro do bloco (presencial e
   delivery mudam o planejamento da pessoa, nao so o do cliente) e o DEDO que passa o dia
   no celular, como em qualquer agenda de telefone. */

/* etiqueta de modalidade na PRIMEIRA linha do bloco: um atendimento de 30 minutos tem
   altura para uma linha so, e era justamente a segunda que estava sendo cortada — a
   modalidade ficava escrita onde ninguem via. Agora divide a linha com o nome: o nome
   encolhe, a etiqueta nao. */
.agg-ev-c{display:flex;align-items:center;gap:5px;overflow:hidden}
.agg-nome{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.agg-ev-t{display:flex;align-items:center;gap:5px;overflow:hidden}
.agg-mod{margin-left:auto;font-size:9.5px;font-weight:700;line-height:1;padding:2px 5px;border-radius:999px;border:1px solid currentColor;opacity:.9;white-space:nowrap;flex:0 0 auto}
.agg-mod.mod-presencial{color:#2E7D5B}
.agg-mod.mod-delivery{color:#B4661A}
.agg-mod.mod-online{color:#2A5F86}
.agg-mod.mod-videoconferencia{color:#6A4E9E}

/* passar o dedo troca o dia/semana — a grade sai e volta pelo lado certo */
@keyframes cvPassaEsq{from{transform:translateX(26px);opacity:.35}to{transform:none;opacity:1}}
@keyframes cvPassaDir{from{transform:translateX(-26px);opacity:.35}to{transform:none;opacity:1}}
.agg-wrap.passa-esq{animation:cvPassaEsq .18s ease-out}
.agg-wrap.passa-dir{animation:cvPassaDir .18s ease-out}
@media(prefers-reduced-motion:reduce){.agg-wrap.passa-esq,.agg-wrap.passa-dir{animation:none}}

/* a cor de cada pessoa, no master */
.cor-pal{display:flex;flex-wrap:wrap;gap:7px}
.cor-sw{width:28px;height:28px;border-radius:8px;border:2px solid transparent;background:var(--c,#fff);cursor:pointer;box-shadow:inset 0 0 0 1px rgba(10,61,98,.14);transition:transform .1s}
.cor-sw.sem{background:var(--surface,#fff);color:var(--text-2,#5C6B72);font-weight:700;line-height:1}
.cor-sw:hover{transform:translateY(-1px)}
.cor-sw.on{border-color:var(--azul,#0A3D62);box-shadow:0 0 0 2px rgba(10,61,98,.16)}
.cor-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);margin-right:7px;vertical-align:middle}

/* o trilho de atalhos tambem na Central — coluna propria, sem cobrir a conversa */
.cx-trilho{position:static;flex:0 0 46px;width:46px;padding:10px 0;border-left:1px solid var(--border);background:var(--wash,#f7f5f0);overflow-y:auto}
.ab-caixa{color:var(--petroleo,#3D8B96);border-color:color-mix(in srgb,var(--petroleo,#3D8B96) 34%,var(--line,#e6e3dc))}
@media(max-width:900px){.cx-trilho{display:none}}

/* o caixa do dia — painel flutuante, abre e fecha por cima da agenda */
.caixa-pop{position:fixed;right:14px;bottom:14px;width:min(370px,calc(100vw - 28px));max-height:min(74vh,620px);display:flex;flex-direction:column;
  background:var(--surface,#fff);border:1px solid var(--border,#e6e3dc);border-radius:14px;box-shadow:0 18px 44px -12px rgba(10,61,98,.36);z-index:60;overflow:hidden}
.cxp-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border,#e6e3dc);background:var(--wash,#f7f5f0)}
.cxp-head b{display:flex;align-items:center;gap:6px;font-size:13.5px}
.cxp-head input[type=date]{margin-left:auto;flex:0 1 auto;min-width:0;max-width:130px;font-size:11.5px;padding:3px 5px;border:1px solid var(--border,#e6e3dc);border-radius:7px;background:var(--surface,#fff)}
.cxp-head .iconbtn{flex:0 0 auto}
.cxp-body{overflow-y:auto}
.cxp-tot{display:flex;gap:1px;background:var(--border,#e6e3dc);border-bottom:1px solid var(--border,#e6e3dc)}
.cxp-t{flex:1;background:var(--surface,#fff);padding:9px 10px;display:flex;flex-direction:column;gap:2px}
.cxp-t span{font-size:10.5px;color:var(--text-2,#5C6B72);text-transform:uppercase;letter-spacing:.04em}
.cxp-t b{font-size:14px;font-variant-numeric:tabular-nums}
.cxp-t.ok b{color:#1f6b43}
.cxp-t.esp b{color:#9a6410}
.cxp-sub{padding:7px 12px;font-size:11.5px;color:var(--text-2,#5C6B72);border-bottom:1px solid var(--border,#e6e3dc)}
.cxp-lista{display:flex;flex-direction:column}
.cxp-l{padding:8px 12px;border-bottom:1px solid var(--line,#eeebe4);cursor:pointer}
.cxp-l:hover{background:var(--wash,#f7f5f0)}
.cxp-l1{display:flex;align-items:baseline;gap:8px}
.cxp-l1 b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cxp-v{margin-left:auto;font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums;flex:0 0 auto}
.cxp-l2{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;font-size:11px;color:var(--text-2,#5C6B72)}
.cxp-l2 .ag-tag{font-size:10px;padding:1px 6px}
.cxp-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border-top:1px solid var(--border,#e6e3dc);background:var(--wash,#f7f5f0)}
.cxp-foot .btn{white-space:nowrap}
.cxp-foot .btn{margin-left:auto}
@media(max-width:720px){.caixa-pop{right:8px;left:8px;bottom:8px;width:auto;max-height:78vh}}

/* === fase322 — AS TRES AGENDAS ======================================================
   Emissao, Suporte e Comercial sao a MESMA agenda com tres recortes. A barra abaixo do
   titulo e o unico lugar onde se troca de uma para outra, e ela precisa ser a primeira
   coisa que a pessoa ve: e ela que explica por que a tela mudou. */
.ag-tipos{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.ag-segtipo .seg-b{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.ag-segtipo .seg-b.on{box-shadow:inset 0 -2px 0 var(--accent,#E0932E)}
.ag-chip-tipo{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;
  padding:2px 9px;border-radius:999px;vertical-align:middle;
  background:color-mix(in srgb,var(--petroleo,#3D8B96) 14%,transparent);color:var(--petroleo-escuro,#2F7A85)}
/* quem almoca */
.hr-almoco{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:4px}
.hr-almoco .check{margin:0}
@media(max-width:720px){
  .ag-tipos{gap:6px}
  .ag-segtipo .seg-b{padding-left:9px;padding-right:9px}
}
