/* ============================================================
   4TX PORTAL — MODERN DESIGN SYSTEM (v2)
   Inspired by Linear / Notion / ClickUp aesthetics
   ============================================================ */

:root {
  /* Brand */
  --navy:#1a1d24; --bordo:#915959; --bordo2:#c47a7a; --beige:#d4c5b0;
  --blue2:#4a78a3; --gold:#c89a3e; --green:#1f7a47; --red:#b73838;
  --gray:#b8b6b1;
  /* Botão de marca (manual): bege #D1BDA6 com tinta escura para contraste */
  --btn-brand:#D1BDA6; --btn-brand-h:#c3a883; --btn-brand-ink:#3b2f21;

  /* Surfaces */
  --bg:#faf9f7;            /* page background, warm off-white */
  --surface:#ffffff;       /* cards, modals */
  --surface-alt:#f6f4f0;   /* hovers, table headers, subtle bg */
  --gelo:#f5f3ef;          /* legacy alias */
  --white:#ffffff;

  /* Text — calibrado para WCAG 2.2 AA em fundo branco
     #1f2429 = 14.7:1 · #4F5862 = 7.4:1 · #7C848D = 4.6:1 */
  --text:#1f2429;
  --text-mid:#4F5862;
  --text-light:#7C848D;

  /* Borders */
  --border:#ececea;
  --border-soft:#f3f1ed;
  --border-strong:#dad6cf;

  /* Shape */
  --radius:12px;
  --radius-sm:6px;   /* controles (botões) mais retos — pedido do Victor 27/07; superfícies seguem 14-16px */
  --radius-lg:16px;
  --font:'Urbanist', system-ui, -apple-system, sans-serif;
  --font-display:'Fraunces', 'Times New Roman', Georgia, serif;

  /* Elevation */
  --shadow-sm:0 1px 2px rgba(0,0,0,.04);
  --shadow:0 4px 12px rgba(20,20,25,.06);
  --shadow-lg:0 16px 40px rgba(20,20,25,.12);

  /* Semantic colors (status/feedback) */
  --color-success:#1f7a47;       --color-success-soft:rgba(31,122,71,.10);
  --color-warning:#b07310;       --color-warning-soft:rgba(200,154,62,.15);
  --color-danger:#b73838;        --color-danger-soft:rgba(183,56,56,.10);
  --color-info:#4a78a3;          --color-info-soft:rgba(74,120,163,.12);
  --color-neutral:#5e6770;       --color-neutral-soft:rgba(120,120,120,.12);
  --color-accent:#915959;        --color-accent-soft:rgba(145,89,89,.10);

  /* UI Foundation aliases */
  --ui-navy:var(--navy);
  --ui-wine:var(--bordo);
  --ui-gold:var(--gold);
  --ui-ice:var(--gelo);
  --ui-surface:var(--surface);
  --ui-border:var(--border);
  --ui-radius:8px;
  --ui-radius-lg:12px;
  --ui-focus:0 0 0 3px rgba(200,154,62,.18);

  color-scheme:light;
}

/* ============================================================
   DARK MODE — override de tokens. Mantém brand (navy/bordo/gold)
   e ajusta apenas superfícies, texto, bordas e sombras.
   Ativa via

/* Imagens e logos: leve atenuação em dark para não ofuscar */

/* ============================================================
   DARK MODE — Polimento visual (Linear/Notion-style)
   Remove bordas duras dos cards e usa elevation subtil.
   Topbar coesa com fundo translúcido escuro (não branco).
   Inputs com leve diferenciação para visibilidade.
   ============================================================ */

/* Cards e superfícies: borda quase invisível + sombra subtil */

/* Modais: ring sutil + sombra mais forte por ser overlay */

/* Topbar: fundo translúcido escuro (não branco como light) */

/* Inputs: bg ligeiramente diferenciado para se destacarem dos cards */

/* Botões secundários no topbar: ring sutil em vez de border dura */

/* btn-primary em dark: o light usa var(--text) como bg (preto sobre branco).
   Em dark var(--text) é claro — ficaria branco gigante. Inverter. */

/* Tabelas: linhas separadoras mais subtis */

/* Top-action ícones (sino, edit, etc.): ring sutil */

/* ============================================================
   FEEDBACK / SUGESTÕES — cards e botões theme-aware
   ============================================================ */
.fb-card { transition:border-color .15s, box-shadow .15s, transform .15s; }
.fb-card:hover {
  border-color:var(--bordo);
  box-shadow:var(--shadow);
}
.fb-prompt-btn:hover {
  background:var(--color-accent-soft);
  filter:brightness(1.15);
}

* { margin:0; padding:0; box-sizing:border-box; }
body {
  font-family:var(--font);
  background:var(--bg);
  color:var(--text);
  min-height:100vh;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

/* ============================================================
   LOGIN — editorial / quiet luxury (Sprint 3)
   Hero full-bleed + frosted card. Imagem rotativa via API.
   ============================================================ */
#login-screen {
  min-height:100vh;
  position:relative;
  display:flex; align-items:center;
  /* Sem imagem: card centralizado. Com imagem: empurra para direita. */
  justify-content:center;
  padding:48px 80px;
  background:var(--navy);
  overflow:hidden;
}
#login-screen.has-hero { justify-content:flex-end; }

/* Hero — container fixo full-bleed.
   Fallback (sem imagem): gradient sofisticado em camadas com radial accents. */
.login-hero {
  position:absolute; inset:0; z-index:0; overflow:hidden;
  background-image:
    radial-gradient(ellipse 60% 50% at 25% 30%, rgba(145,89,89,.18), transparent 60%),
    radial-gradient(ellipse 50% 40% at 80% 70%, rgba(74,120,163,.14), transparent 60%),
    radial-gradient(ellipse 40% 30% at 60% 20%, rgba(212,197,176,.06), transparent 65%),
    linear-gradient(135deg, #15171c 0%, #1a1d24 50%, #22262f 100%);
  animation:loginHeroFade 1.1s ease;
}
/* Imagem propria (img tag — mais confiavel que background-image) */
.login-hero-img {
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
  opacity:0; transition:opacity .6s ease;
  border:0; outline:0;
}
/* Overlay leve sobre a imagem para contexto visual sob o card */
.login-hero-overlay {
  position:absolute; inset:0; pointer-events:none;
  opacity:0; transition:opacity .6s ease;
  background:
    linear-gradient(110deg, rgba(15,16,20,.30) 0%, rgba(15,16,20,.10) 50%, transparent 80%),
    linear-gradient(to top, rgba(15,16,20,.20) 0%, transparent 35%);
}
#login-screen.has-hero .login-hero-img,
#login-screen.has-hero .login-hero-overlay { opacity:1; }
@keyframes loginHeroFade { from { opacity:0; transform:scale(1.04); } to { opacity:1; transform:scale(1); } }

/* Pull-quote editorial — canto inferior esquerdo */
.login-quote {
  position:absolute; bottom:56px; left:64px; right:auto;
  max-width:520px; z-index:1;
  margin:0; padding:0;
}
.login-quote blockquote {
  font-family:var(--font-display);
  font-weight:300; font-style:italic;
  font-size:30px; line-height:1.25;
  color:rgba(255,255,255,.94);
  text-shadow:0 1px 24px rgba(0,0,0,.35);
  margin:0;
}
.login-quote figcaption {
  margin-top:14px;
  font-family:var(--font);
  font-size:11px; font-weight:500;
  letter-spacing:1.6px; text-transform:uppercase;
  color:rgba(255,255,255,.62);
}

/* Caption discreta — canto inferior direito */
.login-caption {
  position:absolute; right:24px; bottom:18px; z-index:1;
  font-family:var(--font); font-size:10px; font-weight:500;
  letter-spacing:.4px; color:rgba(255,255,255,.45);
}

/* Card frosted — direita, animacao sutil de entrada */
.login-card {
  position:relative; z-index:2;
  width:400px; padding:40px 38px 32px;
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(28px) saturate(140%);
  -webkit-backdrop-filter:blur(28px) saturate(140%);
  border:1px solid rgba(255,255,255,.55);
  border-radius:18px;
  box-shadow:0 30px 80px rgba(15,16,20,.28),
             0 4px 12px rgba(15,16,20,.10);
  animation:loginCardIn .55s cubic-bezier(.22,.9,.32,1) both;
}
@keyframes loginCardIn { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:translateY(0); } }

.login-logo-wrap {
  display:flex; align-items:center; justify-content:center;
  margin-bottom:24px;
}
.login-logo { max-width:170px; max-height:60px; display:block; }
.login-logo-fallback { display:flex; flex-direction:column; align-items:center; gap:2px; }
.login-name { font-family:var(--font-display); font-size:32px; font-weight:400; color:var(--text); letter-spacing:-1px; line-height:1; }
.login-sub-mark { font-size:10px; color:var(--text-mid); letter-spacing:2.2px; text-transform:uppercase; font-weight:500; }

.login-title {
  font-family:var(--font-display);
  font-size:26px; font-weight:400; color:var(--text);
  margin:0 0 4px; letter-spacing:-.4px; text-align:center;
}
.login-sub {
  font-size:12px; color:var(--text-mid);
  text-align:center; margin:0 0 24px;
  letter-spacing:.2px;
}
.login-err {
  background:rgba(183,56,56,.08);
  border:1px solid rgba(183,56,56,.22);
  border-left:3px solid var(--red);
  border-radius:var(--radius-sm);
  padding:10px 14px; font-size:12px; color:var(--red);
  margin-bottom:16px; display:none; font-weight:500;
}
.login-foot {
  margin-top:18px; padding-top:14px;
  border-top:1px solid rgba(15,16,20,.08);
  text-align:center;
}
.login-link {
  background:none; border:none; cursor:pointer;
  color:var(--text-mid); font-size:12px;
  font-family:var(--font); text-decoration:none;
  border-bottom:1px dashed transparent; padding:2px 0;
  transition:color .15s, border-color .15s;
}
.login-link:hover { color:var(--bordo); border-bottom-color:var(--bordo); }

/* Versao publicada (build_info.php) no pe do card de login: o mais discreto
   possivel — 9px, cinza de baixa opacidade sobre o vidro claro do card.
   "versao 1.09.131 (17/09/2026)" quando ha tag; so o sha quando nao ha. Fonte da
   interface, nao monoespacada: aqui o texto e numero de versao, nao codigo —
   o sha completo, a branch e a hora ficam no tooltip. */
.login-build {
  margin-top:20px; text-align:center;
  font-family:var(--font);
  font-size:9px; letter-spacing:.3px; line-height:1;
  color:rgba(43,56,71,.26);
  cursor:default;
}

/* Mobile / tablet */
@media (max-width:768px){
  #login-screen { padding:24px; align-items:flex-end; justify-content:center; }
  .login-card { width:100%; max-width:420px; padding:32px 26px 26px; border-radius:16px; }
  .login-quote { left:24px; right:24px; bottom:auto; top:32px; max-width:none; }
  .login-quote blockquote { font-size:22px; }
  .login-caption { display:none !important; }
}

/* ============================================================
   FORMS
   ============================================================ */
.fg { margin-bottom:16px; }
.fl {
  font-size:11px; font-weight:600;
  color:var(--text-mid); margin-bottom:6px; display:block;
  letter-spacing:0;
}
.fi {
  width:100%; background:var(--surface);
  border:1px solid var(--border-strong); border-radius:var(--radius-sm);
  padding:11px 14px; color:var(--text);
  font-family:var(--font); font-size:13px; font-weight:500;
  outline:none; transition:border-color .15s, box-shadow .15s;
}
.fi:focus { border-color:var(--bordo); box-shadow:0 0 0 3px rgba(145,89,89,.08); }
select.fi {
  appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239aa0a8' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; padding-right:32px;
}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:9px 16px; border-radius:var(--radius-sm);
  font-family:var(--font); font-weight:600; font-size:13px;
  cursor:pointer; border:1px solid transparent;
  transition:all .15s; white-space:nowrap;
}
.btn-primary {
  background:var(--text); color:var(--white);
  width:100%; justify-content:center;
  font-size:14px; margin-top:8px; padding:13px;
}
.btn-primary:hover { background:#000; }
.btn-sec {
  background:var(--surface); color:var(--text);
  border:1px solid var(--border-strong);
}
.btn-sec:hover { background:var(--surface-alt); border-color:var(--text-light); }
.btn-red { background:var(--btn-brand); color:var(--btn-brand-ink); }
.btn-red:hover { background:var(--btn-brand-h); }
.btn-del {
  background:transparent; color:var(--bordo);
  border:1px solid rgba(145,89,89,.3);
}
.btn-del:hover { background:rgba(145,89,89,.06); border-color:var(--bordo); }
.btn-blue { background:var(--blue2); color:var(--white); }
.btn-blue:hover { background:#3e6889; }
.btn-sm { padding:7px 12px; font-size:12px; border-radius:7px; }
.btn-xs { padding:4px 9px; font-size:11px; border-radius:6px; }
.btn-secondary { background:var(--surface); color:var(--text); border:1px solid var(--border-strong); }
.btn-secondary:hover { background:var(--surface-alt); border-color:var(--text-light); }
.btn-danger { background:var(--bordo); color:var(--white); }
.btn-danger:hover { background:#7a4848; }
.btn-icon {
  width:34px; height:34px; padding:0;
  border:1px solid var(--border);
  background:var(--surface); color:var(--text);
  border-radius:8px;
}
.btn-icon:hover { background:var(--surface-alt); border-color:var(--border-strong); box-shadow:var(--shadow-sm); }
.btn-icon svg { width:15px; height:15px; }

/* ============================================================
   UI FOUNDATION — shells, actions, filters, work tables
   ============================================================ */
.top-actions {
  position:fixed; top:12px; right:24px; z-index:300;
  display:flex; align-items:center; gap:6px;
}
.top-actions .presence-bar,
.top-actions .top-action {
  position:relative !important; top:auto !important; right:auto !important;
  width:auto; height:34px; box-shadow:var(--shadow-sm);
}
.top-actions .top-action { width:34px; }
.top-action-badge {
  position:absolute; top:-5px; right:-5px;
  min-width:17px; height:17px; border-radius:9px;
  display:none; align-items:center; justify-content:center;
  padding:0 4px; line-height:1;
  background:var(--bordo); color:#fff; font-size:9px; font-weight:800;
}
.top-panel {
  position:fixed; top:54px; right:24px; z-index:400;
  width:380px; max-width:calc(100vw - 32px);
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); box-shadow:0 8px 32px rgba(43,56,71,.18);
  overflow:hidden;
}
.page-shell { padding:24px 28px; }
.page-header {
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:24px; margin-bottom:18px;
}
.page-title {
  font-size:24px; font-weight:800; letter-spacing:-.4px;
  color:var(--text); line-height:1.15;
}
.page-subtitle { margin-top:4px; font-size:13px; color:var(--text-mid); }
.page-actions {
  display:flex; align-items:center; justify-content:flex-end;
  gap:8px; flex-wrap:wrap; margin-right:320px;
}
@media (max-width:1100px){
  .page-header { flex-direction:column; }
  .page-actions { justify-content:flex-start; margin-right:0; }
}
.filter-panel {
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); padding:12px;
  margin-bottom:14px; box-shadow:var(--shadow-sm);
}
.filter-bar {
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
}.filter-control {
  min-height:34px; padding:7px 10px;
  border:1px solid var(--border-strong); border-radius:8px;
  background:var(--surface); color:var(--text);
  font-family:var(--font); font-size:12px; font-weight:500;
  outline:none; transition:border-color .15s, box-shadow .15s, background .15s;
}.filter-control:focus { border-color:var(--gold); box-shadow:var(--ui-focus); }select.filter-control { cursor:pointer; }
.filter-search { flex:1; min-width:240px; }
.filter-select { width:150px; }
.filter-check {
  min-height:34px; display:inline-flex; align-items:center; gap:7px;
  padding:0 10px; border:1px solid var(--border); border-radius:8px;
  color:var(--text-mid); background:var(--surface-alt);
  font-size:11px; font-weight:700; cursor:pointer;
}
.work-toolbar {
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; margin:12px 0;
}
.work-count { font-size:12px; font-weight:800; color:var(--text-mid); }
.work-tools { display:flex; align-items:center; gap:6px; }
.work-table-wrap {
  overflow:auto; background:var(--surface);
  border:1px solid var(--border); border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
}
.work-table {
  width:100%; border-collapse:separate; border-spacing:0;
  font-size:12px;
}
.work-table th {
  position:sticky; top:0; z-index:2;
  padding:10px 12px; background:var(--surface-alt);
  color:var(--text-light); border-bottom:1px solid var(--border);
  font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.06em;
  text-align:left; white-space:nowrap;
}
.work-table td {
  padding:10px 12px; border-bottom:1px solid var(--border-soft);
  color:var(--text); vertical-align:middle;
}
.work-table tbody tr:last-child td { border-bottom:none; }
.work-table tbody tr:hover td { background:#fbfaf8; }
.work-table .cell-muted { color:var(--text-light); font-size:11px; }
.work-table-actions { display:flex; justify-content:flex-end; gap:4px; }
.sort-indicator { color:var(--gold); margin-left:4px; font-size:10px; }
.bulk-bar {
  display:none; align-items:center; gap:12px;
  padding:10px 14px; margin-bottom:10px;
  background:rgba(145,89,89,.08);
  border:1px solid rgba(145,89,89,.22);
  border-radius:8px;
}
.bulk-bar-label { font-size:13px; font-weight:800; color:var(--bordo); }
.bulk-bar-spacer { flex:1; }
.bulk-inline { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.bulk-inline .bulk-bar-label { font-size:12px; }
.cpx-pop {
  position:absolute; z-index:1200; min-width:148px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:10px; box-shadow:var(--shadow-sm), 0 8px 24px rgba(0,0,0,.10);
  padding:5px; display:flex; flex-direction:column; gap:1px;
}
.cpx-pop-head {
  font-size:9px; font-weight:800; color:var(--text-light);
  padding:4px 9px 5px; text-transform:uppercase; letter-spacing:.5px;
}
.cpx-pop-item {
  display:flex; align-items:center; gap:8px; width:100%;
  padding:7px 10px; border:none; background:none; border-radius:7px;
  font-size:12px; font-weight:700; color:var(--text);
  cursor:pointer; text-align:left; font-family:inherit;
}
.cpx-pop-item:hover { background:var(--gelo); }
.empty-state {
  padding:42px 24px; text-align:center;
  border:1px solid var(--border); border-radius:var(--radius);
  background:var(--surface); color:var(--text-mid);
}
.empty-state-title { font-size:14px; font-weight:800; color:var(--text); }
.empty-state-body { margin-top:4px; font-size:12px; color:var(--text-light); }
@keyframes skeleton-shimmer { to { transform:translateX(100%); } }

.drawer {
  position:fixed; top:0; right:0; z-index:700;
  width:min(720px,100vw); height:100vh;
  display:flex; flex-direction:column;
  background:var(--surface); border-left:1px solid var(--border);
  box-shadow:var(--shadow-lg);
}
.drawer-body { flex:1; overflow:auto; padding:20px 22px; }

/* ============================================================
   APP LAYOUT
   ============================================================ */
#app { display:none; min-height:100vh; }

/* ===== SIDEBAR (dark, modern) ===== */
.sidebar {
  position:fixed; left:0; top:0; bottom:0; width:220px;
  background:#1a1d24;
  display:flex; flex-direction:column;
  z-index:100; overflow:hidden;
  border-right:1px solid #252830;
  /* PWA iOS: respeita safe area no topo (notch/dynamic island) e no bottom (home indicator) */
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.sidebar::before { display:none; } /* remove pattern */
.sl {
  padding:14px 12px;
  border-bottom:1px solid rgba(255,255,255,.06);
  display:flex; align-items:center; gap:10px;
  position:relative; z-index:1;
}
.sl-logo { width:148px; max-width:90%; height:auto; display:block; filter:brightness(0) invert(1); }
.sl-name { font-size:18px; font-weight:700; color:var(--white); letter-spacing:-.3px; }
.sl-sub { font-size:9px; color:rgba(255,255,255,.42); font-weight:500; letter-spacing:1.2px; text-transform:uppercase; }
.snav { flex:1; padding:10px 8px; overflow-y:auto; position:relative; z-index:1; }
.nst {
  font-size:10px; text-transform:uppercase; letter-spacing:1px;
  color:rgba(255,255,255,.32); padding:10px 12px 6px; font-weight:600;
}
.ni {
  display:flex; align-items:center; gap:10px;
  padding:8px 12px; border-radius:7px;
  cursor:pointer; font-size:13px; font-weight:500;
  color:rgba(255,255,255,.65); margin-bottom:1px;
  border:none; background:none; width:100%; text-align:left;
  transition:background .12s, color .12s; font-family:var(--font);
  text-decoration:none;   /* os itens viraram <a href="#tela"> (28/10/2026) para abrir em nova aba */
}
.ni:hover { background:rgba(255,255,255,.05); color:rgba(255,255,255,.95); }
.ni.active { background:rgba(145,89,89,.18); color:#f0d5d5; }
/* Icon styles for .ni movidos para a seção ICON SYSTEM no fim do arquivo */
.cni {
  display:flex; align-items:center; gap:8px;
  padding:6px 12px; border-radius:6px;
  cursor:pointer; font-size:12px; font-weight:500;
  color:rgba(255,255,255,.5); margin-bottom:1px;
  border:none; background:none; width:100%; text-align:left;
  transition:all .12s; font-family:var(--font); overflow:hidden;
}
.cni:hover { background:rgba(255,255,255,.05); color:rgba(255,255,255,.85); }
.cni.active { background:rgba(196,122,122,.15); color:var(--bordo2); }
.menu-sep {
  font-size:10px; font-weight:700; color:rgba(255,255,255,.46);
  text-transform:uppercase; letter-spacing:1.2px;
  padding:10px 12px; margin:8px 0 2px;
  border-top:1px solid rgba(255,255,255,.05);
  border-radius:7px;
  display:flex; align-items:center; justify-content:space-between;
  cursor:pointer; user-select:none;
  transition:background .12s, color .12s;
}
.nst {
  border-radius:7px; display:flex; align-items:center; justify-content:space-between;
  cursor:pointer; user-select:none; padding:10px 12px;
}
.menu-sep:hover, .nst:hover { background:rgba(255,255,255,.05); color:rgba(255,255,255,.8); }
.menu-sep::after, .nst::after {
  content:'';
  width:6px; height:6px;
  border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:rotate(45deg); opacity:.7; transition:transform .15s;
}
.menu-sep.is-collapsed::after, .nst.is-collapsed::after { transform:rotate(-45deg); }
.snav .nav-collapsed { display:none !important; }
/* Grupo aberto: destaque minimalista — um unico bloco continuo e suave
   cobrindo a secao expandida; header so ganha texto mais claro */
.menu-sep.nav-group-open, .nst.nav-group-open { color:rgba(255,255,255,.72); }
.nav-group-body { border-radius:9px; transition:background .15s; }
.nav-group-body.in-open-group { background:rgba(255,255,255,.03); padding:3px; margin-bottom:2px; }
/* Submenu Compliance (KYC/KYP) */
.ni-parent::after {
  content:''; width:5px; height:5px; margin-left:auto;
  border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor;
  transform:rotate(45deg); opacity:.6; transition:transform .15s;
}
.ni-parent.is-collapsed::after { transform:rotate(-45deg); }
.snav .ni-sub { padding-left:34px; font-size:11.5px; }
.snav .compliance-hidden { display:none !important; }
.sfoot {
  padding:10px 8px;
  border-top:1px solid rgba(255,255,255,.06);
  position:relative; z-index:1;
}
.uinfo {
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; border-radius:8px;
  background:rgba(255,255,255,.04); margin-bottom:8px;
  transition:background .12s;
}
.uinfo:hover { background:rgba(255,255,255,.07); }
.uav {
  width:30px; height:30px; border-radius:7px;
  background:linear-gradient(135deg, #915959, #c47a7a);
  color:var(--white);
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:12px; flex-shrink:0;
}
/* Branco fixo, não var(--white): a barra lateral é sempre escura nos dois
   temas, mas em dark mode --white passa a valer um tom quase-preto (alias
   de superfície escura para outros usos) — usar o token aqui apagava o
   nome do usuário. Mesmo padrão já usado em .ni/.urole nesta seção. */
.uname { font-size:12px; font-weight:600; color:rgba(255,255,255,.92); }
.urole { font-size:10px; color:rgba(255,255,255,.45); }
.btnout {
  width:100%; justify-content:center;
  background:transparent;
  border:1px solid rgba(255,255,255,.10);
  color:rgba(255,255,255,.55); border-radius:7px;
  padding:8px; font-size:11px; font-weight:500;
  cursor:pointer; display:flex; align-items:center; gap:5px;
  font-family:var(--font); transition:all .15s;
}
.btnout:hover { background:rgba(255,255,255,.05); color:var(--white); border-color:rgba(255,255,255,.18); }

/* Versao publicada (build_info.php): qual commit este ambiente esta servindo,
   no pe da barra lateral — visivel sem clique nenhum. So existe em pacote
   carimbado; no dev/local o PHP nem imprime a div.
   Cor escura sobre claro, ao contrario dos vizinhos desta secao: a sidebar
   virou vidro CLARO em 13/08 (ver "Glass claro v2" mais abaixo). No drawer
   mobile, que continua escuro, a cor e invertida na secao do drawer. */
.sbuild {
  margin-top:8px; padding:0 3px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:9.5px; line-height:1.35;
  color:rgba(43,56,71,.42);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  cursor:default;
}
/* Sidebar recolhida (64px): a linha nao cabe e so viraria um borrao cortado. */
body.side-min .sfoot .sbuild { display:none; }

/* ===== MENU DE PERFIL (popover do bloco do nome, no rodape da sidebar) =====
   Vive FORA do <aside class="sidebar"> — ela e overflow:hidden com
   backdrop-filter, e recortaria o menu. Por isso e position:fixed com
   left/bottom/width calculados em toggleProfileMenu() a partir do gatilho.
   Abre para CIMA: o gatilho fica no rodape da tela. */
.sfoot .uinfo[aria-expanded="true"] { background:rgba(255,255,255,.9); }
.profile-menu {
  position:fixed; z-index:500; width:240px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:10px; box-shadow:var(--shadow-lg);
  padding:6px; overflow:hidden;
  animation:fadeUp .16s ease;
}
.pm-head {
  display:flex; align-items:center; gap:9px;
  padding:8px 8px 10px; margin-bottom:4px;
  border-bottom:1px solid var(--border-soft);
}
.pm-av {
  width:32px; height:32px; border-radius:8px; flex-shrink:0;
  background:linear-gradient(135deg, #915959, #c47a7a);
  color:#fff; font-weight:700; font-size:12px;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.pm-av img { width:100%; height:100%; object-fit:cover; }
.pm-name {
  font-size:12.5px; font-weight:700; color:var(--text);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.pm-role { font-size:10px; color:var(--text-light); margin-top:1px; }
.pm-item {
  width:100%; display:flex; align-items:center; gap:9px;
  background:none; border:0; border-radius:7px;
  padding:8px 9px; font-size:12px; font-weight:600;
  color:var(--text-mid); font-family:var(--font);
  cursor:pointer; text-align:left; transition:background .12s, color .12s;
}
.pm-item:hover { background:var(--surface-alt); color:var(--text); }
.pm-item span[data-icon] { color:var(--text-light); flex-shrink:0; }
.pm-item:hover span[data-icon] { color:var(--bordo); }

/* ===== MAIN ===== */
.main { margin-left:220px; min-height:100vh; }
.topbar {
  /* 16/09: a régua fixa do topo (.top-actions: seletor de empresa · presença ·
     review · sino) tem largura VARIÁVEL (quantos estão online, seletor visível
     ou não). Os 320px fixos deixavam os botões da página (ex.: "Nova proposta"
     do Início) por baixo dela. --top-actions-w é medida pelo JS
     (syncTopActionsWidth, app.js); 280px é o fallback = valor histórico. */
  padding:18px calc(var(--top-actions-w, 280px) + 40px) 18px 28px;
  /* PWA iOS: empurra abaixo do status bar quando em standalone */
  padding-top: calc(18px + env(safe-area-inset-top, 0px));
  border-bottom:1px solid var(--border);
  display:flex; align-items:center; justify-content:space-between;
  /* 16/09 (print do Victor, janela ~1000px): título + ações não cabiam na
     largura que sobra ao lado da régua e as ações VAZAVAM por baixo dela.
     Agora quebram para uma 2ª linha, dentro da área reservada. */
  flex-wrap:wrap; row-gap:10px;
  background:rgba(255,255,255,.85);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  position:sticky; top:0; z-index:50;
}
.topbar > * { min-width:0; }
.topbar > *:nth-child(2) { margin-left:auto; }   /* ações à direita também quando quebram de linha */
.tbt { font-size:18px; font-weight:700; color:var(--text); letter-spacing:-.3px; }
.tbs { font-size:12px; color:var(--text-light); font-weight:400; margin-top:2px; }
.content { padding:24px 28px; }
.page { display:none; } .page.active { display:block; }

/* ============================================================
   KPI / STAT CARDS
   ============================================================ */
.sg { display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin-bottom:24px; }
.sc {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:16px 18px;
  position:relative; overflow:hidden;
  transition:border-color .15s, box-shadow .15s;
}
.sc:hover { border-color:var(--border-strong); }
/* Replace top color bar with subtle right-side dot */
.sc::after { display:none; }
.sc.acc-navy::before, .sc.acc-blue::before, .sc.acc-gold::before, .sc.acc-green::before, .sc.acc-red::before {
  content:''; position:absolute; top:18px; right:18px;
  width:8px; height:8px; border-radius:50%;
}
.sc.acc-navy::before  { background:var(--text); }
.sc.acc-blue::before  { background:var(--blue2); }
.sc.acc-gold::before  { background:var(--gold); }
.sc.acc-green::before { background:var(--green); }
.sc.acc-red::before   { background:var(--red); }
.slb {
  font-size:11px; font-weight:500; color:var(--text-light);
  margin-bottom:8px; letter-spacing:0; text-transform:none;
}
.sv { font-size:24px; font-weight:700; color:var(--text); letter-spacing:-.7px; line-height:1.1; }
.ss { font-size:11px; color:var(--text-light); margin-top:4px; font-weight:400; }

/* ============================================================
   TABLES
   ============================================================ */
.tc, .tw {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
}
.tscroll { overflow-x:auto; max-height:calc(100vh - 290px); }

.dt { width:100%; border-collapse:collapse; font-size:12px; table-layout:fixed; }
.dt th {
  padding:11px 12px; text-align:left;
  font-size:10px; font-weight:600;
  text-transform:uppercase; letter-spacing:.7px;
  color:var(--text-light);
  background:var(--surface-alt);
  border-bottom:1px solid var(--border);
  border-right:1px solid var(--border-soft);
  white-space:nowrap; position:sticky; top:0; z-index:10;
}
.dt th:last-child { border-right:none; }
.dt td {
  padding:9px 12px;
  border-bottom:1px solid var(--border-soft);
  border-right:1px solid var(--border-soft);
  vertical-align:middle; color:var(--text);
}
.dt td:last-child { border-right:none; }
.dt tr:last-child td { border-bottom:none; }
.dt tr:hover td { background:var(--surface-alt); }
.dt td.cid { text-align:center; font-weight:600; color:var(--text-light); font-size:11px; width:36px; }
.dt td.cact { text-align:center; width:60px; }

/* Inline editable cells */
.ct {
  width:100%; border:none; background:transparent;
  font-family:var(--font); font-size:12px;
  color:var(--text); font-weight:500; outline:none; resize:none;
}
.ct:focus { background:var(--surface-alt); border-radius:4px; padding:2px 4px; }
.cs {
  width:100%; border:none; background:transparent;
  font-family:var(--font); font-size:12px;
  color:var(--text); font-weight:500; outline:none;
  cursor:pointer; appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%239aa0a8' stroke-width='1.2' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 2px center; padding-right:14px;
}
.cs:focus { background-color:var(--surface-alt); border-radius:4px; }
.cd {
  width:100%; border:none; background:transparent;
  font-family:var(--font); font-size:12px;
  color:var(--text); font-weight:500; outline:none;
}
.cd:focus { background:var(--surface-alt); border-radius:4px; }
.cn {
  width:100%; border:none; background:transparent;
  font-family:var(--font); font-size:12px;
  color:var(--text); font-weight:500; outline:none; text-align:right;
  font-variant-numeric:tabular-nums;
}
.cn:focus { background:var(--surface-alt); border-radius:4px; }

/* Currency: input editavel formatado ($1,234.56). Visual de "valor"
   destacado (navy, semibold) mas mantem altura/estilo de input. */
.cn-currency {
  color:var(--navy); font-weight:600; letter-spacing:.1px;
}
.cn-currency::placeholder { color:var(--text-light); font-weight:400; }

/* Celulas numericas read-only (modo somente visualizar) */
.td-number,
.td-currency {
  text-align:right;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.td-currency {
  color:var(--navy); font-weight:600; font-size:11.5px;
}
.td-number {
  color:var(--text); font-size:11.5px;
}

/* Spinner usado no modal de Análise Reputacional (KYC Fase 9) */
.spinner {
  width:32px; height:32px;
  border:3px solid rgba(74,120,163,.15);
  border-top-color:var(--blue2);
  border-radius:50%;
  animation:spin 0.8s linear infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }

/* Badge "USD" discreto no header da coluna de moeda */
.col-unit-badge {
  display:inline-block; margin-left:5px;
  font-size:8.5px; font-weight:700; letter-spacing:.5px;
  color:var(--text-light);
  background:rgba(255,255,255,.10);
  padding:1px 5px; border-radius:6px;
  border:1px solid rgba(255,255,255,.18);
  vertical-align:middle;
  text-transform:uppercase;
}

/* ============================================================
   CHIPS / BADGES
   - Dot semântico antes do texto (estilo Linear / GitHub)
   - Cor do dot herda do `color` da chip via `currentColor`
   ============================================================ */
.chip {
  display:inline-flex; align-items:center; gap:6px;
  padding:3px 10px 3px 8px; border-radius:12px;
  font-size:10px; font-weight:600;
  white-space:nowrap; letter-spacing:0; text-transform:none;
  line-height:1.4;
}
.chip::before {
  content:''; display:inline-block;
  width:6px; height:6px; border-radius:50%;
  background:currentColor; flex-shrink:0;
  opacity:.85;
}
/* Variantes — só cor opcional e fundo */
.ch-c  { background:rgba(31,122,71,.10);  color:var(--green); }
.ch-a  { background:rgba(74,120,163,.12); color:var(--blue2); }
.ch-n  { background:rgba(120,120,120,.12); color:var(--text-mid); }
.ch-p  { background:rgba(200,154,62,.15); color:#8a6010; }
.ch-h  { background:rgba(145,89,89,.10);  color:var(--bordo); }
.ch-s  { background:rgba(31,122,71,.10);  color:var(--green); }
.ch-no { background:rgba(183,56,56,.10);  color:var(--red); }
/* Sem dot quando .chip é usado puramente como contador (ex: badge numérico) */
.chip.no-dot::before { display:none; }

/* ---- Prioridade (Contabilidade Essential/Avulsa) — rampa semântica por hue,
   não por intensidade de uma única cor (pedido do usuário após ver o
   esquema anterior em dark mode): cada nível tem uma cor própria, fácil de
   distinguir à primeira vista sem depender de gradiente de opacidade. ---- */
.ch-prio-0 { background:rgba(120,120,120,.12); color:var(--text-mid); } /* On Hold — cinza */
.ch-prio-1 { background:rgba(74,120,163,.12);  color:var(--blue2); }   /* Baixa — azul */
.ch-prio-2 { background:rgba(230,196,20,.18);  color:#8a7005; }        /* Média — amarelo */
.ch-prio-3 { background:rgba(217,119,6,.15);   color:#a85b1a; }        /* Alta — laranja */
.ch-prio-4 { background:rgba(183,56,56,.10);   color:var(--red); }     /* Imediato — vermelho */
/* Borda do estado "preenchido" (cor/fundo já vêm de .ch-prio-0..4, que
   sempre acompanha esta classe — ver cls em empPrioritySel). Fica em
   classe, não em style inline, para o listener de troca de valor em
   _empRenderRoster poder atualizar a aparência só trocando classList. */
.emp-prio-sel { border:1px solid rgba(0,0,0,.10); }
/* "Selecionar…" (não definida): mesmo esquema neutro/tracejado dos demais
   selects vazios da tabela (ver baseStyle "unfilled" em empListSel) — só o
   ícone de atenção ao lado (.emp-prio-flag) sinaliza que precisa ser
   definida, a cor em si não é mais um alerta visual próprio. */
.emp-prio-unset { border:1px dashed var(--border-strong,#c9c2b8) !important; background:var(--gelo,#f4f2ee) !important; color:var(--text-mid) !important; }
.emp-prio-flag { display:inline-flex; font-size:11px; line-height:1; }
.emp-prio-unset-chip { background:rgba(120,120,120,.12); color:var(--text-mid); border:1px dashed var(--border-strong,#c9c2b8); }
/* O <select> em si herda cor/fundo do chip (correto, fica legível fechado),
   mas o popup nativo de <option> herdaria o mesmo fundo translúcido do chip
   sobre um branco padrão do navegador — em dark mode isso vira texto claro
   sobre fundo claro (ilegível). Fixamos as options com fundo/texto sólidos e
   sempre corretos por tema, independente da cor do chip selecionado. */
.emp-prio-sel option { background:var(--surface); color:var(--text); }
/* O <select> em si herda cor/fundo do chip selecionado (correto, fica legível
   fechado), mas o popup nativo de <option> herdaria o mesmo fundo translúcido
   do chip sobre um branco padrão do navegador — em dark mode isso vira texto
   claro sobre fundo claro (ilegível). Fixamos as options com fundo/texto
   sólidos e sempre corretos por tema, independente da cor do chip
   selecionado. Cobre os selects inline com chip da tabela Essential/Avulsa
   (status, pedido, IRPF, DCBE etc. — empListSel em assets/app.js) e da
   tabela legada do Dashboard "Todos os Registros" (mkSel/dash-cell-sel,
   mesmo padrão de chip translúcido em assets/app.js). */
.emp-inline-sel option, .dash-cell-sel option { background:var(--surface); color:var(--text); }

/* ============================================================
   MODALS
   ============================================================ */
.modal-overlay {
  position:fixed; inset:0;
  background:rgba(20,22,28,.55);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  z-index:1000; display:none;
  align-items:center; justify-content:center;
}
.modal-overlay.open { display:flex; }
.modal {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:14px;
  padding:28px;
  width:100%; max-width:520px;
  max-height:88vh; overflow-y:auto;
  animation:fadeUp .25s ease;
  position:relative;
  box-shadow:var(--shadow-lg);
}
.modal::before { display:none; } /* remove old colored top bar */
.modal-sm { max-width:420px; }
.mh { display:flex; align-items:center; justify-content:space-between; margin-bottom:22px; padding-top:0; }
.mt { font-size:17px; font-weight:700; color:var(--text); letter-spacing:-.2px; }
.mc {
  background:var(--surface-alt);
  border:1px solid var(--border);
  border-radius:7px;
  width:30px; height:30px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--text-mid); font-size:13px;
  transition:all .15s;
}
.mc:hover { color:var(--text); background:var(--border); }
.mf { display:flex; gap:9px; margin-top:22px; justify-content:flex-end; }

/* ============================================================
   FORM GRID — usadas em ~34 modais (estavam sem CSS antes)
   ============================================================ */
.g2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.g3 { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.g4 { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
@media (max-width:640px){ .g2,.g3,.g4 { grid-template-columns:1fr; } }

/* ============================================================
   MODAL — secoes e dicas (substitui inline styles repetidos)
   ============================================================ */
.modal-section {
  border:1px solid var(--border); border-radius:8px;
  padding:12px; margin-bottom:12px; background:var(--surface);
}
.modal-section-title {
  font-size:11px; font-weight:700; color:var(--navy);
  text-transform:uppercase; letter-spacing:.5px; margin-bottom:8px;
}

/* ============================================================
   MEU PERFIL — modal com trilho de abas (#modal-profile)
   ============================================================ */
.modal-profile { max-width:820px; }
.prof-body { display:grid; grid-template-columns:196px 1fr; gap:20px; align-items:start; }
.prof-rail {
  display:flex; flex-direction:column; gap:2px;
  border-right:1px solid var(--border); padding-right:14px;
  position:sticky; top:0;
}
.prof-tab {
  display:flex; align-items:center; gap:9px;
  background:none; border:0; border-radius:7px;
  padding:9px 10px; font-size:12px; font-weight:600;
  color:var(--text-mid); font-family:var(--font);
  cursor:pointer; text-align:left; transition:background .12s, color .12s;
}
.prof-tab:hover { background:var(--surface-alt); color:var(--text); }
.prof-tab.active { background:var(--color-accent-soft); color:var(--bordo); }
.prof-tab span[data-icon] { color:currentColor; opacity:.75; flex-shrink:0; }
.prof-pane { display:none; }
.prof-pane.active { display:block; }
.prof-panes { min-width:0; }

.prof-photo-row {
  display:flex; gap:16px; align-items:flex-start;
  padding-bottom:18px; margin-bottom:18px;
  border-bottom:1px solid var(--border-soft);
}
.prof-photo {
  width:76px; height:76px; border-radius:14px; flex-shrink:0;
  background:linear-gradient(135deg, #915959, #c47a7a);
  color:#fff; font-weight:700; font-size:26px;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.prof-photo img { width:100%; height:100%; object-fit:cover; }
.prof-dirty-flag {
  margin-left:10px; padding:3px 9px; border-radius:20px; vertical-align:middle;
  background:var(--color-warning-soft); color:var(--color-warning);
  font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.5px;
}

.prof-hint {
  display:flex; gap:8px; align-items:flex-start;
  background:var(--surface-alt); border:1px solid var(--border);
  border-radius:8px; padding:10px 12px;
  font-size:11px; color:var(--text-mid); line-height:1.5;
}
.prof-hint span[data-icon] { color:var(--text-light); flex-shrink:0; margin-top:1px; }

.prof-block {
  border:1px solid var(--border); border-radius:10px;
  padding:16px; margin-bottom:14px; background:var(--surface);
}
.prof-block:last-child { margin-bottom:0; }
.prof-block-alert { border-color:rgba(183,56,56,.28); background:var(--color-danger-soft); }
.prof-block-alert .fi { background:var(--surface); }
.prof-block-t {
  display:flex; align-items:center; gap:7px;
  font-size:12.5px; font-weight:700; color:var(--text);
  margin-bottom:10px;
}
.prof-block-t span[data-icon] { color:var(--bordo); }
/* O .btn-primary global e width:100% (pensado pro rodape .mf dos modais).
   Dentro de um bloco da aba Seguranca ele volta ao tamanho do texto. */
.prof-block-actions { display:flex; justify-content:flex-end; }
.prof-block-actions .btn { width:auto; margin-top:0; }

/* Lista de dispositivos conectados (aba Seguranca) */
.prof-session {
  display:flex; align-items:center; gap:12px;
  padding:10px 0; border-top:1px solid var(--border-soft);
}
.prof-session:first-child { border-top:0; }
.prof-session-main { flex:1; min-width:0; }
.prof-session-t { font-size:12px; font-weight:600; color:var(--text); }
.prof-session-s { font-size:10.5px; color:var(--text-light); margin-top:2px; line-height:1.5; }
.prof-session-now {
  display:inline-block; margin-left:6px; padding:1px 6px; border-radius:20px;
  background:var(--color-success-soft); color:var(--color-success);
  font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.5px;
  vertical-align:middle;
}

/* Placeholders das abas ainda nao implementadas */
.prof-empty { text-align:center; padding:42px 24px; }
.prof-empty span[data-icon] { color:var(--border-strong); }
.prof-empty-t { font-size:15px; font-weight:700; color:var(--text); margin-top:12px; }
.prof-empty-s {
  font-size:12px; color:var(--text-mid); line-height:1.6;
  margin:8px auto 0; max-width:400px;
}
.prof-badge {
  display:inline-block; margin-top:16px; padding:4px 12px; border-radius:20px;
  background:var(--color-warning-soft); color:var(--color-warning);
  font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.6px;
}

/* Reembolsos (aba do Meu Perfil, finadm/056): lista, formulario, detalhe.
   Pensado para o celular primeiro — o comprovante e fotografado na hora. */
.rb-tab-n {
  margin-left:auto; min-width:18px; height:18px; padding:0 5px; border-radius:9px;
  background:var(--gold); color:#2b2110; font-size:10.5px; font-weight:800;
  display:inline-flex; align-items:center; justify-content:center;
}
.rb-top { display:flex; gap:10px; align-items:stretch; flex-wrap:wrap; margin-bottom:12px; }
.rb-kpi { flex:1 1 140px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; background:var(--surface); }
.rb-kpi-l { font-size:10px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:.5px; }
.rb-kpi-v { font-size:18px; font-weight:800; color:var(--text); margin-top:3px; }
.rb-kpi-ok { color:var(--color-success); }
.rb-kpi-s { font-size:11px; color:var(--text-mid); margin-top:2px; }
.rb-top .rb-novo { flex:1 1 160px; width:auto; margin:0; justify-content:center; min-height:44px; }
.rb-atencao {
  display:flex; gap:10px; align-items:center; width:100%; text-align:left;
  padding:10px 12px; margin-bottom:12px; border-radius:8px; cursor:pointer;
  background:var(--color-warning-soft); border:1px solid rgba(200,154,62,.45);
  color:var(--text); font-family:var(--font); font-size:12.5px; line-height:1.45;
}
.rb-filtro { display:flex; gap:3px; padding:3px; margin-bottom:10px; border:1px solid var(--border-strong); border-radius:8px; background:var(--surface-alt); }
.rb-filtro button {
  flex:1; min-height:36px; border:0; border-radius:6px; background:transparent;
  font-family:var(--font); font-size:12.5px; font-weight:700; color:var(--text-mid); cursor:pointer;
}
.rb-filtro button[aria-pressed="true"] { background:var(--surface); color:var(--text); box-shadow:var(--shadow-sm); }
.rb-item {
  display:flex; gap:12px; align-items:center; width:100%; text-align:left;
  padding:11px 12px; margin-bottom:8px; border:1px solid var(--border); border-radius:10px;
  background:var(--surface); cursor:pointer; font-family:var(--font); color:var(--text);
}
.rb-item:hover { border-color:var(--border-strong); }
.rb-item-ic { width:38px; height:44px; flex-shrink:0; border-radius:6px; background:var(--surface-alt); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; color:var(--text-light); }
.rb-item-m { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.rb-item-l1 { display:flex; justify-content:space-between; gap:8px; }
.rb-item-d { font-size:13px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rb-item-v { font-size:13px; font-weight:800; white-space:nowrap; }
.rb-item-s { font-size:11.5px; color:var(--text-mid); }
.rb-st { display:inline-block; padding:2px 9px; border-radius:20px; font-size:10.5px; font-weight:700; white-space:nowrap; }
.rb-st-enviado   { background:var(--color-neutral-soft); color:var(--color-neutral); }
.rb-st-devolvido { background:var(--color-warning-soft); color:var(--color-warning); }
.rb-st-aprovado  { background:var(--color-info-soft);    color:var(--color-info); }
.rb-st-pago      { background:var(--color-success-soft); color:var(--color-success); }
.rb-st-recusado  { background:var(--color-danger-soft);  color:var(--color-danger); }
.rb-st-cancelado { background:var(--color-neutral-soft); color:var(--color-neutral); text-decoration:line-through; }
.rb-vazio { font-size:12px; color:var(--text-light); padding:18px 0; text-align:center; }
.rb-pix { margin-top:16px; }
.rb-pix-s { font-size:11.5px; color:var(--text-mid); margin-bottom:10px; line-height:1.5; }
.rb-pix-row { display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; }
.rb-pix-row .fg { margin-bottom:0; flex:0 0 140px; }
.rb-pix-row .rb-pix-chave { flex:1 1 200px; }
.rb-pix-row .btn { width:auto; margin:0; min-height:38px; }
.rb-rodape { font-size:11px; color:var(--text-light); margin-top:10px; }
.rb-voltar { border:0; background:none; padding:6px 0; margin-bottom:6px; min-height:36px; font-family:var(--font); font-size:12.5px; font-weight:700; color:var(--blue2); cursor:pointer; }
.rb-form-t { font-size:15px; font-weight:800; color:var(--text); margin-bottom:12px; }
.rb-fl-s { font-weight:500; color:var(--text-light); }
.rb-drop {
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:10px;
  padding:10px; border:1.5px dashed var(--border-strong); border-radius:10px; background:var(--surface-alt);
}
.rb-drop.rb-drop-on { border-color:var(--blue2); background:var(--color-info-soft); }
.rb-cap {
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  min-height:80px; border-radius:8px; background:var(--surface); border:1px solid var(--border);
  font-size:13px; font-weight:700; color:var(--text); cursor:pointer;
}
.rb-cap input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.rb-cap:focus-within { outline:2px solid var(--gold); outline-offset:1px; }
.rb-drop-s { grid-column:1 / -1; font-size:11px; color:var(--text-mid); text-align:center; }
.rb-anexo {
  display:flex; gap:10px; align-items:center; margin-top:8px; padding:8px 10px;
  border:1px solid var(--border); border-radius:8px; background:var(--surface); font-size:12px;
}
.rb-anexo img { width:40px; height:48px; object-fit:cover; border-radius:4px; border:1px solid var(--border); }
.rb-anexo-pdf { width:40px; height:48px; border-radius:4px; background:var(--surface-alt); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:800; color:var(--bordo); }
.rb-anexo-m { flex:1; min-width:0; }
.rb-anexo-n { font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rb-anexo-s { font-size:11px; color:var(--text-light); }
.rb-anexo .btn { width:auto; margin:0; }
.rb-form-g { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) minmax(0,1fr); gap:10px; }
.rb-msg { padding:10px 12px; border-radius:8px; font-size:12.5px; line-height:1.5; margin-bottom:12px; }
.rb-msg-err { background:var(--color-danger-soft); color:var(--color-danger); }
.rb-msg-fin { background:var(--color-warning-soft); border:1px solid rgba(200,154,62,.45); color:var(--text); }
.rb-msg-rec { background:var(--color-danger-soft); border:1px solid rgba(183,56,56,.28); color:var(--text); }
.rb-det-h { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; margin-bottom:10px; }
.rb-det-t { font-size:15px; font-weight:800; color:var(--text); }
.rb-det-v { font-size:17px; font-weight:800; color:var(--text); white-space:nowrap; }
.rb-dl { border:1px solid var(--border); border-radius:10px; padding:2px 12px; margin-bottom:12px; background:var(--surface); }
.rb-dl > div { display:flex; justify-content:space-between; gap:14px; padding:8px 0; border-top:1px solid var(--border-soft); font-size:12.5px; }
.rb-dl > div:first-child { border-top:0; }
.rb-dl dt, .rb-dl span.rb-dk { color:var(--text-light); }
.rb-and { list-style:none; margin:0 0 14px; padding:0; }
.rb-and li { display:flex; gap:10px; padding-bottom:12px; position:relative; }
.rb-and li::before { content:''; position:absolute; left:5px; top:14px; bottom:0; width:2px; background:var(--border); }
.rb-and li:last-child::before { display:none; }
.rb-and-dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; margin-top:3px; background:var(--text); position:relative; z-index:1; }
.rb-and-t { font-size:12.5px; font-weight:700; color:var(--text); }
.rb-and-s { font-size:11.5px; color:var(--text-mid); line-height:1.45; }
.rb-acoes { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
.rb-acoes .btn { width:auto; margin:0; min-height:40px; }

@media (max-width:760px){
  .rb-form-g { grid-template-columns:minmax(0,1fr) 96px; }
  .rb-form-g .fg:last-child { grid-column:1 / -1; }
  .rb-acoes .btn { flex:1 1 100%; }
}

@media (max-width:760px){
  .prof-body { grid-template-columns:1fr; gap:14px; }
  .prof-rail {
    flex-direction:row; overflow-x:auto; padding-right:0; padding-bottom:8px;
    border-right:0; border-bottom:1px solid var(--border); position:static;
  }
  .prof-tab { white-space:nowrap; font-size:11.5px; padding:8px; }
  .prof-photo-row { flex-direction:column; }
}

/* ============================================================
   SMALL TABLES (.sm)
   ============================================================ */
table.sm { width:100%; border-collapse:collapse; }
table.sm th {
  padding:11px 14px; text-align:left;
  font-size:10px; font-weight:600;
  text-transform:uppercase; letter-spacing:.7px;
  color:var(--text-light);
  border-bottom:1px solid var(--border);
  background:var(--surface-alt);
}
table.sm td {
  padding:11px 14px;
  border-bottom:1px solid var(--border-soft);
  font-size:13px; font-weight:500; color:var(--text);
}
table.sm tr:last-child td { border-bottom:none; }
table.sm tr:hover td { background:var(--surface-alt); }

/* ============================================================
   VISÃO POR EMPRESA — Accounting Essential/Avulsa (Fase 2)
   ============================================================ */
/* Cabeçalho de grupos (Vínculo · Pedidos · Entregáveis) */
table.emp-roster .emp-h-group th[rowspan] { vertical-align:bottom; padding-bottom:9px; }
table.emp-roster th.emp-hg {
  text-align:center; font-size:9px; letter-spacing:1.2px;
  padding:7px 8px 4px; border-bottom:1px dashed var(--border-soft);
}
table.emp-roster thead tr:last-child th { padding-top:6px; padding-bottom:9px; font-size:9.5px; }
/* Zebra sutil + hover herdado da .sm; células alinham no topo */
table.emp-roster tbody tr:nth-child(even) td { background:rgba(0,0,0,.014); }
table.emp-roster tbody tr:hover td { background:var(--surface-alt); }

/* Separador suave onde começa um grupo de colunas — a grade tem ~12 colunas e
   sem isso "Digitação" e "Final" viram uma faixa só de selects iguais. Linha
   fina de propósito: é orientação, não moldura. */
table.emp-roster td.emp-colgroup,
table.emp-roster th.emp-colgroup { border-left:1px solid rgba(0,0,0,.07); }

/* Filtro e ordenação no próprio cabeçalho da coluna (em vez de uma barra solta
   na topbar, longe da coluna que afetam). O controle é UM botão por coluna:
   rótulo + ▾ abre o menu flutuante (.emp-th-menu) com ordenar + filtrar — o
   <select> sempre visível saiu do cabeçalho, que fica só com texto. */
table.emp-roster th.emp-th { vertical-align:top; }
table.emp-roster .emp-th-in { display:flex; flex-direction:column; align-items:center; gap:3px; }
table.emp-roster .emp-sticky-1 .emp-th-in { align-items:flex-start; }
table.emp-roster .emp-th-btn {
  background:none; border:0; padding:0; cursor:pointer; font:inherit; color:inherit;
  text-align:inherit; letter-spacing:inherit; text-transform:inherit; white-space:nowrap;
  display:inline-flex; align-items:center; gap:3px; max-width:100%;
}
table.emp-roster .emp-th-btn:hover { color:var(--bordo); }
table.emp-roster .emp-th-btn.active { color:var(--bordo); }
table.emp-roster .emp-th-caret { font-size:7px; opacity:.5; }
table.emp-roster .emp-th-btn:hover .emp-th-caret { opacity:1; }
/* Filtro ativo = funil ao lado do rótulo (com contador quando há mais de um
   valor marcado): sem o select fixo, uma coluna filtrada sumiria no meio das
   outras e a lista pareceria vazia sem motivo. O tooltip lista os valores. */
table.emp-roster .emp-th-fico {
  display:inline-flex; align-items:center; gap:1px; color:var(--bordo); line-height:1;
}
table.emp-roster .emp-th-fico-n { font-size:8px; font-weight:800; }

/* Menu flutuante de coluna (ordenar + filtrar). Vive em document.body com
   position:fixed — dentro do th seria cortado pelo overflow do .tw. Acima dos
   modais (1500), abaixo dos toasts (9999). */
.emp-th-menu {
  position:fixed; z-index:9500;
  min-width:148px; max-width:236px; max-height:min(340px, 60vh); overflow:auto;
  background:var(--white,#fff); border:1px solid var(--border-soft, rgba(0,0,0,.12));
  border-radius:9px; box-shadow:0 10px 28px rgba(0,0,0,.16);
  padding:5px; animation:fadeUp .12s ease;
}
.emp-thm-sec {
  font-size:8.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase;
  color:var(--text-light); padding:5px 8px 3px;
}
.emp-thm-sec + .emp-thm-sec, .emp-thm-it + .emp-thm-sec {
  margin-top:4px; border-top:1px solid var(--border-soft, rgba(0,0,0,.08)); padding-top:7px;
}
.emp-thm-it {
  display:flex; align-items:center; gap:6px; width:100%; box-sizing:border-box;
  background:none; border:0; border-radius:6px; padding:5px 8px; cursor:pointer;
  font-family:var(--font); font-size:11px; text-align:left; color:var(--text);
}
.emp-thm-it:hover { background:var(--gelo,#f4f2ee); }
.emp-thm-it.on { color:var(--bordo); font-weight:700; }
.emp-thm-pre { font-size:10px; color:var(--text-light); width:11px; text-align:center; }
.emp-thm-it.on .emp-thm-pre { color:inherit; }
.emp-thm-lbl { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.emp-thm-ck { font-size:10px; }
/* Checkbox das opções de filtro (multi-seleção — o menu fica aberto p/ marcar várias). */
.emp-thm-cb {
  width:12px; height:12px; flex:0 0 12px; box-sizing:border-box; position:relative;
  border:1px solid var(--border-strong,#c9c2b8); border-radius:3px; background:var(--white,#fff);
}
.emp-thm-cb.ck { border-color:var(--bordo); background:var(--bordo); }
.emp-thm-cb.ck::after {
  content:'✓'; position:absolute; inset:0; color:#fff;
  font-size:9px; line-height:12px; text-align:center; font-weight:700;
}

/* Data do último update embaixo de cada célula de status. Reserva de altura
   mesmo vazia (min-height): sem isso a linha "pula" quando a primeira edição
   faz a data aparecer. */
table.emp-roster td.emp-cell-upd { vertical-align:top; }
.emp-upd {
  min-height:11px; margin-top:2px;
  font-size:8.5px; line-height:11px; color:var(--text-light); white-space:nowrap;
}

/* ---- Dashboard colapsável (Essential / Avulsa) ---- */
.acct-dash { margin-bottom:14px; }
/* Dashboard do Accounting por fase (21/10, diagnóstico dos controles) */
.adb{display:flex;flex-direction:column;gap:14px}
.adb-top{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between}
.adb-fases{display:flex;gap:6px;flex-wrap:wrap}
.adb-fase{all:unset;cursor:pointer;font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid var(--border,#E4DED2);color:var(--text-mid,#4A5563);background:#fff}
.adb-fase.on{background:#2B3847;color:#fff;border-color:#2B3847}
.adb-meta{font-size:12px;color:var(--text-light,#6B7887)}
.adb-meta b{color:#8A6A1E}
.adb-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.adb-kpi{all:unset;box-sizing:border-box;cursor:pointer;background:#fff;border:1px solid var(--border,#E4DED2);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.adb-kpi:hover{border-color:#C9C4BB}
.adb-kpi .l{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-light,#6B7887)}
.adb-kpi .v{font-size:24px;font-weight:700;color:#2B3847;font-variant-numeric:tabular-nums;line-height:1.2}
.adb-kpi .s{font-size:12px;color:var(--text-light,#6B7887)}
.adb-card{background:#fff;border:1px solid var(--border,#E4DED2);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.adb-card h4{margin:0;font-size:13px;font-weight:700;color:#2B3847}
.adb-row{display:grid;grid-template-columns:120px minmax(0,1fr) 120px;gap:10px;align-items:center;font-size:13px}
.adb-rl small{color:var(--text-light,#6B7887);font-size:11px;font-variant-numeric:tabular-nums}
.adb-rv{font-size:11.5px;color:var(--text-light,#6B7887);text-align:right;font-variant-numeric:tabular-nums}
.adb-bar{display:flex;height:16px;border-radius:4px;overflow:hidden;background:#F2F0ED;min-width:0}
.adb-seg{all:unset;display:block;height:100%;cursor:pointer;min-width:3px}
.adb-seg:hover{filter:brightness(.9)}
.adb-seg.s-ok,.adb-dot.s-ok{background:#4C8C5E}.adb-seg.s-rev,.adb-dot.s-rev{background:#4A6A8A}
.adb-seg.s-and,.adb-dot.s-and{background:#CFA852}.adb-seg.s-hold,.adb-dot.s-hold{background:#7E6BA8}
.adb-seg.s-nao,.adb-dot.s-nao{background:#C0705F}.adb-seg.s-disp,.adb-dot.s-disp{background:#9AA3AD}
.adb-seg.s-vazio,.adb-dot.s-vazio{background:#DDD8D0}
.adb-lg{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11.5px;color:var(--text-mid,#4A5563)}
.adb-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}
.adb-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px}
.adb-li{all:unset;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:5px 0;border-bottom:1px solid #F2F0ED}
.adb-li b{font-variant-numeric:tabular-nums}
.adb-li.warn b{color:#9A6700}
.adb-tbl{width:100%;border-collapse:collapse;font-size:13px}
.adb-tbl th{font-size:11px;font-weight:700;color:var(--text-light,#6B7887);text-align:right;padding:4px 6px}
.adb-tbl th:first-child,.adb-tbl td:first-child{text-align:left}
.adb-tbl td{padding:5px 6px;text-align:right;border-top:1px solid #F2F0ED;font-variant-numeric:tabular-nums}
.adb-tbl tr.click{cursor:pointer}.adb-tbl tr.click:hover td{background:#FAFAF8}
.adb-tbl tr.sem td:first-child{color:#B3261E}
.adb-sel{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:7px 10px;margin:0 0 10px;background:#EEF2F6;border:1px solid #CBD6E2;border-radius:6px;font-size:12px;color:#2F4F73}
.adb-sel b{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}
.adb-sel button{all:unset;cursor:pointer;font-weight:700;color:#915959;margin-left:auto}
.adb-fase:focus-visible,.adb-kpi:focus-visible,.adb-seg:focus-visible,.adb-li:focus-visible,.adb-sel button:focus-visible,.adb-tbl tr.click:focus-visible{outline:2px solid #915959;outline-offset:1px}
@media(max-width:640px){.adb-row{grid-template-columns:86px minmax(0,1fr)}.adb-rv{grid-column:2;text-align:left}}
.acct-dash-toggle {
  display:inline-flex; align-items:center; gap:7px; cursor:pointer;
  background:none; border:0; padding:2px 0 8px; font-family:var(--font);
  font-size:11px; font-weight:800; letter-spacing:.8px; text-transform:uppercase;
  color:var(--text-mid);
}
.acct-dash-toggle:hover { color:var(--bordo); }
/* Sem rótulo "expandir/recolher": a própria seta já diz o estado. */
.acct-dash-caret {
  transition:transform .15s ease; font-size:16px; line-height:1;
}
.acct-dash.collapsed .acct-dash-caret { transform:rotate(-90deg); }
.acct-dash.collapsed .acct-dash-body { display:none; }
.acct-charts { display:grid; gap:14px; margin-bottom:22px; }

/* ---- Faixa entre dashboard e tabela: busca + ações ---- */
.acct-toolbar {
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap; margin-bottom:10px;
}
.acct-toolbar-actions { display:flex; align-items:center; gap:8px; margin-left:auto; }
.acct-search { position:relative; display:flex; align-items:center; }
.acct-search-ico {
  position:absolute; left:9px; display:inline-flex; pointer-events:none;
  color:var(--text-light);
}
/* Sem placeholder de texto: o ícone de lupa já diz o que o campo é. */
.acct-search input {
  width:260px; max-width:100%; padding:7px 10px 7px 30px;
  font-family:var(--font); font-size:12px; border-radius:8px; outline:none;
  border:1px solid var(--border-soft, rgba(0,0,0,.14));
  background:var(--white,#fff); color:var(--text);
}
.acct-search input:focus { border-color:var(--bordo); }
@media (max-width:720px){ .acct-search input { width:100%; } .acct-toolbar-actions { margin-left:0; } }

/* ---- Card expansível por empresa ---- */
table.emp-roster tbody tr.emp-row { cursor:pointer; }
.emp-row-caret {
  color:var(--text-light); font-size:10px; line-height:1.6; flex-shrink:0;
  transition:transform .12s ease;
}
table.emp-roster tbody tr.emp-row.expanded .emp-row-caret {
  transform:rotate(90deg); color:var(--bordo);
}
.emp-note-badge {
  font-size:9px; font-weight:700; color:var(--text-mid);
  background:var(--gelo,#f4f2ee); border-radius:10px; padding:1px 6px;
}
table.emp-roster tbody tr.emp-detail td { padding:0; background:var(--gelo,#faf9f7); }
table.emp-roster tbody tr.emp-detail:hover td { background:var(--gelo,#faf9f7); }
/* Colunas com teto de largura (280px) e justify-content:start: em tela larga a
   sobra fica toda na direita, em vez de esticar cada bloco e afastar rótulo de
   valor. minmax garante que em tela estreita elas ainda encolhem e quebram. */
.emp-detail-in {
  display:grid; grid-template-columns:repeat(auto-fit, minmax(210px, 280px));
  justify-content:start;
  gap:14px 20px; padding:14px 16px 16px;
  border-left:3px solid var(--bordo);
}
.emp-detail-box { min-width:0; }
.emp-detail-h {
  font-size:9.5px; font-weight:800; letter-spacing:1px; text-transform:uppercase;
  color:var(--text-mid); margin-bottom:7px;
}
.emp-detail-kv {
  display:flex; align-items:center; justify-content:space-between;
  gap:8px; margin-bottom:6px; font-size:11px; color:var(--text-mid);
}
.emp-detail-kv-col { flex-direction:column; align-items:stretch; }
.emp-detail-last { font-size:11.5px; color:var(--text); }
.emp-detail-meta { font-size:10px; color:var(--text-light); margin-top:2px; }
.emp-detail-empty { font-size:11px; color:var(--text-light); font-style:italic; }
.emp-detail-more summary { font-size:10.5px; color:var(--text-mid); cursor:pointer; margin-top:6px; }
.emp-detail-logline { font-size:10.5px; color:var(--text-mid); padding:3px 0; border-top:1px solid var(--border-soft, rgba(0,0,0,.07)); }
.emp-detail-obs, .emp-note-input {
  width:100%; margin-top:4px; padding:5px 7px; border-radius:6px; resize:vertical;
  font-family:var(--font); font-size:11px; color:var(--text);
  border:1px solid var(--border-soft, rgba(0,0,0,.14)); background:var(--white,#fff);
}
.emp-detail-obs:focus, .emp-note-input:focus { outline:none; border-color:var(--bordo); }
.emp-detail-obs-ro { font-size:11px; color:var(--text); margin-top:4px; white-space:pre-wrap; }
.emp-note-add { display:flex; flex-direction:column; align-items:flex-end; gap:6px; margin-bottom:9px; }
.emp-note-list { display:flex; flex-direction:column; gap:8px; max-height:210px; overflow-y:auto; }
.emp-note { border-left:2px solid var(--border-strong,#c9c2b8); padding-left:8px; }
.emp-note-body { font-size:11.5px; color:var(--text); white-space:pre-wrap; }
.emp-note-del { background:none; border:0; padding:0; cursor:pointer; font:inherit; color:var(--bordo); text-decoration:underline; }

/* Parte relacionada: nome+código em cima, papéis embaixo, % como chip à direita */
/* max-content no meio (em vez de 1fr): com 1fr o nome esticava e empurrava a
   percentagem para a borda da coluna, longe da pessoa a que se refere. */
.emp-party {
  display:grid; grid-template-columns:auto minmax(0,max-content) auto; gap:0 6px;
  justify-content:start; align-items:start; padding:3px 0;
}
.emp-party + .emp-party { border-top:1px dashed var(--border-soft); }
.emp-party-ico { font-size:11px; line-height:1.6; }
.emp-party-main { min-width:0; }
.emp-party-name {
  display:flex; align-items:center; gap:5px; flex-wrap:wrap;
  font-size:11.5px; font-weight:600; color:var(--text); line-height:1.35;
}
.emp-party-roles { font-size:9.5px; color:var(--text-light); letter-spacing:.2px; margin-top:1px; }
.emp-party-pct {
  font-size:10px; font-weight:700; color:var(--text-mid);
  background:var(--surface-alt); border:1px solid var(--border-soft);
  border-radius:6px; padding:1px 6px; align-self:start; white-space:nowrap;
}
.emp-party-more {
  background:none; border:none; padding:3px 0 1px; cursor:pointer;
  font-family:var(--font); font-size:10px; font-weight:600; color:var(--navy);
}
.emp-party-more:hover { text-decoration:underline; }

/* ============================================================
   TAGS
   ============================================================ */
.tag {
  display:inline-block; padding:3px 8px; border-radius:6px;
  font-size:10px; font-weight:600;
  text-transform:none; letter-spacing:0;
}
.tag-superadmin { background:rgba(200,154,62,.15); color:#8a6010; border:1px solid rgba(200,154,62,.3); }
.tag-admin      { background:rgba(145,89,89,.10); color:var(--bordo); }
.tag-user       { background:rgba(74,120,163,.12); color:var(--blue2); }
.tag-partner    { background:rgba(207,168,82,.15); color:#8a6010; border:1px solid rgba(207,168,82,.35); }
/* Seções da tabela de usuários: equipe interna × usuários externos (parceiros) */
.users-sec-row td { padding:16px 10px 6px!important; font-size:10.5px; font-weight:800; color:var(--text-light)!important; text-transform:uppercase; letter-spacing:1.4px; background:transparent!important; border-bottom:1px solid var(--border)!important; }

/* ============================================================
   COLUMN PICKER CARDS
   ============================================================ */
.col-card {
  display:flex; align-items:flex-start; gap:10px;
  padding:10px 12px; border-radius:8px;
  border:1px solid var(--border); background:var(--surface);
  cursor:pointer; transition:all .15s; user-select:none;
}
.col-card:hover { border-color:var(--border-strong); background:var(--surface-alt); }
.col-card.selected { border-color:var(--bordo); background:rgba(145,89,89,.04); }
.col-card.locked { opacity:.55; cursor:default; border-style:dashed; }
.col-check {
  width:18px; height:18px; border-radius:5px;
  border:1.5px solid var(--border-strong); flex-shrink:0; margin-top:1px;
  display:flex; align-items:center; justify-content:center;
  font-size:11px; transition:all .15s; color:transparent;
}
.col-card.selected .col-check { background:var(--bordo); border-color:var(--bordo); color:var(--white); }
.col-card.locked .col-check  { background:var(--text-light); border-color:var(--text-light); color:var(--white); }
.col-card-label { font-size:13px; font-weight:600; color:var(--text); line-height:1.3; }
.col-card-type  { font-size:11px; color:var(--text-light); margin-top:2px; font-weight:400; }

/* ============================================================
   TOAST
   ============================================================ */
.toast {
  position:fixed; bottom:24px; right:24px;
  background:var(--text); border-radius:10px;
  padding:12px 18px;
  display:flex; align-items:center; gap:10px;
  font-size:13px; font-weight:500; color:var(--white);
  z-index:9999; animation:fadeUp .3s ease;
  box-shadow:var(--shadow-lg);
  transition:opacity .3s, transform .3s;
  font-family:var(--font);
  max-width:min(520px, calc(100vw - 32px));
}
.toast-text { line-height:1.35; }
.toast-action {
  margin-left:8px; border:1px solid rgba(255,255,255,.35);
  background:rgba(255,255,255,.12); color:#fff;
  border-radius:7px; padding:5px 9px;
  font-family:var(--font); font-size:11px; font-weight:800;
  cursor:pointer; white-space:nowrap;
}
.toast-action:disabled { opacity:.55; cursor:wait; }
.toast.hide { opacity:0; transform:translateY(8px); }
/* Em mobile-active, sobe acima da bottom nav (~80px) e centraliza horizontalmente */
body.mobile-active .toast {
  bottom: calc(90px + env(safe-area-inset-bottom, 0px));
  right:16px; left:16px;
  justify-content:center;
}

@keyframes fadeUp {
  from { opacity:0; transform:translateY(12px); }
  to { opacity:1; transform:translateY(0); }
}

/* ============================================================
   INLINE STATUS SELECTS (in tables)
   ============================================================ */
.list-inline-sel {
  border:none !important; outline:none !important;
  font-family:var(--font); font-size:10px; font-weight:600;
  cursor:pointer; border-radius:12px; padding:3px 8px;
  appearance:none; -webkit-appearance:none; max-width:130px;
}
.list-inline-sel.ch-c  { background:rgba(31,122,71,.10);  color:var(--green); }
.list-inline-sel.ch-a  { background:rgba(74,120,163,.12); color:var(--blue2); }
.list-inline-sel.ch-h  { background:rgba(200,154,62,.15); color:#8a6010; }
.list-inline-sel.ch-n  { background:rgba(120,120,120,.12); color:var(--text-mid); }
.list-inline-sel.ch-p  { background:rgba(200,154,62,.15); color:#8a6010; }
.list-inline-sel.ch-no { background:rgba(183,56,56,.10);  color:var(--red); }
.list-inline-sel.ch-s  { background:rgba(31,122,71,.10);  color:var(--green); }
.list-inline-sel:not([class*="ch-"]) { background:var(--surface-alt); color:var(--text-light); }

/* ============================================================
   CMD+K PALETTE
   ============================================================ */
#cmdk-overlay {
  position:fixed; inset:0;
  background:rgba(20,22,28,.55);
  z-index:9000; display:none;
  align-items:flex-start; justify-content:center;
  padding-top:14vh;
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
#cmdk-overlay.open { display:flex; }
#cmdk-box {
  width:min(640px,92vw); background:var(--surface);
  border-radius:14px;
  box-shadow:0 32px 80px rgba(0,0,0,.30);
  overflow:hidden; font-family:var(--font);
  border:1px solid var(--border);
}
#cmdk-input {
  width:100%; border:none; outline:none;
  padding:18px 22px; font-size:15px;
  font-family:var(--font); color:var(--text);
  border-bottom:1px solid var(--border);
  box-sizing:border-box;
}
#cmdk-input::placeholder { color:var(--text-light); }
#cmdk-results { max-height:55vh; overflow-y:auto; }
.cmdk-item {
  display:flex; align-items:center; gap:12px;
  padding:11px 22px; cursor:pointer;
  border-left:3px solid transparent;
  transition:background .12s;
}
.cmdk-item:hover { background:var(--surface-alt); }
.cmdk-item.active { background:var(--surface-alt); border-left-color:var(--bordo); }
.cmdk-it-main { flex:1; min-width:0; }
.cmdk-it-name { font-size:13px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cmdk-it-meta { font-size:11px; color:var(--text-light); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cmdk-it-tag {
  font-size:9px; font-weight:600; letter-spacing:.4px; text-transform:uppercase;
  padding:3px 8px; border-radius:10px;
  background:var(--surface-alt); color:var(--text-mid);
}
.cmdk-it-tag.ess { background:rgba(74,120,163,.10); color:var(--blue2); }
.cmdk-it-tag.av  { background:rgba(200,154,62,.12); color:#8a6010; }
#cmdk-empty { padding:40px 22px; text-align:center; color:var(--text-light); font-size:13px; }
#cmdk-hint {
  padding:10px 22px; background:var(--surface-alt);
  font-size:11px; color:var(--text-light);
  border-top:1px solid var(--border); display:flex; gap:14px;
}
#cmdk-hint kbd {
  background:var(--surface); border:1px solid var(--border);
  border-radius:4px; padding:2px 6px;
  font-family:'SF Mono', Menlo, monospace; font-size:10px;
}

.shortcut-help-overlay {
  display:none; position:fixed; inset:0; z-index:1500;
  background:rgba(20,22,26,.34); backdrop-filter:blur(4px);
  align-items:flex-start; justify-content:center; padding:12vh 18px 28px;
}
.shortcut-help-overlay.open { display:flex; }
.shortcut-help-box {
  width:min(560px, 100%); background:var(--surface);
  border:1px solid var(--border); border-radius:14px;
  box-shadow:var(--shadow-lg); overflow:hidden;
}
.shortcut-help-head {
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:16px; padding:18px 20px; border-bottom:1px solid var(--border);
}
.shortcut-help-title { font-size:16px; font-weight:800; color:var(--text); }
.shortcut-help-sub { font-size:12px; color:var(--text-mid); margin-top:2px; }
.shortcut-help-head button {
  border:none; background:var(--surface-alt); color:var(--text-mid);
  width:30px; height:30px; border-radius:8px; cursor:pointer; font-size:18px;
}
.shortcut-grid { display:grid; grid-template-columns:180px 1fr; gap:0; padding:8px 0 12px; }
.shortcut-grid > div,
.shortcut-grid > span {
  padding:8px 20px; border-bottom:1px solid var(--border-soft);
  font-size:12px; color:var(--text-mid);
}
.shortcut-grid > div { color:var(--text); font-weight:700; }
.shortcut-grid kbd {
  background:var(--surface-alt); border:1px solid var(--border);
  border-radius:5px; padding:2px 6px;
  font-family:'SF Mono', Menlo, monospace; font-size:10px;
}

/* ============================================================
   MOBILE "Minhas tarefas"
   ============================================================ */
#mobile-view {
  display:none; position:fixed; inset:0;
  background:var(--bg); z-index:400;
  overflow-y:auto; font-family:var(--font);
}
body.mobile-active #mobile-view { display:block; }
body.mobile-active .sidebar,
body.mobile-active #notif-bell-wrap { display:none !important; }
/* Por padrão, .main fica oculto no mobile-active */
body.mobile-active .main { display:none !important; }
/* Quando 'mob-show-main' está ativa, mostra .main e oculta o #mobile-view */
body.mobile-active.mob-show-main #mobile-view { display:none !important; }
body.mobile-active.mob-show-main .main {
  display:block !important;
  margin-left:0 !important;
  width:100% !important; max-width:100vw !important;
  overflow-x:hidden;
  /* Espaço para o bottom nav */
  padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
}

/* Bloqueia overflow horizontal e força viewport fit no PWA mobile */
html, body { width:100%; max-width:100vw; }
body.mobile-active {
  overflow-x:hidden; overscroll-behavior-x:contain;
  width:100vw; max-width:100vw;
}
body.mobile-active #mobile-view {
  width:100vw; max-width:100vw;
  min-height:100vh; min-height:100dvh;
  overflow-x:hidden;
}
body.mobile-active .mob-content { overflow-x:hidden; }
/* Garante que todos os textos longos quebrem em vez de empurrar a largura */
body.mobile-active .mob-card,
body.mobile-active .mob-card-cli,
body.mobile-active .mob-card-emp,
body.mobile-active .mob-kpi { word-break: break-word; overflow-wrap: anywhere; }
body.mobile-active .mob-card { max-width:100%; }

/* CSS responsivo para .main em mobile (mobile-active.mob-show-main OR mobile-desktop-pinned) */
body.mobile-active.mob-show-main .sidebar,
body.mobile-desktop-pinned .sidebar { display:none !important; }
body.mobile-desktop-pinned .main { margin-left:0 !important; width:100% !important; max-width:100vw !important; overflow-x:hidden; }
body.mobile-active.mob-show-main #notif-bell,
body.mobile-active.mob-show-main #review-icon,
body.mobile-active.mob-show-main #presence-bar,
body.mobile-active.mob-show-main #crm-org-switcher,
body.mobile-desktop-pinned #notif-bell,
body.mobile-desktop-pinned #review-icon,
body.mobile-desktop-pinned #presence-bar,
body.mobile-desktop-pinned #crm-org-switcher { display:none !important; }

/* Topbar adaptada */
body.mobile-active.mob-show-main .topbar,
body.mobile-desktop-pinned .topbar {
  padding:14px 12px;
  padding-top: calc(14px + env(safe-area-inset-top, 0px));
  flex-wrap:wrap; gap:8px;
}
body.mobile-active.mob-show-main .topbar > div:first-child,
body.mobile-desktop-pinned .topbar > div:first-child { flex:1; min-width:0; }
body.mobile-active.mob-show-main .tbt,
body.mobile-desktop-pinned .tbt { font-size:16px; }
body.mobile-active.mob-show-main .content,
body.mobile-desktop-pinned .content { padding:14px 10px; }

/* KPI grid (Dashboard) — 2 colunas */
body.mobile-active.mob-show-main .sg,
body.mobile-desktop-pinned .sg { grid-template-columns: 1fr 1fr !important; gap:10px !important; }
body.mobile-active.mob-show-main .sc,
body.mobile-desktop-pinned .sc { padding:12px 14px !important; min-width:0 !important; overflow:hidden; }
body.mobile-active.mob-show-main .sv,
body.mobile-desktop-pinned .sv { font-size:18px !important; }
body.mobile-active.mob-show-main .slb,
body.mobile-desktop-pinned .slb { font-size:9px !important; }
body.mobile-active.mob-show-main .ss,
body.mobile-desktop-pinned .ss { font-size:10px !important; }

/* Charts row do Dashboard (4 doughnuts) — vira 2x2 com canvas em altura confortável */
body.mobile-active.mob-show-main .content > div[style*="grid-template-columns:repeat(4"],
body.mobile-desktop-pinned .content > div[style*="grid-template-columns:repeat(4"] {
  grid-template-columns: 1fr 1fr !important;
  gap: 10px !important;
}
/* Wrapper do chart (div com height:170px inline) */
body.mobile-active.mob-show-main .content > div div[style*="height:170px"],
body.mobile-desktop-pinned .content > div div[style*="height:170px"] {
  height: 180px !important;
  width: 100% !important;
  min-width: 0 !important;
  position: relative !important;
}
/* Canvas dentro do wrapper de chart — força preencher */
body.mobile-active.mob-show-main canvas,
body.mobile-desktop-pinned canvas {
  max-width: 100% !important;
  max-height: 180px !important;
  display: block;
}

/* Tabelas: scroll horizontal interno em vez de empurrar a página */
body.mobile-active.mob-show-main .tw,
body.mobile-desktop-pinned .tw {
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  border-radius:8px;
}
body.mobile-active.mob-show-main table.sm,
body.mobile-desktop-pinned table.sm { font-size:11px; }
body.mobile-active.mob-show-main table.sm th,
body.mobile-active.mob-show-main table.sm td,
body.mobile-desktop-pinned table.sm th,
body.mobile-desktop-pinned table.sm td { padding:6px 4px !important; white-space:nowrap; }

/* Filtros do dashboard / essential / avulsa: chips quebram */
body.mobile-active.mob-show-main #dash-filters > div,
body.mobile-desktop-pinned #dash-filters > div {
  flex-wrap:wrap !important; gap:6px !important; padding:8px 10px !important;
}
body.mobile-active.mob-show-main #dash-filters select,
body.mobile-active.mob-show-main #dash-filters input,
body.mobile-desktop-pinned #dash-filters select,
body.mobile-desktop-pinned #dash-filters input {
  font-size:12px !important; flex:1 1 calc(50% - 4px) !important; min-width:0 !important;
}

/* Topbar dos filtros (Essential / Avulsa) — input + selects quebram */
body.mobile-active.mob-show-main .topbar > div:nth-child(2),
body.mobile-desktop-pinned .topbar > div:nth-child(2) {
  flex-basis:100% !important; flex-wrap:wrap !important; gap:6px !important;
}
body.mobile-active.mob-show-main .topbar > div:nth-child(2) > *,
body.mobile-desktop-pinned .topbar > div:nth-child(2) > * {
  flex:1 1 calc(50% - 4px) !important; min-width:0 !important; font-size:12px !important;
}

/* Lista de clientes em Essential / Avulsa — cards já são responsivos via inline styles */
body.mobile-active.mob-show-main #clients-list,
body.mobile-active.mob-show-main #avulsa-list { padding:0 !important; }
/* Botão flutuante "voltar ao mobile" quando pinado */
#mob-back-to-app {
  display:none;
  position:fixed; bottom: calc(18px + env(safe-area-inset-bottom, 0px));
  left: 50%; transform:translateX(-50%);
  background:#2B3847; color:#fff; border:none;
  padding:11px 22px; border-radius:22px;
  font-family:var(--font); font-size:12px; font-weight:700;
  box-shadow:0 4px 16px rgba(43,56,71,.35);
  z-index:500; cursor:pointer;
}
body.mobile-desktop-pinned #mob-back-to-app { display:block; }

/* Botão Voltar no topbar mobile (pilha de navegação) — visibilidade controlada por inline style via JS */
#mob-back-btn {
  align-items:center; justify-content:center;
  width:40px; height:40px; min-width:40px;
  margin-right:6px;
  background:transparent; color:#fff; border:none;
  font-size:22px; font-weight:700; line-height:1;
  cursor:pointer; padding:0; border-radius:8px;
  -webkit-tap-highlight-color: rgba(255,255,255,.1);
}
#mob-back-btn:active { background:rgba(255,255,255,.12); }

/* Notificacoes — botao X individual em cada item */
.notif-item { transition:background .12s; }
.notif-item:hover { background:var(--surface-alt); }
.notif-item:hover .notif-close { opacity:1; }
.notif-close:hover { background:rgba(183,56,56,.10); color:var(--bordo) !important; opacity:1 !important; }
.mob-topbar {
  background:var(--text); color:var(--white);
  padding:18px 20px;
  /* PWA iOS: empurra abaixo do status bar (notch/dynamic island) — só top, evita overflow lateral */
  padding-top: calc(18px + env(safe-area-inset-top, 0px));
  display:flex; align-items:center; justify-content:space-between;
  width:100%; box-sizing:border-box;
}
.mob-topbar h1 { font-size:16px; font-weight:700; margin:0; }
.mob-topbar .mob-sub { font-size:11px; opacity:.7; margin-top:2px; }
.mob-topbar .mob-logout {
  background:rgba(255,255,255,.1); border:none; color:var(--white);
  padding:7px 12px; border-radius:6px; font-size:12px;
  font-family:var(--font); cursor:pointer;
}
.mob-tabs {
  display:flex; background:var(--surface);
  border-bottom:1px solid var(--border);
  position:sticky; top:0; z-index:1;
}
.mob-tab {
  flex:1; padding:14px 8px; text-align:center;
  font-size:11px; font-weight:600; color:var(--text-light);
  border:none; background:none;
  border-bottom:2px solid transparent; cursor:pointer;
  font-family:var(--font); text-transform:uppercase; letter-spacing:.5px;
}
.mob-tab.active { color:var(--bordo); border-bottom-color:var(--bordo); }
.mob-content {
  padding:14px;
  /* bottom nav tem 64px + safe area; deixa espaço para o último item não ficar atrás */
  padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px));
}
.mob-card {
  background:var(--surface); border-radius:10px;
  padding:14px; margin-bottom:10px;
  border:1px solid var(--border); box-shadow:var(--shadow-sm);
}
.mob-card-h { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; }
.mob-card-cli { font-size:14px; font-weight:700; color:var(--text); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mob-card-emp { font-size:12px; color:var(--text-mid); margin-bottom:8px; }
.mob-card-tags { display:flex; gap:6px; flex-wrap:wrap; }
.mob-card-tag { font-size:10px; padding:3px 8px; border-radius:10px; font-weight:600; }
.mob-empty { text-align:center; padding:40px 20px; color:var(--text-light); font-size:13px; }

/* ============================================================
   MOBILE — BOTTOM NAVIGATION
   ============================================================ */
.mob-bottom-nav {
  position:fixed; left:0; right:0; bottom:0; z-index:50;
  display:none; /* só aparece em mobile-active */
  align-items:stretch; justify-content:space-around;
  background:var(--surface);
  border-top:1px solid var(--border);
  box-shadow:0 -2px 12px rgba(43,56,71,.08);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  width:100%; box-sizing:border-box;
}
body.mobile-active .mob-bottom-nav { display:flex; }
.mob-bn {
  flex:1; min-height:60px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:2px; background:none; border:none; cursor:pointer;
  font-family:var(--font); color:var(--text-light);
  padding:8px 4px;
  transition:color .12s, background .15s, transform .1s;
  -webkit-tap-highlight-color: rgba(145,89,89,.15);
  user-select: none; -webkit-user-select:none;
  touch-action:manipulation;
}
.mob-bn:active { background:var(--gelo); transform:scale(.94); }
.mob-bn.active { color:var(--bordo); }
.mob-bn.active .mob-bn-lbl { font-weight:700; }
.mob-bn-ico { font-size:22px; line-height:1; }
.mob-bn-lbl { font-size:10px; font-weight:600; letter-spacing:.2px; }

/* FAB central — botão "+" elevado */
.mob-bn-fab {
  position:relative; flex:0 0 auto;
}
.mob-bn-fab::before {
  content:""; position:absolute; top:6px; left:50%; transform:translateX(-50%);
  width:48px; height:48px; border-radius:50%;
  background:var(--bordo);
  box-shadow:0 4px 12px rgba(145,89,89,.4);
}
.mob-bn-fab .mob-bn-ico {
  position:relative; z-index:1; color:#fff; font-size:28px; font-weight:300;
  width:48px; line-height:48px; text-align:center;
}

/* Search bar (na seção Clientes) */
.mob-search-bar {
  padding:10px 14px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  position:sticky; top:0; z-index:1;
}
.mob-search-bar input {
  width:100%; padding:10px 14px;
  border:1px solid var(--border); border-radius:10px;
  font-family:var(--font); font-size:14px;
  background:var(--gelo); outline:none;
}
.mob-search-bar input:focus {
  background:var(--surface); border-color:var(--bordo);
}

/* ============================================================
   MOBILE — DRAWER LATERAL ("Mais")
   ============================================================ */
#mob-drawer-overlay {
  display:none; position:fixed; inset:0; z-index:1200;
}
body.mob-drawer-open #mob-drawer-overlay { display:block; }
#mob-drawer-backdrop {
  position:absolute; inset:0;
  background:rgba(0,0,0,.45);
  backdrop-filter:blur(2px);
  animation:mobFade .18s ease-out;
  cursor:pointer;
}
@keyframes mobFade { from{opacity:0} to{opacity:1} }
@keyframes mobSlideR { from{transform:translateX(100%)} to{transform:translateX(0)} }
#mob-drawer {
  position:absolute; top:0; right:0; bottom:0;
  width:84%; max-width:320px;
  background:#1a1d24; color:#fff;
  display:flex; flex-direction:column;
  animation:mobSlideR .22s ease-out;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.mob-drawer-h {
  padding:18px 18px 16px;
  display:flex; align-items:center; justify-content:space-between;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.mob-drawer-close {
  background:rgba(255,255,255,.1); border:none; color:#fff;
  width:32px; height:32px; border-radius:6px; font-size:18px;
  cursor:pointer; line-height:1;
}
.mob-drawer-body {
  flex:1; overflow-y:auto;
  padding:8px 0;
}
.mob-drawer-section {
  padding:8px 18px 4px;
  font-size:9px; font-weight:700; color:rgba(255,255,255,.35);
  text-transform:uppercase; letter-spacing:1.2px;
}
.mob-drawer-link {
  display:flex; align-items:center; gap:11px;
  width:100%; padding:13px 18px;
  background:none; border:none;
  color:rgba(255,255,255,.85);
  font-family:var(--font); font-size:13px; font-weight:500;
  text-align:left; cursor:pointer;
}
.mob-drawer-link:active { background:rgba(255,255,255,.06); }
.mob-drawer-link.active { background:rgba(145,89,89,.18); color:#fff; border-left:3px solid var(--bordo); padding-left:15px; }
.mob-drawer-foot {
  padding:8px 0;
  border-top:1px solid rgba(255,255,255,.08);
}
/* O drawer e escuro (#1a1d24): a linha da versao inverte a cor e acompanha o
   recuo dos links acima. */
.mob-drawer-foot .sbuild { color:rgba(255,255,255,.32); padding:4px 18px 2px; margin-top:2px; }

/* ============================================================
   MOBILE — ACTION SHEET (FAB +)
   ============================================================ */
#mob-add-sheet-overlay,
#mob-status-sheet-overlay {
  display:none; position:fixed; inset:0; z-index:1300;
}
body.mob-as-open #mob-add-sheet-overlay { display:block; }
body.mob-ss-open #mob-status-sheet-overlay { display:block; }
.mob-sheet-backdrop {
  position:absolute; inset:0;
  background:rgba(0,0,0,.45);
  animation:mobFade .15s ease-out;
  cursor:pointer;
}
#mob-status-sheet {
  position:absolute; left:0; right:0; bottom:0;
  background:var(--surface);
  border-top-left-radius:16px; border-top-right-radius:16px;
  padding:8px 14px;
  padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
  animation:mobSlideUp .22s ease-out;
}
@keyframes mobSlideUp { from{transform:translateY(100%)} to{transform:translateY(0)} }
#mob-add-sheet {
  position:absolute; left:0; right:0; bottom:0;
  background:var(--surface);
  border-top-left-radius:16px; border-top-right-radius:16px;
  padding:8px 14px;
  padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
  animation:mobSlideUp .22s ease-out;
}
.mob-as-grip {
  width:40px; height:4px; border-radius:2px;
  background:var(--border-strong);
  margin:6px auto 14px;
}
.mob-as-title {
  font-size:11px; font-weight:700; color:var(--text-light);
  text-transform:uppercase; letter-spacing:.8px;
  padding:0 6px 8px;
}
.mob-as-item {
  width:100%; padding:14px 12px;
  background:none; border:none; border-radius:10px;
  display:flex; align-items:center; gap:14px;
  text-align:left; cursor:pointer; font-family:var(--font);
  margin-bottom:4px;
}
.mob-as-item:active { background:var(--gelo); }
.mob-as-ico { font-size:24px; flex-shrink:0; width:38px; text-align:center; }
.mob-as-lbl { display:block; font-size:14px; font-weight:600; color:var(--text); }
.mob-as-sub { display:block; font-size:11px; color:var(--text-light); margin-top:2px; }
.mob-as-cancel {
  width:100%; padding:13px;
  background:var(--gelo); border:none; border-radius:10px;
  font-family:var(--font); font-size:14px; font-weight:600;
  color:var(--text-mid); cursor:pointer;
  margin-top:8px;
}

/* ============================================================
   MOBILE — PULL TO REFRESH
   ============================================================ */
#mob-ptr {
  position:absolute; left:0; right:0; top:0;
  display:flex; align-items:center; justify-content:center;
  height:0; overflow:hidden;
  pointer-events:none;
  transition:height .15s ease-out;
  background:linear-gradient(180deg, var(--bordo), var(--bordo) 60%, transparent);
  color:#fff; font-family:var(--font); font-size:11px; font-weight:700;
  z-index:10;
}
#mob-ptr.pulling { transition:none; }
#mob-ptr.refreshing { height:50px; }
.mob-ptr-spinner {
  width:18px; height:18px; border-radius:50%;
  border:2px solid rgba(255,255,255,.3); border-top-color:#fff;
  animation: ptrSpin .8s linear infinite;
  display:inline-block; margin-right:8px; vertical-align:middle;
}
@keyframes ptrSpin { to { transform:rotate(360deg); } }

/* ============================================================
   MOBILE — MODAIS FULL-SCREEN
   ============================================================ */
@media (max-width: 768px){
  .modal-overlay.open .modal {
    width:100% !important; max-width:100% !important;
    height:100vh; height:100dvh; max-height:100vh; max-height:100dvh;
    border-radius:0 !important;
    margin:0 !important;
    padding:18px 18px 14px !important;
    padding-top: calc(18px + env(safe-area-inset-top, 0px)) !important;
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
    overflow-y:auto;
    display:flex; flex-direction:column;
  }
  .modal-overlay.open .modal .mh {
    position:sticky; top: calc(0px - env(safe-area-inset-top, 0px));
    background:var(--surface); margin:-18px -18px 14px;
    margin-top: calc(-18px - env(safe-area-inset-top, 0px));
    padding:14px 18px;
    padding-top: calc(14px + env(safe-area-inset-top, 0px));
    border-bottom:1px solid var(--border);
    z-index:5;
  }
  .modal-overlay.open .modal .mf {
    position:sticky; bottom:0; bottom: calc(0px - env(safe-area-inset-bottom, 0px));
    background:var(--surface);
    margin:14px -18px -14px;
    margin-bottom: calc(-14px - env(safe-area-inset-bottom, 0px));
    padding:14px 18px;
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
    border-top:1px solid var(--border);
    z-index:5;
  }
  /* Botão de fechar maior no mobile */
  .modal-overlay.open .mc { padding:8px; min-width:36px; min-height:36px; }
  /* Inputs maiores e melhor espaçados no mobile */
  .modal-overlay.open .fi {
    font-size:16px !important; /* >=16px previne zoom automático no iOS ao focar */
    padding:10px 12px;
  }
}

/* Card pressionado (long-press feedback visual) */
.mob-card.pressing { background:var(--surface-alt); transform:scale(.98); transition:transform .15s, background .15s; }

/* KPI cards mobile (Dashboard) */
.mob-kpi-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:10px;
  margin-bottom:14px;
}
.mob-kpi {
  background:var(--surface); border:1px solid var(--border);
  border-radius:10px; padding:14px 14px;
}
.mob-kpi-lbl { font-size:10px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:.5px; margin-bottom:6px; }
.mob-kpi-val { font-size:20px; font-weight:800; color:var(--navy); letter-spacing:-.3px; }
.mob-kpi-sub { font-size:11px; color:var(--text-mid); margin-top:3px; }
.mob-kpi.full { grid-column:1/-1; }
.mob-kpi-bar {
  margin-top:8px; height:6px; background:var(--gelo); border-radius:3px; overflow:hidden;
}
.mob-kpi-bar > div { height:100%; background:var(--green); border-radius:3px; }

/* ============================================================
   FILTER CHIPS / VIEWS BAR
   ============================================================ */
.views-bar { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.view-chip {
  display:inline-flex; align-items:center; gap:5px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:16px; padding:5px 12px;
  font-size:12px; color:var(--text-mid);
  cursor:pointer; font-family:var(--font); font-weight:500;
  transition:all .15s;
}
.view-chip:hover { border-color:var(--border-strong); color:var(--text); }
.view-chip.active { background:var(--text); color:var(--white); border-color:var(--text); }
.view-chip .x { opacity:.5; font-weight:400; margin-left:2px; }
.view-chip .x:hover { opacity:1; }
.view-add { background:none; border:1px dashed var(--border-strong); color:var(--text-light); }
.view-quick { background:var(--surface-alt); border-color:var(--border); color:var(--text); }

/* ============================================================
   METRICS
   ============================================================ */
.met-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(420px, 1fr)); gap:16px; margin-bottom:18px; }
.met-card {
  background:var(--surface); border-radius:var(--radius);
  border:1px solid var(--border); padding:18px 20px;
}
.met-card-h { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.met-card-t { font-size:14px; font-weight:700; color:var(--text); letter-spacing:-.2px; }
.met-card-sub { font-size:11px; color:var(--text-light); font-weight:500; }
.met-toggle { display:inline-flex; background:var(--surface-alt); border-radius:7px; padding:2px; border:1px solid var(--border); }
.met-toggle button {
  border:none; background:none;
  padding:5px 11px; font-size:11px; font-weight:600;
  color:var(--text-mid); cursor:pointer;
  border-radius:5px; font-family:var(--font);
  transition:all .12s;
}
.met-toggle button.active { background:var(--surface); color:var(--text); box-shadow:var(--shadow-sm); }
.met-canvas-wrap { position:relative; height:240px; }
.met-table { width:100%; border-collapse:collapse; font-size:12px; margin-top:8px; }
.met-table th {
  text-align:left; padding:8px 10px;
  font-size:10px; font-weight:600; color:var(--text-light);
  text-transform:uppercase; letter-spacing:.6px;
  border-bottom:1px solid var(--border);
}
.met-table td { padding:9px 10px; border-bottom:1px solid var(--border-soft); color:var(--text); }
.met-table tr:last-child td { border-bottom:none; }
.met-table .num { text-align:right; font-variant-numeric:tabular-nums; font-weight:600; }
.met-empty { text-align:center; padding:32px; color:var(--text-light); font-size:12px; }
.met-bar-cell { position:relative; }
.met-bar-fill {
  position:absolute; left:0; top:0; bottom:0;
  background:linear-gradient(90deg, rgba(74,120,163,.12), rgba(145,89,89,.12));
  border-radius:3px;
}
.met-bar-cell span { position:relative; z-index:1; }

/* Aging pills */
.aging-pill { display:inline-block; padding:3px 10px; border-radius:12px; font-size:10px; font-weight:600; }
.aging-0  { background:rgba(31,122,71,.12);  color:#1f7a47; }
.aging-7  { background:rgba(200,154,62,.15); color:#8a6010; }
.aging-30 { background:rgba(217,119,6,.15);  color:#a85b1a; }
.aging-60 { background:rgba(145,89,89,.12); color:var(--bordo); }
.aging-90 { background:#2a1418; color:var(--white); }
.cp-avatar {
  width:44px; height:44px; border-radius:10px;
  background:linear-gradient(135deg, #915959, #c47a7a);
  color:var(--white);
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:14px;
  flex-shrink:0; text-transform:uppercase;
}
.cp-chip {
  font-size:10px; font-weight:600;
  padding:3px 8px; border-radius:10px;
  background:var(--surface-alt); color:var(--text-mid);
  border:1px solid var(--border);
}
.cp-chip.ok    { background:rgba(31,122,71,.10);  color:#1f7a47; border-color:rgba(31,122,71,.2); }
.cp-chip.warn  { background:rgba(200,154,62,.15); color:#8a6010; border-color:rgba(200,154,62,.3); }
.cp-chip.alert { background:rgba(145,89,89,.10);  color:var(--bordo); border-color:rgba(145,89,89,.25); }
.cp-tag-chip { display:inline-block; user-select:none; transition:all .12s; }

/* ============================================================
   CORPORATE — Profile
   ============================================================ */
.cprofile-header {
  display:flex; gap:18px; align-items:center;
  padding:20px 22px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); margin-bottom:16px;
}
.cprofile-avatar {
  width:60px; height:60px; border-radius:12px;
  background:linear-gradient(135deg, #915959, #c47a7a);
  color:var(--white);
  display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:20px; text-transform:uppercase;
  flex-shrink:0;
}
.cprofile-headinfo { flex:1; min-width:0; }
.cprofile-name {
  font-size:22px; font-weight:700; color:var(--text);
  margin-bottom:6px; line-height:1.2; letter-spacing:-.4px;
}
.cprofile-meta { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.cp-code-badge {
  font-family:'SF Mono', Menlo, monospace;
  font-size:11px; font-weight:600; color:var(--text-mid);
  background:var(--surface-alt); border:1px solid var(--border);
  padding:3px 9px; border-radius:5px; letter-spacing:.3px;
}
.cp-status-badge {
  font-size:11px; font-weight:600; padding:4px 11px; border-radius:14px;
}
/* .active e .linked compartilham o verde, mas nao sao sinonimos: .linked diz
   "tem vinculo", .active diz "status ativo". Manter separados evita que uma
   mudanca em um arraste o outro. */
.cp-status-badge.linked,
.cp-status-badge.active   { background:rgba(31,122,71,.12);  color:#1f7a47; }
.cp-status-badge.unlinked { background:rgba(200,154,62,.18); color:#8a6010; }
.cp-status-badge.pre      { background:rgba(74,120,163,.12); color:var(--blue2); }
.cp-status-badge.inactive { background:rgba(120,120,120,.12); color:var(--text-mid); }
/* .closed = empresa "Encerrada": tag bordô; a linha da lista fica apagada
   (opacity) como a de Inativa. .deceased = pessoa "Falecido/a": cinza escuro
   com letras brancas. */
.cp-status-badge.closed   { background:rgba(145,89,89,.14); color:var(--bordo); }
.cp-status-badge.deceased { background:#4a5057; color:#fff; }
/* Sufixo do status "Inativo – Bloqueado/Relacionável" (motivo da inativação):
   vermelho suave / verde claro suave, dentro do badge cinza de Inativo. */
.cp-inact-blocked   { color:#c0605c; font-weight:700; }
.cp-inact-relatable { color:#5da77b; font-weight:700; }
/* .archive = status "Histórico Financeiro" (acervo da carga do legado).
   Cinza mais frio e com borda tracejada para nao se confundir com .inactive:
   inativo foi cliente e parou; acervo nunca foi base viva. */
.cp-status-badge.archive  { background:rgba(96,108,120,.10); color:#606C78;
                            border:1px dashed rgba(96,108,120,.45); }

/* ── Fase 2b: cabeçalho da empresa no Portal do Parceiro (escopado no
   #partner-shell — NÃO afeta o perfil de cliente do portal interno). ── */
#partner-shell .cprofile-header { border:1px solid var(--pp-line,#E9E4DA); border-radius:16px; box-shadow:var(--pp-shadow); padding:22px 24px; }
#partner-shell .cprofile-avatar-co { background:linear-gradient(160deg,#E9F0F7,#DCE7F1); color:#43678C; border:1px solid #D5E2EF; }
#partner-shell .cprofile-name { font-size:25px; font-weight:800; color:#243040; letter-spacing:-.5px; }
#partner-shell .cp-code-badge { font-family:var(--font); background:#F1EEE8; color:#6D5D45; border:0; border-radius:8px; padding:4px 10px; font-size:12px; letter-spacing:0; }
#partner-shell .cp-status-badge { border-radius:999px; padding:4px 12px; font-weight:700; }
#partner-shell .cp-status-badge.linked { background:#E4F5EC; color:#127a41; }
#partner-shell .cp-status-badge.linked::before { content:""; display:inline-block; width:6px; height:6px; border-radius:50%; background:#1E9D57; margin-right:6px; vertical-align:middle; }

.cprofile-grid {
  display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);
  gap:16px;
}
.cprofile-col-right { display:flex; flex-direction:column; gap:16px; }

.cprofile-card .cprofile-card-title,
.cprofile-card-title {
  font-size:11px; font-weight:700; color:var(--text);
  text-transform:uppercase; letter-spacing:.7px;
  padding-bottom:12px; margin-bottom:10px;
  border-bottom:1px solid var(--border);
  display:flex; justify-content:space-between; align-items:center;
}

.cprofile-row { padding:11px 0; border-bottom:1px solid var(--border-soft); }
.cprofile-row:last-child { border-bottom:0; }
.cprofile-row-label {
  font-size:10px; font-weight:600; color:var(--text-mid);
  text-transform:uppercase; letter-spacing:.6px;
  margin-bottom:4px;
}
.cprofile-row-value {
  font-size:13px; color:var(--text); font-weight:500;
  line-height:1.4;
}
.cprofile-notes {
  font-size:13px; color:var(--text); line-height:1.5;
  white-space:pre-wrap;
}

.cprofile-link-row {
  display:flex; gap:10px; align-items:center;
  padding:11px 13px; margin-bottom:6px;
  background:var(--surface-alt); border-radius:8px;
  cursor:pointer; transition:background .12s;
  font-size:12px;
}
.cprofile-link-row:hover { background:rgba(145,89,89,.06); }
.cprofile-link-name { font-weight:600; color:var(--text); }

/* Tabs no perfil */
.cprofile-tabs {
  display:flex; gap:0;
  border-bottom:1px solid var(--border);
  margin-bottom:16px;
}
.cprofile-tab {
  padding:11px 18px; background:none; border:none;
  border-bottom:2px solid transparent;
  cursor:pointer; font-weight:600; color:var(--text-light);
  font-size:13px; transition:color .12s, border-color .12s;
  font-family:var(--font);
}
.cprofile-tab:hover { color:var(--text); }
.cprofile-tab.active { color:#2f6bde; border-bottom-color:#2f6bde; }
.cprofile-tab.active .tab-count { color:inherit; }
.cprofile-tab .tab-count { font-size:11px; color:var(--text-light); margin-left:5px; font-weight:500; }

.cprofile-address-block { padding:12px 0; border-bottom:1px solid var(--border-soft); }
.cprofile-address-block:last-child { border-bottom:0; }
.cprofile-address-title { font-size:13px; font-weight:600; color:var(--text); margin-bottom:2px; }
.cprofile-address-subtitle { font-size:11px; color:var(--text-light); font-style:italic; margin-bottom:6px; }
.cprofile-address-value { font-size:12px; color:var(--text-mid); }

@media (max-width:900px) {.cprofile-grid { grid-template-columns:1fr; }
}

/* ============================================================
   CORPORATE — CHART (estrutura societaria visual)
   Layout: arvore vertical com cards conectados por linhas CSS.
   Conectores feitos com pseudo-elements (sem SVG) para zero dep.
   ============================================================ */
.corp-chart-root { display:flex; justify-content:center; min-width:fit-content; padding:20px 8px; }
.corp-chart-node { display:flex; flex-direction:column; align-items:center; position:relative; }

/* ========== GOVERNANCA — anexo LATERAL (direita do card) ==========
   Diretores, Managers, Officers, Nominees aparecem ao LADO da empresa,
   conectados por linha tracejada horizontal. Visual de "anexo" — nao
   compete com hierarquia de propriedade.
   ============================================================ */
.corp-chart-card-wrap {
  position:relative;
  display:inline-flex;
  align-items:flex-start;
  /* Governanca EM FLUXO a direita (largura fixa 190). O wrap RESERVA a altura da
     governanca, entao a subsidiaria fica abaixo dela e NADA sobrepoe. Um spacer a
     esquerda (mesma largura da governanca) centraliza o card no conector; um
     conector vertical (::after), atras do card, liga o card a subsidiaria de baixo
     atravessando a altura reservada. Robusto para qualquer nº de partes. */
}
.corp-chart-card-wrap:has(> .corp-chart-governance-side)::before {
  content:''; flex:none; width:244px; /* = governanca 210 + margin-left 34 */
}
/* Conector vertical (card -> subsidiaria) SO quando o no realmente tem subsidiaria
   — evita a "linha fantasma" abaixo de um no folha com governanca. */
.corp-chart-node:has(> .corp-chart-subsidiaries) > .corp-chart-card-wrap:has(> .corp-chart-governance-side)::after {
  content:''; position:absolute; left:50%; top:0; bottom:0;
  width:2px; background:var(--border-strong); transform:translateX(-50%); z-index:0;
}
.corp-chart-card-wrap > .corp-chart-card { position:relative; z-index:1; }
.corp-chart-governance-side {
  position:relative; flex:none; width:210px;
  margin-left:34px;
  display:flex; flex-direction:column; align-items:flex-start; gap:14px;
}
/* Linha tracejada horizontal conectando ao card */
.corp-chart-governance-side::before {
  content:''; position:absolute;
  right:100%; top:36px; /* aponta para ~o centro do card de empresa (governanca no topo) */
  width:34px; height:0;
  border-top:1.5px dashed var(--text-light);
}
.corp-chart-governance-label-side {
  font-size:9px; font-weight:700; letter-spacing:1.4px;
  color:var(--text-light); text-transform:uppercase;
  background:var(--surface); padding:3px 10px; border-radius:10px;
  border:1px dashed var(--border-strong);
  margin-bottom:4px;
}
/* Cards de governanca a direita ficam alinhados a esquerda do bloco */
.corp-chart-governance-side > .corp-chart-node { align-self:flex-start; }
/* Cards de PARTE (governanca) minimalistas: compactos e distintos do "quadrado"
   de empresa. Cards curtos tambem evitam a sobreposicao entre niveis. Nao afeta
   os cards de dono (arvore de propriedade), que ficam fora da governanca. */
/* Minimalista: avatar redondo a ESQUERDA + nome e pilula do papel a DIREITA,
   SEM caixa de card (nada de fundo/borda/sombra). */
.corp-chart-governance-side .corp-chart-card {
  display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto;
  align-items:center; column-gap:11px; row-gap:3px;
  width:100%; min-width:0; max-width:none;
  padding:9px 12px; text-align:left;
  background:transparent; box-shadow:none;
  border:1px dashed var(--border-strong); border-radius:12px;
}
.corp-chart-governance-side .corp-chart-card:hover { background:transparent; box-shadow:none; transform:none; border-style:solid; }
.corp-chart-governance-side .corp-chart-card-icon {
  grid-column:1; grid-row:1 / 3; align-self:center; margin:0;
  width:40px; height:40px;
  border:1.5px solid var(--border-strong); border-radius:50%;
  background:transparent; color:var(--text-light);
}
.corp-chart-governance-side .corp-chart-card:hover .corp-chart-card-icon { border-color:var(--border-strong); color:var(--text-mid); }
.corp-chart-governance-side .corp-chart-card-title {
  grid-column:2; grid-row:1; margin:0; text-align:left;
  font-size:12.5px; font-weight:600; line-height:1.25; color:var(--text);
}
.corp-chart-governance-side .corp-chart-meta {
  grid-column:2; grid-row:2; justify-content:flex-start; margin:0;
}

/* ========== SUBSIDIARIAS — cadeia DESCENDENTE (empresas que esta detem) ==========
   Mesma logica visual da hierarquia ascendente: linha solida + conectores em T.
   Aparece abaixo do card central. Cada subsidiaria pode ter as suas
   proprias subsidiarias (recursao para baixo).
   ============================================================ */
.corp-chart-children,
.corp-chart-subsidiaries {
  display:flex; gap:24px; align-items:flex-start; justify-content:center;
  position:relative; padding-top:36px;
  min-width:fit-content;
}
.corp-chart-children::before,
.corp-chart-subsidiaries::before {
  content:''; position:absolute; top:0; left:50%;
  width:2px; height:18px; background:var(--border-strong); transform:translateX(-50%);
}
.corp-chart-children::after,
.corp-chart-subsidiaries::after {
  content:''; position:absolute; top:18px; left:0; right:0;
  height:2px; background:var(--border-strong);
}
.corp-chart-children:has(> .corp-chart-node:only-child)::after,
.corp-chart-subsidiaries:has(> .corp-chart-node:only-child)::after { display:none; }
.corp-chart-children > .corp-chart-node::before,
.corp-chart-subsidiaries > .corp-chart-node::before {
  content:''; position:absolute; top:-18px; left:50%;
  width:2px; height:18px; background:var(--border-strong); transform:translateX(-50%);
}

/* ========== JOINT TENANCY (JTWROS) — bloco que envolve membros ========== */
.corp-chart-jt-group {
  display:flex; flex-direction:column; align-items:stretch;
  border:1.5px solid var(--gold);
  border-radius:12px;
  padding:8px 10px 12px;
  background:rgba(200,154,62,.06);
  position:relative;
}
.corp-chart-jt-header {
  display:flex; align-items:center; gap:8px;
  margin-bottom:8px;
  padding:0 4px;
  font-family:var(--font);
}
.corp-chart-jt-icon { color:var(--gold); font-size:14px; line-height:1; }
.corp-chart-jt-label {
  flex:1;
  font-size:10px; font-weight:800; letter-spacing:.6px;
  color:#8a6010; text-transform:uppercase;
}
.corp-chart-jt-total {
  font-size:11px; font-weight:700;
  color:#8a6010;
  font-variant-numeric:tabular-nums;
}
.corp-chart-jt-members {
  display:flex; gap:14px; align-items:flex-end; justify-content:center;
}

/* ========== ACIMA do card (cadeia de socios ascendente: UBO no topo) ========== */
.corp-chart-owners {
  display:flex; gap:24px; align-items:flex-end; justify-content:center;
  position:relative; padding-bottom:36px;
  min-width:fit-content;
}
/* Linha vertical do trunk descendo ate o card (abaixo do bloco) */
.corp-chart-owners::after {
  content:''; position:absolute; bottom:0; left:50%;
  width:2px; height:18px; background:var(--border-strong); transform:translateX(-50%);
}
/* Linha horizontal conectando os owners */
.corp-chart-owners::before {
  content:''; position:absolute; bottom:18px; left:0; right:0;
  height:2px; background:var(--border-strong);
}
.corp-chart-owners:has(> .corp-chart-node:only-child)::before { display:none; }
/* Linha vertical descendo de cada owner ate a horizontal */
.corp-chart-owners > .corp-chart-node::after {
  content:''; position:absolute; bottom:-18px; left:50%;
  width:2px; height:18px; background:var(--border-strong); transform:translateX(-50%);
}

/* ===== CARDS — base (empresa) ===== */
.corp-chart-card {
  position:relative;
  min-width:180px; max-width:220px;
  padding:16px 14px 12px;
  background:var(--surface);
  border:1.5px solid var(--border-strong);
  border-radius:10px;
  text-align:center;
  box-shadow:var(--shadow-sm);
  transition:box-shadow .15s, border-color .15s, transform .15s;
}
.corp-chart-card:hover { box-shadow:var(--shadow); border-color:var(--bordo2); }

/* Affordance de clique — cards navegaveis */
.corp-chart-card-clickable { cursor:pointer; }
.corp-chart-card-clickable:hover {
  border-color:var(--bordo);
  box-shadow:0 8px 20px rgba(145,89,89,.12), 0 2px 6px rgba(15,16,20,.08);
  transform:translateY(-1px);
}
.corp-chart-card-person.corp-chart-card-clickable:hover {
  background:var(--surface);
  border-style:solid;
  border-color:var(--bordo);
}
/* Empresa em foco nunca eh clicavel (voce ja esta nela) */
.corp-chart-card-root { cursor:default; }
.corp-chart-card-root:hover { transform:translateY(-2px); /* mantem o estado original */ }

/* ===== Card EMPRESA RAIZ (o que o usuario esta vendo agora) =====
   Destaque forte: mais largo, sombra azul, anel exterior. */
.corp-chart-card-root {
  min-width:220px; max-width:280px;
  padding:20px 18px 16px;
  background:linear-gradient(180deg, #fff, rgba(74,120,163,.04));
  border:2px solid var(--blue2);
  box-shadow:0 0 0 4px rgba(74,120,163,.10), 0 8px 24px rgba(74,120,163,.18);
  transform:translateY(-2px);
}
.corp-chart-card-root:hover { border-color:var(--blue2); box-shadow:0 0 0 4px rgba(74,120,163,.14), 0 10px 28px rgba(74,120,163,.22); }
.corp-chart-card-root .corp-chart-card-title { font-size:15px; }

/* ===== Card EMPRESA (sub) — solido como o raiz mas sem o anel ===== */
.corp-chart-card-company {
  border-style:solid;
}

/* ===== Card PESSOA — visual SUTIL, distingue de empresa =====
   Sem caixa "fechada": usa contorno fino, fundo neutro,
   icone redondo (vs. quadrado das empresas). */
.corp-chart-card-person {
  background:transparent;
  border:1px dashed var(--border-strong);
  box-shadow:none;
  padding:12px 14px 10px;
  min-width:160px; max-width:200px;
}
.corp-chart-card-person:hover {
  background:var(--surface);
  border-style:solid;
  box-shadow:var(--shadow-sm);
}

/* ===== ICONES ===== */
.corp-chart-card-icon {
  width:38px; height:38px; margin:0 auto 8px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(74,120,163,.10);
  border-radius:9px;
  color:var(--blue2);
}
.corp-chart-card-root .corp-chart-card-icon {
  width:44px; height:44px;
  background:var(--blue2); color:#fff;
  border-radius:10px;
  box-shadow:0 4px 12px rgba(74,120,163,.30);
}
/* Pessoa: icone redondo, neutro */
.corp-chart-card-person .corp-chart-card-icon {
  width:32px; height:32px; margin-bottom:6px;
  background:transparent;
  border:1px solid var(--border-strong);
  border-radius:50%;
  color:var(--text-mid);
}
.corp-chart-card-person:hover .corp-chart-card-icon {
  border-color:var(--text-mid); color:var(--text);
}

/* ===== TIPOGRAFIA ===== */
.corp-chart-card-title {
  font-size:13px; font-weight:700; color:var(--navy);
  line-height:1.3; margin-bottom:4px;
  word-wrap:break-word;
}
.corp-chart-card-person .corp-chart-card-title {
  font-size:12px; font-weight:600; color:var(--text);
}
.corp-chart-card-sub {
  font-size:11px; color:var(--text-mid);
  margin-bottom:8px; font-weight:500;
}
.corp-chart-meta {
  display:flex; flex-wrap:wrap; gap:4px; justify-content:center; margin-top:6px;
}
.corp-chart-pct {
  font-size:14px; font-weight:700; color:var(--navy); display:block; width:100%; margin-top:4px;
  font-family:var(--font-display, var(--font));
  font-variant-numeric:tabular-nums;
}
.corp-chart-card-person .corp-chart-pct {
  font-size:13px; color:var(--text);
}
.corp-chart-class {
  font-size:10px; font-weight:600; color:var(--text-mid);
  background:var(--surface-alt); padding:2px 7px; border-radius:10px;
}
.corp-chart-root-badge {
  display:inline-block; margin-top:8px;
  font-size:10px; font-weight:800; letter-spacing:.7px;
  color:#fff; background:var(--blue2);
  padding:4px 10px; border-radius:10px; text-transform:uppercase;
}

/* ===== CHIPS DE PAPEL (mesmas cores do filtro de tags acima) ===== */
.corp-chart-chip {
  display:inline-block;
  font-size:9px; font-weight:700; letter-spacing:.4px;
  padding:3px 8px; border-radius:10px; text-transform:uppercase;
  border:1px solid;
}
.corp-chart-chip-shareholder, .corp-chart-chip-socio { color:var(--blue2); border-color:rgba(74,120,163,.4); background:rgba(74,120,163,.08); }
.corp-chart-chip-diretor, .corp-chart-chip-director, .corp-chart-chip-manager, .corp-chart-chip-officer { color:var(--text-mid); border-color:var(--border-strong); background:var(--surface-alt); }
.corp-chart-chip-ubo, .corp-chart-chip-beneficiario_final { color:#a06410; border-color:rgba(200,154,62,.45); background:rgba(200,154,62,.10); }
.corp-chart-chip-nominee { color:#7a5b9b; border-color:rgba(140,100,180,.40); background:rgba(140,100,180,.08); }
.corp-chart-chip-secretario, .corp-chart-chip-signatario { color:var(--green); border-color:rgba(31,122,71,.40); background:rgba(31,122,71,.08); }
.corp-chart-chip-parte_relacionada { color:var(--text-mid); border-color:var(--border-strong); background:var(--surface-alt); }

/* ===== EXPAND/COLLAPSE ===== */
.corp-chart-expand {
  position:absolute; left:50%; bottom:-12px; transform:translateX(-50%);
  width:24px; height:24px; border-radius:50%;
  background:var(--surface); border:1.5px solid var(--border-strong);
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--text-mid);
  transition:transform .2s, color .15s, border-color .15s;
  z-index:2;
}
.corp-chart-expand:hover { color:var(--bordo); border-color:var(--bordo); }
.corp-chart-expand.open { transform:translateX(-50%) rotate(180deg); color:var(--bordo); border-color:var(--bordo); }
/* Variante para owners — botao no TOPO do card (apontando para cima) */
.corp-chart-expand-up {
  bottom:auto; top:-12px;
  transform:translateX(-50%) rotate(180deg);
}
.corp-chart-expand-up.open { transform:translateX(-50%) rotate(0deg); }
.corp-chart-nested,
.corp-chart-nested-owners { /* container — animacao opcional */ }

/* ============================================================
   PARTNER CRM — modal com tabs + cards de contato/doc/interacao
   ============================================================ */
.cspm-tab {
  background:none; border:none; cursor:pointer;
  padding:8px 14px; font-size:12px; font-weight:600; font-family:var(--font);
  color:var(--text-light);
  border-bottom:2px solid transparent;
  transition:color .12s, border-color .12s;
}
.cspm-tab:hover { color:var(--text-mid); }
.cspm-tab.active { color:var(--bordo); border-bottom-color:var(--bordo); }
.cspm-tab-count {
  display:inline-block; min-width:18px;
  font-size:9px; font-weight:700; padding:1px 5px; margin-left:4px;
  background:var(--surface-alt); color:var(--text-mid);
  border-radius:8px;
}
.cspm-tab.active .cspm-tab-count { background:rgba(145,89,89,.15); color:var(--bordo); }

.cspm-pane { animation:fadeIn .15s ease; }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }

/* Chips de areas (multi-select) */
.cspm-area-chip {
  display:inline-block; padding:5px 12px; border-radius:14px;
  font-size:11px; font-weight:600;
  border:1px solid var(--border-strong);
  background:var(--surface); color:var(--text-mid);
  cursor:pointer;
  transition:all .12s;
}
.cspm-area-chip:hover { border-color:var(--bordo2); color:var(--text); }
.cspm-area-chip.on {
  background:var(--bordo); color:#fff; border-color:var(--bordo);
}
.cspm-area-chip.on:hover { background:#7a4848; }

/* Cards de contato/doc/interacao */
.cspm-contact-card,
.cspm-doc-card,
.cspm-inter-card {
  border:1px solid var(--border);
  border-radius:8px;
  padding:12px 14px;
  margin-bottom:8px;
  background:var(--surface);
  cursor:pointer;
  transition:border-color .12s, box-shadow .12s;
}
.cspm-contact-card:hover,
.cspm-doc-card:hover,
.cspm-inter-card:hover {
  border-color:var(--bordo2);
  box-shadow:var(--shadow-sm);
}

/* ============================================================
   CORPORATE — People table
   ============================================================ */
.cp-people-table tbody tr.cp-people-row { cursor:pointer; transition:background .12s; }
.cp-people-table tbody tr.cp-people-row:hover { background:var(--surface-alt); }
.cp-people-table td { vertical-align:top; padding:12px 12px; }
.cp-people-comp-row {
  padding:5px 9px; margin-bottom:4px;
  background:var(--surface-alt); border-radius:6px;
  cursor:pointer; transition:background .12s;
}
.cp-people-comp-row:hover { background:rgba(145,89,89,.07); }
.cp-people-comp-row:last-child { margin-bottom:0; }

/* ============================================================
   SCROLLBAR (sutil)
   ============================================================ */
*::-webkit-scrollbar { width:10px; height:10px; }
*::-webkit-scrollbar-track { background:transparent; }
*::-webkit-scrollbar-thumb { background:rgba(120,120,120,.18); border-radius:10px; border:2px solid transparent; background-clip:padding-box; }
*::-webkit-scrollbar-thumb:hover { background:rgba(120,120,120,.30); border:2px solid transparent; background-clip:padding-box; }

/* Scrollbar dark (sidebar) */
.snav::-webkit-scrollbar-thumb { background:rgba(255,255,255,.10); border:2px solid transparent; background-clip:padding-box; }
.snav::-webkit-scrollbar-thumb:hover { background:rgba(255,255,255,.20); border:2px solid transparent; background-clip:padding-box; }

/* ============================================================
   FOCUS RING (acessibilidade) — visivel apenas para navegacao por teclado.
   Sprint 1: estende a cobertura para inputs/textareas/selects/checkboxes
   ============================================================ */
button:focus-visible,
a:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible,
.fi:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline:2px solid var(--bordo);
  outline-offset:2px;
  border-radius:4px;
  box-shadow:0 0 0 4px rgba(145,89,89,.15);
}
/* Mouse click nao mostra ring — mantem visual limpo para uso normal */
button:focus:not(:focus-visible),
[role="button"]:focus:not(:focus-visible) {
  outline:none;
}

/* ============================================================
   UTILS — divisor sutil
   ============================================================ */
hr { border:none; border-top:1px solid var(--border); margin:18px 0; }

/* ============================================================
   ICON SYSTEM (Lucide-style SVG)
   - <span data-icon="X"></span> contém o SVG injetado por JS
   - SVG herda cor via stroke="currentColor"
   ============================================================ */
[data-icon] {
  display:inline-flex; align-items:center; justify-content:center;
  flex-shrink:0; line-height:0;
}
[data-icon] svg { display:block; }

/* Sidebar nav items */
.ni > span[data-icon] {
  width:18px; height:18px; opacity:.65;
  transition:opacity .15s;
}
.ni:hover > span[data-icon] { opacity:.9; }
.ni.active > span[data-icon] { opacity:1; }
.ni > span[data-icon] svg { width:16px; height:16px; }

/* Sidebar foot buttons */
.btnout span[data-icon],
.sfoot button span[data-icon] { opacity:.85; }

/* Manter compatibilidade com spans unicode legados (caso restem) */
.ni > span:first-child:not([data-icon]) {
  opacity:.6; font-size:14px; width:18px; text-align:center;
  display:inline-flex; align-items:center; justify-content:center;
}
.ni.active > span:first-child:not([data-icon]) { opacity:1; }

/* ============================================================
   MOBILE — REFINAMENTOS UX/UI (consolidados)
   ============================================================ */

/* 1. Sync widget acima da bottom nav (~80px + safe-area) */
body.mobile-active #sync-widget {
  bottom: calc(90px + env(safe-area-inset-bottom, 0px)) !important;
  right: 12px !important;
  font-size: 10px !important;
  padding: 5px 10px !important;
  opacity: .92 !important;
}

/* 2. Bottom nav: indicador visual mais forte no item ativo (dot pill) */
.mob-bn { position:relative; }
.mob-bn.active::before {
  content:""; position:absolute; top:6px; left:50%;
  width:24px; height:3px; border-radius:2px;
  background: var(--bordo);
  transform: translateX(-50%);
  animation: mobNavDotIn .22s ease-out;
}
@keyframes mobNavDotIn { from{opacity:0;transform:translateX(-50%) scaleX(.4);} to{opacity:1;transform:translateX(-50%) scaleX(1);} }
/* FAB não tem o indicador */
.mob-bn.mob-bn-fab.active::before { display:none; }
/* Touch targets reforçados (Apple HIG: 44pt mínimo) */
.mob-bn { min-height: 64px; }

/* 3. PEDIDOS legend: quebra de linha em mobile + espaçamento generoso */
body.mobile-active #dash-ped-legend {
  flex-wrap: wrap !important;
  gap: 4px 12px !important;
  padding: 8px 12px !important;
  font-size: 10px !important;
  line-height: 1.6 !important;
}
body.mobile-active #dash-ped-legend > span:last-child {
  flex-basis: 100%;
  margin-left: 0 !important;
  padding-top: 2px;
  border-top: 1px solid var(--border-soft);
  margin-top: 4px;
}

/* 4. Topbar do Dashboard mobile: ações empilhadas, "Exportar" full-width */
body.mobile-active.mob-show-main #page-dashboard .topbar > div:nth-child(2) > * {
  flex: 1 1 100% !important;
  white-space: normal !important;
  text-align: center;
  justify-content: center !important;
}
body.mobile-active.mob-show-main #page-dashboard #topbar-date {
  font-size: 11px !important;
  text-align: left;
  padding: 4px 0;
  flex: 1 1 100% !important;
}
body.mobile-active.mob-show-main #page-dashboard #btn-pipedrive-sync,
body.mobile-active.mob-show-main #page-dashboard #btn-export-dash {
  padding: 9px 12px !important;
  min-height: 38px;
  font-size: 12px !important;
}

/* 5. Tabela com scroll horizontal: sombra/fade indicando que tem mais conteúdo */
body.mobile-active.mob-show-main .tw {
  position: relative;
  background:
    linear-gradient(to right, var(--surface) 30%, rgba(255,255,255,0)) left center / 24px 100% no-repeat,
    linear-gradient(to left,  var(--surface) 30%, rgba(255,255,255,0)) right center / 24px 100% no-repeat,
    linear-gradient(to right, rgba(0,0,0,.08), rgba(0,0,0,0)) left center / 16px 100% no-repeat,
    linear-gradient(to left,  rgba(0,0,0,.08), rgba(0,0,0,0)) right center / 16px 100% no-repeat;
  background-attachment: local, local, scroll, scroll;
}

/* 6. Cards de Tarefas: cursor pointer + feedback de tap mais claro */
body.mobile-active .mob-card[data-mob-rid] {
  cursor: pointer;
  transition: transform .1s, box-shadow .15s, background .15s;
}
body.mobile-active .mob-card[data-mob-rid]:active {
  transform: scale(.985);
  background: var(--surface-alt);
}

/* 7. Status sheet (long-press): chips com touch target adequado */
body.mob-ss-open #mob-ss-options button {
  min-height: 40px !important;
  padding: 10px 14px !important;
  font-size: 13px !important;
  flex: 0 1 auto;
}
#mob-ss-options { padding: 4px 6px 8px; max-height: 65vh; overflow-y: auto; }
#mob-ss-options::-webkit-scrollbar { width: 0; }

/* 8. Drawer "Sair" — área maior + visual de risco */
.mob-drawer-foot .mob-drawer-link { min-height: 48px; }

/* 9. Filtros do dash em mobile — melhor pareamento de selects */
body.mobile-active.mob-show-main #dash-filters select,
body.mobile-active.mob-show-main #dash-filters input,
body.mobile-active.mob-show-main #dash-filters .multisel button {
  min-height: 36px !important;
  padding: 7px 10px !important;
  font-size: 13px !important; /* ≥13px ajuda no toque */
}
body.mobile-active.mob-show-main #dash-filters input[id="df-search"] {
  flex: 1 1 100% !important;
}
body.mobile-active.mob-show-main #dash-filters > div > span:first-child {
  flex: 1 1 100% !important;
}

/* 10. Dashboard: "Todos os Registros" header — mais respiro */
body.mobile-active.mob-show-main #page-dashboard .content > div[style*="margin-bottom:12px"] {
  margin-top: 10px !important;
}

/* 11. Mob-topbar (custom Tarefas) — sticky e botão Sair com mais área */
.mob-topbar { position: sticky; top: 0; z-index: 5; }
.mob-topbar .mob-logout { min-height: 36px; padding: 8px 14px !important; font-weight: 600; }

/* 12. Mob-tabs sticky abaixo da topbar */
.mob-tabs { top: 0; }
.mob-tab { min-height: 44px; }

/* 13. Action sheet items — alvos maiores */
.mob-as-item { min-height: 56px; }
.mob-as-cancel { min-height: 48px; }

/* 14. Drawer links — alvos maiores e leitura confortável */
.mob-drawer-link { min-height: 46px; font-size: 14px; }
.mob-drawer-section { font-size: 10px; }

/* 15. Modal de detalhe em mobile: ações sticky no rodapé com sombra superior sutil */
@media (max-width: 768px){
  .modal-overlay.open .modal .mf {
    box-shadow: 0 -2px 8px rgba(20,20,25,.04);
  }
  /* Botões em modal mobile: alvo mínimo 44px */
  .modal-overlay.open .modal button:not(.mc) { min-height: 42px; }
}

/* 16. Page Dashboard: KPI cards com dimensão mais legível */
body.mobile-active.mob-show-main .sc { min-height: 76px; }
body.mobile-active.mob-show-main .sv { font-size: 22px !important; }
body.mobile-active.mob-show-main .ss { line-height: 1.4; }

/* ============================================================
   COMERCIAL — PIPELINE KANBAN
   ============================================================ */
.pd-kanban {
  display:flex; gap:12px;
  overflow-x:auto; overflow-y:hidden;
  padding-bottom:8px;
  align-items:flex-start;
  scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch;
}
.pd-col {
  flex:0 0 280px; max-width:280px;
  background:var(--surface-alt);
  border:1px solid var(--border);
  border-radius:10px;
  padding:10px 10px 14px;
  display:flex; flex-direction:column;
  max-height: calc(100vh - 220px);
  scroll-snap-align:start;
  transition:background .15s, border-color .15s;
}
.pd-col.pd-col-hover { background:#f0e7dc; border-color:var(--bordo); }
.pd-col-h { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:4px 4px 2px; }
.pd-col-t { font-size:12px; font-weight:700; color:var(--text); letter-spacing:.2px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pd-col-meta { font-size:10px; color:var(--text-light); font-weight:600; }
.pd-col-sub { font-size:11px; color:var(--text-mid); font-weight:600; padding:0 4px 8px; border-bottom:1px dashed var(--border); margin-bottom:8px; }
.pd-col-body { flex:1; overflow-y:auto; padding-right:2px; }
.pd-col-body::-webkit-scrollbar { width:4px; }
.pd-col-body::-webkit-scrollbar-thumb { background:rgba(0,0,0,.1); border-radius:2px; }
.pd-col-empty {
  text-align:center; padding:18px 8px;
  font-size:10px; color:var(--text-light); font-style:italic;
  background:rgba(0,0,0,.02); border-radius:6px;
  border:1px dashed var(--border);
}
.pd-card {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
  padding:9px 11px;
  margin-bottom:6px;
  cursor:grab;
  transition:box-shadow .15s, transform .1s, border-color .15s;
  box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.pd-card:hover { border-color:var(--border-strong); box-shadow: 0 2px 6px rgba(0,0,0,.06); }
.pd-card:active { cursor:grabbing; }
/* negócio aberto sem próxima atividade — realce claro (pedido do dono) */
.pd-card-alerta { border-left:3px solid var(--bordo, #b42318); background:#fdf6f5; }
.pd-card-alerta-l { display:flex; align-items:center; gap:5px; font-size:11px; font-weight:600;
  color:var(--bordo, #b42318); margin-top:3px; }
.pd-card.pd-dragging { opacity:.5; transform:rotate(-1deg) scale(.98); }
.pd-card-title { font-size:12px; font-weight:600; color:var(--text); line-height:1.35; margin-bottom:3px; word-break:break-word; }
.pd-card-sub { font-size:10px; color:var(--text-light); margin-bottom:6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pd-card-foot { display:flex; align-items:center; gap:6px; font-size:10px; }
.pd-card-val { font-weight:700; color:var(--navy); }
.pd-card-owner { background:rgba(74,120,163,.10); color:var(--blue2); padding:2px 7px; border-radius:8px; font-weight:600; font-size:9px; }
.pd-card-aging { background:rgba(145,89,89,.12); color:var(--bordo); padding:2px 6px; border-radius:8px; font-weight:700; font-size:9px; }

/* ----- Kanban de Prioridade (Contabilidade Essential/Avulsa) ----- */
.pd-col.emp-kcol-unset { border-color:var(--border-strong); background:rgba(120,120,120,.05); }
.pd-col.emp-kcol-unset .pd-col-t { color:var(--text-mid); }
.emp-prio-kanban .pd-col { max-height: calc(100vh - 380px); min-height:180px; }

/* ----- Toggle Lista/Kanban ----- */
.emp-view-toggle { display:flex; border:1px solid var(--border-strong); border-radius:8px; overflow:hidden; }
.emp-view-btn { padding:6px 12px; font-size:11px; font-weight:600; background:var(--surface); color:var(--text-mid); border:none; border-right:1px solid var(--border-strong); cursor:pointer; font-family:var(--font); }
.emp-view-btn:last-child { border-right:none; }
.emp-view-btn.active { background:var(--navy); color:#fff; }
/* .emp-sort-btn saiu junto com o botão de ordenar por prioridade da topbar:
   a ordenação agora vive no menu de cada coluna (.emp-th-btn → .emp-th-menu). */

/* ----- Modal de deal: anotações ----- */
.pd-deal-note {
  background:var(--gelo, #fafaf8);
  border:1px solid var(--border);
  border-left:3px solid var(--bordo);
  border-radius:6px;
  padding:8px 10px;
  margin-bottom:6px;
  font-family:var(--font);
}
.pd-deal-note-head {
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:4px;
}
.pd-deal-note-who {
  font-size:11px;
  font-weight:700;
  color:var(--navy);
}
.pd-deal-note-when {
  font-size:10px;
  color:var(--text-light);
  flex:1;
}
.pd-deal-note-btn {
  background:none;
  border:1px solid transparent;
  border-radius:5px;
  padding:2px 6px;
  font-size:12px;
  cursor:pointer;
  line-height:1;
}
.pd-deal-note-btn:hover { background:#fff; border-color:var(--border-strong); }
.pd-deal-note-btn-danger:hover { background:rgba(145,89,89,.08); }
.pd-deal-note-body {
  font-size:12px;
  color:var(--text);
  line-height:1.45;
  word-break:break-word;
}
.pd-note-edit {
  background:#fff;
  border:1px solid var(--border-strong);
  border-radius:7px;
  padding:8px;
  margin-bottom:10px;
}
.pd-note-edit textarea {
  width:100%;
  resize:vertical;
  font-family:var(--font);
  font-size:12px;
  border:1px solid var(--border);
  border-radius:5px;
  padding:6px 8px;
  min-height:64px;
}
.pd-note-edit-actions {
  display:flex;
  justify-content:flex-end;
  gap:6px;
  margin-top:6px;
}

/* Links de navegação dentro da modal de deal (cliente, organização, vendedor) */
.pd-deal-link {
  background:none; border:none; padding:0;
  font-family:var(--font);
  font-size:13px; font-weight:600;
  color:var(--blue2);
  cursor:pointer;
  text-align:left;
  display:inline-flex; align-items:center; gap:4px;
  border-bottom:1px dashed transparent;
  transition:color .12s, border-color .12s;
}
.pd-deal-link:hover {
  color:var(--bordo);
  border-bottom-color:var(--bordo);
}

/* ============================================================
   COMERCIAL — HOJE
   ============================================================ */
.pd-hoje-filters {
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-bottom:14px;
  padding:10px 12px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
}
.pd-chip-row {
  display:flex; gap:6px; flex-wrap:wrap; align-items:center;
}
.pd-chip-row-aux { padding-top:6px; border-top:1px dashed var(--border); }
.pd-hoje-filter-label {
  font-size:10px;
  font-weight:800;
  color:var(--text-light);
  text-transform:uppercase;
  letter-spacing:.7px;
  min-width:74px;
}
.pd-hoje-filter {
  border:1px solid var(--border);
  border-radius:7px;
  background:#fff;
  color:var(--text);
  font-family:var(--font);
  font-size:12px;
  padding:6px 9px;
  min-height:32px;
}
.pd-chip {
  background:#fff;
  border:1px solid var(--border);
  border-radius:14px;
  padding:5px 11px;
  font-size:11px; font-weight:600;
  color:var(--text-mid);
  cursor:pointer;
  font-family:var(--font);
  transition:background .12s, border-color .12s, color .12s;
}
.pd-chip:hover { background:var(--surface-alt); color:var(--text); }
.pd-chip-on {
  background:var(--bordo); color:#fff; border-color:var(--bordo);
}
.pd-chip-on:hover { background:var(--bordo); color:#fff; }
.pd-chip-clear {
  margin-left:auto;
  background:none; border:none;
  font-size:11px; color:var(--bordo);
  font-weight:600; cursor:pointer;
  text-decoration:underline;
  font-family:var(--font);
}
.pd-chip-clear:hover { color:#6b3a3a; }

/* KPI cards clicáveis */
.pd-kpi { transition:transform .08s, box-shadow .12s, border-color .12s; }
.pd-kpi:hover { box-shadow:0 2px 8px rgba(0,0,0,.06); border-color:var(--border-strong); }
.pd-kpi:active { transform:translateY(1px); }
.pd-kpi-on { outline:2px solid var(--bordo); outline-offset:-2px; }

/* Painel Por responsável */
.pd-people-head {
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin-bottom:6px;
}
.pd-people-toggle {
  background:none; border:none;
  font-size:12px; font-weight:700; color:var(--text);
  cursor:pointer; padding:4px 0;
  font-family:var(--font);
}
.pd-people-toggle:hover { color:var(--bordo); }
.pd-people-count { color:var(--text-light); font-weight:600; margin-left:4px; }
.pd-people-active {
  font-size:11px; color:var(--text-mid);
}
.pd-people-active b { color:var(--bordo); }
.pd-people-active a { color:var(--bordo); }
.pd-people-body {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  gap:6px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
  padding:8px;
}
.pd-people-row {
  display:flex; align-items:center; gap:8px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:7px;
  padding:6px 10px;
  cursor:pointer;
  font-family:var(--font);
  text-align:left;
  transition:background .12s, border-color .12s;
  min-width:0;
}
.pd-people-row:hover { background:var(--surface-alt); border-color:var(--border-strong); }
.pd-people-row-on { background:rgba(145,89,89,.08); border-color:var(--bordo); }
.pd-people-ini {
  flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:50%;
  background:rgba(79,128,163,.12); color:var(--blue2);
  font-size:11px; font-weight:800;
}
.pd-people-name {
  flex:1; min-width:0;
  font-size:12px; font-weight:600; color:var(--text);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.pd-people-stats {
  display:flex; gap:4px; flex-wrap:wrap; flex-shrink:0;
}
.pd-people-stat {
  font-size:10px; font-weight:700;
  padding:2px 6px; border-radius:8px;
  background:rgba(0,0,0,.04); color:var(--text-mid);
  white-space:nowrap;
}
.pd-people-stat-red    { background:rgba(145,89,89,.12);  color:var(--bordo); }
.pd-people-stat-bordo  { background:rgba(145,89,89,.08);  color:var(--bordo); }
.pd-people-stat-blue   { background:rgba(79,128,163,.10); color:var(--blue2); }
.pd-people-stat-gray   { background:rgba(0,0,0,.05);      color:var(--text-light); }
.pd-people-stat-total  { background:var(--text); color:#fff; }
.pd-hoje-owner {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:22px;
  padding:0 8px;
  border-radius:999px;
  background:rgba(79,128,163,.12);
  color:var(--blue2);
  font-size:10px;
  font-weight:800;
  letter-spacing:.4px;
  flex-shrink:0;
}
.pd-hoje-private {
  background:rgba(145,89,89,.10);
  color:var(--bordo);
}
.pd-hoje-cal {
  font-size:10px;
  font-weight:700;
  color:var(--green);
  background:rgba(31,122,71,.09);
  border-radius:8px;
  padding:2px 7px;
  margin-left:6px;
  white-space:nowrap;
}
.pd-hoje-sec { margin-bottom:24px; }
.pd-hoje-sec-t {
  font-size:12px; font-weight:700; letter-spacing:.3px;
  margin-bottom:10px; padding-bottom:6px;
  border-bottom:2px solid currentColor; display:inline-block;
}
.pd-hoje-list { display:flex; flex-direction:column; gap:8px; }
.pd-hoje-item {
  display:flex; align-items:center; gap:12px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
  padding:11px 14px;
  transition:background .12s, border-color .12s, box-shadow .12s;
  cursor:pointer;
}
.pd-hoje-item:hover { background:var(--surface-alt); border-color:var(--border-strong); box-shadow:0 1px 3px rgba(0,0,0,.04); }
.pd-hoje-item:focus { outline:2px solid var(--bordo); outline-offset:1px; }
.pd-hoje-menu-btn {
  flex-shrink:0;
  width:28px; height:28px;
  border:1px solid transparent;
  background:transparent;
  border-radius:6px;
  color:var(--text-mid);
  font-size:18px; font-weight:700;
  line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:background .12s, border-color .12s, color .12s;
}
.pd-hoje-item:hover .pd-hoje-menu-btn { color:var(--text); }
.pd-hoje-menu-btn:hover { background:#fff; border-color:var(--border-strong); color:var(--bordo); }
.pd-hoje-pop {
  position:absolute; z-index:9999;
  background:#fff;
  border:1px solid var(--border-strong);
  border-radius:8px;
  box-shadow:0 8px 22px rgba(0,0,0,.13);
  padding:6px;
  display:flex; flex-direction:column; gap:2px;
  min-width:220px;
  font-family:var(--font);
}
.pd-hoje-pop-it {
  text-align:left;
  background:none; border:none;
  padding:8px 10px;
  font-size:12px; color:var(--text);
  border-radius:5px;
  cursor:pointer;
  font-family:var(--font);
}
.pd-hoje-pop-it:hover { background:var(--surface-alt); }
.pd-hoje-pop-danger { color:#915959; }
.pd-hoje-pop-danger:hover { background:rgba(145,89,89,.08); }

/* ----- Modal de atividade: link picker (deal/person/org) ----- */
.pd-na-link-current { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.pd-na-chip {
  display:inline-block;
  padding:4px 10px;
  background:rgba(79,128,163,.10);
  color:#2f5874;
  border:1px solid rgba(79,128,163,.30);
  border-radius:14px;
  font-size:11px; font-weight:600;
  max-width:340px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.pd-na-link-btn {
  background:#fff;
  border:1px solid var(--border);
  border-radius:6px;
  padding:4px 9px;
  font-size:11px; font-weight:600; color:var(--text-mid);
  cursor:pointer;
  font-family:var(--font);
}
.pd-na-link-btn:hover { background:var(--surface-alt); color:var(--text); }
.pd-na-link-clear {
  width:22px; height:22px; padding:0;
  border-radius:50%;
  font-size:14px; line-height:1;
}
.pd-na-link-search { display:flex; gap:6px; align-items:flex-start; position:relative; }
.pd-na-link-search .pd-na-link-q { flex:1; }
.pd-na-suggest {
  position:absolute;
  top:calc(100% + 2px); left:0; right:0;
  z-index:10;
  background:#fff;
  border:1px solid var(--border-strong);
  border-radius:6px;
  box-shadow:0 6px 16px rgba(0,0,0,.10);
  max-height:240px; overflow-y:auto;
  padding:4px;
}
.pd-na-suggest-it {
  padding:6px 9px;
  border-radius:5px;
  cursor:pointer;
}
.pd-na-suggest-it:hover { background:var(--surface-alt); }
.pd-na-suggest-n { font-size:12px; font-weight:600; color:var(--text); }
.pd-na-suggest-h { font-size:10px; color:var(--text-light); margin-top:1px; }
.pd-hoje-check {
  width:22px; height:22px; flex-shrink:0;
  border:2px solid var(--border-strong);
  border-radius:50%;
  background:#fff;
  cursor:pointer;
  transition:all .15s;
  position:relative;
}
.pd-hoje-check:hover { border-color:var(--green); background:rgba(31,122,71,.08); }
.pd-hoje-check:hover::after {
  content:''; position:absolute; top:50%; left:50%;
  width:6px; height:10px; transform:translate(-50%, -60%) rotate(45deg);
  border-right:2px solid var(--green); border-bottom:2px solid var(--green);
}
.pd-hoje-body { flex:1; min-width:0; }
.pd-hoje-sub { font-size:13px; font-weight:600; color:var(--text); display:flex; align-items:center; gap:7px; }
.pd-hoje-type { font-size:15px; flex-shrink:0; }
.pd-hoje-ctx { font-size:11px; color:var(--text-light); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pd-hoje-when {
  font-size:11px; font-weight:600; color:var(--text-mid);
  flex-shrink:0;
  padding:4px 10px; border-radius:12px;
  background:var(--surface-alt);
  white-space:nowrap;
}

/* ============================================================
   COMERCIAL — MOBILE RESPONSIVO
   ============================================================ */
@media (max-width:768px){
  .pd-kanban { padding:0 4px 12px; gap:8px; }
  .pd-col { flex:0 0 78vw; max-width:78vw; max-height:none; }
  .pd-col-body { max-height:60vh; overflow-y:auto; }
  /* Card mobile: tap em vez de drag (drag-drop HTML5 não funciona em touch) */
  .pd-card { cursor:pointer; }
  .pd-card[draggable] { -webkit-user-drag:none; }
  .pd-hoje-item { padding:13px 12px; }
  .pd-hoje-check { width:26px; height:26px; }
}
body.mobile-active.mob-show-main #page-comercial-pipeline .topbar,
body.mobile-active.mob-show-main #page-comercial-hoje .topbar {
  /* mesma altura/padding já tratada pelas regras gerais de topbar mobile */
}
/* Forecast/Summary cards do Pipeline: 2 colunas no mobile */
body.mobile-active.mob-show-main #pd-pipeline-summary > .sc,
body.mobile-active.mob-show-main #pd-hoje-summary > .sc {
  flex: 1 1 calc(50% - 7px) !important;
  min-width: 0 !important;
}

/* Sprint 5: render HTML sanitizado de notas/atividades do Pipedrive */
.pd-note-content { word-break: break-word; }
.pd-note-content p { margin: 0 0 8px; }
.pd-note-content p:last-child { margin-bottom: 0; }
.pd-note-content ul,
.pd-note-content ol { margin: 0 0 8px 20px; padding: 0; }
.pd-note-content li { margin-bottom: 2px; }
.pd-note-content a {
  color: #4F80A3;
  text-decoration: underline;
  word-break: break-all;
}
.pd-note-content a:hover { color: #355d80; }
.pd-note-content b,
.pd-note-content strong { font-weight: 700; }
.pd-note-content i,
.pd-note-content em { font-style: italic; }/* Sprint TV: Mural da Empresa em modo televisão.
   Esconde sidebar/topbar e expande conteúdo para tela inteira com fonte gigante. */
body.mural-tv .sidebar, body.mural-tv #review-icon, body.mural-tv #notif-panel, body.mural-tv #presence-bar { display: none !important; }
body.mural-tv .main { margin-left: 0 !important; padding: 0 !important; }
body.mural-tv #page-mural .topbar { padding: 18px 28px; }
body.mural-tv #page-mural .tbt { font-size: 28px !important; }
body.mural-tv #page-mural .tbs { font-size: 14px !important; }
body.mural-tv #page-mural .content { padding: 18px 28px 28px; }
body.mural-tv #mural-grid { gap: 28px !important; }
@media (min-width: 1600px) {
  body.mural-tv #mural-grid { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ============================================================
   FEEDBACK — galeria de anexos (modal e detalhe)
   ============================================================ */
.fb-gallery {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(110px, 1fr));
  gap:8px;
}
.fb-thumb {
  position:relative;
  background:#fff;
  border:1px solid var(--border);
  border-radius:6px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.fb-thumb img {
  width:100%;
  height:80px;
  object-fit:cover;
  display:block;
}
.fb-thumb-remove {
  position:absolute;
  top:3px; right:3px;
  width:22px; height:22px;
  border-radius:50%;
  background:rgba(0,0,0,.55);
  color:#fff;
  border:none;
  font-size:14px;
  line-height:1;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font);
}
.fb-thumb-remove:hover { background:var(--bordo); }
.fb-thumb-name {
  font-size:9px;
  color:var(--text-light);
  padding:3px 6px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  background:var(--gelo);
  border-top:1px solid var(--border);
}

.fbd-gallery {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(160px, 1fr));
  gap:10px;
}
.fbd-thumb {
  display:block;
  border:1px solid var(--border);
  border-radius:6px;
  overflow:hidden;
  background:#fff;
  cursor:zoom-in;
  transition:border-color .12s, box-shadow .12s;
}
.fbd-thumb:hover { border-color:var(--bordo); box-shadow:0 2px 6px rgba(0,0,0,.07); }
.fbd-thumb img {
  width:100%;
  max-height:200px;
  object-fit:cover;
  display:block;
}

/* ============================================================
   Onda 2.3 — Primitiva de Modal baseada em <dialog> nativo.
   Acessibilidade (focus trap, ESC, backdrop) vem do browser.
   ============================================================ */
.fx-modal {
  margin:auto; /* recentra o <dialog>: o reset global *{margin:0} anula o UA */
  border:none;
  border-radius:12px;
  padding:0;
  max-width:520px;
  width:92vw;
  box-shadow:0 12px 48px rgba(0,0,0,.18);
  background:#fff;
  color:var(--text);
  font-family:var(--font);
}
.fx-modal::backdrop {
  background:rgba(43,56,71,.55);
}
.fx-modal-title {
  font-size:15px;
  font-weight:700;
  color:var(--navy);
  padding:14px 18px;
  border-bottom:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.fx-modal-close {
  background:none;
  border:none;
  font-size:22px;
  line-height:1;
  color:var(--text-light);
  cursor:pointer;
  padding:0;
  width:28px;
  height:28px;
  border-radius:6px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.fx-modal-close:hover { background:var(--gelo); color:var(--text); }
.fx-modal-body {
  padding:16px 18px;
  font-size:13px;
  line-height:1.55;
  color:var(--text);
  max-height:70vh;
  overflow:auto;
}
.fx-modal-actions {
  padding:12px 18px;
  border-top:1px solid var(--border);
  display:flex;
  gap:8px;
  justify-content:flex-end;
  flex-wrap:wrap;
}

/* ============================================================
   Onda B+ — Year tabs (Dashboard/Essential/Avulsa).
   Substituem o seletor de ano da sidebar.
   ============================================================ */
.year-tabs-wrap {
  background:#fff;
  border-bottom:1px solid var(--border);
  padding:0 22px;
}
.year-tabs {
  display:flex;
  gap:2px;
  align-items:center;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.year-tab {
  padding:9px 16px;
  background:none;
  border:none;
  border-bottom:2px solid transparent;
  cursor:pointer;
  font-weight:600;
  color:var(--text-light);
  font-size:13px;
  font-family:var(--font);
  transition:color .12s, border-color .12s, background .12s;
  white-space:nowrap;
}
.year-tab:hover { color:var(--text); background:var(--gelo); }
.year-tab.active {
  color:var(--navy);
  border-bottom-color:var(--bordo);
  font-weight:700;
}
.year-tab-add {
  margin-left:auto;
  color:var(--bordo);
  font-size:12px;
  border:1px dashed transparent;
  border-radius:6px 6px 0 0;
}
.year-tab-add:hover {
  background:rgba(145,89,89,.06);
  border-color:rgba(145,89,89,.25);
  color:var(--bordo);
}
/* "Anos Anteriores": recolhe os 4 anos anteriores ao ano anterior, para a tira
   não virar uma régua de anos que ninguém abre no dia a dia. */
.year-tab-prev {
  display:inline-flex; align-items:center; gap:5px;
  color:var(--text-mid);
  font-size:11.5px;
  border-right:1px solid var(--border);
  margin-right:4px;
}
.year-tab-prev.open { color:var(--navy); font-weight:700; }
/* Sobrescrito com a faixa de anos guardada no botão — sem ele não dá para saber
   o que está escondido ali sem clicar. Cor própria para não competir com o rótulo. */
.year-tab-prev-years {
  font-size:8.5px; font-weight:700; letter-spacing:.2px;
  color:var(--bordo); top:-.55em; margin-left:1px;
}
/* A seta aponta para onde os anos vão: à direita p/ expandir, à esquerda p/ recolher. */
.year-tab-prev-arrow { font-size:9px; line-height:1; color:var(--text-light); }
.year-tab-prev.open .year-tab-prev-arrow { color:var(--navy); }
/* Alerta de entregável em aberto num ano que não é o corrente. */
.year-tab-warn {
  display:inline-flex; align-items:center; justify-content:center;
  width:14px; height:14px; margin-left:5px; vertical-align:middle;
  border-radius:50%; background:var(--gold, #CFA852); color:#3a2c0a;
  font-size:10px; font-weight:800; line-height:1;
}

/* Quarters — segunda linha da tira de anos, ancorada embaixo da tab do ano
   ativo (o padding-left é calculado no JS por _alignQuarterTabs). A posição diz
   a que ano eles se referem, então não levam rótulo de ano. */
/* margin-top positivo: a tab do ano ativo tem uma borda inferior de 2px como
   indicador, e os quarters encostavam nela. */
.quarter-tabs {
  display:flex; gap:4px; align-items:center;
  padding:0 0 8px; margin-top:5px;
}
.quarter-tabs:empty { display:none; }
.quarter-tab {
  padding:3px 11px; font-family:var(--font); font-size:11px; font-weight:600;
  color:var(--text-mid); background:none; cursor:pointer;
  border:1px solid var(--border); border-radius:999px;
  transition:color .12s, border-color .12s, background .12s;
}
.quarter-tab:hover { color:var(--text); background:var(--gelo); }
.quarter-tab.active {
  color:#fff; background:var(--bordo); border-color:var(--bordo); font-weight:700;
}
.quarter-tab-clear { border-style:dashed; color:var(--text-light); font-weight:500; }


/* ==========================================================
   MODO OCULTO — ofusca nomes de clientes/empresas para demos
   Ativado por <html data-hidden="1"> (toggle no sidebar)
   ========================================================== */
html[data-hidden="1"] [data-confidential] {
  filter: blur(6px);
  -webkit-filter: blur(6px);
  user-select: none;
  -webkit-user-select: none;
  cursor: default;
  transition: filter .15s ease;
}
html[data-hidden="1"] [data-confidential]:hover {
  filter: blur(3px);
  -webkit-filter: blur(3px);
}
html[data-hidden="1"] option[data-confidential],
html[data-hidden="1"] [data-confidential] option {
  color: transparent !important;
  text-shadow: 0 0 6px rgba(0,0,0,.55);
}
/* Gráficos canvas — borrar inteiro (eixo Y revela ordem de grandeza dos valores) */
html[data-hidden="1"] canvas {
  filter: blur(8px);
  -webkit-filter: blur(8px);
  transition: filter .15s ease;
}
html[data-hidden="1"] canvas:hover {
  filter: blur(4px);
  -webkit-filter: blur(4px);
}

/* ============================================================
   DESIGN SYSTEM (perfis/documentos) — tokens com variante dark.
   Os componentes docsec/doc-* usam APENAS estas variáveis (nunca hex
   fixo), para o Modo escuro funcionar em todo o padrão novo.
   ============================================================ */
:root {
  --ds-panel:#f2f4f6;            /* fundo dos painéis de aba */
  --ds-card-border:#e8eaee;      /* borda dos cards docsec */
  --ds-accent:#2f6bde;           /* azul interativo (abas, medalhões, botões) */
  --ds-accent-soft:#eef3fd;      /* fundo dos medalhões / hover suave */
  --ds-accent-border:#c9daf5;    /* borda dos botões docsec-add */
  --ds-hover:#f7faff;            /* hover de botões/dropzone */
  --ds-border-strong:#d7dce3;    /* borda tracejada/hover de cards */
  --ds-btn-border:#dfe3e9;       /* borda dos doc-btn/viewbtn */
  --ds-file-fill:#eef1f5;        /* ícone de página: preenchimento */
  --ds-file-stroke:#c9d1db;      /* ícone de página: traço */
  --ds-pass-bg:#eef7f0;          /* chip de passaporte */
  --ds-pass-border:#cfe6d6;
  --ds-empty-border:#dfe9fb;     /* medalhão do empty state */
  --ds-avatar-a:#f4f6f9;         /* tile do prédio (gradiente) */
  --ds-avatar-b:#eceff3;
  --ds-avatar-ico:#8d97a5;
}

/* ============================================================
   DOCUMENT SERVICE — aba Documentos (fiel ao mock aprovado em 10/jul)
   Painel com fundo cinza-claro e seções como cards brancos flutuantes;
   dropzone ampla; cards de arquivo com ícone de página preenchido e
   etiqueta vermelha (PDF) ou azul (imagem); botões contornados com
   ícone. Paleta local do mock: azul var(--ds-accent). Escopo: só esta aba.
   ============================================================ */
#cprof-tab-docs, #pprof-tab-docs, #pprof-tab-info, #pprof-tab-vinculos,
#cprof-tab-info, #cprof-tab-partes, #cprof-tab-chart,
#kyc-edit-content, #kyp-edit-content { background:var(--ds-panel); border-radius:var(--radius-lg); padding:14px; }
.docsec {
  background: var(--surface);
  border: 1px solid var(--ds-card-border);
  border-radius: var(--radius-lg);
  padding: 20px;
  margin: 0 0 14px;
  box-shadow: 0 1px 2px rgba(26,29,36,.03);
}
.docsec:last-child { margin-bottom: 0; }

.docsec-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 16px;
}
.docsec-ico {
  width: 40px; height: 40px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
  display: flex; align-items: center; justify-content: center;
}
.docsec-ico svg { width: 19px; height: 19px; }
.docsec-head-txt { flex: 1; min-width: 0; padding-top: 2px; }
.docsec-title { font-size: 16px; font-weight: 700; color: var(--text); }
.docsec-desc { font-size: 12.5px; color: var(--text-mid); margin-top: 4px; line-height: 1.55; }
.docsec-add {
  appearance: none;
  display: inline-flex; align-items: center; gap: 7px;
  flex-shrink: 0;
  background: var(--surface);
  border: 1px solid var(--ds-accent-border);
  border-radius: 10px;
  padding: 9px 16px;
  font-family: var(--font);
  font-size: 12.5px; font-weight: 600;
  color: var(--ds-accent);
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
.docsec-add svg { width: 14px; height: 14px; }
.docsec-add:hover, .docsec-add:focus-visible { background: var(--ds-accent-soft); border-color: var(--ds-accent); }

.doc-drop {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  border: 1.5px dashed var(--ds-border-strong);
  border-radius: var(--radius);
  padding: 34px 16px;
  cursor: pointer;
  background: transparent;
  transition: border-color .18s ease, background .18s ease;
}
.doc-drop:hover, .doc-drop:focus-visible, .doc-drop.is-drag {
  border-color: var(--ds-accent);
  background: var(--ds-hover);
}
.doc-drop-ico {
  width: 48px; height: 48px;
  border-radius: 12px;
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.doc-drop-ico svg { width: 22px; height: 22px; }
.doc-drop-txt { text-align: left; }
.doc-drop-txt b { display: block; font-size: 15px; font-weight: 700; color: var(--text); }
.doc-drop-txt span { display: block; font-size: 12.5px; color: var(--text-light); margin-top: 3px; }

.doc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 18px;
  margin-top: 18px;
}
.doc-card {
  background: var(--surface);
  border: 1px solid var(--ds-card-border);
  border-radius: var(--radius);
  padding: 18px 18px 16px;
  min-width: 0;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.doc-card:hover { border-color: var(--ds-border-strong); box-shadow: 0 4px 14px rgba(26,29,36,.06); }
.doc-fileico {
  position: relative;
  width: 60px; height: 70px;
  cursor: pointer;
  margin-bottom: 12px;
}
.doc-fileico svg { width: 100%; height: 100%; fill: var(--ds-file-fill); stroke: var(--ds-file-stroke); }
.doc-fileico-ext {
  position: absolute;
  left: 2px; bottom: 9px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .5px;
  color: var(--red);
  -webkit-user-select: none; user-select: none;
}
.doc-fileico.is-img .doc-fileico-ext { color: var(--ds-accent); }
.doc-name {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.doc-name:hover, .doc-name:focus-visible { text-decoration: underline; }
.doc-meta {
  display: block;
  font-size: 11.5px;
  color: var(--text-light);
  margin-top: 4px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.doc-card-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.doc-btn {
  appearance: none;
  display: inline-flex; align-items: center; gap: 7px;
  background: var(--surface);
  border: 1px solid var(--ds-btn-border);
  border-radius: 10px;
  padding: 9px 15px;
  font-family: var(--font);
  font-size: 12.5px; font-weight: 600;
  color: var(--text-mid);
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.doc-btn svg { width: 14px; height: 14px; }
.doc-btn:hover, .doc-btn:focus-visible { color: var(--ds-accent); border-color: var(--ds-accent); background: var(--ds-hover); }
.doc-btn-danger { color: var(--red); border-color: #f0d6d6; padding: 9px 11px; }
.doc-btn-danger:hover, .doc-btn-danger:focus-visible { color: var(--red); border-color: var(--red); background: rgba(183,56,56,.05); }

.doc-empty {
  text-align: center;
  padding: 28px 12px 20px;
  color: var(--text-light);
}
.doc-empty-ico {
  width: 46px; height: 46px;
  margin: 0 auto 10px;
  border-radius: 50%;
  background: var(--ds-accent-soft);
  border: 1px solid var(--ds-empty-border);
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
}
.doc-empty b { display: block; font-size: 13.5px; font-weight: 600; color: var(--text-mid); margin-bottom: 3px; }
.doc-empty span { font-size: 12px; }

/* Avatar da EMPRESA no cabeçalho do perfil (tile com prédio, fiel ao mock).
   Variante da .cprofile-avatar — a base (gradiente bordô com iniciais)
   continua valendo para o perfil de pessoa. */
.cprofile-avatar.cprofile-avatar-co {
  width: 64px; height: 64px;
  border-radius: 16px;
  background: linear-gradient(180deg, var(--ds-avatar-a) 0%, var(--ds-avatar-b) 100%);
  border: 1px solid var(--ds-card-border);
  color: var(--ds-avatar-ico);
}
.cprofile-avatar.cprofile-avatar-co svg { width: 34px; height: 34px; }

/* Seletor grade/lista e visualização em lista dos arquivos */
.doc-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
  margin-top: 14px;
}
.doc-viewbtn {
  appearance: none;
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--surface);
  border: 1px solid var(--ds-btn-border);
  border-radius: 9px;
  color: var(--text-light);
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.doc-viewbtn svg { width: 16px; height: 16px; }
.doc-viewbtn:hover, .doc-viewbtn:focus-visible { color: var(--ds-accent); border-color: var(--ds-accent); }
.doc-viewbtn.active { color: var(--ds-accent); border-color: var(--ds-accent); background: var(--ds-accent-soft); }

.doc-list { margin-top: 10px; }
.doc-lrow {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--surface);
  border: 1px solid var(--ds-card-border);
  border-radius: 10px;
  padding: 10px 14px;
  margin-top: 8px;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.doc-lrow:hover { border-color: var(--ds-border-strong); box-shadow: 0 2px 8px rgba(26,29,36,.05); }
.doc-fileico.doc-fileico-sm {
  width: 30px; height: 36px;
  margin-bottom: 0;
  flex-shrink: 0;
}
.doc-fileico.doc-fileico-sm .doc-fileico-ext {
  font-size: 8px;
  left: 1px; bottom: 5px;
  letter-spacing: .3px;
}
.doc-lrow-txt { flex: 1; min-width: 0; }
.doc-lrow-txt .doc-name { font-size: 13px; }
.doc-lrow-txt .doc-meta { margin-top: 2px; font-size: 11px; }
.doc-lrow-actions { display: flex; gap: 6px; flex-shrink: 0; }
.doc-btn.doc-btn-ico { padding: 8px; }

/* Chip de passaporte (número + validade extraídos automaticamente) */
/* docZone — seletor de categoria/ano (empresa) + badge de canal */
.doc-catrow { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.doc-catlbl { font-size:11px; font-weight:600; color:var(--text-light); }
.doc-catsel { font-size:12px; padding:6px 9px; border:1px solid var(--ds-card-border,#e2e2e2); border-radius:8px; background:var(--surface,#fff); color:var(--text,#222); cursor:pointer; }
.doc-chan { display:inline-block; margin-top:6px; margin-right:6px; font-size:10.5px; font-weight:600; border-radius:6px; padding:2px 8px; }
.doc-chan-so { color:var(--text-mid,#556); background:rgba(120,130,145,.1); border:1px solid var(--border-soft,#eee); }
.doc-chan-ob { color:#b07d1a; background:rgba(200,154,62,.1); border:1px solid rgba(200,154,62,.28); }
.doc-chan-pt { color:var(--bordo2,#7a2e3a); background:rgba(122,46,58,.08); border:1px solid rgba(122,46,58,.22); }

/* ============================================================
   Arquivos da empresa (cd-*) — macro Ativos / Arquivo Morto,
   barra de busca+filtros, tabela e paginação. Usa os tokens --ds-*.
   ============================================================ */
/* Abas — barra contínua; o contador diz se a pasta tem documentos e a variante
   is-empty apaga as vazias, para a navegação apontar onde há conteúdo. */
.cd-subtabs {
  display: flex; flex-wrap: wrap; gap: 2px;
  border-bottom: 1px solid var(--ds-card-border);
  margin-bottom: 16px;
}
.cd-subtab {
  display: inline-flex; align-items: center; gap: 8px;
  background: transparent; border: none; border-bottom: 2px solid transparent;
  border-radius: 0; padding: 11px 14px; margin-bottom: -1px;
  font-family: var(--font); font-size: 13px; font-weight: 600;
  color: var(--text-light); cursor: pointer;
  transition: color .12s ease, border-color .12s ease;
}
.cd-subtab:hover { color: var(--text-mid); }
.cd-subtab.active { color: var(--ds-accent); border-bottom-color: var(--ds-accent); }
.cd-subtab-ico { display: inline-flex; }
.cd-subtab-ico svg { width: 15px; height: 15px; }
.cd-subtab-n {
  font-size: 11px; font-weight: 700; line-height: 1;
  border-radius: 20px; padding: 3px 7px;
  background: var(--ds-card-border); color: var(--text-mid);
}
.cd-subtab.active .cd-subtab-n { background: var(--ds-accent-soft); color: var(--ds-accent); }
/* Pasta sem nenhum documento: fica para trás visualmente, mas continua clicável */
.cd-subtab.is-empty { opacity: .45; font-weight: 500; }
.cd-subtab.is-empty:hover { opacity: .75; }
.cd-subtab.is-empty.active { opacity: 1; font-weight: 600; }

.cd-note {
  font-size: 12.5px; color: var(--text-light);
  background: var(--ds-accent-soft); border-radius: 10px;
  padding: 11px 14px; margin-bottom: 4px;
}

/* Barra de ferramentas */
.cd-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 16px 0 12px; }
.cd-toolbar-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-left: auto; }
.cd-search {
  display: flex; align-items: center; gap: 8px;
  flex: 1 1 240px; max-width: 340px;
  border: 1px solid var(--ds-card-border); border-radius: 10px;
  background: var(--surface); padding: 0 12px;
}
.cd-search:focus-within { border-color: var(--ds-accent); }
.cd-search-ico { display: flex; color: var(--text-light); flex-shrink: 0; }
.cd-search input {
  flex: 1; min-width: 0; border: none; outline: none; background: transparent;
  font-family: var(--font); font-size: 12.5px; color: var(--text); padding: 10px 0;
}
.cd-search input::placeholder { color: var(--text-light); }
.cd-sel {
  font-family: var(--font); font-size: 12.5px; padding: 10px 12px;
  border: 1px solid var(--ds-card-border); border-radius: 10px;
  background: var(--surface); color: var(--text); cursor: pointer;
}
.cd-sel:hover { border-color: var(--ds-border-strong); }
.cd-sel-sm { padding: 5px 8px; font-size: 12px; border-radius: 8px; }

/* Tabela */
.cd-tablewrap {
  border: 1px solid var(--ds-card-border); border-radius: 12px;
  background: var(--surface); overflow-x: auto;
}
.cd-table { width: 100%; border-collapse: collapse; min-width: 620px; }
.cd-table thead th {
  text-align: left; font-size: 11.5px; font-weight: 600; color: var(--text-light);
  padding: 12px 14px; border-bottom: 1px solid var(--ds-card-border); white-space: nowrap;
}
.cd-table tbody td { padding: 12px 14px; border-bottom: 1px solid var(--ds-card-border); font-size: 12.5px; color: var(--text-mid); vertical-align: middle; }
.cd-table tbody tr:last-child td { border-bottom: none; }
.cd-table tbody tr:hover { background: var(--ds-hover); }
.cd-td-name { min-width: 220px; }
.cd-td-name { display: flex; align-items: center; gap: 11px; }
.cd-name-txt { min-width: 0; }
.cd-name-txt .doc-name { font-size: 13px; }
.cd-name-txt .doc-meta { display: block; margin-top: 2px; font-size: 11px; }
.cd-td-num, .cd-td-when { white-space: nowrap; }
.cd-th-act, .cd-td-act { text-align: right; }
/* (15/10): a célula do nome é flex e media pelo nome inteiro (nowrap) — com
   a coluna de seleção a tabela passava da largura e os botões de ação (olho,
   baixar, arquivar, excluir) ficavam escondidos na rolagem. O nome agora
   ocupa o que sobra e quebra linha; as ações ficam sempre à vista. */
.cd-table td.cd-td-name { max-width: 0; width: 100%; }
.cd-table .cd-name-txt .doc-name { white-space: normal; overflow-wrap: anywhere; }
/* download em lote (15/10): barra acima da tabela + coluna de seleção */
.cd-bulk { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 10px; }
.cd-bulk-n { font-size: 12px; color: var(--text-light); margin-right: auto; }
.cd-bulk .doc-btn { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; font-size: 12px; }
.cd-bulk .doc-btn[disabled] { opacity: .5; cursor: default; }
.cd-th-chk, .cd-td-chk { width: 28px; text-align: center; }
.cd-td-act .doc-lrow-actions { justify-content: flex-end; }

/* Medalhão e badge por extensão */
.cd-fico {
  width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--ds-accent-soft); color: var(--ds-accent);
}
.cd-fico svg { width: 16px; height: 16px; }
.cd-fico-pdf { background: rgba(183,56,56,.09); color: var(--red, #b73838); }
.cd-badge {
  display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .3px;
  border-radius: 6px; padding: 3px 8px;
  background: var(--ds-accent-soft); color: var(--ds-accent);
}
.cd-badge-pdf { background: rgba(183,56,56,.09); color: var(--red, #b73838); }

/* Paginação */
.cd-pagination {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 11px 4px 2px; font-size: 12px; color: var(--text-light);
}
.cd-pg-nav { display: flex; align-items: center; gap: 4px; margin: 0 auto; }
.cd-pg {
  min-width: 28px; height: 28px; padding: 0 8px;
  border: 1px solid transparent; border-radius: 7px;
  background: transparent; color: var(--text-mid);
  font-family: var(--font); font-size: 12px; cursor: pointer;
}
.cd-pg:hover:not(:disabled) { background: var(--ds-hover); border-color: var(--ds-card-border); }
.cd-pg.is-cur { background: var(--ds-accent-soft); color: var(--ds-accent); border-color: var(--ds-accent-border); font-weight: 700; }
.cd-pg:disabled { opacity: .35; cursor: default; }
.cd-pg-arrow { font-size: 15px; line-height: 1; }
.cd-pg-per { display: inline-flex; align-items: center; gap: 6px; }

/* Arquivo morto — card próprio (docsec), recolhido até alguém expandir.
   A coluna Pasta identifica de qual subdivisão veio cada arquivado. */
.cd-td-folder { white-space: nowrap; color: var(--text-light); font-size: 12px; }
#corp-dead-docs .cd-toolbar { margin-bottom: 12px; }

@media (max-width: 720px) {
  .cd-toolbar-right { margin-left: 0; width: 100%; }
  .cd-search { max-width: none; }
  .cd-pagination { justify-content: space-between; }
  .cd-pg-nav { margin: 0; order: 3; width: 100%; justify-content: center; }
}

.doc-passchip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 9px;
  padding: 5px 10px;
  border-radius: 8px;
  background: var(--ds-pass-bg);
  border: 1px solid var(--ds-pass-border);
  color: var(--green);
  font-size: 11px;
  font-weight: 600;
  max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.doc-passchip svg { width: 12px; height: 12px; flex-shrink: 0; }
.doc-passchip.expired { background: rgba(183,56,56,.06); border-color: #eccfcf; color: var(--red); }
.doc-lrow .doc-passchip { margin-top: 5px; padding: 3px 8px; font-size: 10.5px; }

/* Diálogos do design system (substituem confirm/prompt nativos) */
.ds-dialog-ovl {
  position: fixed; inset: 0;
  background: rgba(14,17,22,.62);
  z-index: 100001;
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.ds-dialog {
  background: var(--surface);
  border: 1px solid var(--ds-card-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 20px;
  width: min(400px, 92vw);
}
.ds-dialog-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.ds-dialog-msg { font-size: 12.5px; color: var(--text-mid); line-height: 1.55; margin-bottom: 12px; }
.ds-dialog-input { width: 100%; margin-bottom: 4px; }
.ds-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }
.ds-dialog-go {
  background: var(--ds-accent); color: #fff; border: 1px solid var(--ds-accent);
}
.ds-dialog-go:hover { filter: brightness(1.08); }
.ds-dialog-go.ds-dialog-danger { background: var(--red); border-color: var(--red); }

/* Medalhão compacto para seções de formulário (KYC/KYP) */
.docsec-ico-sm { width: 30px; height: 30px; }
.docsec-ico-sm [data-icon] svg, .docsec-ico-sm svg { width: 15px; height: 15px; }

/* Controles de filtro padronizados (buscas e selects das barras de página) */
.ds-filter {
  background: var(--gelo);
  border: 1.5px solid var(--border);
  border-radius: 7px;
  padding: 6px 12px;
  color: var(--text);
  font-family: var(--font);
  font-size: 12px;
  outline: none;
  transition: border-color .15s ease;
}
select.ds-filter { padding: 6px 10px; cursor: pointer; }
.ds-filter:focus { border-color: var(--ds-accent); }

/* Tabelas Essential/Avulsa: scroll próprio com cabeçalho fixo */
#clients-list .tw, #avulsa-list .tw, #accounting-list .tw {
  max-height: calc(100vh - 215px);
  overflow: auto;
}
/* Barra horizontal sempre visível (macOS esconde a overlay padrão e a grade
   larga parecia sem rolagem). WebKit: estilizar força a barra clássica. */
#clients-list .tw::-webkit-scrollbar, #avulsa-list .tw::-webkit-scrollbar, #accounting-list .tw::-webkit-scrollbar { width: 12px; }
/* A lateral do container fica escondida — o proxy flutuante (.emp-hproxy) é a
   única barra horizontal; duas ao mesmo tempo duplicavam quando o fundo da
   tabela estava visível. */
#clients-list .tw::-webkit-scrollbar:horizontal, #avulsa-list .tw::-webkit-scrollbar:horizontal, #accounting-list .tw::-webkit-scrollbar:horizontal { height: 0; }
#clients-list .tw::-webkit-scrollbar-thumb, #avulsa-list .tw::-webkit-scrollbar-thumb, #accounting-list .tw::-webkit-scrollbar-thumb { background: var(--tan, #CBB083); border-radius: 6px; }
#clients-list .tw::-webkit-scrollbar-track, #avulsa-list .tw::-webkit-scrollbar-track, #accounting-list .tw::-webkit-scrollbar-track { background: var(--line, #F1EDE4); border-radius: 6px; }
/* Cabeçalho de DOIS níveis: com todos os th em top:0 a segunda linha subia por
   cima da primeira. A primeira gruda no topo; a segunda, na altura da primeira
   (--emp-h1, medido no render por _empStickyHead — a altura varia com a fonte e
   o zoom, então cravar um px erraria). Os th com rowspan atravessam as duas e
   ficam em top:0 mesmo. */
#clients-list table.sm thead th, #avulsa-list table.sm thead th, #accounting-list table.sm thead th {
  position: sticky;
  top: 0;
  background: var(--surface);
  z-index: 5;
  box-shadow: 0 1px 0 var(--border);
}
#clients-list table.emp-roster thead tr:last-child th:not([rowspan]),
#avulsa-list table.emp-roster thead tr:last-child th:not([rowspan]),
#accounting-list table.emp-roster thead tr:last-child th:not([rowspan]) {
  top: var(--emp-h1, 24px);
  z-index: 4;
  box-shadow: 0 1px 0 var(--border);
}
/* Os th com rowspan cobrem os dois níveis: precisam ficar por cima na
   sobreposição lateral quando a tabela rola na horizontal. */
#clients-list table.emp-roster thead th[rowspan],
#avulsa-list table.emp-roster thead th[rowspan],
#accounting-list table.emp-roster thead th[rowspan] { z-index: 6; }

/* Barra lateral flutuante (proxy sincronizado com o .tw): gruda no rodapé da
   janela enquanto a grade está visível — o scroll lateral fica sempre à mão. */
.emp-hproxy { position: sticky; bottom: 0; overflow-x: auto; overflow-y: hidden; height: 16px; z-index: 8;
  background: var(--surface, #fff); border-top: 1px solid var(--border, #E9E4DA); }
.emp-hproxy > div { height: 1px; }
.emp-hproxy::-webkit-scrollbar { height: 12px; }
.emp-hproxy::-webkit-scrollbar-thumb { background: var(--tan, #CBB083); border-radius: 6px; }
.emp-hproxy::-webkit-scrollbar-track { background: var(--line, #F1EDE4); border-radius: 6px; }

/* Colunas Empresa + Partes Relacionadas fixas na rolagem horizontal.
   Larguras cravadas: o left da 2ª coluna precisa da largura exata da 1ª. */
table.emp-roster .emp-sticky-1,
table.emp-roster .emp-sticky-2 { position: sticky; background: var(--surface, #fff) !important; }
table.emp-roster td.emp-sticky-1, table.emp-roster td.emp-sticky-2 { z-index: 2; }
table.emp-roster .emp-sticky-1 { left: 0; width: 230px; min-width: 230px; max-width: 230px; }
table.emp-roster .emp-sticky-2 { left: 230px; width: 200px; min-width: 200px; max-width: 200px;
  box-shadow: 8px 0 12px -8px rgba(36,48,64,.18); }
/* Cabeçalho: os th com rowspan das duas primeiras colunas grudam no topo E na
   esquerda — camada acima de tudo. */
#clients-list table.emp-roster thead th[rowspan].emp-sticky-1,
#avulsa-list table.emp-roster thead th[rowspan].emp-sticky-1,
#accounting-list table.emp-roster thead th[rowspan].emp-sticky-1,
#clients-list table.emp-roster thead th[rowspan].emp-sticky-2,
#avulsa-list table.emp-roster thead th[rowspan].emp-sticky-2,
#accounting-list table.emp-roster thead th[rowspan].emp-sticky-2 { z-index: 7; }

/* Medalhão dos stat tiles do dashboard */
.sc { padding-right: 56px; }
.sc-ico {
  position: absolute;
  top: 14px; right: 14px;
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
  display: flex; align-items: center; justify-content: center;
}
.sc-ico [data-icon] svg, .sc-ico svg { width: 15px; height: 15px; }

/* Skeleton loaders (substituem "Carregando...") */
.ds-skel { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.ds-skel-row {
  border-radius: 8px;
  background: linear-gradient(90deg, var(--surface-alt) 25%, var(--border-soft) 50%, var(--surface-alt) 75%);
  background-size: 200% 100%;
  animation: ds-skel-shimmer 1.4s ease-in-out infinite;
}
@keyframes ds-skel-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .ds-skel-row { animation: none; }
}

/* ============================================================
   PORTAL DO PARCEIRO — shell externo (#partner-shell)
   ============================================================ */
#partner-shell { min-height:100vh; background:var(--ds-panel); }
.psh-topbar {
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 24px; background:var(--surface);
  border-bottom:1px solid var(--ds-card-border); position:sticky; top:0; z-index:10;
}
.psh-back {
  appearance:none; background:none; border:none; cursor:pointer;
  display:inline-flex; align-items:center; gap:6px; color:var(--ds-accent);
  font-family:var(--font); font-size:12.5px; font-weight:600; padding:0; margin-bottom:12px;
}
.psh-muted { color:var(--text-light); }
.psh-empty { text-align:center; color:var(--text-light); font-size:13px; padding:48px 20px; }
.psh-docrow { display:flex; align-items:center; gap:14px; padding:13px 16px; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; margin:0; background:#fff; transition:border-color .12s, box-shadow .12s; }
.psh-docrow:hover { border-color:#DED3BE; box-shadow:0 4px 14px rgba(36,48,64,.05); }
.psh-docname { font-size:14px; font-weight:600; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.psh-docactions { display:flex; gap:8px; flex-shrink:0; }

/* ── Cabeçalho de escopo (titular / empresa) dentro das abas de docs ── */
.psh-hint {
  display:flex; align-items:center; gap:10px; font-size:13px; color:#6E5C40;
  background:linear-gradient(90deg,#F3EADB,#FBF6EE); border:1px solid #ECE0CC;
  border-radius:12px; padding:13px 16px; margin-bottom:16px;
}
.psh-hint [data-icon]{ color:#B99464; }

.psh-doclist { display:flex; flex-direction:column; gap:8px; }
/* Badge de documento (formato "folha", tom vermelho — como PDF). */
.psh-docico {
  width:40px; height:46px; flex-shrink:0; border-radius:8px; display:flex; align-items:center; justify-content:center;
  background:#FDECE8; border:1px solid #F6D3CA; color:#D6472F;
}
.psh-docmeta { font-size:12px; color:var(--text-light); margin-top:3px; }
/* Botão "Baixar" em azul (ação primária da linha) — escopado no parceiro. */
#partner-shell .psh-dl { color:#3D6E97; background:#ECF2F7; border-color:#DCE7F1; font-weight:700; }
#partner-shell .psh-dl:hover { background:#E0EBF4; border-color:#CFE0EE; }
/* Prévia de documento DENTRO do portal (modal com iframe) — o Visualizar não
   abre mais nova aba. Vive fora do #partner-shell (anexado ao body). */
.psh-preview-ov { position:fixed; inset:0; z-index:2000; background:rgba(20,32,47,.55); display:flex; align-items:center; justify-content:center; padding:24px; }
.psh-preview { background:#fff; border-radius:16px; box-shadow:0 24px 70px rgba(0,0,0,.4); width:min(1000px,94vw); height:min(90vh,920px); display:flex; flex-direction:column; overflow:hidden; }
.psh-preview .psh-dl { color:#3D6E97; background:#ECF2F7; border-color:#DCE7F1; font-weight:700; }
.psh-preview-h { display:flex; align-items:center; gap:12px; padding:13px 16px; border-bottom:1px solid #E9E4DA; flex:none; }
.psh-preview-name { font-size:14px; font-weight:600; color:#243040; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.psh-preview-act { display:flex; gap:8px; flex:none; }
.psh-preview-body { flex:1; min-height:0; background:#525659; }
.psh-preview-frame { width:100%; height:100%; border:0; display:block; }
@media (max-width:600px){ .psh-preview-ov{ padding:0; } .psh-preview{ width:100vw; height:100vh; border-radius:0; } }
.psh-noscope { font-size:12px; padding:10px 2px; }
.psh-del:hover { border-color:var(--red)!important; color:var(--red)!important; }

/* ══════════ Shell do Parceiro — app com sidebar (design bar) ══════════ */
.psh-app { display:flex; min-height:100vh;
  /* Camada de estilo do Portal do Parceiro (redesign Fase 1) — tokens escopados
     aqui, sem tocar no portal interno. */
  --pp-line:#E9E4DA; --pp-tan:#CBB083; --pp-tan-ink:#4B3A22;
  --pp-shadow:0 1px 2px rgba(36,48,64,.04), 0 10px 26px rgba(36,48,64,.05);
  background:radial-gradient(1100px 460px at 82% -8%, #FBF3E6 0%, transparent 55%), #F4F2EE; }
.psh-sidebar {
  width:248px; flex-shrink:0; background:linear-gradient(180deg,#14202F,#0F1926); color:#c8d2e0;
  display:flex; flex-direction:column; padding:20px 14px; position:sticky; top:0; height:100vh;
}
.psh-side-brand { display:flex; align-items:center; padding:6px 8px 20px; }
.psh-side-logo { width:150px; max-width:88%; height:auto; display:block; filter:brightness(0) invert(1); }
.psh-nav-group { font-size:10px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; color:#5f6f86; padding:16px 10px 7px; }
.psh-nav-item {
  display:flex; align-items:center; gap:11px; width:100%; padding:10px 11px; margin:2px 0; border:0;
  background:transparent; color:#c8d2e0; font-size:13.5px; font-weight:500; border-radius:10px; cursor:pointer;
  text-align:left; transition:background .12s, color .12s;
}
.psh-nav-item:hover { background:rgba(255,255,255,.05); color:#fff; }
.psh-nav-item.active { background:var(--btn-brand,#D1BDA6); color:var(--btn-brand-ink,#3b2f21); font-weight:600; }
.psh-nav-item.disabled { color:#566274; cursor:default; }
.psh-nav-lbl { flex:1; }
.psh-nav-badge { background:var(--btn-brand,#D1BDA6); color:var(--btn-brand-ink,#3b2f21); font-size:10px; font-weight:700; border-radius:999px; padding:1px 7px; }
.psh-nav-soon { font-size:9px; color:#566274; border:1px solid #2a3852; border-radius:5px; padding:1px 5px; }
.psh-side-foot { margin-top:auto; padding-top:14px; border-top:1px solid rgba(255,255,255,.07); }
.psh-side-user { display:flex; align-items:center; gap:10px; padding:8px; }
.psh-side-avatar { width:34px; height:34px; border-radius:9px; background:var(--btn-brand,#D1BDA6); color:var(--btn-brand-ink,#3b2f21); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.psh-side-uname { font-size:13px; font-weight:600; color:#fff; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.psh-side-urole { font-size:11px; color:#7d8ba0; }
.psh-side-logout { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; margin-top:8px; padding:9px; border:1px solid rgba(255,255,255,.1); background:transparent; color:#c8d2e0; border-radius:9px; font-size:12.5px; cursor:pointer; transition:background .12s; }
.psh-side-logout:hover { background:rgba(255,255,255,.06); color:#fff; }

.psh-main { flex:1; min-width:0; padding:28px 34px; }
.psh-topbar-new { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:24px; }
/* Co-branding: logo do parceiro em destaque no cabeçalho. */
.psh-headleft { display:flex; flex-direction:column; align-items:flex-start; gap:9px; min-width:0; }
.psh-topbar-right { display:flex; flex-direction:column; align-items:flex-end; gap:9px; text-align:right; }
.psh-topbar-right .psh-subtitle { margin-top:0; max-width:340px; }
.psh-partner-logo { max-height:50px; max-width:190px; object-fit:contain; border-radius:8px; flex:none; }
/* Com logo do parceiro, o "Portal do Parceiro" recua para etiqueta discreta. */
.psh-topbar-new.psh-has-logo .psh-title { font-family:var(--font); font-size:11px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--text-light); margin-bottom:1px; }
.psh-title { font-family:var(--font-display,serif); font-size:27px; color:var(--text); margin:0; letter-spacing:-.4px; }
/* Saudação com mais presença (é a 1ª coisa que o parceiro lê): maior,
   tom mais firme e respiro — condiz com o 'sob os seus cuidados'. */
.psh-subtitle { font-family:var(--font-display,"Iowan Old Style",Palatino,Georgia,serif); font-size:16px; color:var(--text-mid); margin-top:7px; line-height:1.5; letter-spacing:-.1px; }
/* Valor do card quando é TEXTO (ex.: 'Tudo em dia') e não número. */
.psh-med-val-txt { font-size:19px; font-weight:750; letter-spacing:-.3px; }
.psh-topbar-right { display:flex; align-items:center; gap:12px; }
.psh-online { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--green); background:var(--ds-pass-bg,rgba(58,125,85,.08)); border:1px solid var(--ds-pass-border,rgba(58,125,85,.2)); border-radius:999px; padding:5px 12px; }
.psh-online-dot { width:7px; height:7px; border-radius:50%; background:var(--green); }

/* Medalhões */
.psh-medgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:16px; margin-bottom:22px; }
.psh-med { background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:16px; padding:18px 20px; box-shadow:var(--pp-shadow); transition:box-shadow .15s, transform .15s; }
.psh-med:hover { box-shadow:0 2px 4px rgba(36,48,64,.05), 0 14px 32px rgba(36,48,64,.07); transform:translateY(-1px); }
.psh-med-ico { width:42px; height:42px; border-radius:12px; display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
.psh-med-val { font-size:30px; font-weight:800; color:var(--text); line-height:1; letter-spacing:-1px; }
.psh-med-lbl { font-size:13.5px; font-weight:600; color:var(--text); margin-top:7px; }
.psh-med-sub { font-size:11.5px; color:var(--text-light); margin-top:2px; }

/* Toolbar de filtros */
.psh-toolbar { display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap; }
.psh-search { flex:1; min-width:220px; display:flex; align-items:center; gap:9px; background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:0 14px; color:var(--text-light); transition:border-color .15s, box-shadow .15s; }
.psh-search:focus-within { border-color:var(--pp-tan,#CBB083); box-shadow:0 0 0 3px rgba(203,176,131,.18); }
.psh-search input { flex:1; border:0; background:transparent; padding:12px 0; font-size:13.5px; color:var(--text); outline:none; }
.psh-select { background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:0 12px; font-size:13px; color:var(--text-mid); min-width:150px; cursor:pointer; }

/* Painel + tabela */
.psh-panel { background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:16px; overflow:hidden; box-shadow:var(--pp-shadow); }
.psh-panel-head { padding:16px 20px; border-bottom:1px solid var(--border-soft); font-size:14.5px; font-weight:700; color:var(--text); }
.psh-tblwrap { overflow-x:auto; }
.psh-tbl { width:100%; border-collapse:collapse; }
.psh-tbl thead th { text-align:left; font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; color:var(--text-light); padding:12px 20px; border-bottom:1px solid var(--border-soft); white-space:nowrap; }
.psh-tbl tbody td { padding:15px 20px; font-size:13px; color:var(--text); border-bottom:1px solid var(--border-soft); }
.psh-tbl tbody tr { cursor:pointer; transition:background .1s; }
.psh-tbl tbody tr:hover { background:#FBF9F5; }
.psh-tbl tbody tr:last-child td { border-bottom:0; }
.psh-tbl-name { font-weight:600; }
.psh-tbl-client { color:var(--text-mid); font-size:12.5px; }
.psh-tbl-empty { text-align:center; color:var(--text-light); padding:40px 20px!important; }
.psh-code { color:var(--blue2); font-weight:600; font-variant-numeric:tabular-nums; }
/* Cabeçalho de 2 níveis: rótulos de grupo (Status Contabilidade · Adicionais) centralizados */
.psh-tbl-grouped thead .psh-tbl-grp th[colspan] { text-align:center; }
/* Linha tênue delimitando os blocos: Status Contabilidade | Adicionais | Vínculos */
.psh-tbl-grouped thead th.psh-grp-sep,
.psh-tbl-grouped tbody td.psh-grp-sep { border-left:1px solid var(--border-soft); }
.psh-date { font-variant-numeric:tabular-nums; color:var(--text-mid); white-space:nowrap; }
.psh-flag { font-size:15px; }
/* Bandeira como <img> SVG local (issue #121: emoji de bandeira não renderiza no
   Windows). Tamanho fixo 16×12 + raio/sombra sutil = visual consistente entre SOs. */
.psh-flagimg { width:16px; height:12px; border-radius:2px; box-shadow:0 0 0 1px rgba(0,0,0,.12); vertical-align:-1px; object-fit:cover; }
/* Fallback p/ jurisdição sem SVG (ex.: TBC): badge com o próprio código. */
.psh-flagcode { display:inline-block; font-size:8.5px; font-weight:700; letter-spacing:.04em; color:var(--text-mid); background:var(--bg-soft,#f0efec); border:1px solid var(--border-soft,#e2ded8); border-radius:3px; padding:1px 4px; vertical-align:1px; }
.psh-badge-ess { display:inline-block; margin-left:7px; font-size:10.5px; font-weight:600; color:var(--green); background:var(--ds-pass-bg,rgba(58,125,85,.08)); border:1px solid var(--ds-pass-border,rgba(58,125,85,.2)); border-radius:6px; padding:1px 7px; vertical-align:middle; }
/* Chip de serviço AVULSO (pontual, com ano-base). `.off` = ano-base diferente da
   aba selecionada — a empresa segue na lista, mas a chip esmaece p/ dar contexto. */
.psh-badge-av { display:inline-block; margin-left:7px; font-size:10.5px; font-weight:600; color:#8a6010; background:rgba(207,168,82,.12); border:1px solid rgba(207,168,82,.35); border-radius:6px; padding:1px 7px; vertical-align:middle; white-space:nowrap; }
.psh-badge-av.off { opacity:.45; }

/* Abas de ano-calendário (status contábil) */
.psh-yeartabs { display:flex; align-items:center; gap:6px; margin-bottom:14px; flex-wrap:wrap; }
.psh-yeartab { padding:7px 15px; font-size:13px; font-weight:600; color:var(--text-light); background:var(--surface); border:1px solid var(--ds-card-border); border-radius:9px; cursor:pointer; transition:all .12s; }
.psh-yeartab:hover { color:var(--text-mid); }
.psh-yeartab.active { background:var(--btn-brand,#D1BDA6); color:var(--btn-brand-ink,#3b2f21); border-color:var(--btn-brand,#D1BDA6); }
.psh-yeartabs-lbl { font-size:11px; color:var(--text-light); margin-left:4px; }

/* Chips de status contábil (STATUS DF / IRPF / DCBE) */
.psh-st { display:inline-block; font-size:11px; font-weight:600; border-radius:6px; padding:2px 8px; white-space:nowrap; background:#F0EEE9; color:var(--text-mid); }
.psh-st-ok   { background:#E6F2EB; color:#1f7a47; }
.psh-st-prog { background:#E8F0F8; color:#4a78a3; }
.psh-st-rev  { background:#F7EFDC; color:#A87F2C; }
.psh-st-hold { background:#F3EADB; color:#8A7350; }
.psh-st-off  { background:#F0EEE9; color:#8a8f98; }
.psh-st-na   { background:#F5F4F1; color:#B4B0A8; }

/* Paginação */
.psh-pager { display:flex; align-items:center; justify-content:space-between; padding:14px 20px; gap:12px; flex-wrap:wrap; }
.psh-pager-info { font-size:12px; color:var(--text-light); }
.psh-pager-btns { display:flex; gap:5px; }
.psh-page { min-width:32px; height:32px; padding:0 8px; border:1px solid var(--ds-card-border); background:var(--surface); color:var(--text-mid); border-radius:8px; font-size:12.5px; cursor:pointer; transition:background .1s; }
.psh-page:hover { background:var(--ds-hover,rgba(0,0,0,.03)); }
.psh-page.active { background:var(--btn-brand,#D1BDA6); color:var(--btn-brand-ink,#3b2f21); border-color:var(--btn-brand,#D1BDA6); }

/* Estado vazio rico (Documentos) */
.psh-empty-rich { text-align:center; padding:56px 30px; display:flex; flex-direction:column; align-items:center; gap:10px; }
.psh-empty-title { font-size:16px; font-weight:700; color:var(--text); margin-top:6px; }
.psh-empty-desc { font-size:13px; color:var(--text-light); max-width:520px; line-height:1.5; margin-bottom:8px; }

/* Sub-abas de Documentos (Societários / Obrigações / Envio) */
.psh-subtabs { display:flex; gap:6px; margin-bottom:14px; flex-wrap:wrap; }
.psh-subtab { padding:10px 15px; font-size:13px; font-weight:600; color:var(--text-light); background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:7px; cursor:pointer; transition:all .12s; }
.psh-subtab:hover { background:#FAF8F4; color:var(--text-mid); }
.psh-subtab.active { background:var(--pp-tan,#CBB083); color:var(--pp-tan-ink,#4B3A22); border-color:#BFA26F; }

/* Blocos por ano-calendário */
/* Bloco de ano vira acordeão colapsável (aba Documentos da empresa). */
.psh-yearblock { margin-bottom:12px; background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:14px; box-shadow:var(--pp-shadow); overflow:hidden; }
.psh-yearblock:last-child { margin-bottom:0; }
.psh-year-h { display:flex; align-items:center; gap:12px; padding:15px 18px; cursor:pointer; user-select:none; list-style:none; }
.psh-year-h::-webkit-details-marker { display:none; }
.psh-year-cal { width:34px; height:34px; border-radius:10px; flex:none; display:grid; place-items:center; background:#ECF2F7; color:#3D6E97; }
.psh-year-y { font-size:16px; font-weight:800; letter-spacing:-.2px; color:var(--text); font-variant-numeric:tabular-nums; }
.psh-year-c { font-size:12.5px; color:var(--text-light); font-weight:600; }
.psh-year-chev { margin-left:auto; color:var(--text-light); display:flex; transition:transform .2s; }
.psh-yearblock[open] .psh-year-chev { transform:rotate(180deg); }
.psh-yearblock .psh-doclist { padding:2px 14px 14px; }

/* Envio: cabeçalho + seletor de ano + dropzone */
.psh-envio-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }
.psh-year-pick { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.psh-year-pick label { font-size:12px; color:var(--text-light); font-weight:600; }
.psh-year-pick .psh-select { padding:8px 10px; min-width:90px; }
.psh-dropzone {
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; text-align:center;
  border:2px dashed var(--ds-border-strong,#cfd6e0); border-radius:14px; padding:30px 20px; margin-bottom:16px;
  background:var(--ds-app-bg,rgba(0,0,0,.015)); transition:border-color .15s, background .15s;
}
.psh-dropzone.drag { border-color:var(--bordo2,#7a2e3a); background:rgba(122,46,58,.05); }
.psh-dz-txt { font-size:13.5px; color:var(--text-mid); }
.psh-dz-link { color:var(--bordo2,#7a2e3a); font-weight:600; cursor:pointer; text-decoration:underline; }
.psh-dz-hint { font-size:11px; color:var(--text-light); }
/* Central de Documentos: barra de filtros + atalho de envio por empresa. */
/* Central de Documentos (feed): respiro interno do painel. */
.psh-central-panel { padding:16px 18px 18px; }
.psh-central-panel .psh-subtabs { margin-bottom:12px; }
.psh-central-filters { display:flex; gap:10px; flex-wrap:wrap; margin:12px 0 4px; }
.psh-central-filters .psh-select { min-width:150px; }
/* Empresa dona do documento, no card (clicável — abre a empresa). */
.psh-doccompany { display:inline-flex; align-items:center; gap:5px; background:none; border:0; padding:0; margin:1px 0; color:var(--bordo2,#7a2e3a); font-weight:600; font-size:11.5px; cursor:pointer; font-family:inherit; }
.psh-doccompany:hover { text-decoration:underline; }

/* Navegação mobile do Portal do Parceiro: a sidebar vira gaveta (off-canvas)
   acionada por um hambúrguer no topo — reusa o conteúdo da própria sidebar
   (Dashboard, usuário, Sair), que abaixo de 820px sumia por completo. */
.psh-mobilebar { display:none; }
.psh-backdrop { display:none; }
.psh-hamburger { display:flex; flex-direction:column; justify-content:center; gap:4px; width:42px; height:42px; padding:11px; border:1px solid var(--border-strong,#dfe3ea); background:#fff; border-radius:11px; cursor:pointer; flex:none; }
.psh-hamburger span { display:block; height:2px; background:var(--text,#2b3847); border-radius:2px; }
.psh-mobilebar-logo { height:26px; width:auto; }

/* Navegação mobile do Portal do Parceiro: a sidebar vira gaveta (off-canvas)
   acionada por um hambúrguer no topo — reusa o conteúdo da própria sidebar
   (Dashboard, usuário, Sair), que abaixo de 820px sumia por completo. */
.psh-mobilebar { display:none; }
.psh-backdrop { display:none; }
.psh-hamburger { display:flex; flex-direction:column; justify-content:center; gap:4px; width:42px; height:42px; padding:11px; border:1px solid var(--border-strong,#dfe3ea); background:#fff; border-radius:11px; cursor:pointer; flex:none; }
.psh-hamburger span { display:block; height:2px; background:var(--text,#2b3847); border-radius:2px; }
.psh-mobilebar-logo { height:26px; width:auto; }

@media (max-width:820px){
  .psh-main { padding:18px; }
  /* Gaveta: fixa fora da tela, desliza ao abrir. */
  .psh-sidebar {
    position:fixed; left:0; top:0; height:100vh; z-index:60; width:260px; max-width:82vw;
    transform:translateX(-100%); transition:transform .22s ease; box-shadow:0 0 40px rgba(0,0,0,.3);
  }
  .psh-app.psh-drawer-open .psh-sidebar { transform:translateX(0); }
  .psh-backdrop { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:55; }
  .psh-app.psh-drawer-open .psh-backdrop { display:block; }
  .psh-mobilebar { display:flex; align-items:center; gap:12px; margin-bottom:18px; }
  /* Cabeçalho empilha no mobile: etiqueta/logo em cima, saudação/Online embaixo. */
  .psh-topbar-new { flex-direction:column; align-items:flex-start; gap:12px; }
  .psh-topbar-right { align-items:flex-start; text-align:left; }
  .psh-topbar-right .psh-subtitle { max-width:none; }
}

/* ═══════════════ Solicitações de Documentos (Tickets) — aba interna ═══════════════ */
.tk-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 14px; }
.tk-head-t { font-size:15px; font-weight:700; color:var(--text); }
.tk-empty { color:var(--text-light); font-size:13px; text-align:center; padding:34px 16px; border:1px dashed var(--border-strong); border-radius:12px; background:var(--surface-alt); }
.tk-empty-sm { color:var(--text-light); font-size:12.5px; padding:10px 0; }
.tk-list { display:flex; flex-direction:column; gap:8px; }
.tk-row { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface); cursor:pointer; transition:border-color .12s, box-shadow .12s, background .12s; }
.tk-row:hover { border-color:var(--border-strong); background:var(--surface-alt); }
.tk-row-main { flex:1; min-width:0; }
.tk-row-subj { font-size:14px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tk-row-sub { font-size:12px; color:var(--text-light); margin-top:2px; }
.tk-due { display:inline-block; margin-left:6px; padding:0 6px; border-radius:5px; background:var(--surface-alt); border:1px solid var(--border); font-size:11px; color:var(--text-mid); font-variant-numeric:tabular-nums; }

/* Chips de status */
.tk-chip { flex:none; font-size:11.5px; font-weight:700; padding:3px 10px; border-radius:99px; white-space:nowrap; }
.tk-st-pend { background:rgba(200,154,62,.15); color:#8a6a1c; }
.tk-st-conf { background:rgba(74,120,163,.16); color:#2f5f86; }
.tk-st-reab { background:rgba(183,56,56,.14); color:#a13a3a; }
.tk-st-done { background:rgba(31,122,71,.15); color:#1c6b42; }

/* Prioridade */
.tk-prio { flex:none; font-size:11px; font-weight:700; letter-spacing:.3px; }
.tk-prio-baixa { color:var(--text-light); }
.tk-prio-media { color:var(--gold); }
.tk-prio-alta  { color:var(--red); }

/* Form (nova solicitação / reabertura) */
.tk-form { display:flex; flex-direction:column; }
.tk-lbl { font-size:12px; font-weight:600; color:var(--text-mid); margin:12px 0 5px; }
.tk-lbl:first-child { margin-top:0; }
.tk-opt { font-weight:400; color:var(--text-light); }
.tk-form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.tk-modal-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }

/* Detalhe */
.tk-detail-meta { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin:0 0 12px; }
.tk-detail-partner { font-size:12.5px; color:var(--text-mid); margin-left:auto; }
.tk-detail-descr { font-size:13.5px; color:var(--text-mid); line-height:1.55; margin:0 0 14px; white-space:pre-wrap; }
.tk-exp { margin:0 0 16px; padding:12px 14px; background:var(--surface-alt); border:1px solid var(--border); border-radius:10px; }
.tk-exp h4, .tk-sec h4 { margin:0 0 6px; font-size:11.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); }
.tk-exp ul { margin:0; padding-left:18px; } .tk-exp li { font-size:13px; margin:2px 0; color:var(--text); }
.tk-sec { margin:16px 0 0; }
.tk-docs { display:flex; flex-direction:column; gap:6px; }
.tk-doc { display:flex; align-items:center; gap:10px; padding:8px 10px; border:1px solid var(--border); border-radius:9px; background:var(--surface); }
.tk-doc-nm { flex:1; min-width:0; font-size:13px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tk-doc-meta { font-size:11px; color:var(--text-light); font-variant-numeric:tabular-nums; }

/* Timeline */
.tk-timeline { list-style:none; margin:6px 0 0; padding:0; position:relative; }
.tk-timeline:before { content:''; position:absolute; left:5px; top:4px; bottom:4px; width:2px; background:var(--border); }
.tk-tl-item { position:relative; padding:0 0 14px 22px; }
.tk-tl-dot { position:absolute; left:0; top:3px; width:12px; height:12px; border-radius:50%; background:var(--text-light); border:2px solid var(--surface); }
.tk-tl-created { background:var(--text-mid); }
.tk-tl-upload { background:#4a78a3; }
.tk-tl-status_change { background:var(--gold); }
.tk-tl-approved { background:var(--green); }
.tk-tl-reopened { background:var(--red); }
.tk-tl-link_opened { background:#8b5cf6; }
.tk-tl-txt { font-size:13px; color:var(--text); }
.tk-tl-when { font-size:11px; color:var(--text-light); margin-top:1px; }

.tk-detail-actions { display:flex; align-items:center; gap:8px; margin-top:20px; padding-top:16px; border-top:1px solid var(--border); }
.tk-closed-note { font-size:12.5px; color:var(--green); font-weight:600; }

@media (max-width:520px){ .tk-form-row { grid-template-columns:1fr; } }

/* Solicitações (tickets) no ambiente do parceiro — aba "Envio de documentos" */
.psh-tickets:empty { display:none; }
.psh-tickets-card { border:1px solid var(--pp-tan,#CBB083) !important; }
.psh-ticket { border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:14px 16px; margin-top:12px; background:#FBFAF7; }
.psh-ticket:first-of-type { margin-top:6px; }
.psh-ticket-head { display:flex; align-items:center; gap:10px; }
.psh-ticket-subj { flex:1; min-width:0; font-size:14px; font-weight:700; color:var(--pp-tan-ink,#4B3A22); }
.psh-ticket-sub { font-size:12px; color:var(--text-light); margin:2px 0 10px; }
.psh-ticket-dz { padding:16px 12px !important; }
.psh-ticket-status { font-size:12px; color:var(--green); margin-top:8px; min-height:0; }

/* Resposta em texto do parceiro (card de ticket na aba Envio) */
.psh-ticket-reply { margin-top:12px; padding-top:12px; border-top:1px dashed var(--pp-line,#E9E4DA); }
.psh-ticket-reply-h { font-size:12.5px; font-weight:700; color:var(--pp-tan-ink,#4B3A22); margin-bottom:6px; }
.psh-ticket-reply-ta { width:100%; box-sizing:border-box; border:1px solid var(--pp-line,#E9E4DA); border-radius:9px; padding:8px 10px; font:13.5px/1.5 inherit; color:var(--text); background:#fff; resize:vertical; }
.psh-ticket-reply-ta:focus { outline:none; border-color:var(--pp-tan,#CBB083); box-shadow:0 0 0 3px rgba(203,168,131,.18); }
.psh-ticket-reply-bar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:8px; }
.psh-ticket-reply-ok { font-size:12px; color:var(--green); font-weight:600; }
.psh-btn-ghost { appearance:none; background:transparent; color:var(--pp-tan-ink,#4B3A22); border:1px solid var(--pp-tan,#CBB083); border-radius:9px; padding:8px 16px; font-size:13px; font-weight:600; cursor:pointer; }
.psh-btn-ghost:hover { background:#FBF6EA; }

/* Excluir solicitação (só superadmin) */
.tk-del { flex:none; border:0; background:transparent; color:var(--text-light); border-radius:8px; padding:5px 7px; cursor:pointer; display:inline-flex; align-items:center; }
.tk-del:hover { background:rgba(183,56,56,.12); color:var(--red); }
.tk-del-btn:hover { border-color:var(--red); color:var(--red); }

/* Solicitações — visão consolidada no portal do parceiro */
.psh-solic-list { display:flex; flex-direction:column; gap:9px; }
.psh-solic-row { display:flex; align-items:center; gap:12px; width:100%; text-align:left; cursor:pointer;
  background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:13px 15px;
  transition:border-color .12s, box-shadow .12s, background .12s; font:inherit; color:var(--text); }
.psh-solic-row:hover { border-color:var(--pp-tan,#CBB083); background:#FBF9F5; box-shadow:var(--pp-shadow); }
.psh-solic-main { flex:1; min-width:0; }
.psh-solic-subj { font-size:14px; font-weight:700; color:var(--pp-tan-ink,#4B3A22); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.psh-solic-sub { font-size:12px; color:var(--text-light); margin-top:2px; display:flex; align-items:center; gap:5px; }
.psh-solic-prio { flex:none; font-size:11px; font-weight:700; }

/* Tela inline da solicitação (parceiro atende no portal) */
.psh-tk-panel { padding:26px 26px; }
.psh-tk-eyebrow { font-size:11.5px; letter-spacing:1.5px; text-transform:uppercase; color:var(--pp-tan,#CBB083); font-weight:700; }
.psh-tk-title { font-size:21px; font-weight:800; letter-spacing:-.3px; color:var(--pp-tan-ink,#4B3A22); margin:4px 0 2px; }
.psh-tk-title .psh-code { font-size:11.5px; }
.psh-tk-subj { font-size:15px; font-weight:700; color:var(--text); margin:10px 0 0; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.psh-tk-descr { color:var(--text-light); font-size:14px; margin:10px 0 0; white-space:pre-wrap; }
.psh-tk-due { display:inline-block; margin-top:12px; font-size:12.5px; color:var(--pp-tan-ink,#4B3A22); background:#FBF3E2; border:1px solid #EAD9AE; border-radius:8px; padding:5px 11px; font-weight:600; }
.psh-tk-exp { margin:16px 0 0; padding:14px 16px; background:#FBFAF7; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; }
.psh-tk-exp-h { font-size:11.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); font-weight:700; margin-bottom:6px; }
.psh-tk-exp ul { margin:0; padding-left:18px; } .psh-tk-exp li { font-size:13.5px; margin:3px 0; color:var(--text); }
.psh-tk-dz { margin-top:18px; }
.psh-tk-sec-h { font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); font-weight:700; margin:18px 0 8px; }
.psh-tk-docs { display:flex; flex-direction:column; gap:8px; }
.psh-tk-doc { display:flex; align-items:center; gap:11px; padding:10px 12px; border:1px solid var(--pp-line,#E9E4DA); border-radius:11px; background:#fff; }
.psh-tk-doc-nm { font-size:13.5px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.psh-tk-doc-meta { font-size:11.5px; color:var(--text-light); }
.psh-tk-uprow { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 12px; border:1px dashed var(--pp-line,#E9E4DA); border-radius:10px; margin-top:8px; }
.psh-tk-upnm { font-size:13px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.psh-tk-upst { font-size:12px; color:var(--text-light); flex:none; }
.psh-tk-submitbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:20px; flex-wrap:wrap; }
.psh-tk-submithint { font-size:12.5px; color:var(--text-light); flex:1; min-width:200px; }

/* Bloco "O que a 4Tax solicitou" na tela inline do parceiro */
.psh-tk-req { margin:14px 0 0; padding:16px 18px; background:#FBFAF7; border:1px solid var(--pp-line,#E9E4DA); border-left:3px solid var(--pp-tan,#CBB083); border-radius:12px; }
.psh-tk-req-h { display:flex; align-items:center; gap:7px; font-size:11.5px; text-transform:uppercase; letter-spacing:.6px; color:var(--pp-tan-ink,#4B3A22); font-weight:700; margin-bottom:8px; }
.psh-tk-req .psh-tk-subj { margin:0; }
.psh-tk-req .psh-tk-descr { margin:8px 0 0; color:var(--text-mid); }
.psh-tk-req .psh-tk-exp { background:#fff; }

/* Card "Pendências" do dashboard do parceiro clicável (leva às Solicitações) */
.psh-med-clk { cursor:pointer; }
.psh-med-clk:hover { border-color:var(--pp-tan,#CBB083); }

/* Botão "Informar ao parceiro" nos documentos (interno) */
.doc-btn-notify:hover { color:var(--gold); }


/* ── Tags de serviço com cor por tipo (grades interna e do parceiro) ──
   Execução = preenchido; "Relatório de Apoio" = contornado (svc-tag-outline). */
.svc-tag { display:inline-block; font-size:9px; font-weight:700; border-radius:7px; padding:2px 7px; white-space:nowrap; border:1px solid transparent; vertical-align:middle; }
.svc-tag-p { margin-left:7px; font-size:10.5px; font-weight:600; padding:1px 8px; border-radius:8px; }
.svc-tag.off { opacity:.45; }
.svc-tag-ess   { background:#EFE6D2; color:#8a6d1d; border-color:#E4D5B4; }
.svc-tag-cont  { background:#E8F0F8; color:#4a78a3; border-color:#D4E2EF; }
.svc-tag-far   { background:#E6F2EB; color:#1f7a47; border-color:#CFE5D8; }
.svc-tag-es    { background:#F3EADB; color:#8A7350; border-color:#ECE0CC; }
.svc-tag-agent { background:#EDF1F2; color:#4E6A70; border-color:#D9E2E4; }
.svc-tag-irpf  { background:#FDECE8; color:#C24C32; border-color:#F6D3CA; }
.svc-tag-dcbe  { background:#EEEAF7; color:#6A5A9E; border-color:#DFD8F0; }
.svc-tag-atos  { background:#F5EAEA; color:#915959; border-color:#EBD6D6; }
.svc-tag-tm    { background:#FBF6EE; color:#A87F2C; border-color:#EADFC2; }
.svc-tag-tax   { background:#E9F2F1; color:#33736B; border-color:#D5E6E4; }
.svc-tag-other { background:#F0EEE9; color:#6b7078; border-color:#E5E2DA; }
.svc-tag-outline { background:#fff !important; }

/* ── Parser: lista de arquivos com barra de progresso individual ── */
.ext-files { display:flex; flex-direction:column; gap:6px; margin-top:12px; }
.ext-file { display:flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--border);
  border-radius:10px; padding:8px 12px; font-size:12.5px; }
.ext-file-ico { width:26px; height:30px; border-radius:6px; display:flex; align-items:center; justify-content:center;
  background:#FDECE8; border:1px solid #F6D3CA; color:#D6472F; flex-shrink:0; }
.ext-file-name { font-weight:600; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:280px; }
.ext-file-meta { font-size:11px; color:var(--text-light); flex-shrink:0; }
.ext-file-barwrap { flex:1; min-width:90px; height:7px; border-radius:5px; background:var(--line, #EDEAE2); overflow:hidden; }
.ext-file-bar { display:block; height:100%; width:0; border-radius:5px; background:var(--tan, #CBB083); transition:width .35s ease; }
.ext-file.is-ok  .ext-file-bar { background:var(--green, #1f7a47); }
.ext-file.is-err .ext-file-bar { background:var(--bordo, #915959); }
.ext-file-st { font-size:11px; color:var(--text-light); width:92px; text-align:right; flex-shrink:0; }
.ext-file.is-ok  .ext-file-st { color:var(--green, #1f7a47); font-weight:700; }
.ext-file.is-err .ext-file-st { color:var(--bordo, #915959); font-weight:700; }

/* ── Parser: banner de bancos credenciados ── */
.ext-banks { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:14px;
  background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:10px 14px; }
.ext-banks-lbl { font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--text-light); margin-right:4px; }
.ext-bank-chip { display:inline-flex; flex-direction:column; align-items:center; gap:7px;
  background:var(--gelo, #F4F6F9); border:1px solid var(--border); border-radius:12px;
  padding:12px 14px 9px; min-width:96px; }
.ext-bank-name { font-size:11px; font-weight:600; color:var(--text-mid); text-align:center; line-height:1.25; }
/* fallback quando o logo não carrega: círculo verde com check ("credenciado") */
.ext-bank-dot { width:32px; height:32px; border-radius:50%; background:var(--green, #1f7a47); flex-shrink:0;
  display:flex; align-items:center; justify-content:center; }
.ext-bank-dot::after { content:'✓'; color:#fff; font-size:15px; font-weight:700; }
.ext-bank-logo { width:32px; height:32px; border-radius:8px; flex-shrink:0; object-fit:contain; }

/* ── Ledger: hub de cards (layout inspirado no Bigcapital) ── */
.ldg-hub { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; max-width:1080px; }
.ldg-card { display:flex; gap:13px; align-items:flex-start; background:var(--surface,#fff); border:1px solid var(--border,#E9E4DA);
  border-radius:14px; padding:16px 18px; cursor:pointer; transition:box-shadow .12s, transform .12s, border-color .12s; }
.ldg-card:hover, .ldg-card:focus-visible { box-shadow:0 8px 24px rgba(36,48,64,.09); transform:translateY(-1px); border-color:#DED3BE; outline:none; }
.ldg-card-ico { width:38px; height:38px; border-radius:10px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
  background:#E8F0F8; border:1px solid #D4E2EF; color:#4a78a3; }
.ldg-card:first-child .ldg-card-ico { background:#F7EFDC; border-color:#EADFC2; color:#A87F2C; }
.ldg-card-t { font-size:13.5px; font-weight:700; color:var(--text); margin-bottom:3px; }
.ldg-card-d { font-size:12px; color:var(--text-light); line-height:1.5; }

/* ── Bank Accounts: cards no layout do Bigcapital (claro) ─────────────────── */
.ldg-bank-grid { display:flex; flex-wrap:wrap; gap:14px; }
.ldg-bank-card { display:flex; flex-direction:column; width:240px; min-height:176px;
  background:var(--surface,#fff); border:1px solid var(--border-strong,#DDD5C6); border-radius:7px;
  cursor:pointer; transition:box-shadow .12s, border-color .12s; }
.ldg-bank-card:hover, .ldg-bank-card:focus-visible { box-shadow:0 6px 18px rgba(36,48,64,.10); border-color:#C9BC9F; outline:none; }
.ldg-bank-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; padding:14px 16px 0; }
.ldg-bank-name { font-size:14px; font-weight:700; color:var(--text); line-height:1.3; }
.ldg-bank-code { font-size:11.5px; color:var(--text-light); margin-top:2px; }
.ldg-bank-ico { color:var(--text-light); flex-shrink:0; margin-top:1px; }
.ldg-bank-body { flex:1; min-height:44px; }
.ldg-bank-foot { border-top:1px solid var(--border,#E9E4DA); padding:10px 16px 12px; }
.ldg-bank-bal { font-size:16px; font-weight:800; font-family:ui-monospace,SFMono-Regular,monospace; color:var(--text); }
.ldg-bank-cap { font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--text-light); margin-top:2px; }

/* ── Ledger: layout moderno (família visual do Bigcapital, tema claro) ────── */
/* Painel: toda tabela do módulo vira um card de superfície com header sóbrio */
#page-ledger .tw { background:var(--surface,#fff); border:1px solid var(--border-strong,#DDD5C6);
  border-radius:7px; overflow-x:auto;
  /* fluido: ocupa a largura disponível — os max-width inline das telas são
     herança do v1 e ficam neutralizados aqui (pedido do Victor: nada de
     quadrante cortando informação em tela larga) */
  max-width:100% !important; width:100%; }
#page-ledger .tw table { width:100%; }
#page-ledger table.sm { font-size:12.5px; border-collapse:collapse; }
#page-ledger table.sm thead th { font-size:10.5px; font-weight:700; text-transform:uppercase;
  letter-spacing:.06em; color:var(--text-light); background:#FAF8F3;
  border-bottom:1px solid var(--border-strong,#DDD5C6); padding:9px 10px; white-space:nowrap; }
#page-ledger table.sm tbody td { border-bottom:1px solid var(--border,#EFEAE0); }
#page-ledger table.sm tbody tr:last-child td { border-bottom:none; }
#page-ledger table.sm tbody tr:hover td { background:rgba(120,105,80,.04); }
/* Cards do hub alinhados à mesma família (raio 8, ícone 7) */
#page-ledger .ldg-card { border-radius:8px; border-color:var(--border-strong,#DDD5C6); }
#page-ledger .ldg-card-ico { border-radius:7px; }
/* Barra de ações padrão das telas (título à esquerda, botões à direita) */
#page-ledger .ldg-actionbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap;
  padding-bottom:10px; margin-bottom:14px; border-bottom:1px solid var(--border,#E9E4DA); }
/* Formulários de filtro/cabeçalho dos relatórios e do import */
#page-ledger .fl { font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  color:var(--text-light); display:block; margin-bottom:3px; }

/* Abas de sublinhado do Ledger (estilo Bigcapital; mesma linguagem da faixa de exercícios) */
#page-ledger .ldg-tabs { display:flex; gap:22px; border-bottom:1px solid var(--border,#E9E4DA); margin-bottom:14px; }
#page-ledger .ldg-tab { background:none; border:none; cursor:pointer; padding:8px 2px 9px;
  font-size:12.5px; font-weight:600; color:var(--text-light); border-bottom:2px solid transparent;
  margin-bottom:-1px; transition:color .12s, border-color .12s; }
#page-ledger .ldg-tab:hover { color:var(--text); }
#page-ledger .ldg-tab.active { color:var(--navy,var(--text)); font-weight:700; border-bottom-color:var(--bordo,#8E3B46); }

/* Drag-and-drop dos cards do 4Ledger */
#page-ledger .ldg-card[draggable=true], #page-ledger .ldg-bank-card[draggable=true] { cursor:grab; }
#page-ledger .ldg-dragging { opacity:.45; cursor:grabbing; }

/* Toolbar dos relatórios do 4Ledger (nível Bigcapital): bloco único, botões
   ghost com divisores, inputs embutidos */
#page-ledger .ldg-bar { display:inline-flex; align-items:center; gap:2px; flex-wrap:wrap;
  border:1px solid var(--border-strong,#DDD5C6); border-radius:7px; background:var(--surface,#fff);
  padding:3px 6px; margin-bottom:14px; }
#page-ledger .ldg-bar .fl { margin:0 2px 0 8px; }
#page-ledger .ldg-bar input.fi { border:none; background:transparent; padding:6px 4px; box-shadow:none; }
#page-ledger .ldg-bar select.fi { border:1px solid var(--border,#E9E4DA); border-radius:5px; background:var(--surface,#fff);
  padding:6px 26px 6px 9px; font-size:12.5px; cursor:pointer; }
#page-ledger .ldg-bar select.fi:hover { border-color:var(--border-strong,#DDD5C6); }
#page-ledger .ldg-bar-btn, #page-fiscal .ldg-bar-btn { display:inline-flex; gap:6px; align-items:center; background:none; border:none;
  padding:7px 11px; border-radius:5px; font-size:12.5px; font-weight:600; color:var(--text); cursor:pointer;
  transition:background .1s; font-family:inherit; }
#page-ledger .ldg-bar-btn:hover, #page-fiscal .ldg-bar-btn:hover { background:rgba(120,105,80,.09); }
#page-ledger .ldg-bar-btn.primary { color:var(--bordo,#8E3B46); }
#page-ledger .ldg-bar-sep { width:1px; align-self:stretch; margin:4px 6px; background:var(--border,#E9E4DA); }
#page-ledger .ldg-bar-toggle { display:inline-flex; align-items:center; gap:8px; padding:7px 10px;
  font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-light); cursor:pointer; }
/* switch estilo Bigcapital (o 'Inactive' deles) */
#page-ledger .ldg-bar-toggle input { display:none; }
#page-ledger .ldg-sw { width:30px; height:17px; border-radius:9px; background:#CFC8BA; position:relative;
  transition:background .15s; flex-shrink:0; }
#page-ledger .ldg-sw::after { content:''; position:absolute; top:2px; left:2px; width:13px; height:13px;
  border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:left .15s; }
#page-ledger .ldg-bar-toggle input:checked + .ldg-sw { background:var(--bordo,#8E3B46); }
#page-ledger .ldg-bar-toggle input:checked + .ldg-sw::after { left:15px; }

#page-ledger .ldg-row-link { cursor:pointer; }
#page-ledger .ldg-row-link:hover td { background:rgba(142,59,70,.05); }

/* ── Setup da empresa: duas colunas EMPILHADAS (sem buracos por altura
   desigual) + organograma full-width; título com subtítulo em linha própria ── */
#page-ledger .ldg-setup-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; max-width:1080px; align-items:start; }
#page-ledger .ldg-setup-col { display:flex; flex-direction:column; gap:16px; min-width:0; }
#page-ledger .ldg-setup-sec { background:var(--surface,#fff); border:1px solid var(--border,#E9E4DA); border-radius:14px;
  box-shadow:0 4px 14px rgba(36,48,64,.05); padding:18px 20px; }
#page-ledger .ldg-setup-full { grid-column:1 / -1; }
#page-ledger .ldg-setup-h { font-size:13.5px; font-weight:800; margin:0 0 12px; padding-bottom:10px;
  border-bottom:1px solid var(--border,#E9E4DA); }
#page-ledger .ldg-setup-note { font-size:11.5px; font-weight:500; color:var(--text-light,#8a8f98);
  line-height:1.5; margin-top:3px; }
#page-ledger .ldg-setup-sec .tw { border:none; }
#page-ledger .ldg-setup-sec table.sm td, #page-ledger .ldg-setup-sec table.sm th { font-size:12.5px; }
@media (max-width:900px){ #page-ledger .ldg-setup-grid { grid-template-columns:1fr; } }

/* ── F6: Emissão dos Demonstrativos — documento Financial Statements ────── */
/* folha A4 real (794×1123 @96dpi) na TELA e no export — o reflow divide o
   conteúdo em folhas físicas, então o cartão do editor = página do PDF */
#page-ledger .ldg-doc { max-width:794px; }
#page-ledger .ldg-doc-page { background:#fff; border:1px solid var(--border,#E9E4DA); border-radius:10px;
  box-shadow:0 6px 22px rgba(36,48,64,.06); padding:52px 58px 64px; margin-bottom:18px; position:relative; min-height:1123px; }
/* DMPL: 7+ colunas apertam — margens laterais menores dão respiro à tabela (20/08) */
#page-ledger .ldg-doc-page[data-pk="dmpl"] { padding-left:18px; padding-right:18px; }
/* 8 colunas (coluna de subsidiária, 20/08): fonte e paddings mais apertados
   para a matriz caber na folha A4 sem estourar */
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl { font-size:8.8px; table-layout:fixed; width:100%; }
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl th,
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl td { padding:5px 3px; overflow-wrap:break-word; }
/* NÚMERO nunca quebra no meio (31/08, caso MJH RE: 1,300,000.00 virava
   "1,300,000.0/0" na coluna estreita) — quebra de linha fica só nos RÓTULOS
   (1ª coluna) e nos cabeçalhos; valores encolhem a fonte antes de quebrar */
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl td:not(:first-child) {
  white-space:nowrap; overflow-wrap:normal; font-size:8.4px;
  font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl th { font-size:8.2px; letter-spacing:.03em; }
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl td:first-child,
#page-ledger .ldg-doc-page[data-pk="dmpl"] .ldg-doc-tbl th:first-child { width:13%; }
#page-ledger .ldg-doc-pn { position:absolute; bottom:26px; right:34px; font-size:9.5px; letter-spacing:.14em;
  color:var(--text-light,#8a8f98); font-weight:700; }
/* capa e contracapa — navy com logo branca */
#page-ledger .ldg-doc-cover, #page-ledger .ldg-doc-back { background:#151A26; color:#fff; border:none;
  display:flex; flex-direction:column; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-logo { width:120px; align-self:flex-start; }
#page-ledger .ldg-doc-cv { margin:auto 0; }
#page-ledger .ldg-doc-cv-co { font-size:15px; font-weight:700; letter-spacing:.22em; opacity:.85; margin-bottom:18px; }
#page-ledger .ldg-doc-cv-t { font-size:56px; font-weight:800; line-height:1.05; letter-spacing:.02em; }
#page-ledger .ldg-doc-cv-s { font-size:13px; font-weight:700; letter-spacing:.14em; margin-top:20px; opacity:.9; }
#page-ledger .ldg-doc-cv-tag { font-size:10.5px; font-weight:700; letter-spacing:.18em; line-height:1.8; opacity:.55; }
#page-ledger .ldg-doc-stamp { position:absolute; top:52px; right:58px; border:2.5px solid #C96A5B; color:#C96A5B;
  font-weight:800; font-size:13px; letter-spacing:.16em; padding:7px 14px; border-radius:6px; transform:rotate(-4deg); }
/* páginas de texto */
#page-ledger .ldg-doc-eyebrow { font-size:10px; font-weight:800; letter-spacing:.22em; color:var(--bordo,#8E3B46); margin-bottom:10px; }
#page-ledger .ldg-doc-title { font-size:24px; font-weight:800; line-height:1.25; max-width:420px; margin-bottom:22px; }
#page-ledger .ldg-doc-sub { font-size:13.5px; font-weight:800; margin:22px 0 8px; }
#page-ledger .ldg-doc-sub2 { font-size:12.5px; font-weight:700; margin:14px 0 6px; color:var(--text-mid,#4a4f58); }
#page-ledger .ldg-doc-body { font-size:12px; line-height:1.75; color:var(--text-mid,#3d424b); text-align:justify; }
#page-ledger .ldg-doc-edit { white-space:pre-wrap; border-radius:6px; padding:2px 4px; margin:0 -4px; outline:none; }
#page-ledger .ldg-doc-edit:hover { background:rgba(142,59,70,.045); }
#page-ledger .ldg-doc-edit:focus { background:rgba(142,59,70,.07); box-shadow:0 0 0 1.5px rgba(142,59,70,.35); }
#page-ledger .ldg-doc-back .ldg-doc-edit:hover, #page-ledger .ldg-doc-back .ldg-doc-edit:focus { background:rgba(255,255,255,.08); }
/* cabeçalho das demonstrações — identidade dos quadros da casa (12/08):
   eyebrow bordô, régua bordô 3px, chips de exercício (gelo + bordô), moeda */
#page-ledger .ldg-doc-h { display:flex; justify-content:space-between; align-items:flex-end;
  margin-bottom:34px; border-bottom:3px solid var(--bordo,#915959); padding-bottom:14px; position:relative; }
#page-ledger .ldg-doc-hc { font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--bordo,#915959); }
#page-ledger .ldg-doc-ht { font-size:24px; font-weight:800; margin-top:4px; color:#1a1d24; }
#page-ledger .ldg-doc-hs { font-size:11.5px; color:var(--text-mid,#4a4f58); margin-top:4px; }
#page-ledger .ldg-doc-hr { text-align:right; flex:0 0 auto; }
#page-ledger .ldg-doc-chipp { display:inline-block; background:#f5f3ef; color:#5f5a4e; font-weight:600;
  font-size:13px; padding:4px 12px; border-radius:3px; border:1px solid #dad6cf; margin-right:6px;
  -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-chipb { display:inline-block; background:var(--bordo,#915959); color:#fff; font-weight:700;
  font-size:13px; padding:4px 13px; border-radius:3px; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-cur { font-size:10px; color:#8a8578; margin-top:6px; letter-spacing:.08em; text-transform:uppercase; }
#page-ledger .ldg-doc-chip { display:inline-block; border:2px solid #C96A5B; color:#C96A5B;
  font-weight:800; font-size:10px; letter-spacing:.12em; padding:4px 9px; border-radius:5px; margin-right:8px; vertical-align:2px; }
/* quadros e demonstrações — acabamento no padrão dos quadros 6.x das notas:
   banda gelo no thead, linhas quentes, totais gelo com régua navy */
#page-ledger .ldg-doc-qt { font-size:12.5px; font-weight:800; margin:20px 0 6px; }
#page-ledger .ldg-doc-tbl { width:100%; border-collapse:collapse; font-size:11px; margin:4px 0 10px; }
/* harmonia com os QUADROS 6.x das notas (12/08, pedido do Victor): os
   demonstrativos usam exatamente os valores dos quadros — banda gelo
   #f5f3ef no thead, sub-faixas #fbfaf7, totais #faf8f4 com regua navy,
   negativos no bordo #8E3B46, divisores quentes #efece6 */
#page-ledger .ldg-doc-tbl th { font-size:9.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:#5f5a4e; background:#f5f3ef; text-align:left; padding:8px;
  border-bottom:1px solid #dad6cf; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-tbl td { padding:5.5px 8px; border-bottom:1px solid #efece6; color:#1f2429; }
#page-ledger .ldg-doc-tbl td:not(:first-child) { font-variant-numeric:tabular-nums; }
#page-ledger .ldg-doc-tbl td.ldg-doc-neg { color:#8E3B46; }
#page-ledger .ldg-doc-tbl .ldg-doc-sec td { font-weight:700; font-size:10px; letter-spacing:.06em; text-transform:uppercase;
  color:#5f5a4e; background:#fbfaf7; border-bottom:1px solid #dad6cf; padding-top:10px;
  -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-tbl .ldg-doc-tot td { font-weight:700; color:#1a1d24; border-top:2px solid #1a1d24;
  border-bottom:none; background:#faf8f4; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
/* negativo em vermelho em toda a emissão (26/08, pedido do time) — mantém os
   parênteses; a cor sobrevive à impressão/PDF */
#page-ledger .ldg-doc .ldg-neg { color:#a13333; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-fs { font-size:11.5px; }
/* ── barra financeira fixa do rodapé (17-18/08): bloco NAVY da marca com as
   cotações USD/EUR/BTC fixas + área BRANCA sólida com manchetes do InfoMoney.
   Sem transparência: o glass deixava o conteúdo vazar por trás (cinza/azul). ── */
/* 18/08 (pedido do Victor): cotações FIXAS no canto inferior ESQUERDO da
   tela — a barra é full-width (passa por cima do rodapé da sidebar, que
   ganha respiro via padding) e o bloco navy das moedas ancora no canto */
#fin-ticker { position:fixed; left:0; right:0; bottom:0; z-index:250; height:32px;
  display:flex; align-items:stretch; padding:0;
  background:#FFFFFF; border-top:2px solid #2B3847; font-size:11.5px; color:#454b52;
  box-shadow:0 -2px 10px rgba(26,29,36,.07); }
/* sidebar: o bloco de perfil no rodapé não fica escondido atrás da barra */
body.has-fin-ticker .sidebar { padding-bottom:34px; }
#fin-ticker .ftk-quotes { display:flex; align-items:center; white-space:nowrap; flex-shrink:0;
  font-variant-numeric:tabular-nums; background:#2B3847; color:#fff; padding:0 4px; }
#fin-ticker .ftk-chip { padding:0 12px; border-right:1px solid rgba(255,255,255,.14); font-weight:600; }
#fin-ticker .ftk-chip:last-child { border-right:none; }
#fin-ticker .ftk-chip b { color:#E8C87A; margin-right:5px; font-size:10px; letter-spacing:.07em; }
#fin-ticker .ftk-up { color:#8FD4AC; font-size:10px; margin-left:4px; }
#fin-ticker .ftk-dn { color:#E8A2AD; font-size:10px; margin-left:4px; }
#fin-ticker .ftk-news { overflow:hidden; flex:1; display:flex; align-items:center; }
#fin-ticker .ftk-track { display:inline-block; white-space:nowrap; padding-left:24px;
  animation:ftk-scroll 90s linear infinite; will-change:transform; }
#fin-ticker .ftk-track:hover { animation-play-state:paused; }
#fin-ticker .ftk-track a { color:#454b52; text-decoration:none; }
#fin-ticker .ftk-track a:hover { color:#8E4A4A; text-decoration:underline; }
#fin-ticker .ftk-sep { margin:0 16px; color:#c8c2b4; }
#fin-ticker .ftk-tag { display:inline-block; font-size:8.5px; font-weight:800; letter-spacing:.06em;
  color:#8E4A4A; border:1px solid #E0CFC9; border-radius:4px; padding:1px 4px; margin-right:6px;
  vertical-align:1px; }
#fin-ticker .ftk-src { flex-shrink:0; display:flex; align-items:center; padding:0 12px;
  font-size:9.5px; letter-spacing:.08em; text-transform:uppercase;
  color:#8E4A4A; font-weight:700; border-left:1px solid var(--border,#E4DFD4); background:#FAF8F3; }
@keyframes ftk-scroll { from { transform:translateX(0); } to { transform:translateX(-50%); } }
/* a barra é fixa: o conteúdo rolável precisa de respiro para a última linha */
.main { padding-bottom:44px; }
@media (max-width:900px){ #fin-ticker { display:none; } .main { padding-bottom:0; } }
@media print { #fin-ticker { display:none !important; } }
/* Balanço (17/08): identidade dos QUADROS do memorando — grupos de nível 1
   em faixa gelo #f5f3ef, seção em bordô da marca, folhas sem régua em tom
   rebaixado, totais com régua dupla de auditoria */
#page-ledger .ldg-doc-bs td { border-bottom:none; padding-top:4.5px; padding-bottom:4.5px; color:#454b52; }
#page-ledger .ldg-doc-bs .ldg-doc-grp td { background:#f5f3ef; color:#1a1d24; padding-top:7px; padding-bottom:7px;
  border-top:6px solid #fff; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
#page-ledger .ldg-doc-bs .ldg-doc-sec td { background:none; color:#8E4A4A; letter-spacing:.12em;
  border-bottom:2px solid #8E4A4A; padding-top:12px; }
#page-ledger .ldg-doc-bs .ldg-doc-tot td { border-top:2px solid #1a1d24; border-bottom:3px double #1a1d24; color:#1a1d24; }
/* assinaturas por papel (Prepared/Reviewed/Approved, 12/08) */
#page-ledger .ldg-doc-signfirm { margin-top:16px; font-size:12px; font-weight:700; color:#2B3847; }
#page-ledger .ldg-doc-signrow { display:flex; gap:34px; margin-top:22px; flex-wrap:wrap; }
#page-ledger .ldg-doc-signcol { min-width:190px; }
#page-ledger .ldg-doc-signrole { font-size:9.5px; font-weight:800; letter-spacing:.16em; color:var(--bordo,#915959); margin-bottom:8px; }
/* área da assinatura com ALTURA FIXA e âncora na base: linhas/nomes/CRC
   alinham entre colunas; imagem mais alta (Victor) transborda por cima da
   linha, como assinatura real */
#page-ledger .ldg-doc-sigwrap { height:46px; display:flex; align-items:flex-end; overflow:visible; margin-bottom:2px; }
#page-ledger .ldg-doc-sigimg { height:44px; max-width:190px; object-fit:contain; display:block; }
#page-ledger .ldg-doc-signname { font-size:12px; font-weight:800; color:#2B3847; border-top:1px solid #2B3847; padding-top:6px; margin-top:4px; max-width:220px; }
#page-ledger .ldg-doc-signcrc { font-size:11px; color:var(--text-mid,#4a4f58); margin-top:2px; }

/* assinatura: só o contador responsável, empilhada (modelo Bassera) */
#page-ledger .ldg-doc-sign { margin-top:44px; font-size:12px; }
#page-ledger .ldg-doc-sign-block { margin-top:28px; display:flex; flex-direction:column; gap:14px; }
/* modo export (geração de PDF via html2canvas): folha A4 exata, sem bordas
   de card nem controles de edição — o fundo da capa vai até a borda */
/* borda vira transparente (não some): mantém a MESMA geometria da tela,
   então o reflow medido no editor vale byte a byte para o PDF */
#page-ledger .ldg-doc-export .ldg-doc-page { width:794px; min-height:1123px; border-color:transparent; border-radius:0;
  box-shadow:none; margin:0 0 18px; }
#page-ledger .ldg-doc-export .ldg-doc-nctl, #page-ledger .ldg-doc-export .ldg-doc-x { display:none !important; }
#page-ledger .ldg-doc-export .ldg-doc-edit:hover, #page-ledger .ldg-doc-export .ldg-doc-edit:focus { background:none; box-shadow:none; }

/* capa editorial da emissão (12/08, manual da marca): split foto + painel
   off-white; tipografia navy, régua bordô, pattern de cantos do símbolo */
#page-ledger .ldg-doc-cover2 { display:flex; flex-direction:row; padding:0; background:#F2F0ED;
  color:#2B3847; overflow:hidden; }
#page-ledger .ldg-doc-cvphoto { flex:0 0 44%; position:relative; }
#page-ledger .ldg-doc-cvphoto img { width:100%; height:100%; object-fit:cover; display:block; }
#page-ledger .ldg-doc-cvpanel { flex:1; display:flex; flex-direction:column; padding:52px 54px 44px; position:relative; }
#page-ledger .ldg-doc-cvlogo { width:185px; align-self:flex-end; }
#page-ledger .ldg-doc-cvmid { margin:auto 0; }
#page-ledger .ldg-doc-cv-co2 { font-size:13px; font-weight:700; letter-spacing:.22em; color:var(--bordo,#915959);
  text-transform:uppercase; margin-bottom:14px; }
#page-ledger .ldg-doc-cv-t2 { font-size:46px; font-weight:800; line-height:1.08; letter-spacing:.02em; color:#2B3847; }
#page-ledger .ldg-doc-cv-s2 { font-size:12px; font-weight:700; letter-spacing:.16em; margin-top:18px; color:#2B3847; opacity:.85; }
#page-ledger .ldg-doc-cv-s3 { font-size:10.5px; font-weight:700; letter-spacing:.18em; margin-top:6px; color:#8a8578; }
#page-ledger .ldg-doc-cvbot { display:block; }
#page-ledger .ldg-doc-cover2 .ldg-doc-cvpat { width:calc(100% + 54px); margin-left:-54px; }
#page-ledger .ldg-doc-cvpat { height:auto; display:block; }
#page-ledger .ldg-doc-cvyear { position:absolute; bottom:36px; left:0; right:0; text-align:center;
  font-family:var(--font); font-weight:300; font-size:30px; letter-spacing:.35em; text-indent:.35em; color:#fff; }
#page-ledger .ldg-doc-ftpat { position:absolute; bottom:22px; left:34px; width:110px; height:auto; }
#page-ledger .ldg-doc-cover2 .ldg-doc-stamp { top:48px; left:54px; right:auto; }
/* contracapa na mesma linguagem da capa: off-white, eyebrow bordô, logo navy
   no canto direito, pattern de cantos no pé (12/08) */
#page-ledger .ldg-doc-back2 { background:#F2F0ED; color:#2B3847; }
#page-ledger .ldg-doc-back2 .ldg-doc-bk-t { color:#2B3847; }
#page-ledger .ldg-doc-bk-eb { font-size:12px; font-weight:700; letter-spacing:.22em;
  color:var(--bordo,#915959); margin-bottom:10px; }
#page-ledger .ldg-doc-back2 .ldg-doc-bk-s { color:#8a8578; opacity:1; }
#page-ledger .ldg-doc-back.ldg-doc-back2 .ldg-doc-edit { color:#2B3847; opacity:1; }
#page-ledger .ldg-doc-back.ldg-doc-back2 .ldg-doc-edit:hover, #page-ledger .ldg-doc-back.ldg-doc-back2 .ldg-doc-edit:focus { background:rgba(145,89,89,.06); }
#page-ledger .ldg-doc-bkpat { position:absolute; bottom:52px; left:58px; width:300px; margin-bottom:0; }

/* ── Tema GLASS do 4Ledger (redesign 12/08): telas de STATUS (home, hub,
   assistente) — fundo atmosférico da paleta + cartões translúcidos. Telas
   de trabalho denso (razão, balancete, grids) ficam fora, por decisão. ── */
#page-ledger .ldg-glassbg { border-radius:18px; padding:26px 30px 30px; margin:-6px -4px 0;
  background:
    radial-gradient(1000px 800px at -140px -260px, rgba(201,214,230,.55), transparent 62%),
    radial-gradient(760px 700px at 104% 108%, rgba(227,207,210,.4), transparent 60%),
    radial-gradient(560px 520px at 58% 36%, rgba(214,224,236,.35), transparent 60%),
    radial-gradient(460px 420px at 8% 62%, rgba(232,221,201,.35), transparent 60%),
    linear-gradient(160deg,#f5f3ef 0%,#eef0f4 55%,#f3efe9 100%); }
#page-ledger .ldg-gcard { background:rgba(255,255,255,.6); border:1px solid rgba(255,255,255,.9);
  border-radius:20px; backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px);
  box-shadow:0 16px 40px rgba(43,56,71,.09); }
#page-ledger .ldg-ghero { display:flex; align-items:flex-end; gap:24px; margin:6px 0 22px; }
#page-ledger .ldg-ghero-eb { font-size:12px; font-weight:700; letter-spacing:.22em; color:rgba(145,89,89,.85); }
#page-ledger .ldg-ghero-n { font-size:64px; font-weight:300; line-height:.95; color:#2B3847; font-family:var(--font); }
#page-ledger .ldg-ghero-sub { font-size:12.5px; color:rgba(43,56,71,.6); margin-bottom:10px; max-width:360px; line-height:1.5; }
/* KPIs */
#page-ledger .ldg-gkpis { display:grid; grid-template-columns:repeat(3,minmax(160px,220px)); gap:14px; margin-bottom:18px; }
#page-ledger .ldg-gkpi { padding:15px 20px; cursor:pointer; }
#page-ledger .ldg-gkpi .n { font-size:29px; font-weight:800; line-height:1; }
#page-ledger .ldg-gkpi .l { font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:rgba(43,56,71,.5); margin-top:5px; }
/* chips */
#page-ledger .ldg-gchips { display:flex; gap:8px; align-items:center; margin-bottom:16px; flex-wrap:wrap; }
#page-ledger .ldg-gchip { padding:8px 16px; border-radius:20px; font-size:12px; font-weight:700; cursor:pointer;
  color:rgba(43,56,71,.75); background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.85); backdrop-filter:blur(16px); }
#page-ledger .ldg-gchip.on { background:#2B3847; border-color:#2B3847; color:#fff; box-shadow:0 6px 18px rgba(43,56,71,.28); }
#page-ledger .ldg-gsearch { margin-left:auto; background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.85);
  border-radius:11px; padding:9px 14px; font-size:12.5px; width:280px; backdrop-filter:blur(16px); }
#page-ledger .ldg-gsect { font-size:10px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:rgba(43,56,71,.5); margin:18px 2px 10px; }
/* grade de cards de empresa */
#page-ledger .ldg-ggrid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:1100px){ #page-ledger .ldg-ggrid { grid-template-columns:1fr; } }
#page-ledger .ldg-gco { padding:15px 18px 13px; position:relative; cursor:pointer; }
#page-ledger .ldg-gco:hover { box-shadow:0 20px 46px rgba(43,56,71,.14); }
#page-ledger .ldg-gstripe { position:absolute; left:0; top:16px; bottom:16px; width:4px; border-radius:3px; }
#page-ledger .ldg-gs-crit { background:linear-gradient(180deg,#8E3B46,#b56b74); }
#page-ledger .ldg-gs-warn { background:linear-gradient(180deg,#c89a3e,#e0bd77); }
#page-ledger .ldg-gs-ok { background:linear-gradient(180deg,#1f7a47,#4ba374); }
#page-ledger .ldg-gco-n { font-size:14px; font-weight:800; color:#2B3847; }
#page-ledger .ldg-gco-c { font-size:10.5px; color:rgba(43,56,71,.5); margin-top:1px; }
#page-ledger .ldg-gco-age { font-size:10px; color:rgba(43,56,71,.5); text-align:right; }
#page-ledger .ldg-gco-age b { color:#8E3B46; }
#page-ledger .ldg-gco-meta { font-size:11px; color:rgba(43,56,71,.65); margin-top:7px; }
#page-ledger .ldg-gmini { display:flex; gap:5px; align-items:center; margin:10px 0 11px; }
#page-ledger .ldg-gmd { width:14px; height:14px; border-radius:50%; border:1.5px solid rgba(43,56,71,.2); background:rgba(255,255,255,.7); }
#page-ledger .ldg-gmd.ok { background:linear-gradient(135deg,#1f7a47,#35b06a); border-color:transparent; box-shadow:0 0 7px rgba(53,176,106,.35); }
#page-ledger .ldg-gmd.warn { border-color:#c89a3e; box-shadow:inset 0 0 0 3px rgba(255,255,255,.9), inset 0 0 0 7px #c89a3e; }
#page-ledger .ldg-gmd.next { border-color:#915959; box-shadow:0 0 0 3px rgba(145,89,89,.15); }
/* step dispensado manualmente (justificativa registrada): verde vazado tracejado */
#page-ledger .ldg-gmd.wvd { border:1.5px dashed #1f7a47; background:rgba(53,176,106,.15); }
#page-ledger .ldg-cyc-wvd .ldg-cyc-dot { border-style:dashed; }
#page-ledger .ldg-gml { font-size:9.5px; color:rgba(43,56,71,.45); margin-left:3px; }
#page-ledger .ldg-gcta { display:inline-flex; align-items:center; background:rgba(200,154,62,.12); border:1px solid rgba(200,154,62,.45);
  color:#8a6a1f; font-size:11.5px; font-weight:700; padding:7px 13px; border-radius:10px; cursor:pointer; margin:2px 6px 2px 0; }
#page-ledger .ldg-gcta.red { background:rgba(142,59,70,.08); border-color:rgba(142,59,70,.4); color:#8E3B46; }
#page-ledger .ldg-gcta.gr { background:rgba(31,122,71,.09); border-color:rgba(31,122,71,.35); color:#1f7a47; }
#page-ledger .ldg-gcta:hover { filter:brightness(.96); }
#page-ledger .ldg-gok { font-size:11.5px; font-weight:700; color:#1f7a47; }
#page-ledger .ldg-gcollapsed { grid-column:1/-1; padding:13px 18px; display:flex; align-items:center; gap:12px; cursor:pointer; }
#page-ledger .ldg-gnew { background:rgba(255,255,255,.65); border:1px solid rgba(43,56,71,.12); border-radius:12px;
  padding:9px 16px; font-size:12px; font-weight:700; color:#8E5959; cursor:pointer; backdrop-filter:blur(16px); }
/* hub em glass: herda a esteira existente e cartões de grupo */
#page-ledger .ldg-glassbg .ldg-cyc, #page-ledger .ldg-glassbg .ldg-hub-g { background:rgba(255,255,255,.6);
  border:1px solid rgba(255,255,255,.9); backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px);
  box-shadow:0 16px 40px rgba(43,56,71,.09); border-radius:20px; }
#page-ledger .ldg-glassbg .ldg-card { background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.85); }
#page-ledger .ldg-glassbg .tw { background:rgba(255,255,255,.6); border:1px solid rgba(255,255,255,.9);
  backdrop-filter:blur(20px); border-radius:18px; box-shadow:0 14px 34px rgba(43,56,71,.08); }

/* esteira do ciclo no hub do 4Ledger (P1 UX 12/08) */
#page-ledger .ldg-cyc { max-width:1060px; background:var(--surface,#fff); border:1px solid var(--border,#E9E4DA);
  border-radius:12px; padding:16px 20px 14px; margin-bottom:18px; }
#page-ledger .ldg-cyc-t { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
  color:var(--text-light,#8a8f98); margin-bottom:12px; }
#page-ledger .ldg-cyc-row { display:flex; align-items:flex-start; gap:4px; flex-wrap:wrap; }
#page-ledger .ldg-cyc-s { display:flex; flex-direction:column; align-items:center; gap:4px; cursor:pointer;
  min-width:86px; text-align:center; padding:2px 4px; border-radius:8px; }
#page-ledger .ldg-cyc-s:hover { background:rgba(43,56,71,.05); }
#page-ledger .ldg-cyc-dot { width:26px; height:26px; border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:12px; font-weight:800; border:2px solid var(--border-strong,#DDD5C6);
  color:var(--text-light,#8a8f98); background:#fff; }
#page-ledger .ldg-cyc-ok .ldg-cyc-dot { background:#1f7a47; border-color:#1f7a47; color:#fff; }
#page-ledger .ldg-cyc-warn .ldg-cyc-dot { background:#fff; border-color:var(--gold,#c89a3e); color:var(--gold,#c89a3e); }
#page-ledger .ldg-cyc-todo .ldg-cyc-dot { background:#fff; border-color:var(--border-strong,#DDD5C6); }
#page-ledger .ldg-cyc-l { font-size:10.5px; font-weight:700; color:var(--text-mid,#4a4f58); line-height:1.2; }
#page-ledger .ldg-cyc-warn .ldg-cyc-l { color:var(--gold,#b8860b); }
#page-ledger .ldg-cyc-d { font-size:9.5px; color:var(--text-light,#8a8f98); }
#page-ledger .ldg-cyc-sep { flex:1 0 10px; max-width:34px; height:2px; background:var(--border,#E9E4DA);
  align-self:flex-start; margin-top:13px; border-radius:2px; }
#page-ledger .ldg-cyc-foot { display:flex; align-items:center; gap:14px; margin-top:12px; flex-wrap:wrap; }
#page-ledger .ldg-cyc-done { color:#1f7a47; font-weight:800; font-size:13px; }
#page-ledger .ldg-cyc-conc { font-size:11.5px; font-weight:700; padding:4px 12px; border-radius:9px; cursor:pointer; }
#page-ledger .ldg-cyc-conc.ok { background:rgba(31,122,71,.09); color:#1f7a47; }
#page-ledger .ldg-cyc-conc.bad { background:rgba(142,59,70,.09); color:#8E3B46; }

/* manual do ambiente de emissão (📖 Guide, 12/08) */
.ldg-guide-ov { position:fixed; inset:0; z-index:10050; background:rgba(21,26,38,.45); display:flex;
  align-items:flex-start; justify-content:center; padding:5vh 16px; overflow:auto; }
.ldg-guide { background:#fff; border-radius:12px; max-width:720px; width:100%; padding:36px 42px 30px;
  position:relative; box-shadow:0 18px 60px rgba(21,26,38,.35); }
.ldg-guide-x { position:absolute; top:14px; right:16px; width:30px; height:30px; border-radius:50%;
  border:1px solid var(--border-strong,#DDD5C6); background:#fff; color:var(--text-light,#8a8f98);
  font-size:16px; line-height:1; cursor:pointer; }
.ldg-guide-x:hover { color:var(--bordo,#8E3B46); border-color:var(--bordo,#8E3B46); }
.ldg-guide-eb { font-size:10px; font-weight:800; letter-spacing:.22em; color:var(--bordo,#8E3B46); margin-bottom:8px; }
.ldg-guide-t { font-size:22px; font-weight:800; margin-bottom:18px; color:#151A26; }
.ldg-guide-st { font-size:12px; font-weight:800; letter-spacing:.1em; text-transform:uppercase;
  color:var(--text-mid,#4a4f58); border-bottom:2px solid #151A26; padding-bottom:6px; margin:20px 0 10px; }
.ldg-guide-sec ul { margin:0; padding-left:18px; }
.ldg-guide-sec li { font-size:13px; line-height:1.7; color:var(--text-mid,#3d424b); margin-bottom:9px; }

/* folha de índice (Contents) — gerada na paginação do PDF (revisão v2 11/08) */
#page-ledger .ldg-doc-toc { display:flex; align-items:baseline; gap:10px; font-size:13px; font-weight:700;
  margin:16px 0; color:var(--text-mid,#3d424b); }
#page-ledger .ldg-doc-toc-d { flex:1; border-bottom:2px dotted #C9C1B2; }
#page-ledger .ldg-doc-toc-n { font-family:ui-monospace,'SF Mono',Menlo,monospace; font-size:11px; font-weight:800;
  color:#151A26; }

/* notas ordenáveis: setas ▲▼ no canto (somem na impressão); numeral automático */
#page-ledger .ldg-doc-note { position:relative; }
#page-ledger .ldg-doc-nctl { position:absolute; top:16px; right:-20px; display:flex; flex-direction:column; gap:3px; }
#page-ledger .ldg-doc-nctl button { width:22px; height:22px; border-radius:50%; border:1px solid var(--border-strong,#DDD5C6);
  background:var(--surface,#fff); color:var(--text-light,#8a8f98); font-size:9.5px; line-height:1; cursor:pointer; padding:0; }
#page-ledger .ldg-doc-nctl button:hover { color:var(--bordo,#8E3B46); border-color:var(--bordo,#8E3B46); }
#page-ledger .ldg-doc-num { font-weight:800; }
/* controle no canto da FOLHA (reordenar páginas do miolo): horizontal, dentro da página */
#page-ledger .ldg-doc-pctl { top:12px; right:14px; flex-direction:row; }
/* blocos extras (nota/página livre) + botão remover (some na impressão) */
#page-ledger .ldg-doc-xnote, #page-ledger .ldg-doc-xpage { position:relative; margin-top:18px; }
#page-ledger .ldg-doc-x { position:absolute; top:0; right:-14px; width:22px; height:22px; border-radius:50%;
  border:1px solid var(--border-strong,#DDD5C6); background:var(--surface,#fff); color:var(--text-light,#8a8f98);
  font-size:13px; line-height:1; cursor:pointer; }
#page-ledger .ldg-doc-x:hover { color:#C96A5B; border-color:#C96A5B; }
/* contracapa */
#page-ledger .ldg-doc-bk { margin:auto 0; max-width:420px; }
#page-ledger .ldg-doc-bk-t { font-size:34px; font-weight:800; margin-bottom:10px; }
#page-ledger .ldg-doc-bk-s { font-size:12px; opacity:.75; margin-bottom:18px; line-height:1.7; }
#page-ledger .ldg-doc-back .ldg-doc-edit { color:#fff; opacity:.92; }

/* impressão: só o corpo do relatório */
@media print {
  body * { visibility:hidden; }
  #ledger-content, #ledger-content * { visibility:visible; }
  #ledger-content { position:absolute; left:0; top:0; width:100%; }
  #ledger-content .ldg-bar, #ledger-content .ldg-tabs, #ledger-content button,
  #ledger-content input, #ledger-content select, #ledger-content label { display:none !important; }
  /* moldura do documento impresso (pedido 11/08/2026 — inspiração no razão
     clássico): quadro sólido em volta da tabela dos relatórios */
  #page-ledger .tw { border:1.5px solid #1a1a1a; border-radius:0; box-shadow:none; }
  /* documento de emissão: uma página por folha, cores da capa preservadas.
     min-height ancora o nº de página no PÉ da folha; blocos (seções do BS,
     quadros, demonstrações) nunca quebram no meio — quebram ENTRE si */
  #ledger-content .psh-hint, #ledger-content #ldg-stmt-hist { display:none !important; }
  #page-ledger .ldg-doc { max-width:none; }
  #page-ledger .ldg-doc-page { border:none; border-radius:0; box-shadow:none; margin:0; min-height:247mm;
    padding:40px 44px 52px; page-break-after:always; }
  #page-ledger .ldg-doc-page:last-child { page-break-after:auto; }
  #page-ledger .ldg-doc-cover, #page-ledger .ldg-doc-back { min-height:250mm; }
  #page-ledger .ldg-doc-block { break-inside:avoid; page-break-inside:avoid; }
  #page-ledger .ldg-doc-x { display:none !important; }
  #page-ledger .ldg-doc-edit:hover, #page-ledger .ldg-doc-edit:focus { background:none; box-shadow:none; }
}

/* Imagem inserida em nota/página livre da emissão (F6): centrada, nunca
   estoura a folha, não quebra no meio da página impressa */
.ldg-doc-noteimg { margin:10px 0 4px; break-inside:avoid; page-break-inside:avoid; text-align:center; }
.ldg-doc-noteimg img { max-width:100%; height:auto; display:inline-block; }
.ldg-doc-imgcap { font-size:11.5px; font-weight:700; text-align:left; margin:8px 0 4px; }

/* ── Cabeçalho de documento dos relatórios do 4Ledger (só na impressão) ────
   Linha extra no thead: o navegador repete o thead em toda página impressa,
   então empresa/período/identificação saem em cada folha. "Folha N" vem da
   margin box do @page (Chrome 131+; ignorada sem suporte, sem quebra). */
.ldg-ph { display:none; }
@media print {
  .ldg-ph { display:table-row; }
  .ldg-ph th { padding:0 0 12px !important; border-bottom:2.5px solid #1a1a1a; text-align:left; }
  .ldg-ph-in { display:flex; justify-content:space-between; align-items:flex-end; gap:20px; }
  .ldg-ph-co { font-size:15px; font-weight:800; letter-spacing:.01em; color:#111; }
  .ldg-ph-r { text-align:right; }
  .ldg-ph-doc { font-size:11px; font-weight:800; letter-spacing:.16em; color:#111; }
  .ldg-ph-meta { font-size:10.5px; color:#444; margin-top:2px; font-weight:400; letter-spacing:0; }
  /* "Folha N": NÃO usar página nomeada (page:) aqui — força quebra antes da
     tabela e a folha 1 sai só com o carimbo da revisão (bug 11/08/2026).
     A margin box é injetada por JS no beforeprint (app.js), só quando a
     tela impressa é o razão. */
}

/* ── Célula travada (serviço não contratado) — grade interna e do parceiro ── */
.emp-cell-lock, .psh-cell-lock {
  background:repeating-linear-gradient(45deg, transparent 0 6px, rgba(120,105,80,.07) 6px 12px);
  text-align:center; vertical-align:middle; cursor:default;
}
.emp-cell-lock span, .psh-cell-lock span { color:rgba(120,105,80,.35); font-size:10px; user-select:none; }
/* Sabor do serviço na célula IRPF/DCBE: Execução × Relatório de Apoio */
.emp-svc-flavor, .psh-svc-flavor { font-size:9px; color:#A87F2C; font-weight:600; margin-top:2px; white-space:nowrap; }

/* ── Manual do Usuário (Portal do Parceiro) ─────────────────────────────── */
/* Mesma gramática visual do shell: cards radius-16 com --pp-line/--pp-shadow, */
/* banners .psh-hint, chips .psh-st, pills .psh-subtab, docrows .psh-docrow.   */
.psh-manual { max-width:920px; }

/* Cabeçalho no padrão .cprofile-header (classe reusada) */
.man-header { position:relative; align-items:flex-start; }
.man-header-ava {
  width:60px; height:60px; border-radius:12px; flex-shrink:0;
  background:#E8F0F8; border:1px solid #D4E2EF; color:#4a78a3;
  display:flex; align-items:center; justify-content:center;
}
.man-lead { font-size:13.5px; color:var(--text-mid); line-height:1.65; margin-top:10px; max-width:640px; }
.psh-man-print { position:absolute; top:20px; right:20px; }
@media (max-width:640px){ .psh-man-print { position:static; margin-top:12px; } }

/* Seções: cards independentes no padrão .psh-panel */
.psh-man-sec {
  background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:16px;
  box-shadow:var(--pp-shadow); margin-bottom:10px; overflow:hidden;
}
.psh-man-sec summary {
  display:flex; align-items:center; gap:13px; cursor:pointer; list-style:none;
  padding:15px 20px; user-select:none; transition:background .12s;
}
.psh-man-sec summary::-webkit-details-marker { display:none; }
.psh-man-sec summary:hover { background:#FAF8F4; }
.psh-man-sec summary::after {
  content:''; width:8px; height:8px; margin-left:auto; flex-shrink:0;
  border-right:2px solid #B9AE9C; border-bottom:2px solid #B9AE9C;
  transform:rotate(45deg); transition:transform .15s;
}
.psh-man-sec[open] summary::after { transform:rotate(-135deg); }
.psh-man-sec[open] summary { border-bottom:1px solid var(--pp-line,#E9E4DA); }
.man-sec-title { font-size:14.5px; font-weight:700; color:var(--text); }

/* Ícone da seção: container suave, mesmo desenho do .psh-docico */
.man-ico {
  width:34px; height:34px; border-radius:9px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.man-ico-blue  { background:#E8F0F8; border:1px solid #D4E2EF; color:#4a78a3; }
.man-ico-tan   { background:#F3EADB; border:1px solid #ECE0CC; color:#B99464; }
.man-ico-green { background:#E6F2EB; border:1px solid #CFE5D8; color:#1f7a47; }
.man-ico-rose  { background:#FDECE8; border:1px solid #F6D3CA; color:#D6472F; }
.man-ico-gold  { background:#F7EFDC; border:1px solid #EADFC2; color:#A87F2C; }

.psh-man-body { padding:18px 20px 20px; font-size:13.5px; color:var(--text-mid); line-height:1.7; }
.psh-man-body p { margin:0 0 12px; }
.psh-man-body p:last-child { margin-bottom:0; }
.psh-man-body ol, .psh-man-body ul { margin:0 0 12px; padding-left:20px; }
.psh-man-body li { margin-bottom:8px; }
.psh-man-body b { color:var(--text); font-weight:600; }
.man-sub { font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--text-light); margin:18px 0 8px !important; }
.man-foot-note { font-size:12.5px; color:var(--text-light); margin-top:10px !important; }

.man-cols { display:grid; grid-template-columns:1fr 1fr; gap:22px; align-items:start; }
@media (max-width:860px){ .man-cols { grid-template-columns:1fr; } }

/* Dica: reusa .psh-hint; ajuste fino p/ conteúdo em bloco */
.man-hint { align-items:flex-start; margin:14px 0 0; }
.man-hint [data-icon] { margin-top:2px; }

/* Figuras: moldura de janela */
.man-fig { margin:14px 0 4px; }
.man-fig-frame { border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; overflow:hidden; background:#fff; box-shadow:var(--pp-shadow); }
.man-fig-bar { display:flex; gap:5px; padding:9px 12px; background:#F6F3ED; border-bottom:1px solid var(--pp-line,#E9E4DA); }
.man-fig-bar i { width:9px; height:9px; border-radius:50%; background:#DDD5C6; }
.man-fig-body { padding:16px; }
.man-fig-body.man-fig-flush { padding:0; }
.man-fig figcaption { font-size:12px; color:var(--text-light); margin-top:8px; text-align:center; }
.man-nohover, .man-nohover * { pointer-events:none; }

/* Legenda de status */
.man-legend { width:100%; border-collapse:collapse; font-size:13px; }
.man-legend th { text-align:left; font-size:11.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--text-light); padding:14px 10px 6px; border-bottom:1px solid var(--pp-line,#E9E4DA); }
.man-legend td { padding:8px 10px; border-bottom:1px solid #F1EDE4; vertical-align:middle; }
.man-legend td:first-child { width:150px; white-space:nowrap; }

/* Contato: card claro no padrão do shell */
.man-contact {
  display:flex; align-items:flex-start; gap:14px;
  background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:16px;
  box-shadow:var(--pp-shadow); padding:20px; margin-top:18px;
  font-size:13.5px; color:var(--text-mid); line-height:1.65;
}
.man-contact-ico { width:40px; height:40px; }
.man-contact b { color:var(--text); }
.man-contact a { color:#4a78a3; font-weight:600; text-decoration:none; }
.man-contact a:hover { text-decoration:underline; }

/* ── Mockups (dados fictícios) ── */
.mk-loginwrap {
  position:relative; display:flex; flex-direction:column; justify-content:center; align-items:center;
  gap:18px; padding:30px 22px;
  background:#2B3847 url('proposal-assets/city_back.jpg') center/cover no-repeat;
}
.mk-loginwrap::before { content:''; position:absolute; inset:0; background:linear-gradient(160deg, rgba(20,28,38,.72), rgba(20,28,38,.45)); }
.mk-login-quote { position:relative; max-width:330px; text-align:center; font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:13px; line-height:1.6; color:rgba(255,255,255,.92); }
.mk-login-quote span { display:block; margin-top:8px; font-family:inherit; font-style:normal; font-size:10px; letter-spacing:.22em; color:#CFA852; }
.mk-login { position:relative; width:280px; background:rgba(255,255,255,.96); border-radius:14px; padding:22px 20px; box-shadow:0 18px 50px rgba(0,0,0,.35); }
.mk-login-logo { display:block; height:30px; margin:0 auto 12px; }
.mk-login-t { font-size:15px; font-weight:800; color:#1a1d24; text-align:center; }
.mk-login-s { font-size:11.5px; color:#8a8f98; text-align:center; margin-bottom:14px; }
.mk-field { margin-bottom:10px; }
.mk-field label { display:block; font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:#8a8f98; margin-bottom:4px; }
.mk-field > div { border:1px solid #E3DFD6; border-radius:8px; padding:8px 10px; font-size:12.5px; color:#4a4f58; background:#FBFAF8; }
.mk-check { font-size:11.5px; color:#6b7078; margin:2px 0 10px; }
.mk-btn { background:#1a1d24; color:#fff; text-align:center; font-size:13px; font-weight:700; border-radius:8px; padding:10px; }
.mk-forgot { text-align:center; font-size:11.5px; color:#4a78a3; font-weight:600; margin-top:10px; }
.mk-2fa { border-top:1px dashed #E3DFD6; margin-top:14px; padding-top:12px; text-align:center; }
.mk-2fa > span { font-size:10.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#8a8f98; }
.mk-otp { display:flex; gap:6px; justify-content:center; margin-top:8px; }
.mk-otp i { width:26px; height:32px; display:flex; align-items:center; justify-content:center; font-style:normal; font-size:14px; font-weight:800; color:#1a1d24; background:#FBF6EE; border:1.5px solid #c89a3e; border-radius:7px; }

.mk-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
@media (max-width:760px){ .mk-stats { grid-template-columns:repeat(2,1fr); } }
.mk-stat { background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:13px 14px; }
.mk-stat-n { font-size:19px; font-weight:800; color:var(--text); }
.mk-stat-ok .mk-stat-n { color:#1f7a47; font-size:15px; }
.mk-stat-t { font-size:12px; font-weight:600; color:var(--text-mid); margin-top:3px; }
.mk-stat-s { font-size:11px; color:var(--text-light); margin-top:1px; }

.mk-yeartabs { display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.mk-yeartabs span { padding:5px 13px; font-size:12px; font-weight:600; color:var(--text-light); border:1px solid var(--pp-line,#E9E4DA); border-radius:9px; background:#fff; }
.mk-yeartabs span.on { background:var(--pp-tan,#CBB083); color:var(--pp-tan-ink,#4B3A22); border-color:#BFA26F; }
.mk-yeartabs em { font-size:11px; color:var(--text-light); font-style:normal; margin-left:6px; }
.mk-tbl { width:100%; border-collapse:collapse; font-size:12px; }
.mk-tbl th { font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-light); text-align:left; padding:7px 8px; border-bottom:1px solid var(--pp-line,#E9E4DA); background:#FAF8F4; }
.mk-tbl .mk-grp th { border-bottom:none; }
.mk-tbl td { padding:9px 8px; border-bottom:1px solid #F1EDE4; color:var(--text-mid); white-space:nowrap; }
.mk-tbl .mk-code { font-size:11px; color:var(--text-light); }
.mk-tbl .mk-name { font-weight:600; color:var(--text); }
.mk-tbl .mk-sep { border-left:1px solid var(--pp-line,#E9E4DA); }
.mk-tbl .psh-flagimg { vertical-align:-2px; }

.mk-profhead { display:flex; align-items:center; gap:13px; margin-bottom:14px; }
.mk-profava { width:48px; height:48px; border-radius:11px; flex-shrink:0; background:#E8F0F8; border:1px solid #D4E2EF; color:#4a78a3; display:flex; align-items:center; justify-content:center; }
.mk-profname { font-size:15px; font-weight:800; color:var(--text); }
.mk-profmeta { display:flex; align-items:center; gap:7px; margin-top:4px; flex-wrap:wrap; }
.mk-profjur { font-size:12px; color:var(--text-mid); }
.mk-tabs { display:flex; gap:2px; border-bottom:2px solid var(--pp-line,#E9E4DA); flex-wrap:wrap; }
.mk-tabs span { padding:9px 13px; font-size:12.5px; font-weight:600; color:var(--text-light); margin-bottom:-2px; }
.mk-tabs span b { font-weight:600; }
.mk-tabs span.on { color:#4a78a3; border-bottom:2px solid #4a78a3; }

.mk-dz { border:1.5px dashed #CBB083; border-radius:12px; background:#FBF9F5; padding:18px; text-align:center; font-size:12.5px; color:var(--text-mid); }
.mk-dz [data-icon] { display:block; margin:0 auto 6px; color:#B99464; }
.mk-dz u { color:#4a78a3; font-weight:600; text-decoration:none; }
.mk-dz small { display:block; margin-top:5px; font-size:11px; color:var(--text-light); }

.mk-flow { display:flex; align-items:stretch; gap:6px; flex-wrap:wrap; }
.mk-step { flex:1; min-width:110px; background:#fff; border:1px solid var(--pp-line,#E9E4DA); border-radius:12px; padding:12px 10px; text-align:center; }
.mk-step b { display:block; font-size:12px; color:var(--text); margin-top:6px; }
.mk-step small { display:block; font-size:10.5px; color:var(--text-light); margin-top:2px; line-height:1.4; }
.mk-step-ico { width:30px; height:30px; margin:0 auto; border-radius:8px; background:#F3EADB; border:1px solid #ECE0CC; color:#B99464; display:flex; align-items:center; justify-content:center; }
.mk-step.is-prog .mk-step-ico { background:#E8F0F8; border-color:#D4E2EF; color:#4a78a3; }
.mk-step.is-ok .mk-step-ico { background:#E6F2EB; border-color:#CFE5D8; color:#1f7a47; }
.mk-flow-arrow { align-self:center; color:#C9BFA9; font-size:14px; }
@media (max-width:700px){ .mk-flow-arrow { display:none; } }

@media print {
  .psh-sidebar, .psh-topbar, .psh-man-print, .psh-mobnav { display:none !important; }
  .psh-main { margin:0 !important; padding:0 !important; }
  .psh-man-sec, .man-fig, .man-contact, .mk-stat { break-inside:avoid; }
  .psh-man-sec { box-shadow:none; }
}

/* ── 4Ledger: busca de empresa (combobox) + hub inicial ─────────────────── */
.ldg-co-drop{position:absolute;top:calc(100% + 4px);left:0;width:max(100%,380px);max-height:420px;overflow:auto;background:var(--surface,#fff);border:1px solid var(--border-strong,#DDD5C6);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.18);z-index:5000}
.ldg-co-g{padding:9px 12px 4px;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-light);position:sticky;top:0;background:var(--surface,#fff)}
.ldg-co-it{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:7px 12px;font-size:12.5px;cursor:pointer}
.ldg-co-it:hover,.ldg-co-it.active{background:var(--hover,rgba(128,90,60,.08))}
.ldg-co-code{color:var(--text-light);font-size:11px;white-space:nowrap}
.ldg-home-h{font-size:16px;font-weight:800;margin:6px 0 2px}
.ldg-home-sub{font-size:12.5px;color:var(--text-light);margin-bottom:16px;max-width:640px}
.ldg-home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;max-width:1100px}
.ldg-home-card{border:1px solid var(--border-strong,#DDD5C6);border-radius:12px;padding:14px 16px;cursor:pointer;background:var(--surface,#fff);transition:box-shadow .15s,transform .15s}
.ldg-home-card:hover{box-shadow:0 8px 22px rgba(0,0,0,.10);transform:translateY(-1px)}
.ldg-home-name{font-weight:800;font-size:13.5px;line-height:1.25}
.ldg-home-code{font-size:11px;color:var(--text-light);margin:2px 0 10px}
.ldg-home-meta{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:11px;color:var(--text-light)}
.ldg-home-pend{margin-top:10px;font-size:11.5px;font-weight:700;color:var(--gold,#b8860b)}
.ldg-home-ok{margin-top:10px;font-size:11.5px;font-weight:700;color:var(--green,#1f7a47)}
.ldg-home-list{display:flex;flex-direction:column;gap:6px;max-width:920px}
.ldg-home-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;border:1px solid var(--border-strong,#DDD5C6);border-radius:10px;padding:10px 14px;cursor:pointer;background:var(--surface,#fff);transition:box-shadow .15s}
.ldg-home-row:hover{box-shadow:0 6px 18px rgba(0,0,0,.10)}
.ldg-home-row .ldg-home-meta{flex:1}
.ldg-home-row .ldg-home-pend,.ldg-home-row .ldg-home-ok{margin-top:0;white-space:nowrap}
.ldg-home-new{border-style:dashed;max-width:280px}
.ldg-home-plus{font-size:22px;font-weight:800;line-height:1;margin-bottom:6px;color:var(--bordo,#7a2e2e)}
.ldg-bd-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border,#E4DED2);border-radius:7px;padding:6px 14px;background:var(--surface,#fff);font-weight:600;font-size:12.5px;cursor:pointer;color:inherit;white-space:nowrap}
.ldg-bd-chip:hover{box-shadow:0 4px 12px rgba(0,0,0,.10)}
.ldg-bd-lbl{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-light);font-weight:700}
.ldg-bd-y{padding:9px 12px 3px;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-light)}
.ldg-bd-it{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 18px;font-size:12.5px;cursor:pointer}
.ldg-bd-it:hover{background:var(--hover,rgba(128,90,60,.08))}
.ldg-bd-it.active{font-weight:800;color:var(--bordo,#7a2e2e)}
.ldg-bd-tag{font-size:9.5px;color:var(--text-light);border:1px solid var(--border,#E4DED2);border-radius:5px;padding:1px 6px}
.ldg-bd-f{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--border-strong,#DDD5C6);margin-top:6px}
.ldg-nav-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border,#E4DED2);border-radius:7px;padding:6px 14px;background:var(--surface,#fff);font-weight:600;font-size:12.5px;cursor:pointer;color:inherit;white-space:nowrap}
.ldg-nav-btn:hover{box-shadow:0 4px 12px rgba(0,0,0,.10)}
#ldg-co-input{border-radius:7px;border-color:var(--border,#E4DED2);padding:6px 13px;font-size:12.5px;font-weight:600;max-width:100%}

/* ── 4Ledger: Visão geral em 3 grupos (configura → opera → fecha) ───────── */
.ldg-hub3{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:14px;max-width:1320px}
.ldg-hub-g{border:1.5px solid var(--border,#E4DED2);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--surface,#fff)}
.ldg-hub-g .ldg-card{margin:0}
.ldg-hub-gh{display:flex;gap:12px;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--border,#E4DED2);margin-bottom:4px}
.ldg-hub-gico{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 auto;background:var(--bordo,#7a2e2e)}
.ldg-hub-gt{font-weight:800;font-size:12.5px;letter-spacing:.03em;text-transform:uppercase}
.ldg-hub-gd{font-size:11.5px;color:var(--text-light);margin-top:2px}

/* ============================================================
   Grid de permissões (modal de usuário) — card por MACRO módulo,
   linha por MICRO módulo, três caixas: Visualizar / Editar / Lixeira.
   As caixas são hierárquicas (ver togglePermCheckbox em app.js).
   ============================================================ */
.pg-card { border:1px solid var(--border); border-radius:7px; background:var(--surface,#fff); margin-bottom:6px; overflow:hidden; }
.pg-card[open] { box-shadow:0 1px 2px rgba(0,0,0,.04); }
.pg-sum { display:flex; align-items:center; gap:8px; padding:8px 10px; cursor:pointer; list-style:none; user-select:none; }
.pg-sum::-webkit-details-marker { display:none; }
.pg-sum:hover { background:var(--gelo); }
.pg-chev { display:inline-flex; color:var(--text-light); transition:transform .15s ease; }
.pg-card[open] .pg-chev { transform:rotate(90deg); }
.pg-grp { flex:1; font-size:12px; font-weight:700; color:var(--navy); letter-spacing:.2px; }
.pg-badge { font-size:10px; font-weight:700; color:var(--text-mid); background:var(--gelo); border:1px solid var(--border); border-radius:10px; padding:1px 7px; }

/* Uma coluna para o rótulo + três colunas fixas para as caixas. */
.pg-row { display:grid; grid-template-columns:1fr 34px 34px 34px; align-items:center; gap:4px; padding:5px 10px; border-top:1px solid var(--border); }
.pg-headrow { padding-top:6px; padding-bottom:6px; background:var(--gelo); }
.pg-col { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:var(--text-light); }
/* Caixa-resumo do cabeçalho: marca a coluna inteira do macro módulo. */
.pg-all { width:13px; height:13px; margin:0; cursor:pointer; accent-color:var(--bordo,#915959); opacity:.75; }
.pg-all:hover { opacity:1; }
.pg-all:disabled { cursor:not-allowed; opacity:.25; }
.pg-lbl { font-size:12px; color:var(--text); }
.pg-hint { font-size:9px; color:var(--text-light); }
.pg-na { text-align:center; color:var(--border-strong,#d8d8d8); font-size:11px; }
.pg-chk { width:15px; height:15px; margin:0 auto; display:block; cursor:pointer; accent-color:var(--bordo,#915959); }
.pg-chk:disabled { cursor:not-allowed; opacity:.45; }
.pg-locked { opacity:.6; }

/* ═══════════ Portal do Parceiro — glass (mesma linguagem visual do 4Ledger) ═══════════
   Fundo atmosférico da paleta + superfícies translúcidas com blur. Overrides escopados
   ao shell do parceiro (.psh-*), appendados p/ vencer por ordem no cascade. A sidebar
   navy fica intacta (identidade); o preview de documentos (modal) também. */
.psh-app{
  background:
    radial-gradient(1100px 820px at -160px -240px, rgba(201,214,230,.55), transparent 62%),
    radial-gradient(820px 720px at 104% 106%, rgba(227,207,210,.42), transparent 60%),
    radial-gradient(620px 560px at 60% 30%, rgba(214,224,236,.35), transparent 60%),
    radial-gradient(520px 470px at 6% 64%, rgba(236,222,198,.4), transparent 60%),
    linear-gradient(160deg,#f5f3ef 0%,#eef0f4 55%,#f3efe9 100%);
  --pp-shadow:0 16px 40px rgba(43,56,71,.09);
}
/* Medalhões do dashboard */
.psh-med{ background:rgba(255,255,255,.6); border-color:rgba(255,255,255,.9); border-radius:20px;
  backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); }
.psh-med:hover{ box-shadow:0 20px 48px rgba(43,56,71,.13); }
/* Painéis (tabela de status, central, solicitações, sugestão): opacidade maior —
   conteúdo denso pede mais contraste que os medalhões */
.psh-panel{ background:rgba(255,255,255,.74); border-color:rgba(255,255,255,.95);
  backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); }
.psh-tbl tbody tr:hover{ background:rgba(255,255,255,.65); }
/* Toolbar e filtros */
.psh-search,.psh-select{ background:rgba(255,255,255,.62); border-color:rgba(255,255,255,.9);
  backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); }
.psh-yeartab{ background:rgba(255,255,255,.5); border-color:rgba(255,255,255,.85); }
.psh-yeartab:hover{ background:rgba(255,255,255,.72); }
/* Linhas de documento e blocos por ano (Central de Documentos) */
.psh-docrow{ background:rgba(255,255,255,.6); border-color:rgba(255,255,255,.9); }
.psh-yearblock{ background:rgba(255,255,255,.66); border-color:rgba(255,255,255,.92);
  backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); }
/* Solicitações */
.psh-solic-row{ background:rgba(255,255,255,.6); border-color:rgba(255,255,255,.9); }
.psh-solic-row:hover{ background:rgba(255,255,255,.82); }
.psh-tk-exp{ background:rgba(255,255,255,.5); border-color:rgba(255,255,255,.85); }
/* Dropzone de upload */
.psh-dropzone{ background:rgba(255,255,255,.35); border-color:rgba(43,56,71,.16); }
/* Manual do Usuário */
.psh-man-sec{ background:rgba(255,255,255,.66); border-color:rgba(255,255,255,.92);
  backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); }
/* Paginação */
.psh-page{ background:rgba(255,255,255,.55); border-color:rgba(255,255,255,.85); }

/* ── Glass claro v2 (13/08): sidebar de vidro claro flutuante + recolher pela
   borda. Fundo segue nos gradientes atmosféricos do .psh-app (ideia da foto
   ofuscada foi testada e descartada em 13/08). ── */
.psh-app{ position:relative; }
.psh-main,.psh-backdrop{ position:relative; z-index:1; }
/* Sidebar: painel de vidro claro flutuante (variante B aprovada no mock) */
.psh-sidebar{ background:rgba(255,255,255,.55); color:#2B3847; z-index:2;
  backdrop-filter:blur(30px); -webkit-backdrop-filter:blur(30px);
  border:1px solid rgba(255,255,255,.95); border-radius:24px;
  margin:14px 0 14px 14px; height:calc(100vh - 28px); top:14px;
  box-shadow:0 24px 60px rgba(43,56,71,.14); }
.psh-side-logo{ filter:none; }
.psh-nav-group{ color:rgba(43,56,71,.45); }
.psh-nav-item{ position:relative; color:rgba(43,56,71,.8); }
.psh-nav-item:hover{ background:rgba(255,255,255,.7); color:#2B3847; }
.psh-nav-item.active{ background:#2B3847; color:#F2F0ED; font-weight:700;
  box-shadow:0 12px 26px rgba(43,56,71,.3); }
.psh-nav-item.disabled{ color:rgba(43,56,71,.35); }
.psh-nav-badge{ background:#915959; color:#fff; }
.psh-nav-soon{ color:rgba(43,56,71,.4); border-color:rgba(43,56,71,.18); }
.psh-side-foot{ border-top-color:rgba(43,56,71,.1); }
.psh-side-user{ background:rgba(255,255,255,.6); border:1px solid rgba(255,255,255,.9); border-radius:14px; }
.psh-side-uname{ color:#2B3847; }
.psh-side-urole{ color:rgba(43,56,71,.55); }
.psh-side-logout{ border:1px solid rgba(43,56,71,.15); color:rgba(43,56,71,.75); background:rgba(255,255,255,.4); }
.psh-side-logout:hover{ background:rgba(255,255,255,.75); color:#2B3847; }
/* Recolher: a borda direita INTEIRA do menu é clicável, com a setinha no meio */
.psh-side-collapse{ position:absolute; top:0; right:0; bottom:0; width:18px; border:0;
  border-radius:0 24px 24px 0; background:transparent; color:rgba(43,56,71,.35);
  cursor:pointer; font-size:16px; line-height:1; display:flex; align-items:center;
  justify-content:center; padding:0; transition:background .15s, color .15s; }
.psh-side-collapse:hover{ background:linear-gradient(90deg, transparent, rgba(43,56,71,.09)); color:#2B3847; }
.psh-sc-a{ display:block; transition:transform .2s; }
.psh-app.psh-side-min .psh-sc-a{ transform:rotate(180deg); }
@media (min-width:821px){
  .psh-app.psh-side-min .psh-sidebar{ width:78px; padding:16px 9px; }
  .psh-app.psh-side-min .psh-side-brand,
  .psh-app.psh-side-min .psh-nav-group,
  .psh-app.psh-side-min .psh-nav-lbl,
  .psh-app.psh-side-min .psh-nav-soon,
  .psh-app.psh-side-min .psh-lg-lbl,
  .psh-app.psh-side-min .psh-side-user > div:last-child{ display:none; }
  .psh-app.psh-side-min .psh-nav-item{ justify-content:center; padding:12px 0; }
  .psh-app.psh-side-min .psh-nav-badge{ position:absolute; top:5px; right:8px; padding:1px 5px; font-size:9px; }
  .psh-app.psh-side-min .psh-side-user{ justify-content:center; padding:8px 0; }
  .psh-app.psh-side-min .psh-side-logout{ padding:9px 0; }
}
/* Gaveta mobile: vidro mais opaco (legibilidade sobre conteúdo), sem recolher */
@media (max-width:820px){
  .psh-side-collapse{ display:none; }
  .psh-sidebar{ margin:0; height:100vh; top:0; border-radius:0 20px 20px 0; background:rgba(255,255,255,.92); }
}

/* ═══════════ Sidebar interna — MESMA identidade do Portal do Parceiro (13/08):
   vidro claro flutuante, textos navy, item ativo em pill navy, borda direita
   INTEIRA clicável para recolher/expandir (persistido em localStorage).
   Viável porque o modo escuro foi descontinuado — o portal é sempre claro. ═══ */
.sidebar{ left:14px; top:14px; bottom:14px; width:220px; border-radius:24px;
  background:rgba(255,255,255,.55); color:#2B3847;
  backdrop-filter:blur(30px); -webkit-backdrop-filter:blur(30px);
  border:1px solid rgba(255,255,255,.95);
  box-shadow:0 24px 60px rgba(43,56,71,.14);
  transition:width .2s ease; }
.sidebar::before{ display:block; content:''; position:absolute; inset:0; pointer-events:none;
  border-radius:24px;
  background:radial-gradient(420px 300px at 110% -8%, rgba(236,222,198,.5), transparent 60%); }
.main{ margin-left:248px; transition:margin-left .2s ease; }
/* Textos e superfícies internas da sidebar: paleta clara (era white-alpha no navy) */
.sl{ border-bottom-color:rgba(43,56,71,.08); }
.sl-logo{ filter:none; }
.nst, .menu-sep{ color:rgba(43,56,71,.45); border-top-color:rgba(43,56,71,.06); }
.menu-sep:hover, .nst:hover{ background:rgba(255,255,255,.7); color:rgba(43,56,71,.75); }
.menu-sep.nav-group-open, .nst.nav-group-open{ color:rgba(43,56,71,.78); }
.nav-group-body.in-open-group{ background:rgba(43,56,71,.04); }
.ni{ color:rgba(43,56,71,.8); }
.ni:hover{ background:rgba(255,255,255,.7); color:#2B3847; }
.ni.active{ background:#2B3847; color:#F2F0ED; font-weight:700;
  box-shadow:0 12px 26px rgba(43,56,71,.3); }
.cni{ color:rgba(43,56,71,.6); }
.cni:hover{ background:rgba(255,255,255,.7); color:#2B3847; }
.cni.active{ background:rgba(145,89,89,.12); color:#915959; }
.sfoot{ border-top-color:rgba(43,56,71,.08); }
.uinfo{ background:rgba(255,255,255,.6); border:1px solid rgba(255,255,255,.9); }
.uinfo:hover{ background:rgba(255,255,255,.85); }
.uname{ color:#2B3847; }
.urole{ color:rgba(43,56,71,.55); }
.btnout{ border:1px solid rgba(43,56,71,.15); color:rgba(43,56,71,.75); background:rgba(255,255,255,.4); }
.btnout:hover{ background:rgba(255,255,255,.8); color:#2B3847; }
.snav::-webkit-scrollbar-thumb{ background:rgba(43,56,71,.15); border:2px solid transparent; background-clip:padding-box; }
/* O :hover também precisa do override: sem ele vale a regra da era da sidebar
   escura (white-alpha), e o polegar some ao passar o mouse — branco no vidro claro. */
.snav::-webkit-scrollbar-thumb:hover{ background:rgba(43,56,71,.3); border:2px solid transparent; background-clip:padding-box; }
/* Borda-recolher (mesmo recurso do parceiro) */
.side-collapse{ position:absolute; top:0; right:0; bottom:0; width:16px; z-index:2; border:0;
  border-radius:0 24px 24px 0; background:transparent; color:rgba(43,56,71,.35); cursor:pointer;
  font-size:15px; line-height:1; display:flex; align-items:center; justify-content:center; padding:0;
  transition:background .15s, color .15s; font-family:var(--font); }
.side-collapse:hover{ background:linear-gradient(90deg, transparent, rgba(43,56,71,.09)); color:#2B3847; }
/* foco de teclado do botão: o anel global (outline bordô 2px, regra ~2559) desenhava
   uma linha vertical na altura inteira da sidebar (10/09, print do Victor) — aqui o
   foco é o mesmo realce do hover, sem contorno */
.side-collapse:focus-visible{ outline:none; background:linear-gradient(90deg, transparent, rgba(43,56,71,.12)); color:#2B3847; }
.side-collapse-a{ display:block; transition:transform .2s; }
body.side-min .side-collapse-a{ transform:rotate(180deg); }
/* A borda-recolher cobre os 16px finais da sidebar por cima do .snav; sem esta
   folga a scrollbar do menu nasce embaixo dela — não dá para arrastar, e o
   clique recolhe o menu. Margin, não padding: padding não desloca a scrollbar
   nativa, que gruda na borda da caixa. */
.snav{ margin-right:16px; }
/* Estado recolhido: trilho de 64px só com ícones (texto some via font-size:0 —
   os SVGs não dependem do font-size) */
body.side-min .sidebar{ width:64px; }
body.side-min .main{ margin-left:92px; }
body.side-min .sidebar > div:first-child{ display:none; }  /* botão Sugerir melhoria */
body.side-min .sl{ display:none; }
body.side-min .snav{ padding:10px 5px; }
body.side-min .ni{ font-size:0; gap:0; justify-content:center; padding:10px 0; }
body.side-min .snav .ni-sub{ padding-left:0; }
body.side-min .nst, body.side-min .menu-sep{ font-size:0; padding:8px 0; margin:6px 4px 2px; justify-content:center; }
body.side-min .nst::after, body.side-min .menu-sep::after, body.side-min .ni-parent::after{ display:none; }
body.side-min .sfoot > button{ display:none; }
body.side-min .sfoot .btnout{ display:flex; font-size:0; gap:0; justify-content:center; padding:9px 0; }
body.side-min .uinfo{ justify-content:center; padding:8px 4px; }
body.side-min .uinfo > div:last-child{ display:none; }

/* ═══════════ RODAPÉ DO PORTAL — altura reservada ═══════════
   --ticker-h é a fonte única da altura do rodapé fixo (#fin-ticker, montado
   por _finTickerInit no app.js): a sidebar flutuante sobe por ela e o
   .content ganha respiro embaixo, então nada fica escondido atrás da barra.
   Em mobile a barra sai de cena (--ticker-h:0) — o rodapé ali é da
   .mob-bottom-nav. Dados: api.php?action=ticker_feed (shared/ticker/feed.php).
   23/09: a barra antiga (#ticker-bar/assets/ticker.js) foi retirada — ficava
   escondida atrás da nova e dobrava as chamadas à AwesomeAPI.            */
:root { --ticker-h:34px; }
/* A sidebar flutua com bottom:14px — sobe a altura da barra pra não encostar. */
.sidebar { bottom:calc(14px + var(--ticker-h)); }
.content { padding-bottom:calc(24px + var(--ticker-h)); }
body.mobile-active { --ticker-h:0px; }
@media (max-width:820px) { :root { --ticker-h:0px; } }

/* =====================================================   CRM COMERCIAL — Pipeline, Atividades, Contatos.
   Complementa as classes .pd-kanban/.pd-col/.pd-card que ja existiam (e que o
   kanban da contabilidade tambem usa): aqui so o que e especifico do CRM.
   Estetica sobria proposital — o publico e interno e a tela e operada o dia
   inteiro; densidade e leitura importam mais que ornamento.
   ============================================================ */

/* Chip do contador de proximo passo — a regra central do CRM */
.crm-chip {
  display:inline-flex; align-items:center; gap:2px; padding:4px 10px;
  border-radius:999px; font-size:11px; font-weight:600; cursor:pointer;
  background:var(--surface); border:1px solid var(--border); color:var(--text-mid);
  transition:background .15s, border-color .15s;
}
.crm-chip:hover { border-color:var(--text-light); }
.crm-chip strong { font-size:12px; color:var(--text); }
.crm-chip-alerta { border-color:var(--bordo); color:var(--bordo); }
.crm-chip-alerta strong { color:var(--bordo); }
.crm-chip-on { background:var(--bordo); border-color:var(--bordo); color:#fff; }
.crm-chip-on strong { color:#fff; }

/* Alternador kanban / tabela — mesma fonte, duas leituras */
.crm-view-sw { display:inline-flex; border:1px solid var(--border); border-radius:6px; overflow:hidden; }
.crm-view-sw button {
  border:0; background:var(--surface); color:var(--text-mid); cursor:pointer;
  font-size:11px; font-weight:600; padding:5px 12px;
}
.crm-view-sw button.active { background:var(--text); color:#fff; }

/* Cartao do negocio */
.crm-card-t   { font-size:12px; font-weight:700; color:var(--text); line-height:1.3; }
.crm-card-sub { font-size:11px; color:var(--text-mid); margin-top:2px;
                overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-card-f   { display:flex; justify-content:space-between; align-items:baseline;
                margin-top:6px; gap:8px; }
.crm-card-v   { font-size:12px; font-weight:700; color:var(--text);
                font-variant-numeric:tabular-nums; }
.crm-card-n   { font-size:10px; color:var(--text-light); }
.crm-card-tags{ display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
.crm-card-alerta { border-left:2px solid var(--bordo); }
.pd-card-dragging { opacity:.45; }

/* Marcas: parado, sem proximo passo, ja e cliente */
.crm-tag {
  display:inline-block; font-size:9px; font-weight:700; letter-spacing:.4px;
  text-transform:uppercase; padding:2px 6px; border-radius:3px; white-space:nowrap;
}
.crm-tag-frio   { background:rgba(0,0,0,.06);  color:var(--text-mid); }
.crm-tag-alerta { background:rgba(185,74,74,.12); color:var(--bordo); }
.crm-tag-outlook { background:rgba(0,120,212,.12); color:#0b5cad; }   /* atividade vinda da agenda do Outlook (11/09) */
.crm-tag-ok     { background:rgba(58,125,85,.12); color:var(--green); }

/* Detalhe do negocio */
.crm-deal-topo  { display:flex; justify-content:space-between; align-items:flex-start;
                  gap:16px; padding-bottom:12px; border-bottom:1px solid var(--border); }
.crm-deal-cli   { font-size:13px; font-weight:700; color:var(--text); }
.crm-deal-meta  { font-size:11px; color:var(--text-light); margin-top:2px; }
.crm-deal-valor { font-size:18px; font-weight:700; color:var(--text);
                  font-variant-numeric:tabular-nums; white-space:nowrap; }
.crm-deal-status{ margin-top:12px; padding:8px 12px; border-radius:4px;
                  font-size:12px; font-weight:600; }
.crm-deal-won   { background:rgba(58,125,85,.10);  color:var(--green); }
.crm-deal-lost  { background:rgba(185,74,74,.10);  color:var(--bordo); }
.crm-deal-alerta{ margin-top:12px; padding:8px 12px; border-radius:4px; font-size:12px;
                  background:rgba(185,74,74,.08); color:var(--bordo);
                  border-left:2px solid var(--bordo); }

/* Linha do tempo unificada: atividade, nota e mudanca de estagio no mesmo fluxo */
.crm-tl       { margin-top:14px; display:flex; flex-direction:column; gap:8px; }
/* cada item do histórico numa CAIXA (estilo Pipedrive) */
.crm-tl-item  { display:flex; gap:12px; padding:10px 12px; border:1px solid #ececec;
                border-radius:8px; background:#fff; font-size:12px; align-items:baseline; }
.crm-tl-item:hover { border-color:#dcdcdc; }
.crm-tl-d     { min-width:74px; font-size:11px; color:var(--text-light);
                font-variant-numeric:tabular-nums; }
.crm-tl-c     { flex:1; color:var(--text); line-height:1.5; }
.crm-tl-tipo  { display:inline-block; min-width:58px; font-size:9px; font-weight:700;
                letter-spacing:.4px; text-transform:uppercase; color:var(--text-light); }
.crm-tl-ok    { font-size:10px; color:var(--green); font-weight:600; }
.crm-tl-vazio { margin-top:14px; font-size:12px; color:var(--text-light); }

/* Estados vazios com texto util em vez de "nenhum registro" */
.crm-vazio    { padding:48px 24px; text-align:center; }
.crm-vazio-t  { font-size:13px; font-weight:700; color:var(--text-mid); }
.crm-vazio-s  { font-size:12px; color:var(--text-light); margin-top:4px;
                max-width:52ch; margin-left:auto; margin-right:auto; line-height:1.5; }

.crm-hint     { font-size:11px; color:var(--text-light); margin-top:6px; line-height:1.5; }
.crm-at-feita td { opacity:.5; }
.crm-at-feita strong { text-decoration:line-through; font-weight:500; }

/* CRM — ondas 2/3: etiquetas, bolinha de atividade, presets, bulk, previsao,
   barra de estagios do detalhe, seletor de pessoa/organizacao, setup do funil */
.crm-etq { display:inline-block; font-size:9px; font-weight:700; letter-spacing:.5px;
  text-transform:uppercase; color:#fff; padding:2px 7px; border-radius:3px; }
.crm-card-l1 { display:flex; align-items:baseline; justify-content:space-between; gap:6px; }
.crm-dot { width:9px; height:9px; border-radius:50%; flex:none; align-self:center; }
.crm-dot-ok { background:var(--green); }
.crm-dot-a  { background:#CFA852; }
.crm-dot-r  { background:var(--bordo); }
.crm-presets { display:flex; flex-wrap:wrap; gap:6px; padding:8px 0 2px; }
.crm-preset { border:1px solid var(--border); background:var(--surface); color:var(--text-mid);
  font-size:11px; font-weight:600; padding:4px 12px; border-radius:999px; cursor:pointer; }
.crm-preset:hover { border-color:var(--text-light); }
.crm-preset.on { background:var(--text); border-color:var(--text); color:#fff; }
.crm-bulk { display:flex; align-items:center; gap:8px; padding:8px 0; font-size:12px; }
.crm-bulk-off { padding:4px 0; }
.crm-stbar { display:flex; gap:2px; margin:14px 0 4px; }
.crm-stseg { flex:1; min-width:0; padding:6px 8px; text-align:center; background:rgba(0,0,0,.05);
  color:var(--text-light); font-size:10px; font-weight:600; position:relative; }
.crm-stseg:first-child { border-radius:4px 0 0 4px; }
.crm-stseg:last-child  { border-radius:0 4px 4px 0; }
.crm-stseg-past { background:rgba(58,125,85,.18); color:var(--green); }
.crm-stseg-cur  { background:var(--text); color:#fff; }
.crm-stseg-n { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-stseg-d { display:block; font-size:9px; opacity:.75; }
.crm-campos { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:6px 18px; margin-top:12px; }
.crm-campo { display:flex; justify-content:space-between; gap:10px; font-size:12px;
  padding:4px 0; border-bottom:1px dashed var(--border); }
.crm-campo span { color:var(--text-light); }
.crm-campo strong { color:var(--text); text-align:right; overflow:hidden; text-overflow:ellipsis; }
.crm-picker-wrap { position:relative; }
.crm-picker-list { position:absolute; z-index:60; left:0; right:0; top:100%; background:var(--surface);
  border:1px solid var(--border); border-radius:0 0 6px 6px; box-shadow:0 8px 20px rgba(0,0,0,.12);
  max-height:200px; overflow-y:auto; }
.crm-picker-item { padding:7px 12px; font-size:12px; cursor:pointer; }
.crm-picker-item:hover { background:rgba(0,0,0,.05); }
.crm-mention { color:var(--bordo); font-weight:700; }
.crm-setup-head { display:flex; gap:8px; font-size:10px; font-weight:700; letter-spacing:.5px;
  text-transform:uppercase; color:var(--text-light); margin-bottom:4px; }
.crm-setup-row { display:flex; gap:8px; margin-bottom:6px; }

/* CRM Contatos — etiquetas de evento, mini-listas de vinculo, checkboxes */
.crm-tag-ev { background:rgba(207,168,82,.16); color:#8a6d1f; }
.crm-sec-t { font-size:10px; font-weight:700; letter-spacing:.5px; text-transform:uppercase;
  color:var(--text-light); margin:14px 0 6px; }
.crm-mini-deal { display:flex; justify-content:space-between; gap:10px; padding:7px 10px;
  border:1px solid var(--border); border-radius:4px; margin-bottom:4px; font-size:12px;
  cursor:pointer; background:var(--surface); }
.crm-mini-deal:hover { border-color:#4c7ef3; background:#f5f8ff; }

/* Links clicáveis do CRM (estilo Pipedrive): azul consistente, SEM cara de
   hiperlink (sem sublinhado permanente); ao passar o mouse, destaca. Vale em
   todo o módulo comercial e no painel — listas, tarefas, timeline, cards. */
[id^="page-comercial-"] a[onclick], [id^="page-comercial-"] a[href^="javascript"],
#crm-panel a[onclick], #crm-panel a[href^="javascript"] {
  color:#2f6fed; text-decoration:none; cursor:pointer; font-weight:500;
}
[id^="page-comercial-"] a[onclick]:hover, [id^="page-comercial-"] a[href^="javascript"]:hover,
#crm-panel a[onclick]:hover, #crm-panel a[href^="javascript"]:hover {
  color:#1b4fd1; text-decoration:underline;
}
/* Itens/caixas clicáveis (com onclick): hover realça a caixa inteira */
.crm-foco-item[onclick]:hover { border-color:#4c7ef3; background:#f7faff; }
.crm-mini-deal span:first-child { font-weight:600; color:var(--text);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-mini-meta { color:var(--text-light); white-space:nowrap; font-size:11px; }
.crm-chks { display:flex; flex-wrap:wrap; gap:6px 14px; padding:4px 0; }
.crm-chk { display:inline-flex; align-items:center; gap:5px; font-size:12px;
  color:var(--text-mid); cursor:pointer; }

/* CRM — status de marketing e linhas dinamicas do cadastro de pessoa */
.crm-mkt-ok  { background:rgba(58,125,85,.14); color:var(--green); }
.crm-mkt-off { background:rgba(0,0,0,.07); color:var(--text-mid); }
.crm-mkt-bad { background:rgba(185,74,74,.14); color:var(--bordo); }
.crm-ct-row { display:flex; gap:8px; margin-bottom:6px; }
.crm-add-row { font-size:11px; font-weight:600; color:var(--bordo); text-decoration:none; }
.crm-add-row:hover { text-decoration:underline; }

/* CRM Atividades — calendario semanal */
.crm-cal { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.crm-cal-dia { background:var(--surface); border:1px solid var(--border); border-radius:6px;
  min-height:180px; padding:6px; }
.crm-cal-hoje { border-color:var(--bordo); box-shadow:0 0 0 1px var(--bordo); }
.crm-cal-h { font-size:10px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  color:var(--text-light); margin-bottom:6px; }
.crm-cal-item { font-size:11px; background:rgba(0,0,0,.05); border-radius:4px; padding:4px 6px;
  margin-bottom:4px; cursor:pointer; overflow:hidden; text-overflow:ellipsis; }
.crm-cal-item:hover { background:rgba(0,0,0,.1); }
.crm-cal-item.feito { opacity:.45; text-decoration:line-through; }
.crm-cal-hora { font-weight:700; margin-right:4px; color:var(--bordo); }

/* CRM Atividades — anatomia do modal do Pipedrive */
.crm-at-grid { display:grid; grid-template-columns:3fr 2fr; gap:18px; }
@media (max-width:700px){ .crm-at-grid { grid-template-columns:1fr; } }
.crm-at-nav { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.crm-at-navchip { border:1px solid var(--border); background:var(--surface); color:var(--text-mid);
  border-radius:20px; padding:4px 12px; font-size:12px; cursor:pointer; max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-at-navchip:hover { border-color:var(--bordo); color:var(--bordo); }
/* abas de navegação da tarefa (atividade | negócio | pessoa | organização) */
.crm-at-tabs { display:flex; gap:0; border-bottom:1px solid #e5e5e5; margin-bottom:12px; overflow-x:auto; }
.crm-at-tab { padding:8px 13px; font-size:12px; color:#454e59; cursor:pointer; white-space:nowrap;
  border-bottom:2px solid transparent; display:flex; align-items:center; gap:5px;
  max-width:210px; overflow:hidden; text-overflow:ellipsis; flex:none; }
.crm-at-tab:not(.on):not(.crm-at-tab-off):hover { background:#f7f4f0; color:var(--bordo,#b42318); }
.crm-at-tab.on { color:#1b2430; font-weight:600; border-bottom-color:#4c7ef3; cursor:default; }
.crm-at-tab-off { color:#b8bec6; cursor:default; }
/* navegação entre cartões (10/09, rodadas 1-2): barra de volta, "+n" nas abas,
   próximo passo na lista de propostas e alerta clicável no card do kanban */
/* concluir explícito na lista de Atividades (10/09): botão redondo, não checkbox */
.crm-at-ok { width:22px; height:22px; border-radius:50%; border:1.5px solid #c9cdd3; background:#fff; color:transparent;
  font-size:12px; font-weight:700; line-height:1; cursor:pointer; padding:0; display:inline-flex; align-items:center; justify-content:center; }
.crm-at-ok:hover { border-color:var(--green,#1f7a47); color:var(--green,#1f7a47); background:rgba(31,122,71,.08); }
.crm-at-ok.on { border-color:var(--green,#1f7a47); background:var(--green,#1f7a47); color:#fff; }
.crm-at-ok.on:hover { background:#fff; color:var(--green,#1f7a47); }
/* não perder anotação (05/09): rascunho e erro fixo no painel */
.crm-rasc-bar { margin:0 0 10px; padding:8px 12px; border:1px solid var(--color-warning); background:var(--color-warning-soft); border-radius:8px; font-size:12.5px; color:var(--text); }
.crm-rasc-bar a { color:var(--bordo); font-weight:700; }
.crm-err-bar { position:relative; margin:0 0 10px; padding:9px 30px 9px 12px; border:1px solid var(--color-danger); background:var(--color-danger-soft); border-radius:8px; font-size:12.5px; color:var(--text); }
.crm-err-bar a { color:var(--color-danger); font-weight:700; margin-left:4px; }
.crm-err-x { position:absolute; right:10px; top:6px; cursor:pointer; color:var(--text-light); font-size:16px; }
.crm-nav-volta { padding:7px 16px; border-bottom:1px solid #eee; background:#faf8f3; font-size:12px; font-weight:600; }
.crm-nav-volta a { color:var(--bordo,#915959); text-decoration:none; }
.crm-nav-volta a:hover { text-decoration:underline; }
.crm-at-tab-n { font-size:10px; font-weight:700; color:#6b7280; background:#eef0f3; border-radius:8px; padding:0 5px; }
.crm-mini-prox { font-size:11px; color:#4c7ef3; }
.crm-mini-prox-alerta { color:var(--bordo,#b42318); font-weight:600; text-decoration:none; }
.crm-mini-prox-alerta:hover { text-decoration:underline; }
.crm-card-alerta-l { cursor:pointer; }
.crm-card-alerta-l u { font-weight:700; margin-left:2px; }
.crm-card-alerta-l:hover { color:var(--bordo,#b42318); }
.crm-foco-meta a { color:#4c7ef3; text-decoration:none; }
.crm-foco-meta a:hover { text-decoration:underline; }
.crm-deal-alerta a { color:var(--bordo,#b42318); font-weight:600; text-decoration:none; margin-left:4px; }
.crm-deal-alerta a:hover { text-decoration:underline; }
/* cor da atividade por prazo (pedido do dono): atrasada=vermelho, hoje=verde, futuro=preto */
.crm-at-pz-atrasada { color:#b42318; }
.crm-at-pz-hoje { color:#1b7a3e; }
.crm-at-pz-ok { color:inherit; }
.crm-at-assunto { font-size:16px; font-weight:600; padding:10px 12px; margin-bottom:8px; }
.crm-at-tipos { display:flex; gap:4px; margin-bottom:10px; }
.crm-at-tipo { width:34px; height:30px; border:1px solid var(--border); background:var(--surface);
  border-radius:6px; cursor:pointer; font-size:14px; line-height:1; }
.crm-at-tipo.on { background:var(--text); color:#fff; border-color:var(--text); }
.crm-at-linha { display:flex; align-items:center; gap:6px; margin-bottom:8px; font-size:12px;
  color:var(--text-mid); flex-wrap:wrap; }
.crm-at-linha a { color:var(--bordo); font-weight:600; text-decoration:none; margin-right:8px; }
.crm-at-nota { background:#fdf6d8; border-color:#e8dca8; }
.crm-at-dia { border-left:1px solid var(--border); padding-left:14px; }
.crm-at-dia-h { font-size:11px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  color:var(--text-light); margin-bottom:8px; }

/* ============================================================
   SKIN TWENTY — identidade visual do ambiente Comercial, inspirada no
   twenty.com por decisao do dono do produto (01/set): canvas branco, bordas
   hairline, pilulas pastel nos estagios, cards com linhas icone+valor,
   chips com avatar-inicial, tipografia compacta, azul de acao.
   Escopada aos ids page-comercial-* — o resto do portal nao muda.
   ============================================================ */
[id^="page-comercial-"] { background:#fff; }
[id^="page-comercial-"] .page-shell { font-size:12.5px; }
[id^="page-comercial-"] .page-title { font-weight:600; letter-spacing:-.2px; }
[id^="page-comercial-"] .page-subtitle { color:#818181; }
[id^="page-comercial-"] .filter-panel { background:transparent; border:0; box-shadow:none; padding:6px 0; }
[id^="page-comercial-"] .filter-control { border:1px solid #e5e5e5; border-radius:6px; background:#fff; }
[id^="page-comercial-"] .btn-red { background:#4c7ef3; border-color:#4c7ef3; color:#fff; border-radius:6px; }
[id^="page-comercial-"] .btn-red:hover { background:#3a6ce0; }
#page-comercial-pipeline .btn-red { background:#915959; border-color:#915959; }   /* Nova proposta: HEX #915959 (Victor, 10/09) */
#page-comercial-pipeline .btn-red:hover { background:#7d4b4b; }
[id^="page-comercial-"] .btn-sec { border-radius:6px; }

/* pilulas de estagio e chips */
.crm-tw-pill { display:inline-block; font-size:11px; font-weight:600; padding:2px 9px;
  border-radius:4px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tw-red    { background:#FEE4E2; color:#B42318; }
.tw-purple { background:#EBE9FE; color:#5925DC; }
.tw-blue   { background:#E0F2FE; color:#026AA2; }
.tw-pink   { background:#FCE7F6; color:#C11574; }
.tw-yellow { background:#FEF7C3; color:#A15C07; }
.tw-green  { background:#D1FADF; color:#027A48; }
.crm-tw-avatar { display:inline-flex; align-items:center; justify-content:center;
  width:16px; height:16px; border-radius:4px; background:#EBE9FE; color:#5925DC;
  font-size:10px; font-weight:700; flex:none; }
.crm-tw-linha { display:flex; align-items:center; gap:6px; font-size:11.5px; color:#666;
  padding:2px 0; min-width:0; }
.crm-tw-linha > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* kanban: canvas branco, colunas separadas por hairline */
[id^="page-comercial-"] .pd-kanban { gap:0; }
[id^="page-comercial-"] .pd-col { background:#fff; border:0; border-right:1px solid #f0f0f0;
  border-radius:0; padding:8px 10px; }
[id^="page-comercial-"] .pd-col:last-child { border-right:0; }
[id^="page-comercial-"] .pd-col.pd-col-hover { background:#f7faff; border-color:#4c7ef3; }
[id^="page-comercial-"] .pd-col-h { padding:2px 2px 4px; }
[id^="page-comercial-"] .pd-col-meta { color:#818181; font-weight:600; }
[id^="page-comercial-"] .pd-col-sub { border-bottom:0; color:#9b9b9b; font-weight:500; }
[id^="page-comercial-"] .pd-card { background:#fff; border:1px solid #e5e5e5; border-radius:8px;
  box-shadow:0 1px 2px rgba(0,0,0,.03); padding:9px 11px; }
[id^="page-comercial-"] .pd-card:hover { border-color:#c9c9c9; }
/* alerta "sem próximo passo" precisa vencer a regra de card acima (mais específica) */
[id^="page-comercial-"] .pd-card.pd-card-alerta { background:#fdf6f5; border-color:#e7c4c0;
  border-left:3px solid var(--bordo, #b42318); }

/* ══ Pipeline — identidade nova (10/09, mockup do Victor) ══════════════════
   faixa de KPIs · colunas com barra de participação e cor por etapa · cards
   código/título/valor/dono · painel lateral (exige ação · maiores · por dono) */
.pdk-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:0 0 14px; }
.pdk-kpi { background:#fff; border:1px solid #ecebe8; border-top:3px solid #2B3847; border-radius:8px; padding:14px 18px 12px; }
.pdk-kpi-bordo { border-top-color:var(--bordo); }
.pdk-kpi-gold { border-top-color:var(--gold); }
.pdk-kpi-l { font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:#7C848D; font-weight:600; }
.pdk-kpi-v { font-size:26px; font-weight:600; color:var(--text); line-height:1.15; margin:8px 0 4px; font-variant-numeric:tabular-nums; letter-spacing:-.3px; }
.pdk-kpi-v.pdk-bordo { color:var(--bordo); }
.pdk-kpi-s { font-size:12px; color:#7C848D; }
#page-comercial-pipeline .pdk-kpi-s a { color:var(--bordo) !important; font-weight:600; text-decoration:underline; }
.pdk-bar { display:flex; justify-content:space-between; align-items:center; margin:0 0 10px; min-height:22px; }
.pdk-bar-aviso { font-size:12px; color:var(--bordo); font-weight:600; }
.pdk-bar-aviso a { color:var(--bordo); }
.pdk-sort { display:flex; align-items:center; gap:6px; font-size:12px; color:#5b6472; }
.pdk-sort select { font-size:12px; padding:4px 6px; border:1px solid #d6dae0; border-radius:6px; background:#fff; }
.pdk-wrap { display:flex; gap:16px; align-items:flex-start; }
.pdk-wrap .pd-kanban { flex:1; min-width:0; gap:14px; }
[id^="page-comercial-"] .pd-col.pdk-col { flex:0 0 300px; max-width:300px; background:transparent; border:0; padding:0; }
[id^="page-comercial-"] .pd-col.pdk-col.pd-col-hover { background:rgba(74,120,163,.06); border-radius:8px; }
.pdk-col-h { background:#fff; border:1px solid #ecebe8; border-top:3px solid var(--pdk-cor,#1a1d24); border-radius:8px; padding:12px 14px 10px; margin-bottom:10px; }
.pdk-col-top { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.pdk-col-t { font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:var(--text); }
.pdk-col-v { font-size:13px; font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; }
.pdk-col-bar { height:3px; background:#efede9; border-radius:2px; margin:8px 0 7px; overflow:hidden; }
.pdk-col-bar i { display:block; height:100%; background:var(--pdk-cor,#1a1d24); border-radius:2px; }
.pdk-col-sub { display:flex; justify-content:space-between; font-size:10.5px; color:#8a8f97; gap:8px; }
.pdk-col-sub span:last-child { white-space:nowrap; }
[id^="page-comercial-"] .pd-card.pdk-card { border:1px solid #ecebe8; border-top:3px solid #e6e2db; border-radius:8px; padding:12px 14px 10px; margin-bottom:10px;
  box-shadow:0 1px 2px rgba(20,20,25,.03); }
[id^="page-comercial-"] .pd-card.pdk-card:hover { border-color:#d9d5ce; box-shadow:0 4px 12px rgba(20,20,25,.06); }
[id^="page-comercial-"] .pd-card.pdk-card.pd-card-alerta { background:#fff; border-color:#ecebe8; border-left:1px solid #ecebe8; border-top:3px solid var(--bordo); }
[id^="page-comercial-"] .pd-card.pdk-card.pdk-parado { border-top-color:var(--gold); }
.pdk-card-top { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.pdk-card-cod { font-size:10.5px; letter-spacing:.06em; color:#8a8f97; font-variant-numeric:tabular-nums; margin-bottom:2px; }
.pdk-card-t { font-size:13.5px; font-weight:600; color:var(--text); line-height:1.3; word-break:break-word; }
.pdk-card-v { font-size:17px; font-weight:600; color:var(--text); margin:8px 0 4px; font-variant-numeric:tabular-nums; letter-spacing:-.2px; }
.pdk-card-quem { font-size:12px; color:#7C848D; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pdk-card-f { display:flex; align-items:center; gap:8px; margin-top:10px; padding-top:9px; border-top:1px solid #f0eee9; font-size:11.5px; min-height:22px; }
.pdk-card-f > span:first-child { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pdk-card-alerta { color:var(--bordo); font-weight:600; cursor:pointer; }
.pdk-card-alerta u { font-weight:700; }
.pdk-card-prox { color:#5b6472; }
.pdk-card-prox.pdk-vencido { color:var(--bordo); font-weight:600; }
.pdk-avatar { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%;
  background:#eef0f3; color:#454e59; font-size:9.5px; font-weight:700; flex:none; }
.pdk-parado-tag { font-size:9.5px; font-weight:700; color:var(--gold); background:rgba(200,154,62,.15); padding:2px 6px; border-radius:8px; flex:none; }
[id^="page-comercial-"] .pd-card.pdk-card .crm-etq { font-size:9px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; padding:3px 7px; border-radius:4px; flex:none; }
[id^="page-comercial-"] .pd-card.pdk-card .crm-etq-warm { background:rgba(200,154,62,.16) !important; color:#8a6010; }
[id^="page-comercial-"] .pd-card.pdk-card .crm-etq-hot  { background:rgba(183,56,56,.12) !important; color:var(--red); }
[id^="page-comercial-"] .pd-card.pdk-card .crm-etq-cold { background:rgba(74,120,163,.12) !important; color:var(--blue2); }
.pdk-side { flex:0 0 300px; display:flex; flex-direction:column; gap:12px; position:sticky; top:12px; }
.pdk-box { background:#fff; border:1px solid #ecebe8; border-radius:8px; padding:14px 18px; }
.pdk-box-t { font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:#7C848D; font-weight:700; margin-bottom:8px; }
.pdk-box-dark { background:#2B3847; border-color:#2B3847; color:#e8e4db; }   /* cor do quadro: HEX #2B3847 (Victor, 10/09) */
.pdk-box-dark .pdk-box-t { color:#b9a97a; }
.pdk-box-dark .pdk-row { border-color:rgba(255,255,255,.08); color:#e8e4db; }
.pdk-box-dark .pdk-row b { color:#fff; }
.pdk-box-beige { background:var(--beige); border-color:var(--beige); color:#3b2f21; }
.pdk-box-beige .pdk-box-t { color:#5a4a36; }
.pdk-box-beige .pdk-row { border-color:rgba(0,0,0,.08); color:#3b2f21; }
.pdk-box-beige .pdk-row b { color:#1f2429; }
.pdk-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid #f0eee9; font-size:12.5px; }
.pdk-row:last-of-type { border-bottom:0; }
.pdk-row span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pdk-row b { font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.pdk-row-link { cursor:pointer; }
.pdk-row-link:hover span { color:var(--bordo); }
.pdk-btn { display:block; width:100%; margin-top:10px; background:var(--bordo); color:#fff; border:0; border-radius:6px; padding:9px 12px; font-weight:600; font-size:12.5px; cursor:pointer; }
.pdk-btn:hover { background:#7d4b4b; }
.pdk-btn.on { background:#4a78a3; }
@media (max-width:1180px){ .pdk-kpis { grid-template-columns:repeat(2,1fr); } .pdk-wrap { flex-wrap:wrap; } .pdk-side { flex:1 1 100%; position:static; flex-direction:row; } .pdk-side .pdk-box { flex:1; } }
[id^="page-comercial-"] .crm-card-t { font-size:12px; color:#1b1b1b; }

/* campo de busca com botão de lupa (abre a busca global com o termo) */
.crm-q-wrap { position:relative; display:inline-flex; flex:1 1 240px; min-width:180px; }
.crm-q-wrap .filter-search { width:100%; padding-right:32px; }
.crm-q-go { position:absolute; right:4px; top:50%; transform:translateY(-50%);
  border:none; background:transparent; color:#9aa1ab; cursor:pointer; padding:3px 5px;
  display:inline-flex; align-items:center; border-radius:6px; }
.crm-q-go:hover { color:var(--bordo,#b42318); background:#f2efea; }

/* busca global (overlay estilo PD) */
.crm-bg-ov { position:fixed; inset:0; background:rgba(20,26,38,.42); z-index:9000;
  display:none; align-items:flex-start; justify-content:center; padding:70px 16px 16px; }
.crm-bg-box { width:100%; max-width:640px; background:#fff; border-radius:12px;
  box-shadow:0 18px 60px rgba(0,0,0,.28); overflow:hidden; display:flex; flex-direction:column; max-height:78vh; }
.crm-bg-topo { display:flex; align-items:center; gap:10px; padding:12px 14px; border-bottom:1px solid #ececec; }
.crm-bg-topo [data-icon] { color:#8a929c; flex:none; }
.crm-bg-input { flex:1; border:none; outline:none; font-size:15px; color:#1b2430; background:transparent; }
.crm-bg-x { border:none; background:transparent; color:#9aa1ab; font-size:15px; cursor:pointer; padding:4px 6px; }
.crm-bg-x:hover { color:#1b2430; }
.crm-bg-res { overflow:hidden; display:flex; min-height:0; }
.crm-bg-dica { padding:20px 16px; color:#8a929c; font-size:12.5px; text-align:center; width:100%; }
/* menu lateral de categorias (à la Pipedrive) */
.crm-bg-cats { width:190px; flex:none; border-right:1px solid #ececec; padding:6px 0; overflow-y:auto; background:#faf9f7; }
.crm-bg-cat { padding:8px 14px; font-size:12.5px; color:#454e59; cursor:pointer; display:flex; align-items:center; gap:6px; }
.crm-bg-cat:hover { background:#f2efea; }
.crm-bg-cat.on { background:#fff; color:#9c5b5b; font-weight:600; box-shadow:inset 3px 0 0 #9c5b5b; }
.crm-bg-cat .crm-bg-n { margin-left:auto; }
.crm-bg-lista { flex:1; overflow-y:auto; padding:6px 0; }
.crm-bg-it mark, .crm-bg-is mark { background:#fff2a8; color:inherit; padding:0 1px; border-radius:2px; }
.crm-bg-grupo { padding:4px 0 6px; }
.crm-bg-gt { font-size:10.5px; font-weight:700; letter-spacing:.4px; text-transform:uppercase;
  color:#9c5b5b; padding:8px 16px 4px; display:flex; align-items:center; gap:6px; }
.crm-bg-n { background:#f0ede8; color:#8a7f76; border-radius:10px; padding:0 7px; font-size:10px; }
.crm-bg-item { padding:7px 16px; cursor:pointer; border-left:2px solid transparent; }
.crm-bg-item:hover { background:#f7f4f0; border-left-color:#9c5b5b; }
.crm-bg-it { font-size:13px; color:#1b2430; font-weight:500; }
.crm-bg-is { font-size:11.5px; color:#8a929c; margin-top:1px; }

/* tabelas: look Twenty — hairlines, cabecalho cinza, hover suave */
[id^="page-comercial-"] table.sm th { background:#fff; color:#818181; font-weight:500;
  text-transform:none; letter-spacing:0; font-size:11.5px; border-bottom:1px solid #e5e5e5; }
[id^="page-comercial-"] table.sm td { border-bottom:1px solid #f2f2f2; padding:7px 12px; font-size:12px; }
[id^="page-comercial-"] table.sm tbody tr:hover td { background:#fafafa; }

/* filtros salvos como pilulas Twenty */
[id^="page-comercial-"] .crm-preset { border-radius:6px; border-color:#e5e5e5; color:#666; }
[id^="page-comercial-"] .crm-preset.on { background:#1b1b1b; border-color:#1b1b1b; }
[id^="page-comercial-"] .crm-chip { border-radius:6px; }
[id^="page-comercial-"] .crm-view-sw { border-color:#e5e5e5; }
[id^="page-comercial-"] .crm-view-sw button.active { background:#1b1b1b; }

/* calendario e setup acompanham */
[id^="page-comercial-"] .crm-cal-dia { border-color:#e5e5e5; border-radius:8px; }
[id^="page-comercial-"] .crm-cal-hoje { border-color:#4c7ef3; box-shadow:0 0 0 1px #4c7ef3; }
[id^="page-comercial-"] .crm-setup-row .fi { border-radius:6px; }

/* SKIN TWENTY — anatomia de tabela: icones no cabecalho, separadores
   verticais, chips com borda, Add New inline e rodape de agregados */
.tw-th { display:inline-flex; align-items:center; gap:5px; color:#818181; font-weight:500; }
[id^="page-comercial-"] table.tw-tab th,
[id^="page-comercial-"] table.tw-tab td { border-right:1px solid #f2f2f2; }
[id^="page-comercial-"] table.tw-tab th:last-child,
[id^="page-comercial-"] table.tw-tab td:last-child { border-right:0; }
.tw-chip { display:inline-block; border:1px solid #e5e5e5; border-radius:5px; padding:1px 8px;
  font-size:11.5px; color:#333; background:#fff; max-width:100%; overflow:hidden;
  text-overflow:ellipsis; white-space:nowrap; vertical-align:middle; }
.tw-addnew td { color:#9b9b9b; cursor:pointer; font-weight:500; }
.tw-addnew td:hover { color:#4c7ef3; background:#fafafa; }
.tw-foot { display:flex; gap:26px; padding:8px 12px; font-size:11.5px; color:#9b9b9b;
  border-top:0; }
.tw-foot strong { color:#333; font-weight:600; }
[id^="page-comercial-"] .crm-tag { border-radius:4px; letter-spacing:.2px; }
[id^="page-comercial-"] .crm-mkt-ok  { background:#D1FADF; color:#027A48; }
[id^="page-comercial-"] .crm-mkt-off { background:#f2f2f2; color:#666; }
[id^="page-comercial-"] .crm-mkt-bad { background:#FEE4E2; color:#B42318; }
[id^="page-comercial-"] .crm-tag-ev  { background:#FEF7C3; color:#A15C07; }
[id^="page-comercial-"] .page-title { font-size:17px; }
[id^="page-comercial-"] .page-subtitle { font-size:11.5px; }
[id^="page-comercial-"] .filter-search { max-width:340px; }

/* SKIN TWENTY — painel lateral de registro (o continente de tudo) */
#crm-panel { position:fixed; top:0; right:0; bottom:0; width:460px; max-width:92vw;
  background:#fff; border-left:1px solid #e5e5e5; box-shadow:-8px 0 28px rgba(0,0,0,.07);
  z-index:1000; display:flex; flex-direction:column;
  transform:translateX(24px); opacity:0; transition:transform .16s ease, opacity .16s ease; }
#crm-panel.aberto { transform:none; opacity:1; }
/* painel largo (card de contato/negócio no layout de 2 colunas do Pipedrive) */
#crm-panel.crm-panel-wide { width:940px; }
/* form de atividade (04/09): painel intermediário — grid 2 colunas respira e
   as abas do topo (atividade · negócio · pessoa · organização) param de cortar */
#crm-panel.crm-panel-lg { width:760px; }
.crm-at-nota { min-height:150px; resize:vertical; }
.crm-card2 { display:grid; grid-template-columns:320px 1fr; gap:0; height:100%; }
.crm-card2 .crm-side { padding-right:18px; border-right:1px solid #f0f0f0; overflow-y:auto; }
.crm-card2 .crm-main { padding-left:18px; overflow-y:auto; }
@media (max-width:820px){ .crm-card2 { grid-template-columns:1fr; }
  .crm-card2 .crm-side { border-right:0; padding-right:0; } }
/* abas de ação no topo da coluna de atividade */
.crm-ct-acoes { display:flex; gap:2px; border-bottom:1px solid #e5e5e5; margin-bottom:12px; flex-wrap:wrap; }
.crm-ct-acao { display:inline-flex; align-items:center; gap:5px; padding:8px 12px; font-size:12px;
  color:#454e59; background:none; border:none; border-bottom:2px solid transparent; cursor:pointer;
  text-decoration:none; white-space:nowrap; }
.crm-ct-acao:hover { color:var(--bordo,#b42318); }
.crm-ct-acao.on { color:#1b2430; font-weight:600; border-bottom-color:#4c7ef3; }
.crm-ct-comp { margin-bottom:8px; }
/* Foco enriquecido: título + linha de metadados com vínculos */
.crm-foco-t { display:flex; align-items:baseline; gap:6px; }
.crm-foco-meta { font-size:11px; color:#8a929c; margin-top:3px; padding-left:2px; }
.crm-panel-h { display:flex; align-items:center; gap:10px; padding:13px 16px;
  border-bottom:1px solid #f0f0f0; }
.crm-panel-t { font-size:14px; font-weight:600; color:#1b1b1b; flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-panel-x { border:0; background:none; font-size:18px; color:#9b9b9b; cursor:pointer;
  padding:0 4px; line-height:1; }
.crm-panel-x:hover { color:#1b1b1b; }
.crm-panel-b { flex:1; overflow-y:auto; padding:14px 16px; }
.crm-panel-f { display:flex; gap:8px; justify-content:flex-end; padding:10px 16px;
  border-top:1px solid #f0f0f0; }
/* campos estilo Twenty dentro do painel: sem borda ate o foco */
/* formularios do painel: campo sempre visivel (hairline), foco azul.
   O "sem borda ate focar" escondia onde digitar — feedback do dono. */
#crm-panel .fi { border:1px solid #e5e5e5; background:#fff; border-radius:6px; }
#crm-panel .fi:hover { border-color:#d0d0d0; }
#crm-panel .fi:focus { border-color:#4c7ef3; background:#fff; box-shadow:0 0 0 2px rgba(76,126,243,.12); }
#crm-panel .fl { color:#818181; font-weight:500; text-transform:none; letter-spacing:0; }
#crm-panel .crm-at-nota { background:#fdf6d8; border-color:#e8dca8; }
#crm-panel .crm-at-grid { grid-template-columns:1fr; }
#crm-panel .crm-at-dia { border-left:0; border-top:1px solid #f0f0f0; padding:10px 0 0; margin-top:8px; }
.crm-f { display:flex; align-items:center; gap:10px; padding:3px 0; font-size:12px; }
.crm-f-l { width:120px; flex:none; color:#818181; }
.crm-f-v { flex:1; min-width:0; }

/* SKIN TWENTY — estado selecionado suave (Twenty nao inverte para escuro):
   fundo cinza-claro, texto escuro, peso 600 */
[id^="page-comercial-"] .crm-preset.on,
[id^="page-comercial-"] .crm-chip-on,
[id^="page-comercial-"] .crm-view-sw button.active,
[id^="page-comercial-"] .crm-at-tipo.on,
#crm-panel .crm-at-tipo.on {
  background:#f0f0f0; border-color:#d9d9d9; color:#1b1b1b; font-weight:600;
}
[id^="page-comercial-"] .crm-chip-on strong { color:#1b1b1b; }
[id^="page-comercial-"] .crm-chip-alerta { border-color:#B42318; color:#B42318; background:#FEF3F2; }

/* SKIN TWENTY — nomes dos ambientes e cabecalhos de coluna */
.crm-pg-ico { display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:6px; background:#EBE9FE; color:#5925DC;
  vertical-align:-4px; margin-right:2px; }
[id^="page-comercial-"] .page-title { font-size:15px; font-weight:600; display:flex;
  align-items:center; gap:7px; }
[id^="page-comercial-"] .page-subtitle { display:none; }  /* Twenty: so o nome */
[id^="page-comercial-"] .page-header { padding-bottom:4px; }
/* icones de coluna monocromaticos: emoji dessaturado, como os outline do Twenty */
.tw-th { font-size:11.5px; }
.tw-th > :first-child { filter:grayscale(1); opacity:.55; }
[id^="page-comercial-"] table.tw-tab th .tw-th,
#crm-panel .tw-th { filter:none; }
.tw-th-i { filter:grayscale(1); opacity:.55; }

/* SKIN TWENTY — dialogo central do Comercial (confirmacoes e utilitarios).
   Registro e seus passos abrem no painel lateral; o que sobra como dialogo
   ganha a mesma pele: branco, hairline, botoes chatos, X discreto. */
dialog.fx-modal.crm-tw { border:1px solid #e5e5e5; border-radius:10px; padding:0;
  background:#fff; box-shadow:0 16px 40px rgba(23,23,23,.14); color:#171717; }
dialog.fx-modal.crm-tw::backdrop { background:rgba(23,23,23,.24); }
dialog.fx-modal.crm-tw .fx-modal-title { font-size:14px; font-weight:600; color:#171717;
  background:#fff; padding:14px 16px 10px; border-bottom:1px solid #f0f0f0;
  display:flex; align-items:center; justify-content:space-between; }
dialog.fx-modal.crm-tw .fx-modal-close { border:none; background:none; color:#999;
  font-size:17px; line-height:1; width:24px; height:24px; border-radius:5px;
  cursor:pointer; padding:0; box-shadow:none; }
dialog.fx-modal.crm-tw .fx-modal-close:hover { background:#f0f0f0; color:#171717; }
dialog.fx-modal.crm-tw .fx-modal-body { padding:14px 16px; }
dialog.fx-modal.crm-tw .fx-modal-actions { padding:12px 16px; margin:0;
  border-top:1px solid #f0f0f0; display:flex; justify-content:flex-end; gap:8px; }
dialog.fx-modal.crm-tw .btn { border-radius:6px; font-size:12.5px; font-weight:500;
  box-shadow:none; text-transform:none; letter-spacing:0; }
dialog.fx-modal.crm-tw .btn-sec { background:#fff; border:1px solid #e5e5e5; color:#171717; }
dialog.fx-modal.crm-tw .btn-sec:hover { background:#f7f7f7; }
dialog.fx-modal.crm-tw .btn-red { background:#4c7ef3; border:1px solid #4c7ef3; color:#fff; }
dialog.fx-modal.crm-tw .btn-red:hover { background:#3d6de0; }
dialog.fx-modal.crm-tw .btn-red.crm-tw-danger { background:#B42318; border-color:#B42318; }
dialog.fx-modal.crm-tw .btn-red.crm-tw-danger:hover { background:#9a1d13; }
dialog.fx-modal.crm-tw .fl { font-size:11px; font-weight:600; color:#666;
  text-transform:uppercase; letter-spacing:.04em; }
dialog.fx-modal.crm-tw select, dialog.fx-modal.crm-tw input[type=text],
dialog.fx-modal.crm-tw input[type=number], dialog.fx-modal.crm-tw textarea {
  border:1px solid #e5e5e5; border-radius:6px; background:#fff; color:#171717; }

/* lapis de editar/excluir dentro do chip de filtro salvo — aparece no hover */
.crm-preset .crm-flt-edit { display:none; margin-left:6px; color:#999; font-size:11px; }
.crm-preset:hover .crm-flt-edit { display:inline; }
.crm-preset .crm-flt-edit:hover { color:#171717; }

/* cabecalho de coluna clicavel — ordenacao nas listas de Contatos */
[id^="page-comercial-"] table.tw-tab th[data-sort] { cursor:pointer; user-select:none; }
[id^="page-comercial-"] table.tw-tab th[data-sort]:hover { background:#f7f7f7; }
.tw-sort-i { margin-left:4px; font-size:9px; color:#999; }

/* validacao inline: campo obrigatorio vazio ganha borda vermelha e a
   palavra "obrigatorio" junto do campo — nada de janela bloqueante */
.crm-err { border-color:#B42318 !important; box-shadow:0 0 0 1px #B42318 !important; }
.crm-err-msg { color:#B42318; font-size:11px; margin-top:4px; }
/* ── On Hold Financeiro ──────────────────────────────────────────────────────
   Empresa que contratou e ainda não teve pagamento reconhecido (WF 02, [W1]).
   A linha nasce na grade assim que o serviço é vendido — o time precisa saber
   que a empresa entrou — mas aparece esmaecida enquanto o Financeiro não
   libera.

   NÃO É TRAVA ([W5]): nenhuma célula fica bloqueada, nenhum select desabilita.
   Quem precisa executar antes do pagamento executa. A grade só deixa de dizer
   que está tudo liberado quando não está.

   Também não se confunde com o 'On hold' das colunas de entrega (o de
   contabilidade/011, que o time digita e arrasta a Prioridade para 0): aquele
   é operacional e vive na célula; este é financeiro, derivado, e vive na linha.

   O esmaecimento vai no CONTEÚDO (td > *), nunca no próprio td: as duas
   primeiras colunas são sticky com background !important, e um td translúcido
   deixaria as colunas roláveis aparecerem por baixo delas. */
table.emp-roster tbody tr.emp-row-fin-hold > td > * {
  opacity:.5; transition:opacity .12s ease;
}
/* Ao passar o mouse a linha volta ao normal: o sinal é para a varredura visual
   da grade, não um obstáculo na hora de trabalhar nela. */
table.emp-roster tbody tr.emp-row-fin-hold:hover > td > * { opacity:1; }

/* A mão é a explicação do esmaecimento — mas ela mora DENTRO do conteúdo
   esmaecido, e opacidade de ancestral não tem opt-out: a 50% o badge sumia
   junto com a linha (foi o feedback do primeiro teste em testes-cf). Por isso
   o aviso não pode depender só dele: a faixa e o fundo abaixo ficam no <td>,
   fora do subtree esmaecido, e leem a 100% sempre. O badge continua como a
   explicação clicável/hover, maior e com tinta escura o bastante para ler
   mesmo pela metade. */
.emp-fin-hold {
  display:inline-flex; align-items:center; justify-content:center; gap:4px;
  font-size:13px; line-height:1; padding:3px 8px; border-radius:10px;
  background:#f6dfae; border:1.5px solid #c99b3f; color:#6b4a0e;
  font-weight:700; cursor:help; user-select:none;
}
/* Sinais que NÃO desbotam: faixa âmbar à esquerda + lavagem no fundo da linha
   inteira. Aplicados no próprio td (as sticky precisam do !important porque o
   background delas já é !important). */
table.emp-roster tbody tr.emp-row-fin-hold > td { background:#fbf4e4; }
table.emp-roster tbody tr.emp-row-fin-hold > td.emp-sticky-1,
table.emp-roster tbody tr.emp-row-fin-hold > td.emp-sticky-2 { background:#fbf4e4 !important; }
table.emp-roster tbody tr.emp-row-fin-hold > td.emp-sticky-1 { box-shadow:inset 4px 0 0 #d9a441; }

/* Célula com pagamento em aberto (caso MISTO: a empresa pagou parte, e esta
   coluna é de um serviço que ficou de fora). A linha inteira NÃO está
   esmaecida aqui — se estivesse, nada teria sido pago e a marca por célula
   seria ruído em cima do sinal que a linha já deu.

   Tinta de fundo em vez de ícone: são até dez colunas por linha, e uma mão em
   cada uma viraria uma parede de mãos. A hachura já é do "serviço não
   contratado" (.emp-cell-lock) e não se repete aqui — as duas coisas são
   diferentes: aquela é ausência de contrato, esta é contrato sem pagamento. */
table.emp-roster tbody tr .emp-cell-fin-hold {
  background:rgba(232,201,138,.20);
  box-shadow:inset 0 -2px 0 rgba(138,97,22,.45);
  cursor:help;
}

/* Sinais derivados nas células de DF (14/10, grade derivada): o que o 4Ledger
   (revisão/emissão) e os Comunicados (dispensa / "Não enviar") já sabem, embaixo
   do status digitado. Só leitura — mesma escala do .emp-svc-flavor, em verde
   (fato do 4Ledger) ou cinza (Comunicados). A contradição com o status
   digitado é discreta de propósito: tinta âmbar no selo + filete na base da
   célula, sem fundo — a grade tem dez colunas por linha e não pode virar alarme. */
.emp-ldg-badge { font-size:9px; font-weight:600; color:#2f6b4f; margin-top:2px; white-space:nowrap; cursor:help; }
.emp-ldg-badge.emp-com-badge { color:#5e564a; }
.emp-ldg-badge.emp-ldg-warn { color:#8a4b14; }
table.emp-roster tbody tr .emp-cell-ldg-warn { box-shadow:inset 0 -2px 0 rgba(176,96,32,.55); }

/* Fora do escopo (14/10): empresa inativa ou sem contrato vigente que segue na
   grade do ano pelo histórico em aberto. Faixa cinza à esquerda + chip; nada
   esmaece — a linha existe justamente para ser trabalhada e encerrada. */
table.emp-roster tbody tr.emp-row-fora > td.emp-sticky-1 { box-shadow:inset 4px 0 0 #9c8f80; }
.emp-fora-escopo {
  display:inline-flex; align-items:center; font-size:9px; font-weight:700; line-height:1;
  padding:2px 6px; border-radius:8px; border:1px dashed #9c8f80; color:#5e564a;
  background:rgba(120,120,120,.08); cursor:help; white-space:nowrap;
}

/* ============================================================
   WORKFLOW v2 — Builder, Carteira e Processo
   Antes desta seção o wf.js só emprestava classes (.cc/.dt/.cp-chip)
   e inline-styles; agora o módulo tem design próprio, na paleta do
   portal. Prefixos: .wf- (compartilhado) · .wfc- (carteira) ·
   .wfp- (modal do processo) · .wfb- (builder).
   ============================================================ */
:root {
  --wf-accent:#2f6bde;           /* interativo do módulo (seleção, foco) */
  --wf-accent-soft:#eef3fd;
  --wf-accent-border:#c9daf5;
}

/* ---------- Tiles das 6 peças (cor por tipo, usada em todo o módulo) --- */
.wf-tile {
  width:30px; height:30px; border-radius:8px; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:14px; line-height:1;
}
.wf-tile.sm { width:22px; height:22px; border-radius:6px; font-size:11px; }
.wf-t-task       { background:#eef0f2; color:#3f4b58; }
.wf-t-request    { background:#e8f0fb; color:#28527a; }
.wf-t-decision   { background:#fdf1dc; color:#8a6010; }
.wf-t-wait       { background:#f1ece3; color:#7d6337; }
.wf-t-automation { background:#f3ebfa; color:#5b3a80; }
.wf-t-end        { background:#e9f4ec; color:#1f7a47; }
.wf-t-start      { background:#eef0f2; color:#7C848D; }

/* ---------- Chips com dot semântico (padrão .chip do accounting) ------- */
.wf-chip {
  display:inline-flex; align-items:center; gap:5px;
  font-size:10px; font-weight:600; line-height:1;
  padding:3px 8px; border-radius:10px;
  background:var(--surface-alt); color:var(--text-mid);
  border:1px solid var(--border); white-space:nowrap;
}
.wf-chip::before { content:''; width:6px; height:6px; border-radius:50%; background:currentColor; opacity:.75; }
.wf-chip.nodot::before { display:none; }
.wf-chip.ok    { background:rgba(31,122,71,.08);  color:#1f7a47; border-color:rgba(31,122,71,.18); }
.wf-chip.warn  { background:rgba(200,154,62,.12); color:#8a6010; border-color:rgba(200,154,62,.28); }
.wf-chip.alert { background:rgba(183,56,56,.08);  color:var(--red); border-color:rgba(183,56,56,.2); }
.wf-chip.info  { background:#e8f0fb; color:#28527a; border-color:#d4e2f4; }
.wf-chip.viol  { background:#f3ebfa; color:#5b3a80; border-color:#e6d8f2; }
.wf-chip.mut   { background:var(--surface-alt); color:var(--text-light); border-color:var(--border); }

/* ---------- Barra de progresso (etapas concluídas / total) ------------- */
.wf-prog { display:flex; align-items:center; gap:7px; min-width:0; }
.wf-prog-track {
  flex:1; height:4px; min-width:34px; border-radius:3px;
  background:var(--border-soft); overflow:hidden;
}
.wf-prog-fill { height:100%; border-radius:3px; background:#1f7a47; transition:width .25s; }
.wf-prog-fill.warn { background:#c89a3e; }
.wf-prog-n { font-size:10px; font-weight:600; color:var(--text-light); white-space:nowrap; }

/* ---------- Menu flutuante (filtros, pickers) — vive no body ----------- */
.wf-menu {
  position:fixed; z-index:9500;
  background:var(--surface); border:1px solid var(--border-strong);
  border-radius:10px; box-shadow:0 10px 28px rgba(26,29,36,.16);
  min-width:170px; max-width:300px; max-height:min(380px,64vh); overflow:auto;
  padding:5px; font-size:12px;
  animation:fadeUp .12s ease;
}
.wf-menu-sec {
  font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:var(--text-light); padding:7px 9px 3px;
}
.wf-menu-it {
  display:flex; align-items:center; gap:8px;
  padding:6px 9px; border-radius:7px; cursor:pointer;
  color:var(--text); font-weight:500;
}
.wf-menu-it:hover { background:var(--surface-alt); }
.wf-menu-it.on { color:var(--wf-accent); font-weight:600; }
.wf-menu-ck {
  width:14px; height:14px; border-radius:4px; flex-shrink:0;
  border:1.5px solid var(--border-strong); display:inline-flex;
  align-items:center; justify-content:center; font-size:9px; color:#fff;
}
.wf-menu-it.on .wf-menu-ck { background:var(--wf-accent); border-color:var(--wf-accent); }
.wf-menu-sep { height:1px; background:var(--border-soft); margin:5px 4px; }
.wf-menu-form { padding:8px 9px; display:flex; flex-direction:column; gap:7px; }
.wf-menu-form .fi { font-size:12px; padding:7px 10px; }

/* ============================================================
   CARTEIRA (página Processos) — controle estilo Notion
   ============================================================ */
.wfc-kpis { display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin-bottom:16px; }
@media (max-width:1400px){ .wfc-kpis { grid-template-columns:repeat(3,1fr); } }
@media (max-width:1100px){ .wfc-kpis { grid-template-columns:repeat(2,1fr); } }
.wfc-kpi {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:13px 16px; cursor:pointer; text-align:left;
  transition:border-color .15s, box-shadow .15s; position:relative;
  font-family:var(--font);
}
.wfc-kpi:hover { border-color:var(--border-strong); box-shadow:0 1px 8px rgba(26,29,36,.05); }
.wfc-kpi.on { border-color:var(--wf-accent); box-shadow:0 0 0 3px rgba(47,107,222,.10); }
.wfc-kpi-v { font-size:21px; font-weight:700; color:var(--text); letter-spacing:-.5px; line-height:1.1; }
.wfc-kpi-v.alert { color:var(--red); }
.wfc-kpi-l { font-size:11px; color:var(--text-light); margin-top:3px; }
.wfc-kpi-dot { position:absolute; top:14px; right:14px; width:8px; height:8px; border-radius:50%; }

/* Trilho de visões (tabs estilo Notion) */
.wfc-views {
  display:flex; align-items:center; gap:2px; flex-wrap:wrap;
  border-bottom:1px solid var(--border); margin-bottom:12px;
}
.wfc-view {
  display:inline-flex; align-items:center; gap:6px;
  padding:7px 11px 8px; margin-bottom:-1px;
  font-size:12px; font-weight:600; color:var(--text-light);
  border:none; background:none; cursor:pointer;
  border-bottom:2px solid transparent; border-radius:6px 6px 0 0;
  font-family:var(--font); white-space:nowrap;
}
.wfc-view:hover { color:var(--text); background:var(--surface-alt); }
.wfc-view.on { color:var(--text); border-bottom-color:var(--text); }
.wfc-view .wfc-view-n { font-size:10px; font-weight:600; color:var(--text-light); background:var(--surface-alt); border-radius:8px; padding:1px 6px; }
.wfc-view.on .wfc-view-n { background:var(--border); color:var(--text-mid); }
.wfc-view-add {
  margin-left:2px; padding:6px 9px 7px; font-size:11.5px; color:var(--text-light);
  border:none; background:none; cursor:pointer; font-family:var(--font); font-weight:500;
  border-radius:6px 6px 0 0;
}
.wfc-view-add:hover { color:var(--text); background:var(--surface-alt); }

/* Toolbar: busca + filtros + agrupar + modo */
.wfc-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.wfc-search { position:relative; width:230px; }
.wfc-search input {
  width:100%; background:var(--surface); border:1.5px solid var(--border);
  border-radius:8px; padding:7px 11px 7px 30px;
  font-family:var(--font); font-size:12px; color:var(--text); outline:none;
  transition:border-color .15s;
}
.wfc-search input:focus { border-color:var(--wf-accent); }
.wfc-search .wfc-search-ico {
  position:absolute; left:9px; top:50%; transform:translateY(-50%);
  color:var(--text-light); display:flex; pointer-events:none;
}
.wfc-fbtn {
  display:inline-flex; align-items:center; gap:6px;
  background:var(--surface); border:1.5px dashed var(--border-strong);
  border-radius:8px; padding:6px 11px;
  font-family:var(--font); font-size:11.5px; font-weight:600; color:var(--text-mid);
  cursor:pointer; transition:all .12s; white-space:nowrap;
}
.wfc-fbtn:hover { border-color:var(--text-light); color:var(--text); }
.wfc-fbtn.on { border-style:solid; border-color:var(--wf-accent-border); background:var(--wf-accent-soft); color:#274f9e; }
.wfc-fbtn .wfc-fbtn-x { display:inline-flex; opacity:.55; }
.wfc-fbtn .wfc-fbtn-x:hover { opacity:1; }
.wfc-clear {
  border:none; background:none; font-family:var(--font); font-size:11.5px;
  color:var(--text-light); cursor:pointer; padding:6px 4px; font-weight:500;
}
.wfc-clear:hover { color:var(--red); }
.wfc-toolbar-right { margin-left:auto; display:flex; align-items:center; gap:8px; }

/* Modo Tabela | Quadro (segmented) */
.wfc-mode { display:inline-flex; background:var(--surface-alt); border:1px solid var(--border); border-radius:8px; padding:2px; }
.wfc-mode button {
  display:inline-flex; align-items:center; gap:5px;
  border:none; background:none; border-radius:6px; padding:5px 10px;
  font-family:var(--font); font-size:11.5px; font-weight:600; color:var(--text-light);
  cursor:pointer; transition:all .12s;
}
.wfc-mode button.on { background:var(--surface); color:var(--text); box-shadow:0 1px 3px rgba(26,29,36,.10); }

/* Tabela */
.wfc-tablewrap { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.wfc-scroll { overflow:auto; max-height:calc(100vh - 330px); }
table.wfc-table { width:100%; border-collapse:collapse; font-size:12px; }
table.wfc-table th {
  position:sticky; top:0; z-index:2;
  background:var(--surface-alt); color:var(--text-mid);
  font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px;
  text-align:left; padding:8px 12px; border-bottom:1px solid var(--border);
  cursor:pointer; user-select:none; white-space:nowrap;
}
table.wfc-table th:hover { color:var(--text); }
table.wfc-table th .wfc-th-dir { font-size:9px; margin-left:3px; color:var(--wf-accent); }
table.wfc-table td { padding:9px 12px; border-bottom:1px solid var(--border-soft); vertical-align:middle; }
table.wfc-table tbody tr { cursor:pointer; }
table.wfc-table tbody tr:hover td { background:var(--surface-alt); }
table.wfc-table tr:last-child td { border-bottom:none; }
.wfc-cell-alvo { font-weight:600; color:var(--text); }
.wfc-cell-sub { font-size:10.5px; color:var(--text-light); font-weight:400; margin-top:1px; }
.wfc-cell-mut { color:var(--text-light); }
.wfc-overdue { color:var(--red); font-weight:700; }
.wfc-group-row td {
  background:var(--bg) !important; cursor:default !important;
  font-size:10.5px; font-weight:700; color:var(--text-mid);
  text-transform:uppercase; letter-spacing:.4px; padding:7px 12px;
  border-bottom:1px solid var(--border);
}
.wfc-group-row .wfc-group-n { font-weight:600; color:var(--text-light); margin-left:6px; text-transform:none; letter-spacing:0; }

/* Quadro (kanban) */
.wfc-board {
  display:flex; gap:12px; align-items:flex-start;
  overflow-x:auto; padding:2px 2px 14px;
  scroll-snap-type:x proximity;
}
.wfc-col {
  flex:0 0 272px; max-width:272px; scroll-snap-align:start;
  background:var(--surface-alt); border:1px solid var(--border);
  border-radius:12px; max-height:calc(100vh - 320px);
  display:flex; flex-direction:column;
}
.wfc-col.drop { background:var(--wf-accent-soft); border-color:var(--wf-accent-border); }
.wfc-col-h {
  display:flex; align-items:center; gap:7px;
  padding:10px 12px 8px; flex-shrink:0;
}
.wfc-col-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.wfc-col-t { font-size:11.5px; font-weight:700; color:var(--text); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wfc-col-n { font-size:10px; font-weight:600; color:var(--text-light); background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:1px 7px; }
.wfc-col-body { padding:2px 8px 10px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
.wfc-col-empty { font-size:11px; color:var(--text-light); text-align:center; padding:14px 6px 16px; }
.wfc-card {
  background:var(--surface); border:1px solid var(--border);
  border-radius:10px; padding:10px 12px; cursor:pointer;
  transition:border-color .12s, box-shadow .12s;
}
.wfc-card:hover { border-color:var(--border-strong); box-shadow:0 2px 8px rgba(26,29,36,.07); }
.wfc-card.drag { opacity:.45; transform:rotate(-1deg) scale(.98); }
.wfc-card[draggable="true"] { cursor:grab; }
.wfc-card-t { font-size:12px; font-weight:700; color:var(--text); line-height:1.3; }
.wfc-card-sub { font-size:10.5px; color:var(--text-light); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wfc-card-chips { display:flex; gap:5px; flex-wrap:wrap; margin-top:8px; }
.wfc-card-foot {
  display:flex; align-items:center; justify-content:space-between; gap:6px;
  margin-top:8px; font-size:10px; color:var(--text-light);
}
.wfc-card .wf-prog { margin-top:8px; }
.wfc-avatar {
  width:20px; height:20px; border-radius:6px; flex-shrink:0;
  background:linear-gradient(135deg,#915959,#c47a7a); color:#fff;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:8.5px; font-weight:700; text-transform:uppercase; letter-spacing:.2px;
}
.wfc-empty {
  background:var(--surface); border:1px dashed var(--border-strong); border-radius:var(--radius);
  padding:38px 20px; text-align:center; font-size:12.5px; color:var(--text-light); line-height:1.8;
}

/* Aba "A iniciar" — vendas que ainda não viraram processo.
   A linha não abre nada (não há processo para abrir): o cursor de mão da
   carteira aqui prometeria um clique que não existe. A ação é o botão. */
table.wfc-table.wfc-pend tbody tr { cursor:default; }
table.wfc-table.wfc-pend tbody tr.wfc-urg td:first-child { box-shadow:inset 3px 0 0 var(--red); }
/* Rodapé de UMA LINHA: o que a lista mostra e o recorte de período. A
   explicação longa não mora na tela. */
.wfc-foot {
  font-size:11px; color:var(--text-light); padding:8px 2px 0; line-height:1.5;
}

/* ============================================================
   MODAL DO PROCESSO — timeline v2
   ============================================================ */
.modal-wfp { max-width:860px; padding:0; overflow:hidden; display:flex; flex-direction:column; }
.wfp-head { padding:22px 26px 0; flex-shrink:0; }
.wfp-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.wfp-title { font-size:18px; font-weight:700; color:var(--text); letter-spacing:-.3px; line-height:1.25; }
.wfp-sub { font-size:12px; color:var(--text-light); margin-top:3px; }
.wfp-chips { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.wfp-meta {
  /* 5 células desde 02/09: Alvo · Origem · Responsável · Supervisor · Criado */
  display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px 16px;
  margin-top:14px; padding:12px 14px;
  background:var(--surface-alt); border:1px solid var(--border-soft); border-radius:10px;
}
@media (max-width:640px){ .wfp-meta { grid-template-columns:1fr 1fr; } }
.wfp-meta-l { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); }
.wfp-meta-v { font-size:12px; font-weight:600; color:var(--text); margin-top:2px; overflow:hidden; text-overflow:ellipsis; }
.wfp-meta-v .wfp-edit { color:var(--text-light); cursor:pointer; font-weight:500; }
.wfp-meta-v .wfp-edit:hover { color:var(--wf-accent); }
.wfp-prog-row { display:flex; align-items:center; gap:10px; margin-top:14px; }
.wfp-prog-row .wf-prog { flex:1; }
.wfp-prog-row .wf-prog-track { height:6px; }
.wfp-body { padding:16px 26px 22px; overflow-y:auto; }
.wfp-sec-t {
  font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.6px;
  color:var(--text-mid); margin:14px 0 4px;
}

/* Etapa na timeline: trilho à esquerda + conteúdo */
.wfp-step { display:flex; gap:12px; position:relative; padding:0; }
.wfp-rail { display:flex; flex-direction:column; align-items:center; width:30px; flex-shrink:0; }
.wfp-rail .wf-tile { position:relative; z-index:1; }
.wfp-rail-line { flex:1; width:2px; background:var(--border-soft); min-height:10px; }
.wfp-step:last-child .wfp-rail-line { background:transparent; }
.wfp-step-box { flex:1; min-width:0; padding:4px 0 16px; }
.wfp-step.done .wfp-step-name { color:var(--text-light); }
.wfp-step.done .wf-tile { opacity:.62; }
.wfp-step.active .wfp-step-card {
  border:1px solid var(--border); border-radius:12px;
  padding:12px 14px; background:var(--surface);
  box-shadow:0 1px 8px rgba(26,29,36,.05);
}
.wfp-step.active.blocked .wfp-step-card { border-color:rgba(183,56,56,.35); background:#fdf9f8; }
.wfp-step-name { font-size:13px; font-weight:700; color:var(--text); line-height:1.3; }
.wfp-step-name .wfp-step-num { color:var(--text-light); font-weight:600; font-size:11px; margin-right:5px; }
.wfp-step-badges { display:flex; gap:5px; flex-wrap:wrap; margin-top:6px; }
.wfp-step-desc { font-size:11.5px; color:var(--text-mid); margin-top:7px; line-height:1.55; }
.wfp-step-mut { font-size:11px; color:var(--text-light); margin-top:4px; }
.wfp-triade { display:flex; gap:12px; flex-wrap:wrap; font-size:10.5px; color:var(--text-mid); margin-top:8px; }
.wfp-triade b { font-weight:700; }
.wfp-reqs { margin-top:10px; border-top:1px dashed var(--border); padding-top:9px; }
.wfp-reqs-t { display:flex; align-items:center; gap:7px; font-size:11px; font-weight:700; color:var(--text-mid); margin-bottom:5px; }
.wfp-req { display:flex; align-items:flex-start; gap:8px; padding:4px 0; font-size:11.5px; }
.wfp-req-ic { width:15px; text-align:center; flex-shrink:0; font-weight:700; }
.wfp-req-ic.ok { color:#1f7a47; } .wfp-req-ic.disp { color:var(--text-light); } .wfp-req-ic.pend { color:#c86e10; }
.wfp-req-body { flex:1; min-width:0; color:var(--text); }
.wfp-req-note { color:var(--text-light); font-size:10.5px; }
.wfp-req-acts { display:flex; gap:4px; flex-shrink:0; }
.wfp-actrow { display:flex; gap:7px; flex-wrap:wrap; align-items:center; margin-top:11px; }
.wfp-actrow .btn-xs { gap:5px; }
.wfp-link-mut { background:none; border:none; font-family:var(--font); font-size:11px; color:var(--text-light); cursor:pointer; padding:4px 6px; font-weight:500; border-radius:6px; }
.wfp-link-mut:hover { color:var(--text); background:var(--surface-alt); }
.wfp-link-danger { color:#a94b4b; }
.wfp-link-danger:hover { color:var(--red); background:rgba(183,56,56,.06); }

/* Formulário inline (substitui prompt()): aparece dentro da etapa/modal */
.wf-inline-form {
  margin-top:10px; padding:11px 12px;
  background:var(--surface-alt); border:1px solid var(--border); border-radius:10px;
  display:flex; flex-direction:column; gap:8px;
}
.wf-inline-form label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--text-mid); display:block; margin-bottom:3px; }
.wf-inline-form .fi { font-size:12px; padding:8px 10px; background:var(--surface); }
.wf-inline-row { display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap; }
.wf-inline-row > div { flex:1; min-width:120px; }
.wf-inline-acts { display:flex; gap:7px; justify-content:flex-end; margin-top:2px; }

/* Itens avulsos na etapa (spec §16.3): o que a execução descobriu e o
   desenho não previu. Trilha = o caminho em que o item está (BVI › ARIFA). */
.wfp-av { margin-top:10px; border-top:1px dashed var(--border); padding-top:9px; }
.wfp-av-h { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:6px; }
.wfp-av-tt { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:11px; font-weight:700; color:var(--text-mid); }
.wfp-av-c { font-size:10.5px; color:var(--text-light); }
.wfp-av-list { display:flex; flex-direction:column; gap:6px; }
.wfp-av-acts { display:flex; gap:6px; flex-wrap:wrap; margin-top:7px; }
.wfp-av-add { border-style:dashed!important; }
.wfp-av-empty { font-size:11px; color:var(--text-light); padding:2px 0; }
.wfp-trail { display:inline-flex; align-items:center; gap:4px; flex-wrap:wrap; font-weight:400; }
.wfp-crumb { font-size:10.5px; padding:1px 7px; border-radius:6px; border:1px solid var(--border-strong); background:var(--surface); color:var(--text); }
.wfp-crumb-q { color:var(--text-light); }
.wfp-crumb-sep { color:var(--text-light); font-size:11px; }
.wfp-it { display:flex; gap:8px; padding:8px 10px; border:1px solid var(--border); border-radius:9px; background:var(--surface); }
.wfp-it.dec { border-color:rgba(91,58,128,.3); }
.wfp-it.done > .wfp-it-b > .wfp-it-t .wfp-it-name { color:var(--text-mid); }
.wfp-it.cancel { opacity:.6; }
.wfp-it.cancel > .wfp-it-b > .wfp-it-t .wfp-it-name { text-decoration:line-through; }
.wfp-it.editing { background:transparent; border-style:dashed; }
.wfp-it.editing > .wfp-it-b > .wf-inline-form { margin-top:0; }
.wfp-it-st { width:8px; height:8px; border-radius:50%; margin-top:5px; flex-shrink:0; background:#c86e10; }
/* filho direto: o item dentro de uma decisão respondida tem o próprio estado */
.wfp-it.done > .wfp-it-st { background:#1f7a47; }
.wfp-it.cancel > .wfp-it-st { background:var(--text-light); }
.wfp-it-b { flex:1; min-width:0; }
.wfp-it-t { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:12px; }
.wfp-it-name { font-weight:600; color:var(--text); }
.wfp-it-m { font-size:11px; color:var(--text-mid); margin-top:3px; }
.wfp-it-w { font-size:10.5px; color:var(--text-light); margin-top:2px; }
.wfp-it-a { display:flex; align-items:center; gap:6px; margin-top:6px; flex-wrap:wrap; }
.wfp-radios { display:flex; gap:12px; flex-wrap:wrap; margin-top:6px; font-size:11.5px; color:var(--text); }
.wfp-radios label { display:inline-flex!important; align-items:center; gap:4px; text-transform:none!important; letter-spacing:0!important; font-size:11.5px!important; font-weight:500!important; color:var(--text)!important; margin:0!important; cursor:pointer; }
.wfp-nest { margin-top:8px; padding:8px 0 4px 10px; border-left:3px solid rgba(91,58,128,.35); }
.wfp-nest.wait { font-size:11px; color:var(--text-light); padding:4px 0 4px 10px; }
.wfp-nest-h { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:#5b3a80; margin-bottom:6px; }
.wfp-nest-h .wfp-trail { text-transform:none; letter-spacing:0; }
.wfp-nest-note { font-size:10.5px; color:var(--text-light); margin-top:6px; }
.wfp-it-form-t { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:11.5px; font-weight:700; color:var(--text); }
.wfp-it-kinds { display:grid; grid-template-columns:repeat(auto-fill, minmax(104px, 1fr)); gap:6px; }
.wfp-kind { display:flex; flex-direction:column; align-items:flex-start; gap:2px; text-align:left; padding:7px 9px; border:1px solid var(--border-strong); border-radius:8px; background:var(--surface); font-family:var(--font); cursor:pointer; }
.wfp-kind:hover { border-color:var(--navy); }
.wfp-kind-n { font-size:12px; font-weight:600; color:var(--text); }
.wfp-kind-d { font-size:10.5px; color:var(--text-light); line-height:1.3; }
.wfp-kind.on { background:var(--navy); border-color:var(--navy); }
.wfp-kind.on .wfp-kind-n, .wfp-kind.on .wfp-kind-d { color:#fff; }
/* .wfp-dec-seg na frente: vence a cor da opção (.wfp-opt.c-*, também !important) */
.wfp-dec-seg .wfp-dec-b.on { background:var(--navy)!important; border-color:var(--navy)!important; color:#fff!important; }
.wfp-it-opts { display:flex; flex-direction:column; gap:5px; }
.wfp-it-opt { display:flex; gap:5px; align-items:center; }
.wfp-it-opt .fi { flex:1; }
.wfp-chk { display:flex!important; align-items:center; gap:6px; text-transform:none!important; letter-spacing:0!important; font-size:11.5px!important; font-weight:500!important; color:var(--text)!important; cursor:pointer; }
.wfp-dec-hint { font-size:10.5px; color:var(--text-light); line-height:1.5; }
/* Decisão do desenho em dois tempos: escolher o caminho, depois seguir */
.wfp-dec { margin-top:10px; }
.wfp-dec-l { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--text-mid); margin-bottom:5px; }
.wfp-dec-seg { display:flex; gap:6px; flex-wrap:wrap; }
.wfp-dec-seg + .wfp-dec-hint { margin-top:5px; }
.wfp-dec-b:disabled { opacity:.45; cursor:not-allowed; }
.wfp-dec-banner { margin-top:10px; padding:9px 11px; border-radius:9px; border:1px solid rgba(200,154,62,.5); background:rgba(200,154,62,.08); font-size:11.5px; color:var(--text); }
.wfp-dec-arm { flex-basis:100%; font-size:11px; color:#9c4a12; background:rgba(233,113,50,.07); border:1px solid rgba(233,113,50,.35); border-radius:8px; padding:7px 9px; }

/* Minimapa do processo (spec §16.3): faixa recolhível no cabeçalho */
.wfm-sec { margin-top:10px; }
.wfm-h { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.wfm-h .wfp-link-mut { font-weight:700; color:var(--text-mid); }
.wfm-here { font-size:11px; color:var(--text-mid); }
.wfm-scroll { max-height:160px; overflow:auto; margin-top:4px; border-radius:10px; padding:4px;
  background-color:var(--surface-alt); background-image:radial-gradient(var(--border-strong) .8px, transparent .8px); background-size:12px 12px; }
.wfm { display:block; width:100%; height:auto; margin:0 auto; }
.wfm-edge { fill:none; stroke-width:1.6; stroke-linecap:round; }
.wfm-edge.st-on { stroke:var(--gold); stroke-width:2.4; }
.wfm-edge.st-pend { stroke:var(--border-strong); }
.wfm-edge.st-off { stroke:var(--border-strong); stroke-dasharray:3 3; }
.wfm-edge.st-todo { stroke:var(--text-light); stroke-dasharray:1 3; }
.wfm-edge.st-novo { stroke:var(--gold); stroke-dasharray:4 3; }
.wfm-lbl { font-size:8px; font-weight:700; fill:var(--text-light); paint-order:stroke; stroke:var(--surface-alt); stroke-width:3px; }
.wfm-lbl.st-on, .wfm-lbl.st-novo { fill:var(--gold); }
.wfm-num { font-size:8.5px; font-weight:800; fill:var(--text-mid); paint-order:stroke; stroke:var(--surface-alt); stroke-width:3px; }
.wfm-node[role=button] { cursor:pointer; }
.wfm-node:focus { outline:none; }
.wfm-node:focus-visible .wfm-shape, .wfm-node:hover .wfm-shape { stroke-width:2.6; }
.wfm-shape, .wfm-inner { fill:var(--surface); stroke:var(--text-light); stroke-width:1.5; }
.wfm-node.k-item .wfm-shape, .wfm-node.k-ditem .wfm-shape { stroke:var(--gold); }
.wfm-node.st-done .wfm-shape { fill:var(--text-mid); stroke:var(--text-mid); }
.wfm-node.st-done.k-item .wfm-shape, .wfm-node.st-done.k-ditem .wfm-shape { fill:var(--gold); stroke:var(--gold); }
.wfm-node.st-active .wfm-shape { stroke:var(--navy); stroke-width:2.2; }
.wfm-node.st-active.k-item .wfm-shape, .wfm-node.st-active.k-ditem .wfm-shape { stroke:var(--gold); stroke-width:2; }
.wfm-node.k-unknown .wfm-shape, .wfm-node.k-rest .wfm-shape { fill:var(--surface-alt); stroke:var(--text-light); stroke-dasharray:2 2; }
.wfm-ic { font-size:7px; font-weight:800; fill:var(--text-light); }
.wfm-pulse { fill:none; stroke:var(--navy); stroke-width:1.5; transform-box:fill-box; transform-origin:center; animation:wfm-pulso 1.8s ease-out infinite; }
@keyframes wfm-pulso { from { opacity:.7; transform:scale(.8); } to { opacity:0; transform:scale(1.6); } }
.wfm-leg { list-style:none; margin:4px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:3px 12px; font-size:10px; color:var(--text-light); }
.wfm-leg li { display:inline-flex; align-items:center; gap:5px; }
.wfm-lg { width:9px; height:9px; border-radius:50%; border:1.5px solid var(--text-light); background:var(--surface); display:inline-flex; align-items:center; justify-content:center; font-size:6.5px; font-weight:800; }
.wfm-lg.done { background:var(--text-mid); border-color:var(--text-mid); }
.wfm-lg.active { border-color:var(--navy); }
.wfm-lg.avulso { border-color:var(--gold); background:var(--gold); }
.wfm-lg.rest, .wfm-lg.unk { border-style:dashed; background:var(--surface-alt); }
.wfm-flash { animation:wfm-flash 1.2s ease-out; border-radius:10px; }
@keyframes wfm-flash { 0% { box-shadow:0 0 0 3px var(--gold); } 100% { box-shadow:0 0 0 3px transparent; } }
@media (prefers-reduced-motion: reduce) { .wfm-pulse, .wfm-flash { animation:none; } }

/* Segmented da bola (4Tax / R.A. / Cliente) */
.wfp-bola { display:inline-flex; background:var(--surface); border:1px solid var(--border-strong); border-radius:7px; padding:2px; gap:1px; }
.wfp-bola button {
  border:none; background:none; border-radius:5px; padding:3px 8px;
  font-family:var(--font); font-size:10px; font-weight:600; color:var(--text-light); cursor:pointer;
}
.wfp-bola button.on { background:var(--navy); color:#fff; }
.wfp-bola button:hover:not(.on) { background:var(--surface-alt); color:var(--text); }

/* Histórico */
.wfp-hist { margin-top:6px; }
.wfp-hist summary { font-size:11.5px; color:var(--text-light); cursor:pointer; font-weight:600; padding:6px 0; }
.wfp-hist-row { display:flex; gap:10px; font-size:11px; padding:4px 0; border-bottom:1px solid var(--border-soft); }
.wfp-hist-row:last-child { border-bottom:none; }
.wfp-hist-at { color:var(--text-light); white-space:nowrap; font-variant-numeric:tabular-nums; }
.wfp-hist-what { color:var(--text); font-weight:500; flex:1; }
.wfp-hist-who { color:var(--text-light); }

/* ============================================================
   BUILDER (Desenho de Workflows) v2
   ============================================================ */
.wfb-layout { display:flex; gap:16px; align-items:flex-start; }
.wfb-main { flex:1; min-width:0; }
.wfb-side { width:352px; flex-shrink:0; position:sticky; top:76px; }
@media (max-width:1000px){ .wfb-layout { flex-direction:column; } .wfb-side { width:100%; position:static; } }

/* Header do editor */
.wfb-head {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:14px 18px; margin-bottom:12px;
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
}
.wfb-head-t { font-size:14px; font-weight:700; color:var(--text); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.wfb-head-sub { font-size:11px; color:var(--text-light); margin-top:3px; }
.wfb-back {
  display:inline-flex; align-items:center; gap:5px;
  border:none; background:none; font-family:var(--font); font-size:12px; font-weight:600;
  color:var(--text-light); cursor:pointer; padding:4px 8px 4px 0;
}
.wfb-back:hover { color:var(--text); }

/* Canvas: fundo pontilhado, fluxo central */
.wfb-canvas {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  background-image:radial-gradient(var(--border) 1px, transparent 1px);
  background-size:18px 18px; background-position:9px 9px;
  padding:22px 20px 26px; min-height:340px;
}
.wfb-flow { max-width:640px; margin:0 auto; }
.wfb-card {
  display:flex; gap:10px; align-items:flex-start; position:relative;
  background:var(--surface); border:1px solid var(--border-strong);
  border-radius:11px; padding:11px 13px; cursor:pointer;
  box-shadow:0 1px 3px rgba(26,29,36,.05);
  transition:border-color .12s, box-shadow .12s;
}
.wfb-card:hover { border-color:var(--text-light); box-shadow:0 2px 10px rgba(26,29,36,.08); }
.wfb-card.sel { border-color:var(--wf-accent); box-shadow:0 0 0 3px rgba(47,107,222,.13); }
.wfb-card.dragging { opacity:.4; }
.wfb-card-main { flex:1; min-width:0; }
.wfb-card-name { font-size:12.5px; font-weight:700; color:var(--text); line-height:1.3; display:flex; align-items:baseline; gap:6px; }
.wfb-card-num { font-size:10px; font-weight:700; color:var(--text-light); font-variant-numeric:tabular-nums; }
.wfb-card-chips { display:flex; gap:8px; flex-wrap:wrap; margin-top:4px; font-size:10.5px; color:var(--text-mid); }
.wfb-card-chips span { white-space:nowrap; }
.wfb-grip {
  position:absolute; left:-19px; top:50%; transform:translateY(-50%);
  color:var(--gray); cursor:grab; padding:4px 3px; border-radius:5px;
  opacity:0; transition:opacity .12s; font-size:11px; line-height:.6; letter-spacing:-1px;
  user-select:none;
}
.wfb-card:hover .wfb-grip { opacity:1; }
.wfb-grip:hover { color:var(--text-mid); background:var(--surface-alt); }
.wfb-paths { margin:6px 0 0 40px; display:flex; flex-direction:column; gap:3px; }
.wfb-path { display:flex; align-items:center; gap:6px; font-size:11px; color:var(--text-mid); }
.wfb-path-pill {
  font-size:10px; font-weight:700; padding:2px 8px; border-radius:9px;
  background:#fdf1dc; color:#8a6010; border:1px solid rgba(200,154,62,.3);
}
.wfb-path-back { color:#5b3a80; font-weight:600; }
.wfb-path-warn { color:var(--red); font-size:11px; font-weight:600; }

/* Conector entre cards + botão de inserir */
.wfb-link { display:flex; flex-direction:column; align-items:center; height:30px; position:relative; }
.wfb-link-line { width:2px; flex:1; background:var(--border-strong); }
.wfb-link-add {
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  display:inline-flex; align-items:center; gap:4px;
  background:var(--surface); border:1px dashed var(--border-strong); border-radius:10px;
  color:var(--text-light); font-size:10px; font-weight:700; font-family:var(--font);
  padding:2px 9px; cursor:pointer; opacity:0; transition:opacity .12s, border-color .12s, color .12s;
  white-space:nowrap;
}
.wfb-link:hover .wfb-link-add, .wfb-link-add:focus-visible { opacity:1; }
.wfb-link-add:hover { border-color:var(--wf-accent); color:var(--wf-accent); }
.wfb-link.dragover .wfb-link-line { background:var(--wf-accent); }
.wfb-link.dragover::after {
  content:''; position:absolute; left:8%; right:8%; top:50%; height:3px;
  border-radius:2px; background:var(--wf-accent); transform:translateY(-50%);
}
.wfb-add-lg {
  display:flex; align-items:center; justify-content:center; gap:6px; width:100%;
  border:1.5px dashed var(--border-strong); background:none; border-radius:11px;
  padding:11px; font-family:var(--font); font-size:12px; font-weight:600; color:var(--text-light);
  cursor:pointer; transition:all .12s; margin-top:2px;
}
.wfb-add-lg:hover { border-color:var(--wf-accent); color:var(--wf-accent); background:var(--wf-accent-soft); }

/* Ramos (etapas fora da espinha) */
.wfb-branch { margin-top:20px; border-top:1px dashed var(--border-strong); padding-top:12px; }
.wfb-branch-t { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); margin-bottom:10px; text-align:center; }
.wfb-branch .wfb-card { margin-bottom:8px; }

/* Painel lateral */
.wfb-panel {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:16px 16px 14px; max-height:calc(100vh - 96px); overflow-y:auto;
}
.wfb-panel-empty {
  border:1px dashed var(--border-strong); border-radius:var(--radius);
  padding:30px 18px; text-align:center; font-size:12px; color:var(--text-light); line-height:1.7;
}
.wfb-panel-head { display:flex; align-items:center; gap:10px; margin-bottom:4px; }
.wfb-panel-head .wf-tile { width:34px; height:34px; font-size:16px; }
.wfb-panel-kind { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); }
.wfb-panel-name { font-size:13.5px; font-weight:700; color:var(--text); line-height:1.25; }
.wfb-panel-desc { font-size:11px; color:var(--text-light); line-height:1.55; margin:8px 0 2px; }
.wfb-panel-save { font-size:10px; font-weight:600; color:#1f7a47; opacity:0; transition:opacity .2s; margin-left:auto; white-space:nowrap; }
.wfb-panel-save.show { opacity:1; }
.wfb-sec { border-top:1px solid var(--border-soft); margin-top:13px; padding-top:11px; }
.wfb-sec-t {
  font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.55px;
  color:var(--text-mid); margin-bottom:9px; display:flex; align-items:center; justify-content:space-between;
}
.wfb-field { margin-bottom:10px; }
.wfb-field-l { font-size:10.5px; font-weight:600; color:var(--text-mid); margin-bottom:4px; display:block; }
.wfb-field .fi { font-size:12px; padding:8px 11px; }
.wfb-field-inline { display:flex; align-items:center; gap:7px; font-size:11.5px; color:var(--text-mid); }
.wfb-field-inline .fi { width:64px; text-align:center; }
.wfb-check { display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--text); font-weight:500; margin-bottom:8px; cursor:pointer; }
.wfb-check input { accent-color:var(--wf-accent); width:14px; height:14px; }
.wfb-hint { font-size:10px; color:var(--text-light); line-height:1.5; margin-top:-3px; margin-bottom:8px; }
/* Histórico de alterações da versão (spec §16) — no painel lateral do Desenho. */
.wfb-hist { display:flex; flex-direction:column; gap:8px; max-height:62vh; overflow:auto; }
.wfb-hist-i { padding-bottom:8px; border-bottom:1px solid var(--border-soft); }
.wfb-hist-i:last-child { border-bottom:none; }
.wfb-hist-m { font-size:10.5px; color:var(--text-light); font-variant-numeric:tabular-nums; }
.wfb-hist-t { font-size:12px; color:var(--text); line-height:1.45; overflow-wrap:anywhere; }
.wfb-del-link { border:none; background:none; font-family:var(--font); font-size:11px; color:#a94b4b; cursor:pointer; font-weight:600; padding:2px 4px; border-radius:5px; }
.wfb-del-link:hover { background:rgba(183,56,56,.07); color:var(--red); }

/* Linhas de requisito/caminho no painel */
.wfb-item {
  display:flex; align-items:center; gap:8px; padding:6px 8px;
  border:1px solid var(--border-soft); border-radius:8px; margin-bottom:6px;
  font-size:11.5px; cursor:pointer; transition:border-color .12s;
}
.wfb-item:hover { border-color:var(--border-strong); }
.wfb-item.editing { border-color:var(--wf-accent); }
.wfb-item-ic { font-size:12px; width:18px; text-align:center; flex-shrink:0; }
.wfb-item-body { flex:1; min-width:0; color:var(--text); font-weight:500; }
.wfb-item-mut { color:var(--text-light); font-size:10px; font-weight:400; }
.wfb-item-x { border:none; background:none; color:var(--text-light); cursor:pointer; font-size:12px; padding:2px 5px; border-radius:5px; flex-shrink:0; }
.wfb-item-x:hover { color:var(--red); background:rgba(183,56,56,.07); }
.wfb-add-sm {
  display:inline-flex; align-items:center; gap:5px;
  border:1px dashed var(--border-strong); background:none; border-radius:8px;
  padding:5px 10px; font-family:var(--font); font-size:11px; font-weight:600; color:var(--text-mid);
  cursor:pointer; transition:all .12s;
}
.wfb-add-sm:hover { border-color:var(--wf-accent); color:var(--wf-accent); }

/* Picker das 6 peças */
.wfb-picker { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
@media (max-width:560px){ .wfb-picker { grid-template-columns:1fr; } }
.wfb-piece {
  display:flex; gap:10px; align-items:flex-start; text-align:left;
  background:var(--surface); border:1px solid var(--border); border-radius:11px;
  padding:12px; cursor:pointer; font-family:var(--font); transition:all .12s;
}
.wfb-piece:hover { border-color:var(--wf-accent); background:var(--wf-accent-soft); }
.wfb-piece-n { font-size:12.5px; font-weight:700; color:var(--text); }
.wfb-piece-d { font-size:10.5px; color:var(--text-mid); line-height:1.45; margin-top:2px; }
.wfb-piece-nota { font-size:9.5px; color:#8a6010; line-height:1.4; margin-top:4px; }

/* Lista de definições */
.wfb-defs { display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:12px; }
.wfb-def {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:15px 17px; transition:border-color .15s, box-shadow .15s;
}
.wfb-def:hover { border-color:var(--border-strong); box-shadow:0 2px 10px rgba(26,29,36,.05); }
.wfb-def-t { font-size:13px; font-weight:700; color:var(--text); display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.wfb-def-sub { font-size:11px; color:var(--text-light); margin-top:3px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.wfb-def-sub a.wfb-def-svc { margin-left:auto; font-size:10.5px; font-weight:600; color:var(--wf-accent); text-decoration:none; padding:2px 6px; border-radius:6px; }
.wfb-def-sub a.wfb-def-svc:hover { background:var(--wf-accent-soft); }
.wfb-def-vers { margin-top:11px; border-top:1px solid var(--border-soft); padding-top:9px; display:flex; flex-direction:column; gap:6px; }
.wfb-ver { display:flex; align-items:center; gap:8px; font-size:11.5px; }
.wfb-ver-sp { flex:1; }
.wfb-ver a, .wfb-ver button.linklike {
  border:none; background:none; font-family:var(--font); font-size:11px; font-weight:600;
  color:var(--wf-accent); cursor:pointer; padding:3px 6px; border-radius:6px; text-decoration:none;
}
.wfb-ver a:hover, .wfb-ver button.linklike:hover { background:var(--wf-accent-soft); }

/* Validação de publicação */
.wfb-valid { display:flex; flex-direction:column; gap:7px; margin:6px 0 14px; }
.wfb-valid-row { display:flex; gap:9px; align-items:flex-start; font-size:12px; color:var(--text); }
.wfb-valid-ic { width:17px; text-align:center; flex-shrink:0; font-weight:700; }
.wfb-valid-ic.ok { color:#1f7a47; } .wfb-valid-ic.bad { color:var(--red); } .wfb-valid-ic.warn { color:#8a6010; }
.wfb-valid-mut { color:var(--text-light); font-size:11px; }

/* ---------- Builder v2.1: saídas de decisão em COLUNAS (padrão B) --------- */
/* Cada caminho da decisão é uma coluna lado a lado; sem largura, quebram
   linha — o canvas nunca rola horizontal. */
.wfb-outs {
  margin:8px 0 2px 26px; display:flex; gap:8px; align-items:flex-start;
  flex-wrap:wrap;
}
.wfb-pathrow { display:flex; align-items:center; gap:7px; font-size:11px; color:var(--text-mid); padding:2px 0; flex-wrap:wrap; }
.wfb-path-mut { color:var(--text-mid); }

/* Coluna de ramo cresce para ocupar o espaço ("aumenta coluna", 28/08);
   as slim (continua/retorno) ficam compactas. */
.wfb-out-col {
  flex:2 1 250px; min-width:230px;
  background:rgba(200,154,62,.05);
  border:1px solid var(--border); border-top:2px solid rgba(200,154,62,.5);
  border-radius:10px; padding:8px 9px 9px;
  display:flex; flex-direction:column; gap:6px; min-height:0;
}
.wfb-out-col.slim { flex:0 1 auto; min-width:0; background:var(--surface); border-top-color:var(--border-strong); }
.wfb-out-h {
  display:flex; align-items:center; gap:6px; min-width:0;
  font-size:11px; color:var(--text-mid); flex-wrap:wrap;
}
button.wfb-out-h.toggle {
  border:none; background:none; cursor:pointer; font-family:var(--font);
  text-align:left; width:100%; padding:1px 2px; border-radius:6px;
}
button.wfb-out-h.toggle:hover { background:rgba(200,154,62,.10); }
.wfb-caret {
  width:18px; height:18px; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; color:var(--text-mid);
  border:1px solid var(--border); border-radius:5px; background:var(--surface);
}
button.wfb-out-h.toggle:hover .wfb-caret { border-color:var(--text-light); color:var(--text); }
.wfb-out-sum { display:inline-flex; align-items:center; gap:5px; min-width:0; color:var(--text-mid); font-size:10.5px; }
.wfb-out-next {
  display:block; width:100%; text-align:left;
  border:1px dashed var(--border-strong); background:var(--surface);
  border-radius:8px; padding:6px 9px; cursor:pointer;
  font-family:var(--font); font-size:11px; font-weight:600; color:var(--text-mid);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.wfb-out-next:hover { border-color:var(--wf-accent); color:var(--wf-accent); }
.wfb-out-body { display:flex; flex-direction:column; min-width:0; }
.wfb-lane-term { font-size:10.5px; color:var(--text-mid); padding:7px 2px 0 2px; }
.wfb-lane-term.warn { color:#8a6010; }
button.wfb-lane-term.linklike {
  border:none; background:none; cursor:pointer; font-family:var(--font);
  text-align:left; font-weight:600; border-radius:6px;
}
button.wfb-lane-term.linklike:hover { background:rgba(200,154,62,.12); }
.wfb-card.wfb-card-lane { padding:8px 11px; border-radius:9px; box-shadow:none; }
.wfb-card.wfb-card-lane .wf-tile { width:24px; height:24px; font-size:12px; border-radius:6px; }
.wfb-card.wfb-card-lane .wfb-card-name { font-size:11.5px; }
.wfb-card.wfb-card-lane .wfb-card-chips { font-size:10px; }
.wfb-link.sm { height:16px; }

.wfb-def-del {
  border:none; background:none; cursor:pointer; color:var(--text-light);
  width:26px; height:26px; border-radius:7px;
  display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
  transition:all .12s;
}
.wfb-def-del:hover { color:var(--red); background:rgba(183,56,56,.08); }

/* ---------- Builder v2.2: setas de retorno (overlay) --------------------- */
.wfb-canvas { position:relative; }
.wfb-flow { position:relative; z-index:1; }
.wfb-edges { position:absolute; top:0; left:0; pointer-events:none; z-index:0; }

/* ---------- Builder v2.3: cores dos caminhos + coluna sequencial ---------- */
/* Tags coloridas — codificação Sim/Não/switch escolhida no formulário do
   caminho (lista fechada, espelho do wf_path_save). Padrão continua âmbar. */
.wfb-path-pill.c-green  { background:#e9f4ec; color:#1f7a47; border-color:rgba(31,122,71,.32); }
.wfb-path-pill.c-red    { background:#fbecec; color:#a33636; border-color:rgba(183,56,56,.32); }
.wfb-path-pill.c-blue   { background:#e8f0fb; color:#28527a; border-color:#c9daf5; }
.wfb-path-pill.c-violet { background:#f3ebfa; color:#5b3a80; border-color:#e6d8f2; }
.wfb-path-pill.c-gray   { background:var(--surface-alt); color:var(--text-mid); border-color:var(--border-strong); }

/* A cor sobe para a borda da coluna — o desfecho se lê de longe. */
.wfb-out-col.c-green  { border-top-color:rgba(31,122,71,.6); }
.wfb-out-col.c-red    { border-top-color:rgba(183,56,56,.55); }
.wfb-out-col.c-blue   { border-top-color:rgba(74,120,163,.6); }
.wfb-out-col.c-violet { border-top-color:rgba(91,58,128,.5); }
.wfb-out-col.c-gray   { border-top-color:var(--border-strong); }

/* Caminho SEQUENCIAL (continua a espinha): o principal da decisão — coluna
   branca com presença, não nota de rodapé. */
.wfb-out-col.cont {
  flex:1 1 175px; min-width:165px; max-width:280px;
  background:var(--surface); border-top-width:2px;
}

/* Picker de cor no formulário do caminho */
.wfb-colorpick { display:flex; gap:6px; padding:2px 0; }
.wfb-colordot {
  width:22px; height:22px; border-radius:7px; cursor:pointer;
  border:2px solid transparent; padding:0; box-shadow:inset 0 0 0 1px rgba(26,29,36,.12);
}
.wfb-colordot.on { border-color:var(--wf-accent); }
.wfb-colordot.d-none   { background:#fdf1dc; }
.wfb-colordot.d-green  { background:#1f7a47; }
.wfb-colordot.d-red    { background:#b73838; }
.wfb-colordot.d-blue   { background:#4a78a3; }
.wfb-colordot.d-violet { background:#5b3a80; }
.wfb-colordot.d-gray   { background:#8b8985; }

/* Botões de decisão no processo herdam a cor do caminho */
.wfp-opt.c-green  { border-color:rgba(31,122,71,.45)!important;  color:#1f7a47!important;  background:rgba(31,122,71,.06)!important; }
.wfp-opt.c-red    { border-color:rgba(183,56,56,.45)!important;  color:#a33636!important;  background:rgba(183,56,56,.06)!important; }
.wfp-opt.c-blue   { border-color:rgba(74,120,163,.5)!important;  color:#28527a!important;  background:rgba(74,120,163,.07)!important; }
.wfp-opt.c-violet { border-color:rgba(91,58,128,.45)!important;  color:#5b3a80!important;  background:rgba(91,58,128,.06)!important; }
.wfp-opt.c-gray   { border-color:var(--border-strong)!important; color:var(--text-mid)!important; }

/* ---------- Builder v2.4: caixinha do ramo com identidade + fusão ---------- */
.wfb-lane-id {
  font-size:8.5px; font-weight:800; letter-spacing:.5px; text-transform:uppercase;
  color:#8a6010; background:rgba(200,154,62,.16);
  border-radius:8px; padding:2px 7px; white-space:nowrap;
}
/* Caixinha aberta com presença: borda inteira tingida, não só o topo. */
.wfb-out-col.open { background:rgba(200,154,62,.06); border-color:rgba(200,154,62,.32); }
.wfb-lane-acts { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
button.wfb-lane-merge.linklike {
  border:none; background:none; cursor:pointer; font-family:var(--font);
  font-size:10.5px; color:var(--text-mid); text-align:left;
  padding:7px 2px 0 2px; border-radius:6px; font-weight:500;
}
button.wfb-lane-merge.linklike:hover { color:var(--wf-accent); }
.wfb-merge-badge {
  font-size:8.5px; font-weight:800; letter-spacing:.4px; text-transform:uppercase;
  color:#5b3a80; background:#f3ebfa; border:1px solid #e6d8f2;
  border-radius:8px; padding:1px 6px; margin-left:7px; white-space:nowrap;
  vertical-align:1px;
}

/* ---------- Builder v2.5: o sequencial mora no EIXO; ramos penduram -------- */
/* A pill do caminho que CONTINUA o fluxo senta na linha da espinha, entre a
   decisão e o próximo card — a via principal se lê de cima a baixo. */
.wfb-contline {
  display:flex; align-items:center; justify-content:center; gap:7px;
  margin:7px 0 2px; position:relative; z-index:1;
}
.wfb-cont-arrow { font-size:10.5px; font-weight:600; color:var(--text-light); }
/* Ramos/retornos/saltos penduram à direita do eixo, com um cotovelo. */
.wfb-outs.hang { margin-left:88px; position:relative; }
.wfb-outs.hang::before {
  content:''; position:absolute; left:-30px; top:16px;
  width:24px; height:2px; background:var(--border-strong); border-radius:1px;
}

/* ---------- Builder v2.6: colunas fiéis ao mock B (faixa de cabeçalho) ----- */
/* Cartão branco + BANDA colorida no topo; o corpo (prévia do próximo passo ou
   corrente do ramo) fica sob a banda. Sobrescreve a base v2.3/v2.4. */
.wfb-out-col {
  background:var(--surface); border:1px solid var(--border);
  border-top:1px solid var(--border);
  padding:0; gap:0; overflow:hidden;
}
.wfb-out-col.open { background:var(--surface); border-color:var(--border-strong); }
.wfb-out-col.cont { flex:1 1 190px; min-width:180px; max-width:300px; }
.wfb-out-col.slim { background:var(--surface); }
.wfb-out-col.c-green, .wfb-out-col.c-red, .wfb-out-col.c-blue,
.wfb-out-col.c-violet, .wfb-out-col.c-gray { border-top-color:var(--border); }

.wfb-out-hdr {
  display:flex; align-items:center; gap:7px; width:100%;
  padding:7px 10px; border:none; text-align:left;
  font-family:var(--font); font-size:11.5px;
  background:#fdf1dc; color:#8a6010;
}
button.wfb-out-hdr.toggle { cursor:pointer; }
button.wfb-out-hdr.toggle:hover { filter:brightness(.97); background:#fdf1dc; }
.wfb-out-hdr.c-green  { background:#e9f4ec; color:#1f7a47; }
.wfb-out-hdr.c-red    { background:#fbecec; color:#a33636; }
.wfb-out-hdr.c-blue   { background:#e8f0fb; color:#28527a; }
.wfb-out-hdr.c-violet { background:#f3ebfa; color:#5b3a80; }
.wfb-out-hdr.c-gray   { background:var(--surface-alt); color:var(--text-mid); }
button.wfb-out-hdr.toggle.c-green:hover  { background:#e9f4ec; }
button.wfb-out-hdr.toggle.c-red:hover    { background:#fbecec; }
button.wfb-out-hdr.toggle.c-blue:hover   { background:#e8f0fb; }
button.wfb-out-hdr.toggle.c-violet:hover { background:#f3ebfa; }
button.wfb-out-hdr.toggle.c-gray:hover   { background:var(--surface-alt); }
.wfb-out-hdr-l { font-weight:800; letter-spacing:.1px; }
.wfb-out-hdr-mut { font-weight:500; font-size:10px; opacity:.8; margin-left:auto; white-space:nowrap; }
.wfb-out-hdr .wfb-out-sum { margin-left:auto; color:inherit; opacity:.85; }
.wfb-out-hdr .wfb-caret { background:rgba(255,255,255,.7); border-color:rgba(26,29,36,.12); color:inherit; }
.wfb-out-glyph {
  width:15px; height:15px; border-radius:50%; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:9px; font-weight:800; color:#fff;
}
.wfb-out-glyph.g-green { background:#1f7a47; }
.wfb-out-glyph.g-red   { background:#b73838; }

.wfb-out-col .wfb-out-next {
  display:flex; align-items:center; gap:7px;
  margin:8px 9px 9px; width:auto;
}
.wfb-out-next-l { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:600; }
.wfb-out-body { padding:8px 9px 9px; }

/* ---------- Builder v2.7: conector em T e continuação da coluna certa ------ */
/* Vão entre a decisão e as colunas: o T é desenhado no overlay SVG. */
.wfb-outs { margin-top:22px; }
/* Zona de link sem a reta central: a continuação vem desenhada da coluna do
   caminho sequencial (a origem real), não do meio da fileira. */
.wfb-link.nline { height:34px; }
.wfb-link.nline .wfb-link-line { background:transparent; }


/* COMUNICADOS (M2) — construtor em duas colunas + lista de blocos */
.crm-cm-grid { display:grid; grid-template-columns:340px minmax(0,1fr); gap:24px; align-items:start; }
@media (max-width:900px){ .crm-cm-grid { grid-template-columns:1fr; } }
.crm-cm-col { display:flex; flex-direction:column; gap:4px; }
.crm-cm-acoes { display:flex; gap:8px; align-items:center; margin-top:16px;
  border-top:1px solid #e5e5e5; padding-top:12px; }
.crm-cm-bloco { display:flex; gap:8px; align-items:flex-start; border:1px solid #e5e5e5;
  border-radius:8px; padding:8px 10px; margin-bottom:8px; background:#fff; }
.crm-cm-bloco-t { font-size:10px; font-weight:600; color:#8a8a87; text-transform:uppercase;
  letter-spacing:.05em; width:64px; padding-top:8px; flex:none; }
.crm-cm-bloco-a { display:flex; flex-direction:column; gap:2px; flex:none; }
.crm-cm-bloco-a button { border:none; background:none; color:#999; cursor:pointer;
  font-size:12px; padding:1px 5px; border-radius:4px; }
.crm-cm-bloco-a button:hover { background:#f0f0f0; color:#171717; }
.crm-cm-paleta { display:flex; gap:6px; flex-wrap:wrap; margin:6px 0 8px; }
.ui-chip-btn { border:1px solid #e5e5e5; background:#fff; border-radius:6px; padding:4px 11px;
  font-size:12px; color:#171717; cursor:pointer; }
.ui-chip-btn:hover { background:#f7f7f7; }

/* EDITOR DE CONTEUDO (M2 v2, paradigma Pipedrive): tela cheia, canvas WYSIWYG */
#crm-cm-ed, #crm-cm-pv { position:fixed; inset:0; z-index:9000; background:#fff;
  display:flex; flex-direction:column; }
#crm-cm-pv { z-index:9100; }
.crm-cme-top { display:flex; align-items:center; gap:8px; padding:10px 16px;
  border-bottom:1px solid #e5e5e5; background:#fff; font-size:14px; }
.crm-cme-grid { display:grid; grid-template-columns:minmax(0,1fr) 300px; flex:1; min-height:0; }
.crm-cme-canvas { overflow-y:auto; padding:28px 16px; }
.crm-cme-painel { border-left:1px solid #e5e5e5; padding:14px; overflow-y:auto; background:#fafafa; }
.crm-cme-mail { margin:0 auto; border-radius:8px; padding:24px;
  box-shadow:0 2px 12px rgba(20,20,20,.08); }
.crm-cme-vazio { border:2px dashed #c9d8f8; border-radius:8px; background:#f2f6ff;
  color:#4c7ef3; font-size:13px; text-align:center; padding:26px 14px; }
.crm-cme-b { position:relative; border:1px solid transparent; border-radius:6px; cursor:pointer; }
.crm-cme-b:hover { border-color:#c9d8f8; }
.crm-cme-b.sel { border-color:#4c7ef3; box-shadow:0 0 0 1px #4c7ef3; }
.crm-cme-b-a { position:absolute; top:2px; right:2px; display:none; gap:1px;
  background:#4c7ef3; border-radius:5px; padding:1px 3px; }
.crm-cme-b.sel .crm-cme-b-a, .crm-cme-b:hover .crm-cme-b-a { display:inline-flex; }
.crm-cme-b-a button { border:none; background:none; color:#fff; cursor:pointer;
  font-size:12px; line-height:1.4; padding:1px 4px; border-radius:3px; }
.crm-cme-b-a button:hover { background:rgba(255,255,255,.22); }
.crm-cme-rodape { border-top:1px solid #ececec; margin-top:22px; padding-top:12px;
  font-size:10.5px; color:#a5a5a2; text-align:center; line-height:1.7; }
.crm-cme-rodape span { font-size:9px; letter-spacing:.04em; text-transform:uppercase; }
.crm-cme-paleta { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:6px 0; }
.crm-cme-pal { border:1px solid #e5e5e5; border-radius:8px; background:#fff; padding:12px 8px;
  text-align:center; font-size:12px; color:#171717; cursor:grab; display:flex;
  flex-direction:column; gap:5px; align-items:center; }
.crm-cme-pal:hover { border-color:#4c7ef3; }
.crm-cme-pal-i { font-size:17px; color:#5a5a57; }
.crm-cm-pv-corpo { flex:1; overflow:auto; background:#f0f0ef; display:flex; justify-content:center; padding:20px; }
#crm-pv-frame { width:100%; max-width:900px; height:100%; border:1px solid #e5e5e5;
  border-radius:8px; background:#fff; transition:width .18s; }
/* portas e miniatura na secao Conteudo do formulario */
.crm-cm-portas { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.crm-cm-porta { border:1px solid #e5e5e5; border-radius:10px; padding:22px 14px; text-align:center;
  cursor:pointer; display:flex; flex-direction:column; gap:5px; background:#fff; }
.crm-cm-porta:hover { border-color:#4c7ef3; }
.crm-cm-porta span { font-size:11.5px; color:#8a8a87; }
.crm-cm-porta-i { font-size:20px; color:#4c7ef3; }
.crm-cm-mini-wrap { display:flex; gap:14px; align-items:flex-start; }
.crm-cm-mini { width:200px; height:250px; border:1px solid #e5e5e5; border-radius:8px;
  overflow:hidden; background:#fff; flex:none; }
.crm-cm-mini iframe { width:600px; height:750px; border:none; transform:scale(.3333);
  transform-origin:0 0; pointer-events:none; }
.crm-cm-mini-acoes { display:flex; flex-direction:column; gap:8px; }

/* LINHAS no canvas (paradigma PD): moldura, tag "Linha", alça ✥, celulas */
.crm-cme-abas { margin-bottom:10px; display:flex; }
.crm-cme-abas button { flex:1; }
.crm-cme-l { position:relative; border:1px solid transparent; border-radius:4px; margin-bottom:2px; }
.crm-cme-l:hover { border-color:#c9d8f8; }
.crm-cme-l.sel { border-color:#4c7ef3; }
.crm-cme-l-tag { display:none; position:absolute; top:-1px; right:-1px; background:#4c7ef3;
  color:#fff; font-size:9px; font-weight:600; letter-spacing:.05em; padding:1px 8px;
  border-radius:0 4px 0 4px; z-index:2; }
.crm-cme-l-alca { display:none; position:absolute; top:8px; left:-13px; background:#4c7ef3;
  color:#fff; width:22px; height:22px; border-radius:50%; text-align:center; line-height:22px;
  font-size:12px; cursor:grab; z-index:2; }
.crm-cme-l-a { display:none; position:absolute; top:-1px; right:44px; background:#4c7ef3;
  border-radius:0 0 4px 4px; padding:0 2px; z-index:2; }
.crm-cme-l-a button { border:none; background:none; color:#fff; cursor:pointer; font-size:11px; padding:1px 4px; }
.crm-cme-l.sel .crm-cme-l-tag, .crm-cme-l:hover .crm-cme-l-tag,
.crm-cme-l.sel .crm-cme-l-alca, .crm-cme-l:hover .crm-cme-l-alca,
.crm-cme-l.sel .crm-cme-l-a, .crm-cme-l:hover .crm-cme-l-a { display:block; }
.crm-cme-l-cels { display:flex; }
.crm-cme-cel { min-height:52px; padding:2px; }
.crm-cme-cel .crm-cme-vazio { padding:12px 8px; margin:4px 2px; font-size:11px; line-height:1.5; }
/* galeria de linhas (aba Linhas): miniaturas cinza como no PD */
.crm-cme-linha-card { border:1px solid #e5e5e5; border-radius:8px; background:#fff; padding:14px 12px;
  margin-bottom:8px; cursor:grab; }
.crm-cme-linha-card:hover { border-color:#4c7ef3; }
.crm-cme-lay { display:flex; gap:8px; }
.crm-cme-lay i { display:block; height:22px; background:#ababab; border-radius:2px;
  outline:6px solid #ececec; outline-offset:0; }
/* design settings: slider com rotulo px e swatch+hex */
.crm-cme-ds { font-weight:600; font-size:13px; margin:2px 0 10px; }
.crm-cme-slider span { color:#4c7ef3; font-size:11.5px; display:block; margin-bottom:2px; }
.crm-cme-slider input[type=range] { width:100%; accent-color:#4c7ef3; }
.crm-cme-cor { display:flex; gap:6px; align-items:center; }
.crm-cme-cor input[type=color] { width:34px; height:30px; border:1px solid #e5e5e5;
  border-radius:6px; padding:1px; background:#fff; }
.crm-cme-cor .fi { width:90px; font-family:monospace; font-size:12px; }

/* FORMULARIO da campanha na anatomia do PD: coluna central, rotulo a esquerda */
.crm-cmf-top { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.crm-cmf-nome { flex:1; border:1px solid transparent; border-radius:8px; font-size:20px;
  font-weight:600; color:#171717; padding:6px 10px; background:transparent; min-width:0; }
.crm-cmf-nome:hover { border-color:#e5e5e5; }
.crm-cmf-nome:focus { border-color:#4c7ef3; outline:none; background:#fff; }
.crm-cmf-salvo { font-size:11.5px; color:#8a8a87; white-space:nowrap; }
.crm-cmf { max-width:820px; margin:0 auto; }
.crm-cmf-sec { border-top:1px solid #ececec; padding:18px 0 8px; }
.crm-cmf-sec > h3 { font-size:15px; font-weight:600; margin:0 0 14px; }
.crm-cmf-row { display:flex; align-items:flex-start; gap:14px; margin-bottom:12px; }
.crm-cmf-l { width:190px; flex:none; text-align:right; font-size:12.5px; color:#5a5a57; padding-top:8px; }
.crm-cmf-op { color:#a5a5a2; }
.crm-cmf-c { flex:0 1 460px; min-width:0; display:flex; flex-direction:column; gap:4px; }
.crm-cmf-x { font-size:11px; color:#a5a5a2; padding-top:9px; white-space:nowrap; }
.crm-cmf-merge { display:flex; justify-content:flex-end; max-width:664px; margin-bottom:4px; }
.crm-cmf-radio { display:flex; align-items:center; gap:7px; font-size:13.5px; padding:3px 0; cursor:pointer; }
.crm-cmf-teste { font-size:12.5px; color:#4c7ef3; text-decoration:none; font-weight:600; }
@media (max-width:760px){ .crm-cmf-row{flex-direction:column;gap:4px} .crm-cmf-l{width:auto;text-align:left;padding-top:0} }
/* propriedades de bloco e biblioteca de imagens */
.crm-cme-img-acoes { display:flex; gap:8px; margin-bottom:10px; }
.crm-cme-biblio-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:6px; }
.crm-cme-biblio-grid img { width:100%; height:56px; object-fit:cover; border-radius:6px;
  border:1px solid #e5e5e5; cursor:pointer; background:#fff; }
.crm-cme-biblio-grid img:hover { border-color:#4c7ef3; }
.crm-cme-painel .crm-view-sw button { font-size:11px; }

/* placeholder de imagem quebrada no canvas do editor */
.crm-cme-img-quebrada { background:#f6f6f5; border:1px dashed #d5d5d2; border-radius:8px;
  color:#8a8a87; font-size:12px; text-align:center; padding:26px 10px; margin:0 0 12px; }

/* relatório de campanha: cards de métricas, série por hora, menu ⋯ e modelos */
.crm-cm-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:1px;
  background:#e5e5e5; border:1px solid #e5e5e5; border-radius:8px; overflow:hidden; }
.crm-cm-card { background:#fff; padding:12px 14px; }
.crm-cm-card b { display:block; font-size:20px; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.crm-cm-card span { font-size:10.5px; color:#8a8a87; text-transform:uppercase; letter-spacing:.05em; }
.crm-cm-serie { display:flex; align-items:flex-end; gap:4px; border:1px solid #e5e5e5;
  border-radius:8px; background:#fff; padding:12px; overflow-x:auto; }
.crm-cm-serie-b { display:flex; flex-direction:column; align-items:center; gap:3px; }
.crm-cm-serie-b i { display:block; width:16px; background:#4c7ef3; border-radius:3px 3px 0 0; }
.crm-cm-serie-b span { font-size:8.5px; color:#8a8a87; white-space:nowrap; }
.crm-cm-menu-btn { border:none; background:none; color:#8a8a87; font-size:15px; cursor:pointer;
  border-radius:5px; padding:1px 7px; }
.crm-cm-menu-btn:hover { background:#f0f0f0; color:#171717; }
#crm-menu-pop { position:absolute; z-index:9500; background:#fff; border:1px solid #e5e5e5;
  border-radius:8px; box-shadow:0 8px 26px rgba(20,20,20,.12); min-width:130px; padding:4px; }
#crm-menu-pop button { display:block; width:100%; text-align:left; border:none; background:none;
  font-size:13px; color:#171717; padding:7px 10px; border-radius:5px; cursor:pointer; }
#crm-menu-pop button:hover { background:#f0f0f0; }
.crm-cm-modelos { display:flex; gap:14px; flex-wrap:wrap; }
.crm-cm-modelo { display:flex; flex-direction:column; gap:6px; align-items:center; font-size:12px; }

/* relatorio: cabecalho anatomia PD — miniatura com lupa + metadados */
.crm-cm-rel-head { display:flex; gap:18px; align-items:flex-start; margin-bottom:6px; }
.crm-cm-rel-thumb { position:relative; width:92px; height:120px; border:1px solid #e5e5e5;
  border-radius:6px; overflow:hidden; background:#fff; cursor:pointer; flex:none; }
.crm-cm-rel-thumb iframe { width:600px; height:780px; border:none; transform:scale(.1533);
  transform-origin:0 0; pointer-events:none; }
.crm-cm-rel-lupa { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(23,23,23,.55); color:#fff; font-size:10.5px; font-weight:600; text-align:center;
  opacity:0; transition:opacity .15s; }
.crm-cm-rel-thumb:hover .crm-cm-rel-lupa { opacity:1; }
.crm-cm-rel-meta { display:flex; flex-direction:column; gap:4px; font-size:13px; align-items:flex-start; }
.crm-cm-rel-meta > div { display:flex; gap:8px; }
.crm-cm-rel-meta span { color:#8a8a87; min-width:118px; }

/* lista de comunicados: linha no padrão do PD (miniatura + subtítulo) */
.crm-cm-li { display:flex; gap:10px; align-items:center; }
.crm-cm-li-thumb { width:44px; height:56px; border:1px solid #e5e5e5; border-radius:4px;
  overflow:hidden; background:#fafafa; flex:none; }
.crm-cm-li-thumb iframe { width:600px; height:764px; border:none; transform:scale(.0733);
  transform-origin:0 0; pointer-events:none; }


/* diálogo Detalhes de campanha — linhas no padrão do PD */
.crm-cm-det { display:flex; flex-direction:column; }
.crm-cm-det-row { display:grid; grid-template-columns:150px 1fr; gap:16px;
  padding:9px 0; border-bottom:1px solid #f5f5f5; font-size:13px; }
.crm-cm-det-row:last-child { border-bottom:none; }
.crm-cm-det-row span { color:#8a8a87; }
.crm-cm-det-row strong { font-weight:600; color:#171717; overflow-wrap:anywhere; }

/* relatório de campanha: takeover de tela cheia (Insights do PD) */
#crm-cm-rel { position:fixed; inset:0; z-index:8900; background:#fafafa;
  display:flex; flex-direction:column; }
.crm-cm-rel-top { display:flex; align-items:center; gap:10px; padding:12px 20px;
  background:#fff; border-bottom:1px solid #e5e5e5; flex:none; }
.crm-cm-rel-top strong { font-size:15px; }
.crm-cm-rel-tabs { padding:8px 20px 0; background:#fff; border-bottom:1px solid #e5e5e5; flex:none; }
.crm-cm-rel-corpo { flex:1; overflow:auto; }
.crm-cm-rel-wrap { max-width:1080px; margin:0 auto; padding:20px; }

/* relatório Visão geral — apresentação do PD */
#crm-cm-rel { background:#fff; }
.crm-cm-rel-top strong { font-size:18px; font-weight:600; }
.crm-cm-rel-tabs { display:flex; gap:22px; padding:2px 20px 0; background:#fff;
  border-bottom:1px solid #e5e5e5; flex:none; }
.crm-cm-rel-tabs button { background:none; border:none; padding:10px 2px 9px; font-size:13.5px;
  color:#4a4f58; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; }
.crm-cm-rel-tabs button.active { color:#0D68C5; border-bottom-color:#0D68C5; font-weight:500; }
.crm-cm-h2 { font-size:21px; font-weight:400; color:#21232C; margin:28px 0 2px;
  padding-top:18px; border-top:1px solid #f0f0f0; }
.crm-cm-h2:first-of-type { border-top:none; }
.crm-cm-mets { display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end; padding:16px 0 10px; }
.crm-cm-met { flex:1; min-width:140px; text-align:center; }
.crm-cm-met b.v { display:block; font-size:40px; font-weight:600; line-height:1.1;
  color:#21232C; font-variant-numeric:tabular-nums; }
.crm-cm-met b.v.on { color:#2B74DA; }
.crm-cm-met span.r { font-size:12px; color:#6a6f7a; }
.crm-cm-met span.r.on { color:#2B74DA; }
.crm-cm-met small { display:block; margin-top:10px; font-size:12.5px; color:#21232C; }
.crm-cm-txs { flex:1; min-width:140px; display:flex; justify-content:center; }
.crm-cm-tx { display:flex; flex-direction:column; align-items:center; }
.crm-cm-tx em { font-style:normal; font-size:11px; font-weight:700; color:#21232C; margin-bottom:2px; }
.crm-cm-tx i { width:26px; background:#7DA9EA; border-radius:2px 2px 0 0; display:block; }
.crm-cm-tx span { font-size:10.5px; color:#6a6f7a; text-align:center; margin-top:5px; line-height:1.3; }
.crm-cm-leg { display:flex; align-items:center; gap:6px; font-size:12px; color:#4a4f58;
  justify-content:flex-end; padding:10px 4px 2px; }
.crm-cm-leg i { width:10px; height:10px; border-radius:50%; background:#29A37A; display:inline-block; }
.crm-cm-graf { overflow-x:auto; }
.crm-cm-tbl { width:100%; border-collapse:collapse; font-size:13px; margin-top:12px; }
.crm-cm-tbl th { text-align:left; font-size:12px; font-weight:600; color:#21232C;
  padding:8px 10px; border-bottom:1px solid #e5e5e5; }
.crm-cm-tbl td { padding:10px; border-bottom:1px solid #f0f0f0; }
.crm-cm-tbl a { color:#0D68C5; text-decoration:none; }
.crm-cm-tbl a:hover { text-decoration:underline; }

/* localização por cliques + seletor da série (apresentação do PD) */
.crm-cm-ver { display:flex; justify-content:center; align-items:center; gap:8px;
  font-size:12.5px; color:#4a4f58; padding:4px 0 2px; }
.crm-cm-ver select { border:1px solid #d8dbe0; border-radius:6px; padding:4px 8px;
  font-size:12.5px; background:#fff; color:#21232C; }
.crm-cm-geo { display:flex; gap:28px; align-items:flex-start; flex-wrap:wrap; padding-top:6px; }
.crm-cm-geo table { flex:1; min-width:300px; }
#crm-cm-mapa { flex:1.4; min-width:340px; max-width:640px; }
#crm-cm-mapa svg { width:100%; height:auto; display:block; }

/* editor: histórico, barra de formatação, itens dinâmicos, bloco oculto */
.crm-cme-hist { display:flex; gap:2px; margin-left:10px; }
.crm-cme-hist button { border:1px solid #e5e5e5; background:#fff; border-radius:6px;
  width:26px; height:26px; cursor:pointer; font-size:13px; color:#4a4f58; }
.crm-cme-hist button:hover { background:#f5f5f4; }
.crm-cme-fmt { position:absolute; top:-34px; left:8px; z-index:5; display:flex; gap:2px;
  background:#26282b; border-radius:7px; padding:4px 6px; box-shadow:0 4px 14px rgba(0,0,0,.25); }
.crm-cme-fmt button { background:none; border:none; color:#fff; font-size:12px;
  min-width:22px; height:22px; border-radius:4px; cursor:pointer; }
.crm-cme-fmt button:hover { background:rgba(255,255,255,.16); }
.crm-cme-b { position:relative; }
.crm-cme-b-oculto { opacity:.5; }
.crm-cme-hide-tag { position:absolute; top:2px; right:56px; background:#8a8a87; color:#fff;
  font-size:9px; padding:1px 6px; border-radius:3px; z-index:4; }
.crm-cme-item { display:flex; gap:6px; margin-bottom:6px; align-items:center; }
.crm-cme-item .fi { min-width:0; }

/* miniatura do formulário: hover Pré-visualizar (paridade com o PD) */
.crm-cm-mini-pv { position:relative; cursor:pointer; }
.crm-cm-mini-pv .crm-cm-rel-lupa { font-size:12px; }
.crm-cm-mini-pv:hover .crm-cm-rel-lupa { opacity:1; }

/* rastro de e-mail na linha do tempo do contato */
.crm-tl-snippet { color:#8a8a87; font-size:11.5px; margin-top:2px; overflow:hidden;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }

/* card do contato: Foco (lógica do PD) */
.crm-foco-item { padding:6px 8px; border:1px solid #f0f0f0; border-radius:6px; margin-bottom:4px; font-size:12.5px; }
.crm-foco-atraso { border-color:#f3c9c5; background:#fdf6f5; }
/* 20/09: o Foco mostra TODAS as pendentes. Até 4 cabem inteiras; acima disso a
   lista rola dentro de ~4,5 itens (o item cortado avisa que há mais) — o
   Histórico não é empurrado para o fim do painel. */
.crm-foco-lista.crm-foco-rola { max-height:232px; overflow-y:auto; padding-right:4px; scrollbar-gutter:stable;
  border-bottom:1px solid #ececec; scrollbar-width:thin; }
.crm-foco-lista.crm-foco-rola::-webkit-scrollbar { width:8px; }
.crm-foco-lista.crm-foco-rola::-webkit-scrollbar-thumb { background:#cfd4da; border-radius:4px; }
.crm-foco-n { font-weight:600; letter-spacing:0; text-transform:none; color:#8a929c; margin-left:4px; }
.crm-foco-add { display:inline-block; margin-top:4px; font-size:12.5px; font-weight:600; color:#4c7ef3; text-decoration:none; }

/* botão "+ negócio" no rodapé de cada coluna do kanban (funil vazio) */
.pd-col-add { width:100%; margin-top:6px; padding:6px; border:1px dashed var(--border, #d8dce2);
  background:transparent; color:var(--text-mid, #66707c); border-radius:6px; cursor:pointer; font-size:12px; }
.pd-col-add:hover { border-color:var(--bordo, #b42318); color:var(--bordo, #b42318); }

/* anotação fixada no topo (ponto 10) */
.crm-tl-pin { text-decoration:none; opacity:.45; margin-left:4px; cursor:pointer; }
.crm-tl-pin:hover, .crm-tl-pin.on { opacity:1; }
.crm-tl-fix .crm-tl-c { background:#fffdf3; border-left:2px solid #e8b84b; padding-left:8px; border-radius:4px; }

/* leitor de e-mail do rastro */
.crm-mailv-meta { display:flex; flex-direction:column; gap:2px; margin-bottom:10px;
  padding-bottom:10px; border-bottom:1px solid #f0f0f0; font-size:12.5px; }
.crm-mailv-meta span { color:#8a8a87; display:inline-block; min-width:44px; }
.crm-mailv-corpo { width:100%; height:56vh; border:1px solid #f0f0f0; border-radius:6px; background:#fff; }
dialog.fx-modal.fx-modal-lg { max-width:760px; }
dialog.fx-modal.fx-modal-xl { max-width:1180px; width:94vw; }  /* FUP final: formulário + prévia lado a lado */

/* visão geral do usuário (Setup) */
.crm-su-figs { display:grid; grid-template-columns:repeat(3, 1fr); gap:1px; background:#eee;
  border:1px solid #eee; border-radius:6px; overflow:hidden; margin-top:12px; }
.crm-su-fig { background:#fff; padding:10px 12px; }
.crm-su-fig b { display:block; font-size:20px; font-variant-numeric:tabular-nums; }
.crm-su-fig span { font-size:10.5px; color:#8a8a87; text-transform:uppercase; letter-spacing:.05em; }

/* Setup→Usuários no layout do PD */
.crm-su-barra { display:flex; gap:8px; align-items:center; margin-bottom:10px; }
.crm-seg { display:flex; }
.crm-seg button { border:1px solid #d8dbe0; background:#fff; padding:6px 14px; font-size:12.5px;
  cursor:pointer; color:#4a4f58; }
.crm-seg button:first-child { border-radius:7px 0 0 7px; }
.crm-seg button:last-child { border-radius:0 7px 7px 0; border-left:none; }
.crm-seg button.on { border-color:#4c7ef3; color:#4c7ef3; font-weight:600; background:#f6f9ff;
  border-left:1px solid #4c7ef3; }
.crm-perm { display:inline-block; border:1px solid; border-radius:99px; padding:2px 10px;
  font-size:10.5px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; }
.crm-perm-adm { border-color:#2C7A4B; color:#2C7A4B; background:#fff; }
.crm-perm-com { border-color:#c4c7cc; color:#4a4f58; background:#fff; }
.crm-perm-nao { border-color:#eee; color:#b0b0ad; }
.crm-su-quem { display:flex; gap:8px; align-items:center; }
.crm-su-tab thead th.crm-su-grupo { text-align:center; border-bottom:1px solid #e5e5e5;
  font-size:11px; color:#4a4f58; }
.crm-su-tab thead th.crm-su-sub { font-size:10.5px; color:#8a8a87; }

/* Setup→Usuários: proporcionalidade de página (feedback do dono) */
.crm-su-tab { width:100%; table-layout:fixed; }
.crm-su-tab th:nth-child(1) { width:24%; }
.crm-su-tab thead tr:first-child th:nth-child(2) { width:14%; }
.crm-su-tab thead tr:first-child th:nth-child(4) { width:9%; }   /* Rastro */
.crm-su-tab thead tr:first-child th:nth-child(5) { width:5%; }   /* ⋯ */
.crm-su-tab td, .crm-su-tab th { padding:13px 12px; }
.crm-su-tab td { vertical-align:middle; }
.crm-su-tab td:nth-child(n+3):nth-child(-n+7) { text-align:center; }
.crm-su-tab thead th.crm-su-sub { text-align:center; }
.crm-su-tab thead th.crm-su-grupo { border-left:1px solid #f0f0f0; border-right:1px solid #f0f0f0; }
.crm-su-tab tbody tr { height:58px; }
.crm-su-quem strong { font-size:13.5px; }

/* Fase 1: excluir anotação na timeline e imagem na Biblioteca do editor */
.crm-tl-del { color:#B42318; font-size:11px; margin-left:6px; text-decoration:none; opacity:0; }
.crm-tl-item:hover .crm-tl-del { opacity:.75; }
.crm-tl-del:hover { opacity:1; }
.crm-cme-biblio-item { position:relative; display:block; }
.crm-cme-biblio-del { position:absolute; top:2px; right:2px; background:rgba(255,255,255,.92);
  color:#B42318; border-radius:4px; padding:0 4px; font-size:11px; line-height:16px;
  text-decoration:none; opacity:0; }
.crm-cme-biblio-item:hover .crm-cme-biblio-del { opacity:1; }

/* Fase 2: tela de mesclagem de duplicatas */
.crm-dup-grupo { border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:12px; }
.crm-dup-cab { margin-bottom:8px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.crm-dup-membro { display:flex; gap:10px; align-items:flex-start; padding:7px 8px; border-radius:8px; cursor:pointer; }
.crm-dup-membro:hover { background:#f7f7f7; }
.crm-dup-membro input { margin-top:3px; }
.crm-dup-acoes { display:flex; gap:8px; margin-top:8px; }
.crm-imp-modelo { display:flex; align-items:center; justify-content:space-between; gap:12px;
  border:1px dashed var(--border); border-radius:10px; padding:10px 14px; margin-bottom:10px; }

/* ---------- Builder v2.9 (remanescente): cabeçalho sem clipe --------------- */
/* Só o rótulo cede (ellipsis, cap FIXO — na v3.0 as colunas se dimensionam
   pelo conteúdo, e um cap em % seria circular); o resumo quebra para a linha
   de baixo quando faltar largura. */
.wfb-out-hdr { flex-wrap:wrap; row-gap:2px; }
.wfb-out-hdr-l { flex:0 1 auto; min-width:2ch; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wfb-out-hdr .wfb-out-sum, .wfb-out-hdr .wfb-out-hdr-mut { flex:none; white-space:nowrap; }

/* Numeração em duas tintas — hoje só na timeline de execução (o Builder
   exibe cards sem número; o endereço fica no painel e nos selects). */
.wfb-num-dim { font-weight:500; opacity:.55; }

/* Rodapé da lane em UMA linha: status à esquerda, ações à direita — era o
   bloco triplo (aviso longo + 2 botões) repetido por lane. */
.wfb-lane-foot { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-top:8px; }
.wfb-lane-foot .sp { flex:1; }
.wfb-lane-foot .wfb-lane-term, .wfb-lane-foot button.wfb-lane-merge.linklike { padding:2px; margin:0; }
.wfb-lane-foot button.wfb-lane-merge.linklike { color:#5b3a80; } /* tinta da fusão = seta tracejada */
.wfb-lane-foot .wfb-add-sm { padding:3px 8px; font-size:10px; }

/* ---------- Builder v3.0: end-game do mock (02/09) ------------------------- */
/* Branches lado a lado em QUALQUER profundidade, caixa inteira na cor da
   branch, linhas de merge retas. A largura vem do canvas: a espinha fica
   centrada em 640px e a fileira de branches cresce para os lados — quando
   não couber, o canvas ROLA horizontal (decisão do dono, 02/09). */
.wfb-canvas { overflow-x:auto; }
/* As linhas passam POR CIMA das caixas (mock): com o corpo pastel opaco, o
   conector em T de uma decisão aninhada ficava escondido atrás da caixa-mãe.
   pointer-events:none (v2.2) mantém tudo clicável por baixo. */
.wfb-edges { z-index:2; }
.wfb-flow { max-width:none; width:max-content; min-width:640px; margin:0 auto; }
.wfb-flow > .wfb-card, .wfb-flow > .wfb-link, .wfb-flow > .wfb-add-lg,
.wfb-flow > .wfb-branch { width:640px; margin-left:auto; margin-right:auto; }

/* Fileira de saídas: nunca quebra linha; centra no eixo da espinha. */
.wfb-outs { flex-wrap:nowrap; width:max-content; max-width:none; margin:22px auto 2px; }

/* Colunas dimensionadas pelo CONTEÚDO: uma caixa com decisão aninhada cresce
   para conter as sub-caixas lado a lado; as demais ficam compactas. */
.wfb-out-col { flex:0 0 auto; width:auto; min-width:250px; max-width:none; }
.wfb-out-col.slim, .wfb-out-col.cont { min-width:0; max-width:300px; }
.wfb-out-body { width:max-content; min-width:232px; }
/* Cards dentro da caixa mantêm largura uniforme e centram (mock): a caixa
   pode ser bem mais larga que o card quando contém sub-branches. */
.wfb-out-body > .wfb-card { width:280px; margin-left:auto; margin-right:auto; }

/* A COR da branch pinta a caixa inteira: corpo pastel + borda tingida; o
   cabeçalho (faixa) segue com o tom forte. Padrão continua âmbar. */
.wfb-out-col.open           { background:#fdf8ee; border-color:rgba(200,154,62,.35); }
.wfb-out-col.open.c-green   { background:#f2f9f4; border-color:rgba(31,122,71,.30); }
.wfb-out-col.open.c-red     { background:#fdf4f4; border-color:rgba(183,56,56,.28); }
.wfb-out-col.open.c-blue    { background:#f3f7fd; border-color:rgba(74,120,163,.32); }
.wfb-out-col.open.c-violet  { background:#f9f4fc; border-color:rgba(91,58,128,.28); }
.wfb-out-col.open.c-gray    { background:#f5f5f3; border-color:var(--border-strong); }
.wfb-out-col.open.c-orange  { background:#fdf2e9; border-color:rgba(233,113,50,.32); }
.wfb-out-col.open.c-teal    { background:#eff8f6; border-color:rgba(42,125,114,.32); }
.wfb-out-col.open.c-steel   { background:#f1f4f8; border-color:rgba(51,69,92,.30); }
.wfb-out-col.open.c-rose    { background:#fdf3f8; border-color:rgba(161,58,107,.28); }

/* Faixas de cabeçalho das cores novas (as 5 antigas seguem na v2.6). */
.wfb-out-hdr.c-orange { background:#fbe0cc; color:#9c4a12; }
.wfb-out-hdr.c-teal   { background:#d8efeb; color:#1f6f66; }
.wfb-out-hdr.c-steel  { background:#dfe6ee; color:#33455c; }
.wfb-out-hdr.c-rose   { background:#f9e0ec; color:#a13a6b; }
button.wfb-out-hdr.toggle.c-orange:hover { background:#fbe0cc; }
button.wfb-out-hdr.toggle.c-teal:hover   { background:#d8efeb; }
button.wfb-out-hdr.toggle.c-steel:hover  { background:#dfe6ee; }
button.wfb-out-hdr.toggle.c-rose:hover   { background:#f9e0ec; }

/* Pills, bolinhas do picker e botões de decisão na execução — cores novas. */
.wfb-path-pill.c-orange { background:#fbe0cc; color:#9c4a12; border-color:rgba(233,113,50,.35); }
.wfb-path-pill.c-teal   { background:#d8efeb; color:#1f6f66; border-color:rgba(42,125,114,.35); }
.wfb-path-pill.c-steel  { background:#dfe6ee; color:#33455c; border-color:rgba(51,69,92,.32); }
.wfb-path-pill.c-rose   { background:#f9e0ec; color:#a13a6b; border-color:rgba(161,58,107,.32); }
.wfb-colordot.d-orange { background:#e97132; }
.wfb-colordot.d-teal   { background:#2a9d8f; }
.wfb-colordot.d-steel  { background:#33455c; }
.wfb-colordot.d-rose   { background:#d16899; }
.wfp-opt.c-orange { border-color:rgba(233,113,50,.5)!important;  color:#9c4a12!important;  background:rgba(233,113,50,.07)!important; }
.wfp-opt.c-teal   { border-color:rgba(42,125,114,.5)!important;  color:#1f6f66!important;  background:rgba(42,125,114,.07)!important; }
.wfp-opt.c-steel  { border-color:rgba(51,69,92,.45)!important;   color:#33455c!important;  background:rgba(51,69,92,.06)!important; }
.wfp-opt.c-rose   { border-color:rgba(161,58,107,.45)!important; color:#a13a6b!important;  background:rgba(161,58,107,.06)!important; }

/* Caminho SEM etapas dentro: só o texto "→ funde em <alvo>" (v3.1) — a
   ligação visual é a linha desenhada pelo overlay. */
.wfb-out-goto {
  display:block; width:100%; text-align:left; border:none; background:none;
  font-family:var(--font); font-size:10.5px; font-weight:500; color:var(--text-mid);
  padding:7px 10px 8px; cursor:pointer; white-space:nowrap;
}
.wfb-out-goto b { font-weight:700; }
.wfb-out-goto:hover { color:var(--wf-accent); }

/* ---------- Builder v3.1: mover/copiar trechos (ramo inteiro ou etapas) ----
   Cabeçalho do ramo é a alça; junções e "+ colar como caminho" são os alvos.
   .wfs-dnd = arrastando; .wfs-pasting = área de transferência cheia. */
.wfb-out-hdr.wfs-hdr { gap:6px; }
.wfb-out-hdr.wfs-hdr[draggable="true"] { cursor:grab; }
.wfb-out-hdr.wfs-hdr.dragging { opacity:.5; }
.wfs-hdr-tg {
  flex:1; min-width:0; display:flex; align-items:center; gap:7px;
  border:none; background:none; padding:0; margin:0; cursor:pointer; text-align:left;
  font:inherit; color:inherit;
}
.wfs-hgrip { font-size:11px; letter-spacing:-1px; line-height:1; opacity:.4; flex-shrink:0; user-select:none; }
.wfs-hdr:hover .wfs-hgrip { opacity:.9; }
.wfs-hdr-more {
  border:none; background:transparent; color:inherit; cursor:pointer; flex-shrink:0;
  padding:0 6px; border-radius:5px; font-size:13px; font-weight:800; line-height:18px;
}
.wfs-hdr-more:hover, .wfs-hdr-more:focus-visible { background:rgba(26,29,36,.09); }
.wfb-flow .wfb-card { user-select:none; -webkit-user-select:none; }
.wfb-card.wfb-card-lane.has-grip { padding-left:17px; }
.wfb-card.wfb-card-lane .wfb-grip { left:2px; }
.wfb-card.wfs-sel { border-color:var(--wf-accent); box-shadow:0 0 0 3px rgba(47,107,222,.13); }
.wfb-card.wfs-cut { opacity:.5; border-style:dashed; }
.wfb-out-col.wfs-cut { border-style:dashed; }
.wfb-out-col.wfs-cut > .wfs-hdr { opacity:.55; }
.wfb-card.wfs-just { animation:wfsJust 1.6s ease-out; }
@keyframes wfsJust { 0% { box-shadow:0 0 0 6px rgba(47,107,222,.22); border-color:var(--wf-accent); } 100% { box-shadow:none; } }
@media (prefers-reduced-motion: reduce) { .wfb-card.wfs-just { animation:none; } }

/* Junções do ramo: as das pontas só ganham corpo arrastando/colando. */
.wfb-link.wfs-ll.top, .wfb-link.wfs-ll.end { height:4px; }
.wfb-link.wfs-ll.top .wfb-link-line, .wfb-link.wfs-ll.end .wfb-link-line { background:transparent; }
/* Arrastando, NADA muda de tamanho (o alvo fugiria de baixo do mouse): a
   junção ganha área de captura invisível e a linha fica azul. Colando, a
   tela é redesenhada, então aí as junções crescem para caber o botão. */
.wfs-pasting .wfb-link[data-t]:not(.wfs-bad) { height:30px; }
.wfs-dnd .wfb-link[data-t]:not(.wfs-bad)::before {
  content:''; position:absolute; left:0; right:0; top:-9px; bottom:-9px; z-index:4;
}
.wfs-dnd .wfb-link[data-t]:not(.wfs-bad) .wfb-link-line { background:var(--wf-accent-border); }
.wfs-dnd .wfb-card[data-t]:not(.wfs-bad) { outline:2px dashed var(--wf-accent-border); outline-offset:2px; }
.wfs-dnd .wfb-card[data-t]:not(.wfs-bad)::after {
  content:'solte aqui: caminho novo'; position:absolute; right:10px; top:-9px; z-index:3;
  font-size:9.5px; font-weight:700; color:var(--wf-accent); background:var(--surface);
  padding:0 6px; border-radius:6px; white-space:nowrap;
}
.wfb-card[data-t].dragover { outline:2px solid var(--wf-accent); background:var(--wf-accent-soft); }
.wfs-dnd .wfb-link-add, .wfs-pasting .wfb-link-add { display:none; }
.wfs-paste {
  display:none; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:3;
  align-items:center; gap:4px; white-space:nowrap; cursor:pointer;
  font-family:var(--font); font-size:10px; font-weight:700;
  border:1px dashed var(--wf-accent); color:var(--wf-accent); background:var(--surface);
  border-radius:10px; padding:2px 10px;
}
.wfs-paste:hover, .wfs-paste:focus-visible { background:var(--wf-accent); color:#fff; border-style:solid; }
.wfs-pasting [data-t]:not(.wfs-bad) .wfs-paste { display:inline-flex; }
.wfs-dnd .wfs-paste { display:none !important; }

/* Vaga de caminho novo ao lado das colunas de uma decisão (modo colar). */
.wfs-np {
  display:none; flex:0 0 150px; min-height:60px; align-self:flex-start; box-sizing:border-box;
  border:2px dashed var(--wf-accent-border); border-radius:10px; background:var(--surface);
  flex-direction:column; align-items:center; justify-content:center; gap:5px; padding:8px;
  text-align:center; font-size:10.5px; color:var(--text-light);
}
.wfs-pasting .wfs-np:not(.wfs-bad) { display:flex; }
.wfs-np.dragover { border-color:var(--wf-accent); border-style:solid; color:var(--wf-accent); background:var(--wf-accent-soft); }
.wfs-np .wfs-paste { position:static; transform:none; }
.wfs-pasting:not(.wfs-dnd) .wfs-np > span { display:none; }

/* Área de transferência: uma linha acima do canvas. */
.wfs-clipbar {
  display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px;
  padding:7px 10px; border:1px dashed var(--wf-accent); border-radius:10px;
  background:var(--wf-accent-soft); font-size:11.5px; color:var(--text-mid);
}
.wfs-clip-t b { color:var(--text); }
.wfs-clip-h { flex:1; min-width:220px; color:var(--text-light); }
.wfs-mn { font-size:11px; color:var(--text-mid); padding:0 10px 6px 26px; line-height:1.4; max-width:300px; }
.wfs-mn.warn { color:#8a6010; }
.wfs-mn.bad { color:var(--red); }
.wf-menu-it.wfs-off { opacity:.45; cursor:default; pointer-events:none; }
.wfs-acts-row { display:flex; gap:6px; flex-wrap:wrap; }
.wfs-sel-list { display:flex; flex-direction:column; gap:5px; margin:10px 0 4px; font-size:11.5px; color:var(--text-mid); }
.wfs-sel-list > div { display:flex; align-items:center; gap:7px; }

/* ============================================================
   COMUNICAÇÕES (Administração → aba) — inventário de e-mails pontuais
   assets/comms.js · comms.php · shared/comms/
   ============================================================ */
.cm-filters { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.cm-filters .fi { font-size:12px; }
.cm-summary { font-size:12px; color:var(--text-light); margin:0 0 10px; }
.cm-empty { color:var(--text-light); font-size:12px; text-align:center; padding:30px; }
.cm-row { cursor:pointer; }
.cm-nome { font-weight:600; color:var(--text); }
.cm-id { font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size:11px; color:var(--text-light); }
.cm-num { font-variant-numeric:tabular-nums; }
.cm-muted { color:var(--text-light); font-size:11px; }
.cm-falhas { color:var(--red); font-size:11px; }
.cm-head { display:flex; align-items:center; gap:14px; margin:0 0 14px; flex-wrap:wrap; }
.cm-head-main { flex:1; min-width:0; }
.cm-head-nome { font-size:16px; font-weight:700; color:var(--text); }
.cm-head-chips { display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.cm-meta { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:6px 18px; padding:12px 14px;
           background:var(--surface-alt); border:1px solid var(--border); border-radius:10px; margin:0 0 14px; font-size:12.5px; }
.cm-kv { display:flex; gap:8px; min-width:0; }
.cm-kv-l { color:var(--text-light); font-size:10.5px; text-transform:uppercase; letter-spacing:.5px; flex:none; width:96px; padding-top:2px; }
.cm-kv-v { color:var(--text); min-width:0; overflow-wrap:anywhere; }
.cm-tabs { margin-bottom:12px; }
.cm-h4 { margin:14px 0 6px; font-size:11.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-light); }
.cm-ul { margin:0; padding-left:18px; font-size:13px; }
.cm-notice { padding:12px 14px; border:1px solid var(--border); border-radius:10px; background:var(--surface-alt); font-size:13px; color:var(--text-mid); }
.cm-notice-erro { border-color:var(--red); color:var(--red); }
.cm-preview { width:100%; height:calc(100vh - 400px); min-height:440px; border:1px solid var(--border); border-radius:10px; background:#f4f2ee; }
.cm-preview-subj { font-size:13px; color:var(--text); margin:0 0 4px; }
.cm-ex { color:var(--text-light); font-size:11px; word-break:break-all; }
.cm-table td code, .cm-meta code { font-size:11.5px; }
.cm-table td { white-space:normal; }
/* ── Portfolio/MTM: cabeçalho congelado (caso MPV 03/09, 112 ativos) ──
   A tabela rola DENTRO do contêiner (altura limitada à janela) e o thead
   fica preso no topo — efeito "congelar painéis" do Excel. Aplicado só
   onde a classe ldg-freeze é declarada (Portfolio e Valor de mercado). */
#page-ledger .ldg-freeze { max-height: calc(100vh - 230px); overflow: auto; }
#page-ledger .ldg-freeze thead th {
  position: sticky; top: 0; z-index: 5;
  background: var(--surface, #FFFFFF);
  box-shadow: 0 1px 0 var(--border, #E9E4DA);
}

/* =====================================================
/* ══════════════════════════════════════════════════════════════════════════
   INÍCIO — home do portal (handoff design_handoff_home_portal, 10/09)
   Só tokens do :root; prefixo .home- ; casca (sidebar/topbar/ticker) é a que já existe
   ══════════════════════════════════════════════════════════════════════════ */
#page-home .home-tbt { font-family:var(--font-display); font-size:22px; font-weight:400; letter-spacing:0; }
#page-home .tbs { font-size:12.5px; }
.home-tb-acoes { display:flex; align-items:center; gap:10px; }
.home-btn-sec { display:inline-flex; align-items:center; gap:7px; height:36px; padding:0 14px; border:1px solid var(--border-strong); border-radius:var(--radius-sm); background:var(--surface); color:var(--text); font-family:var(--font); font-size:13px; font-weight:600; cursor:pointer; }
.home-btn-sec:hover { background:var(--surface-alt); }
.home-vercomo-sel { height:36px; padding:0 10px; border:1px solid var(--border-strong); border-radius:var(--radius-sm); background:var(--surface); color:var(--text-mid); font-family:var(--font); font-size:12.5px; font-weight:600; max-width:220px; }
.home-vercomo-banner { margin:0 0 16px; padding:10px 14px; border:1px solid var(--color-warning); background:var(--color-warning-soft); border-radius:var(--radius); font-size:13px; color:var(--text); }
.home-vercomo-banner a { color:var(--bordo); font-weight:700; margin-left:6px; }
#page-home .home-btn-brand { height:36px; padding:0 16px; border:0; border-radius:var(--radius-sm); background:var(--btn-brand); color:var(--btn-brand-ink); font-size:13px; font-weight:700; }
#page-home .home-btn-brand:hover { background:var(--btn-brand-h); }
.home-content { padding:24px; }
.home-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); }
.home-lbl { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-light); }
/* busca */
.home-busca { padding:18px 20px; position:relative; }
.home-q-wrap { display:flex; align-items:center; gap:12px; height:46px; padding:0 14px; border:1px solid var(--border-strong); border-radius:10px; background:var(--bg); }
.home-q-wrap:focus-within { border-color:var(--text-mid); box-shadow:0 0 0 3px rgba(74,120,163,.12); }
.home-q-ico { color:var(--text-light); display:inline-flex; }
.home-q { flex:1; height:44px; border:0; outline:none; background:transparent; font-family:var(--font); font-size:14.5px; color:var(--text); }
.home-q::-webkit-search-cancel-button { -webkit-appearance:none; }
.home-kbd { padding:3px 7px; border:1px solid var(--border); border-radius:5px; font-size:10.5px; font-weight:800; color:var(--text-light); }
.home-q-res { position:absolute; left:20px; right:20px; top:70px; z-index:40; background:var(--surface); border:1px solid var(--border-strong); border-radius:10px; box-shadow:var(--shadow-lg); max-height:420px; overflow:auto; padding:6px 0; }
.home-q-g { padding:8px 14px 4px; font-size:10.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--text-light); }
.home-q-it { display:flex; justify-content:space-between; gap:14px; padding:8px 14px; font-size:13.5px; font-weight:600; color:var(--text); cursor:pointer; }
.home-q-it .home-q-m { font-weight:400; color:var(--text-light); font-size:12px; white-space:nowrap; }
.home-q-it:hover, .home-q-it.on { background:var(--surface-alt); }
.home-acoes { margin-top:12px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.home-acoes:empty { display:none; }
.home-acoes-l { font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--text-light); }
.home-chip { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); color:var(--text-mid); font-family:var(--font); font-size:12.5px; font-weight:600; cursor:pointer; }
.home-chip:hover { background:var(--surface-alt); }
/* grid principal */
.home-grid { display:grid; grid-template-columns:minmax(0,1fr) 336px; gap:16px; margin-top:16px; align-items:start; }
.home-col-main { min-width:0; display:flex; flex-direction:column; gap:16px; }
.home-col-side { display:flex; flex-direction:column; gap:16px; }
/* fila */
.home-fila { overflow:hidden; }
.home-fila-h { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 20px; border-bottom:1px solid var(--border-soft); }
.home-fila-s { margin-top:2px; font-size:13px; color:var(--text-mid); }
.home-dec { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:14px; align-items:center; padding:13px 20px; border-bottom:1px solid var(--border-soft); cursor:pointer; }
.home-dec:last-child { border-bottom:0; }
.home-dec:hover { background:var(--surface-alt); }
.home-dec-t { font-size:14px; font-weight:600; color:var(--text); }
.home-dec-s { margin-top:3px; font-size:12.5px; color:var(--text-light); }
.home-selo { padding:3px 8px; border-radius:5px; font-size:11px; font-weight:800; white-space:nowrap; }
.home-selo-danger  { background:var(--color-danger-soft);  color:var(--color-danger); }
.home-selo-accent  { background:var(--color-accent-soft);  color:var(--color-accent); }
.home-selo-warning { background:var(--color-warning-soft); color:var(--color-warning); }
.home-selo-neutral { background:var(--color-neutral-soft); color:var(--color-neutral); }
.home-dec-btn { height:28px; padding:0 12px; display:inline-flex; align-items:center; border:1px solid var(--border-strong); border-radius:var(--radius-sm); color:var(--text-mid); font-size:12.5px; font-weight:700; white-space:nowrap; }
.home-dec-btn-prim { border-color:var(--bordo); color:var(--bordo); }
.home-vazio { padding:16px 20px; font-size:13px; color:var(--text-light); }
.home-skel { height:14px; margin:14px 20px; border-radius:6px; background:linear-gradient(90deg,var(--surface-alt),var(--border-soft),var(--surface-alt)); background-size:200% 100%; animation:home-skel 1.2s linear infinite; }
@keyframes home-skel { from { background-position:200% 0; } to { background-position:-200% 0; } }
@media (prefers-reduced-motion:reduce){ .home-skel { animation:none; } }
/* áreas */
.home-areas-h { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px; }
.home-areas-nota { font-size:12.5px; color:var(--text-light); }
.home-areas { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:14px; }
.home-mod { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px; cursor:pointer; transition:box-shadow .15s, border-color .15s; }
.home-mod:hover, .home-mod:focus-visible { box-shadow:var(--shadow); border-color:var(--border-strong); outline:none; }
.home-mod-h { display:flex; align-items:center; gap:8px; }
.home-mod-h svg { stroke-width:1.5; }
.home-cor-bordo { color:var(--bordo); } .home-cor-blue2 { color:var(--blue2); } .home-cor-green { color:var(--green); } .home-cor-gold { color:var(--gold); } .home-cor-neutral { color:var(--color-neutral); }
.home-mod-t { font-size:12.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; color:var(--text); }
.home-mod-n { margin-top:12px; font-size:26px; font-weight:700; letter-spacing:-.02em; color:var(--text); font-variant-numeric:tabular-nums; }
.home-mod-l { font-size:12.5px; color:var(--text-light); }
.home-mod-f { margin-top:12px; padding-top:12px; border-top:1px solid var(--border-soft); font-size:12.5px; color:var(--text-mid); }
.home-mod-crit { font-weight:700; }
.home-crit-danger { color:var(--color-danger); } .home-crit-accent { color:var(--color-accent); } .home-crit-warning { color:var(--color-warning); } .home-crit-neutral { color:var(--color-neutral); }
/* coluna direita */
.home-side { padding:18px; }
.home-side-b { margin-top:12px; display:flex; flex-direction:column; gap:11px; }
.home-ag { display:flex; gap:12px; cursor:pointer; }
.home-ag strong { min-width:42px; font-size:13px; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums; }
.home-ag-t { font-size:13.5px; font-weight:600; color:var(--text); }
.home-ag-s { font-size:12px; color:var(--text-light); }
.home-ag-static { cursor:default; }
.home-ag-tag { font-size:9.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--blue2); background:var(--color-info-soft); border-radius:4px; padding:1px 5px; margin-left:4px; vertical-align:middle; }
.home-rc { border:1px solid var(--border-soft); border-radius:10px; padding:11px 12px; cursor:pointer; transition:border-color .15s; }
.home-rc:hover { border-color:var(--border-strong); }
.home-rc-t { font-size:13.5px; font-weight:600; color:var(--text); }
.home-rc-s { font-size:11.5px; color:var(--text-light); }
.home-eq { display:flex; justify-content:space-between; gap:10px; font-size:13px; color:var(--text-mid); cursor:pointer; }
.home-eq-q { color:var(--gray); white-space:nowrap; }
.home-side-b .home-vazio { padding:4px 0; }
/* foco visível e responsivo */
#page-home button:focus-visible, #page-home [tabindex]:focus-visible, .home-q:focus-visible { outline:2px solid var(--blue2); outline-offset:2px; }
@media (max-width:1100px){ .home-grid { grid-template-columns:minmax(0,1fr); } }

/* crm: editor de anotações */
.crm-ed{border:1px solid #d6dae0;border-radius:8px;background:#fff;overflow:hidden}
.crm-ed-bar{display:flex;gap:2px;align-items:center;padding:4px 6px;border-bottom:1px solid #e6e9ed;background:#f7f8fa;flex-wrap:wrap}
.crm-ed-b{border:0;background:transparent;border-radius:5px;min-width:26px;height:26px;padding:0 6px;font-size:12.5px;color:#39414b;cursor:pointer;line-height:1}
.crm-ed-b:hover{background:#e9ecf0}
.crm-ed-sep{width:1px;height:16px;background:#dfe3e8;margin:0 4px}
.crm-ed-area{min-height:64px;height:auto;max-height:75vh;overflow:auto;resize:vertical;border:0 !important;border-radius:0 !important;box-shadow:none !important;padding:8px 10px 14px;line-height:1.45;font-size:13.5px;outline:none;white-space:pre-wrap}
/* alça de redimensionar (mesma solução da grade do Financeiro): puxar o canto inferior direito para baixo */
.crm-ed-area::-webkit-resizer{border-width:8px;border-style:solid;border-color:transparent #b8bec6 #b8bec6 transparent;border-radius:0 0 6px 0}
.crm-ed-area:empty:before{content:attr(data-placeholder);color:#9aa4af}
.crm-ed-area ul,.crm-ed-area ol,.crm-tl-item ul,.crm-tl-item ol{margin:4px 0 4px 20px;padding:0}
.crm-tl-item p,.crm-tl-item div{margin:0 0 4px}
.crm-tl-item blockquote{border-left:3px solid #d6dae0;margin:4px 0;padding-left:8px;color:#5b6472}
.crm-tl-item a{color:#2f6fed}

/* ── 4Ledger: Razão impresso — documento paginado A4 (08/09, template
   "General Ledger layout redesign"). Prévia na tela em overlay; na impressão
   só as folhas saem, com 10 mm de margem (padding da própria folha) ──────── */
#ldg-gl-docwrap{position:fixed;inset:0;z-index:99990;background:#e9e6e0;overflow:auto;padding:0 0 40px}
.ldg-gl-docbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:14px;padding:10px 18px;background:#fff;border-bottom:1px solid var(--border,#E4DED2);font-size:13px}
#ldg-gl-doc{display:flex;flex-direction:column;align-items:center;gap:18px;padding:22px 0}
.ldg-gl-page{width:210mm;height:297mm;box-sizing:border-box;padding:10mm 10mm 9mm;background:#fff;color:#2a3140;position:relative;display:flex;flex-direction:column;box-shadow:0 6px 24px rgba(0,0,0,.12);font-family:Inter,"Helvetica Neue",Arial,sans-serif;font-size:8.4pt;line-height:1.3;font-weight:400;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.ldg-gl-page *{box-sizing:border-box}
.ldg-gl-ph{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:2px 14px;font-size:7pt;letter-spacing:.14em;text-transform:uppercase;color:#7a2e2e;border-bottom:1px solid #7a2e2e;padding-bottom:4px;margin-bottom:8px;font-weight:400}
.ldg-gl-ph-r{color:#5b6472;text-transform:none;letter-spacing:0;font-size:7.6pt}
.ldg-gl-ph-r b{font-weight:500;color:#2a3140}
.ldg-gl-ph-cont{flex-basis:100%;color:#5b6472;text-transform:none;letter-spacing:0;font-size:7.8pt;font-style:italic}
.ldg-gl-titlebox{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin:6px 0 12px}
.ldg-gl-titlebox h1{font-size:17pt;font-weight:500;letter-spacing:-.01em;margin:2px 0 3px;line-height:1.05;color:#2b3847}
.ldg-gl-sub{font-size:8.2pt;color:#5b6472}
.ldg-gl-eyebrow{font-size:6.8pt;letter-spacing:.16em;text-transform:uppercase;color:#7a2e2e;font-weight:500}
.ldg-gl-meta{text-align:right;min-width:62mm}
.ldg-gl-stamp{display:inline-block;border:1px solid #2b3847;color:#2b3847;padding:3px 9px;font-size:6.8pt;letter-spacing:.14em;font-weight:500;margin-bottom:8px}
.ldg-gl-stamp-no{border-color:#b0b6c0;color:#7a828d}
.ldg-gl-kv{display:flex;justify-content:flex-end;gap:12px;font-size:7.8pt;margin-top:2px}
.ldg-gl-kv b{font-weight:500;color:#2b3847}
.ldg-gl-kv span{color:#7a828d;letter-spacing:.1em;text-transform:uppercase;font-size:6.8pt;padding-top:2px}
.ldg-gl-cols,.ldg-gl-row,.ldg-gl-end,.ldg-gl-band{display:grid;grid-template-columns:20mm 1fr 26mm 26mm 28mm;column-gap:3mm;align-items:baseline}
.ldg-gl-cols{font-size:6.4pt;letter-spacing:.14em;text-transform:uppercase;color:#7a828d;font-weight:500;border-bottom:1px solid #9aa0a9;padding-bottom:3px;margin-bottom:2px}
.ldg-gl-cols .ldg-gl-c-num{text-align:right}
.ldg-gl-body{flex:1 1 auto;height:0;overflow:hidden;min-height:0}
.ldg-gl-band{grid-template-columns:1fr auto;background:#f6f3ee;border-top:1.2px solid #7a2e2e;padding:4px 8px;margin-top:9px;font-size:8.8pt;break-inside:avoid;color:#7a2e2e}
.ldg-gl-band b{font-weight:500}
.ldg-gl-band1{margin-top:6px;border-top-width:1px;font-size:8.2pt}
.ldg-gl-bandl{display:flex;align-items:baseline;gap:10px}
.ldg-gl-grp{font-size:6.2pt;letter-spacing:.14em;text-transform:uppercase;color:#9aa0a9;font-weight:400}
.ldg-gl-bandr{display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}
.ldg-gl-bandr b{font-weight:500;color:#2b3847}
.ldg-gl-row{padding:2.5px 8px 2.5px 0;border-bottom:.5px solid #ebe8e2;break-inside:avoid}
.ldg-gl-c-date{color:#7a828d;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:8px;font-size:7.8pt}
.ldg-gl-c-desc{min-width:0}
.ldg-gl-title{font-weight:400;color:#2a3140;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ldg-gl-row-det .ldg-gl-title{white-space:normal}
.ldg-gl-tag{display:inline-block;margin-left:6px;font-size:6.2pt;letter-spacing:.14em;text-transform:uppercase;color:#7a2e2e;font-weight:500;vertical-align:1px}
.ldg-gl-det{display:none;color:#5b6472;font-size:7.8pt}
.ldg-gl-row-det .ldg-gl-det{display:block}
.ldg-gl-contra{color:#4a78a3;font-size:7.6pt}
.ldg-gl-c-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:#5b6472}
.ldg-gl-bal{font-weight:500;color:#2b3847}
.ldg-gl-neg{color:#7a2e2e}
.ldg-gl-zero{color:#9aa0a9}
.ldg-gl-muted{color:#5b6472;font-weight:400}
.ldg-gl-end{padding:5px 8px 6px 0;border-top:1px solid #9aa0a9;border-bottom:1.2px solid #2b3847;margin-bottom:4px;break-inside:avoid;color:#2b3847}
.ldg-gl-end b{font-weight:500}
.ldg-gl-final{display:flex;justify-content:space-between;gap:20px;border:1px solid #d9dde4;padding:10px 12px;margin-top:14px;font-size:7.8pt;break-inside:avoid}
.ldg-gl-finalk{display:flex;gap:22px;text-align:center;white-space:nowrap}
.ldg-gl-finalk b{display:block;font-size:12pt;font-weight:500;color:#2b3847;margin-top:2px}
.ldg-gl-pf{display:flex;justify-content:space-between;font-size:7pt;color:#7a828d;border-top:.5px solid #d9dde4;padding-top:4px;margin-top:6px;letter-spacing:.02em}
.ldg-gl-pn{letter-spacing:.14em;text-transform:uppercase;font-weight:400;font-size:6.6pt}
@media print{
  /* o beforeprint move #ldg-gl-docwrap para a raiz do body e marca
     body.ldg-gl-printing: só a folha existe na impressão, na largura exata
     do A4 (sem isso a sidebar/área do módulo ocupavam largura invisível e o
     Chrome encolhia a folha para caber) */
  html:has(body.ldg-gl-printing){margin:0;padding:0;width:210mm}
  body.ldg-gl-printing{margin:0;padding:0;width:210mm;background:#fff}
  body.ldg-gl-printing > :not(#ldg-gl-docwrap){display:none !important}
  body.ldg-gl-printing #ldg-gl-docwrap, body.ldg-gl-printing #ldg-gl-docwrap *{visibility:visible}
  #ldg-gl-docwrap{position:static;background:none;padding:0;overflow:visible;width:210mm}
  .ldg-gl-docbar{display:none !important}
  #ldg-gl-doc{display:block;padding:0;gap:0}
  .ldg-gl-page{box-shadow:none;margin:0;page-break-after:always;break-after:page}
  .ldg-gl-page:last-child{page-break-after:auto;break-after:auto}
}

/* crm: menções no editor */
.crm-ed{position:relative}
.crm-ed-menu{position:absolute;left:8px;top:38px;z-index:20;background:#fff;border:1px solid #d6dae0;border-radius:8px;box-shadow:0 8px 24px rgba(20,28,38,.14);min-width:240px;max-height:220px;overflow:auto;padding:4px}
.crm-ed-op{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:#2a3340}
.crm-ed-op.on,.crm-ed-op:hover{background:#eef2f7}
.crm-ed-area .crm-mention{display:inline-block;background:#eaf0ff;color:#2a3a5a;border:1px solid #cfdcff;border-radius:5px;padding:0 5px;font-weight:600;line-height:1.35;margin:0 1px;user-select:all}

/* ── Modo 4Audit: o portal vira o ambiente da empresa irmã ──
   body.org-4audit é posto pelo crm.js quando a 4Audit está ativa: o menu
   reduz ao bloco Comercial, a logo troca e Campanhas some (fora da v1). */
body.org-4audit .menu-sep:not(.org-keep){display:none!important}
body.org-4audit .nst:not(.org-keep){display:none!important}
body.org-4audit .nav-group-body:not(.org-keep){display:none!important}
body.org-4audit .ni:not([data-nav^="comercial-"]):not(.org-switch){display:none!important}
body.org-4audit #crm-cm-nav{display:none!important}
body.org-4audit .sl-logo{display:none}
.org-logo-4audit{display:none;padding:8px 0 2px;text-align:center}
body.org-4audit .org-logo-4audit{display:block}
.org-logo-4audit .olw{font-size:28px;font-weight:800;letter-spacing:-.5px;color:#2f4021}
.org-logo-4audit .ols{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-light);margin-top:2px}
.org-switch{opacity:.85}
/* seletor por logos das empresas do grupo (canto superior direito) */
#crm-org-switcher{display:flex;align-items:center;gap:6px;margin-right:6px;
  background:var(--surface,#fff);border:1px solid var(--border,#e5e2dc);border-radius:999px;
  padding:3px 5px}
.org-sw-float{position:fixed;top:8px;right:14px;z-index:9999;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.org-sw-btn{width:30px;height:30px;border-radius:50%;border:2px solid transparent;background:none;
  padding:2px;cursor:pointer;filter:grayscale(1);opacity:.4;transition:all .15s}
.org-sw-btn img{width:100%;height:100%;object-fit:contain;display:block}
.org-sw-btn:hover{opacity:.8}
.org-sw-btn.org-sw-on{filter:none;opacity:1;border-color:var(--bordo,#915959);cursor:default}
body.org-4audit .org-sw-btn.org-sw-on{border-color:#2b3a18}
.org-logo-4audit .oli{width:38px;height:38px;margin-bottom:4px}
.org-logo-4audit .olg{width:82%;max-width:175px;display:block;margin:0 auto}
/* ── 4Ledger · Abertura redesenhada, rodada 1 (10/09, handoff Claude Design):
   cabeçalho com status, instruções recolhidas, cartões, busca/filtro, chips
   de natureza e moeda, subtotais e rodapé fixo. Tokens do portal. ──────── */
.ldg-op{max-width:1240px;padding-bottom:calc(90px + var(--ticker-h,0px));color:var(--text,#3F4C5C)}
.ldg-op-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin:4px 0 18px}
.ldg-op-eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--bordo,#915959)}
.ldg-op-h1{margin:6px 0 0;font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1;color:#2B3847}
.ldg-op-status{margin-top:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px}
.ldg-op-badge{display:inline-block;padding:3px 9px;border-radius:2px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;background:#E9EBEE;color:#2B3847}
.ldg-op-badge.ok{background:#E4EDE6;color:#2F5E3B}
.ldg-op-badge.warn{background:#F7EFDD;color:#7A5A1E}
.ldg-op-muted{color:#6B7887}
.ldg-op-actions{display:flex;gap:8px;white-space:nowrap;align-items:center}
.ldg-op-help{background:#E4EBF1;border-top:3px solid #4F80A3;border-radius:4px;padding:14px 20px 16px;margin-bottom:18px;font-size:13px;line-height:1.5}
.ldg-op-help-t{font-weight:700;color:#2B3847;margin-bottom:8px}
.ldg-op-help-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.ldg-op-help-g b{color:#2B3847}
.ldg-op-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.ldg-op-kpi{background:#fff;border:1px solid #D9D5CE;border-top:3px solid #D9D5CE;border-radius:4px;padding:14px 18px}
.ldg-op-kpi.ok{background:#E4EDE6;border-color:#5F8A6B}
.ldg-op-kpi.warn{background:#F7EFDD;border-color:#CFA852}
.ldg-op-kl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-op-kv{margin-top:6px;font-size:22px;font-weight:700;letter-spacing:-.02em;color:#2B3847;font-variant-numeric:tabular-nums}
.ldg-op-card{background:#fff;border:1px solid #D9D5CE;border-radius:4px;overflow:hidden}
.ldg-op-tool{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid #D9D5CE;background:#F2F0ED}
.ldg-op-tool .fi{width:260px;height:34px}
.ldg-op-chk{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;white-space:nowrap}
.ldg-op-chk input{accent-color:var(--bordo,#915959);width:15px;height:15px;margin:0}
.ldg-op-tbl{width:100%;border-collapse:collapse;table-layout:fixed}
.ldg-op-tbl th{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;padding:11px 12px;border-bottom:1px solid #D9D5CE;text-align:left;background:#fff}
.ldg-op-tbl th.ldg-op-nat-h{width:92px;text-align:center}
.ldg-op-tbl th.ldg-op-num-h{width:170px;text-align:right}
.ldg-op-tbl td{border-bottom:1px solid #E7E4DF;padding:5px 12px;vertical-align:middle;font-size:13.5px}
.ldg-op-tbl tr.ldg-op-sec td{background:#F2F0ED;border-top:1px solid #D9D5CE;border-bottom:1px solid #D9D5CE;padding:9px 16px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#2B3847}
.ldg-op-seccount{margin-left:10px;font-size:12px;font-weight:500;letter-spacing:0;text-transform:none;color:#6B7887}
.ldg-op-tbl tr.ldg-op-sub td{background:#FAFAF8;font-weight:700;color:#2B3847;padding:8px 12px;border-bottom:1px solid #D9D5CE}
.ldg-op-tbl tr.ldg-op-sub td:first-child{text-align:right}
.ldg-op-tbl tr.ldg-op-locked td{background:#FAFAF8}
.ldg-op-tbl tr.ldg-op-locked .fi[disabled]{background:transparent;border-color:transparent;color:#6B7887;font-weight:600;box-shadow:none}
/* 10/09 (print do Victor, linhas "desconfiguradas"): a célula da conta é um <td> —
   display:flex nela tirava a célula da linha da tabela e as colunas D/Débito/
   Crédito saíam do alinhamento. Fica table-cell; os chips alinham inline. */
.ldg-op-acc{vertical-align:middle;line-height:1.5;min-height:0}
.ldg-op-acc > *{vertical-align:middle;margin-right:8px}
.ldg-op-acc > *:last-child{margin-right:0}
.ldg-op-code{font-variant-numeric:tabular-nums;color:#6B7887;min-width:52px;display:inline-block}
.ldg-op-name{font-weight:500;color:#2B3847}
.ldg-op-ccy{display:inline-block;padding:2px 7px;border-radius:2px;font-size:10.5px;font-weight:700;letter-spacing:.1em;background:#E9EBEE;color:#2B3847}
.ldg-op-ccy.fx{background:#F7EFDD;color:#7A5A1E;border:1px solid #CFA852}
.ldg-op-tag{display:inline-block;padding:2px 8px;border-radius:2px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.ldg-op-tag.beige{background:#EBDFCF;color:#5A4630}
.ldg-op-tag.bordo{background:#EDDFDF;color:#7A4A4A}
.ldg-op-nat{text-align:center}
.ldg-op-natc{display:inline-block;min-width:24px;padding:2px 6px;border-radius:2px;font-size:11px;font-weight:700;letter-spacing:.08em;text-align:center}
.ldg-op-natc.D{background:#E9EBEE;color:#2B3847}
.ldg-op-natc.C{background:#EDDFDF;color:#7A4A4A}
.ldg-op-num{text-align:right;font-variant-numeric:tabular-nums}
.ldg-op-num .fi{width:100%;height:34px;text-align:right;font-weight:600;color:#2B3847;font-variant-numeric:tabular-nums}
.ldg-op-num .fi:focus{border-color:var(--bordo,#915959);box-shadow:0 0 0 3px rgba(145,89,89,.18)}
.ldg-op-ro{color:#6B7887;font-weight:600;padding-right:24px !important}
.ldg-op-notes{margin-top:12px;font-size:13px;font-weight:600;text-align:right;color:#3F4C5C}
.ldg-op-alt{margin-top:10px;text-align:right}
.ldg-op-foot{position:sticky;bottom:calc(var(--ticker-h,0px) + 14px);z-index:5;margin:18px 0 0;background:#2B3847;color:#F2F0ED;border-left:4px solid var(--bordo,#915959);border-radius:6px;padding:12px 22px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;box-shadow:0 10px 30px rgba(20,25,35,.28)}
.ldg-op-ft{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.ldg-op-fl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#D1BDA6}
.ldg-op-fv{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#F2F0ED}
.ldg-op-fv.warn{color:#F0CB6A}
.ldg-op-fn{font-size:12.5px;color:#D1BDA6;max-width:360px;line-height:1.4}
.ldg-op-fb{display:flex;gap:10px;white-space:nowrap}
.ldg-op-btn-inv{background:#D1BDA6;color:#2B3847;border-color:#D1BDA6;font-weight:700}
.ldg-op-btn-inv:hover{background:#e0d0bd}
.ldg-op-foot.ro{background:#3F4C5C;border-left-color:#D1BDA6}
@media print{ .ldg-op-foot,.ldg-op-tool,.ldg-op-actions{display:none !important} }

/* ── 4Ledger · Onda 1 (10/09, handoff "Esteira e Cabeçalho"): cabeçalho fixo da
   empresa, abas em português por fase, Início com esteira do ciclo + painel do
   estágio + próximo passo, Extratos, Câmbio e home por empresa. Tokens do portal
   (navy #2B3847, bordô #915959, bege #D1BDA6, gelo #F2F0ED). ─────────────── */
#page-ledger .acct-toolbar{display:none}
.ldg-hd{position:sticky;z-index:20;background:#fff;margin:-24px -28px 18px;padding:12px 28px 0;border-bottom:1px solid #D9D5CE;color:#3F4C5C}
.ldg-hd-bc{font-size:13px;color:#6B7887;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ldg-hd-bc a{color:#6B7887;text-decoration:none}.ldg-hd-bc a:hover{color:#2B3847;text-decoration:underline}
.ldg-hd-bc b{color:#2B3847;font-weight:700}
.ldg-hd-main{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;margin-top:8px}
.ldg-hd-h1{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1;color:#2B3847;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ldg-hd-kvs{display:flex;gap:22px;flex-wrap:wrap;margin-top:8px}
.ldg-hd-kv{display:flex;flex-direction:column;gap:2px}
.ldg-hd-kl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-hd-kvv{font-size:13.5px;font-weight:600;color:#2B3847}
.ldg-hd-r{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ldg-hd-sw{width:190px;height:36px;font-size:12.5px}
.ldg-hd .ldg-co-drop{left:auto;right:0;width:380px}
.ldg-hd .ldg-bd-chip{height:36px;border-radius:18px;border-color:#D5D9DE;padding:0 14px}
.ldg-tabgs{display:flex;gap:28px;margin-top:12px;overflow-x:auto;align-items:flex-end}
.ldg-tabg-l{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#9AA4B0;padding-left:12px;margin-bottom:2px;white-space:nowrap}
.ldg-tabg-t{display:flex}
.ldg-tabb{background:none;border:none;cursor:pointer;padding:8px 12px 10px;font-size:14px;font-weight:500;color:#3F4C5C;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap;font-family:inherit;transition:color 140ms cubic-bezier(.2,0,.2,1),border-color 140ms cubic-bezier(.2,0,.2,1)}
.ldg-tabb:hover{color:#2B3847}
.ldg-tabb.on{color:#2B3847;font-weight:700;border-bottom-color:#915959}
.ldg-tabb.sub{color:#915959;font-weight:600}
.ldg-tabb:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-tabg-x{margin-left:auto}
/* Início — esteira do ciclo */
.ldg-cy{background:#fff;border:1px solid #D9D5CE;border-radius:4px;overflow:hidden;max-width:1240px}
.ldg-cy-head{display:flex;align-items:center;gap:18px;padding:12px 18px;border-bottom:1px solid #D9D5CE;font-size:13px;color:#6B7887;flex-wrap:wrap}
.ldg-cy-eb{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#915959}
.ldg-cy-hd{margin-left:auto;font-weight:600;color:#2B3847}
.ldg-cy-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.ldg-cy-s{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;text-align:left;cursor:pointer;padding:16px 18px;border-right:1px solid #E7E4DF;border-bottom:3px solid transparent;background:#fff;font-family:inherit;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-cy-s:last-child{border-right:none}
.ldg-cy-s:hover{background:#F2F0ED}
.ldg-cy-s.on{background:#FAFAF8;border-bottom-color:#915959}
.ldg-cy-s:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-cy-top{display:flex;align-items:center;gap:8px}
.ldg-cy-n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:2px;font-size:12px;font-weight:700;background:#fff;color:#2B3847;border:2px solid #2B3847;box-sizing:border-box}
.st-done .ldg-cy-n,.st-wvd .ldg-cy-n{background:#5F8A6B;border-color:#5F8A6B;color:#fff}
.st-wvd .ldg-cy-n{border-style:dashed;border-color:#3d6b4a}
.st-draft .ldg-cy-n{background:#CFA852;border-color:#CFA852;color:#fff}
.st-na .ldg-cy-n{background:#E7E4DF;border-color:#E7E4DF;color:#6B7887}
.ldg-cy-st{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#6B7887}
.st-done .ldg-cy-st,.st-wvd .ldg-cy-st{color:#5F8A6B}.st-draft .ldg-cy-st{color:#8A6A1E}
/* preparação concluída, aguardando os sócios (ajustes 23/09) */
.st-rdy .ldg-cy-n{background:#fff;border-color:#4A6A8A;color:#4A6A8A}.st-rdy .ldg-cy-st{color:#4A6A8A}
.ldg-cy-l{font-size:14px;font-weight:700;color:#2B3847;margin-top:10px}
.ldg-cy-sum{font-size:12px;color:#6B7887;margin-top:3px}
.ldg-cy-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;margin-top:16px;max-width:1240px}
.ldg-cy-panel{background:#fff;border:1px solid #D9D5CE;border-top:3px solid #915959;border-radius:4px;padding:18px 22px 20px}
.ldg-cy-h2{font-size:22px;font-weight:700;letter-spacing:-.02em;color:#2B3847;margin-top:6px;line-height:1.15}
.ldg-cy-p{font-size:13.5px;line-height:1.55;color:#3F4C5C;margin:10px 0 14px;max-width:640px}
.ldg-cy-wv{background:#E4EDE6;border-radius:3px;padding:8px 12px;font-size:12.5px;color:#2F5E3B;margin-bottom:14px;line-height:1.45}
.ldg-cy-wv a{color:#2F5E3B;font-weight:700}
.ldg-cy-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}
.ldg-cy-f{background:#F2F0ED;border-radius:3px;padding:10px 14px;min-width:0}
.ldg-cy-fk{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-cy-fv{font-size:16px;font-weight:700;color:#2B3847;margin-top:4px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ldg-cy-btns{display:flex;gap:10px;flex-wrap:wrap}
.ldg-cy-next{background:#2B3847;color:#F2F0ED;border-radius:4px;padding:18px 22px 16px;display:flex;flex-direction:column}
.ldg-cy-nl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#D1BDA6}
.ldg-cy-nt{font-size:20px;font-weight:700;line-height:1.2;margin-top:8px;letter-spacing:-.01em;text-wrap:balance}
.ldg-cy-nw{font-size:13px;color:#D1BDA6;line-height:1.5;margin:8px 0 14px}
.ldg-cy-next .btn{align-self:flex-start;margin-bottom:14px}
.ldg-cy-nf{margin-top:auto;padding-top:12px;border-top:1px solid rgba(242,240,237,.24);font-size:12px;color:#D1BDA6;display:flex;flex-direction:column;gap:4px}
.ldg-cy-nf b{color:#F2F0ED;font-weight:600}
@media (max-width:1000px){.ldg-cy-row{grid-template-columns:repeat(4,minmax(0,1fr))}.ldg-cy-s{border-bottom:1px solid #E7E4DF}.ldg-cy-grid{grid-template-columns:1fr}}
/* Extratos — contas por linhas abertas */
.ldg-ib{max-width:900px}
.ldg-ib-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.ldg-ib-row{display:grid;grid-template-columns:1fr auto auto;gap:18px;align-items:center;background:#fff;border:1px solid #D9D5CE;border-radius:4px;padding:12px 16px;cursor:pointer;transition:transform 220ms cubic-bezier(.2,0,.2,1),box-shadow 220ms cubic-bezier(.2,0,.2,1)}
.ldg-ib-row:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(43,56,71,.12)}
.ldg-ib-n{font-size:14px;font-weight:700;color:#2B3847}.ldg-ib-c{font-size:12px;color:#6B7887;margin-top:2px}
.ldg-ib-p{font-size:13px;font-weight:600;color:#5F8A6B;white-space:nowrap}.ldg-ib-p.warn{color:#8A6A1E}
.ldg-ib-go{font-size:13px;font-weight:700;color:#915959;white-space:nowrap}
/* Home — empresas */
.ldg-h1{color:#3F4C5C;max-width:1240px}
.ldg-h1-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin:0 0 18px}
.ldg-h1-eb{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#915959}
.ldg-h1-t{font-size:28px;font-weight:700;letter-spacing:-.02em;color:#2B3847;margin:6px 0 0;line-height:1.1}
.ldg-h1-sub{font-size:13px;color:#6B7887;margin-top:4px}
.ldg-h1-r{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ldg-h1-q{width:260px;height:40px}
.ldg-h1-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.ldg-h1-kpi{background:#fff;border:1px solid #D9D5CE;border-radius:4px;padding:16px 20px}
.ldg-h1-kl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-h1-kv{font-size:22px;font-weight:700;color:#2B3847;margin-top:6px;font-variant-numeric:tabular-nums}
.ldg-h1-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.ldg-h1-chip{padding:6px 14px;border-radius:2px;font-size:12px;font-weight:700;cursor:pointer;border:1px solid #D9D5CE;background:#fff;color:#3F4C5C;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-h1-chip:hover{background:#F2F0ED}
.ldg-h1-chip.on{background:#2B3847;border-color:#2B3847;color:#fff}
/* status geral do fechamento (ajustes 23/09): filtro principal acima das
   triagens; o selo repete no cartão */
.ldg-h1-stat{display:flex;border:1px solid #D9D5CE;border-radius:4px;background:#fff;margin-bottom:10px;overflow:hidden;flex-wrap:wrap}
.ldg-h1-sb{all:unset;box-sizing:border-box;flex:1 1 150px;padding:10px 16px;cursor:pointer;border-right:1px solid #E7E4DF;font-family:inherit;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-h1-sb:last-child{border-right:none}
.ldg-h1-sb:hover{background:#F2F0ED}
.ldg-h1-sb.on{background:#FAFAF8;box-shadow:inset 0 -3px 0 #915959}
.ldg-h1-sb:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-h1-sbl{display:block;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-h1-sbv{display:block;font-size:20px;font-weight:700;color:#2B3847;margin-top:2px;font-variant-numeric:tabular-nums}
.ldg-h1-tag{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:2px}
.ldg-h1-tag.s-nao{background:#EFEDE9;color:#6B7887}.ldg-h1-tag.s-prep{background:#F4EAD2;color:#8A6A1E}
.ldg-h1-tag.s-rev{background:#E3EAF1;color:#4A6A8A}.ldg-h1-tag.s-concl{background:#E4EDE6;color:#2F5E3B}
.ldg-h1-tag.s-impl{background:#F1ECEC;color:#915959}
/* regime fiscal (Lei 14.754) em destaque — cartão do hub e topo da empresa (07/10) */
.ldg-fis-opaca{background:#2B3847!important;color:#fff!important}
.ldg-fis-transp{background:#2F4F73!important;color:#fff!important}
.ldg-fis-none{background:#FBF3E0!important;color:#8A6A1E!important;box-shadow:inset 0 0 0 1px #D9C48A}
.ldg-fis-none-w{display:inline-flex;align-items:center;gap:4px}
.ldg-fis-pick{cursor:pointer;background:#fff!important;color:#2B3847!important;box-shadow:inset 0 0 0 1px #8E3B46;font-family:inherit;line-height:1.4}
.ldg-fis-pick:hover{background:#8E3B46!important;color:#fff!important}
.ldg-h1-tag.ldg-fis-pick{padding:2px 8px}
.ldg-h1-sect{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;margin:18px 2px 10px}
.ldg-h1-list{display:flex;flex-direction:column;gap:10px}
.ldg-h1-card{display:grid;grid-template-columns:1.2fr 2fr 1fr;gap:28px;align-items:center;background:#fff;border:1px solid #D9D5CE;border-radius:4px;padding:20px 24px;cursor:pointer;transition:transform 220ms cubic-bezier(.2,0,.2,1),box-shadow 220ms cubic-bezier(.2,0,.2,1)}
.ldg-h1-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(43,56,71,.12)}
.ldg-h1-n{font-size:17px;font-weight:700;color:#2B3847;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ldg-h1-c{font-size:13px;color:#6B7887;margin-top:4px}
.ldg-h1-warn{font-size:12px;color:#7A4A4A;font-weight:600;margin-top:4px}
.ldg-h1-ok{font-size:12px;color:#2F5E3B;font-weight:600;margin-top:4px}
.ldg-h1-mini{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.ldg-h1-md{height:6px;border-radius:1px;background:#D9D5CE}
.ldg-h1-md.st-done,.ldg-h1-md.st-wvd{background:#5F8A6B}.ldg-h1-md.st-draft{background:#CFA852}.ldg-h1-md.st-na{background:#EFEDE9}
.ldg-h1-md.st-rdy{background:#8DA3BA}
.ldg-h1-mm{display:flex;justify-content:space-between;font-size:12px;color:#6B7887;margin-top:8px;gap:12px}
.ldg-h1-next{text-align:right}
.ldg-h1-nl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#915959}
.ldg-h1-nt{display:block;font-size:14px;font-weight:600;color:#2B3847;margin-top:4px;text-decoration:none;text-wrap:balance}
.ldg-h1-nt:hover{color:#915959;text-decoration:underline}
.ldg-h1-more{background:#fff;border:1px dashed #D9D5CE;border-radius:4px;padding:12px 24px;font-size:12.5px;color:#6B7887;cursor:pointer;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.ldg-h1-more b{color:#2B3847}
/* ── hub em TABELA (07/10, mock do Victor) ───────────────────────────── */
.ldg-h2{max-width:1320px}
.ldg-h2-sw{position:relative;display:inline-flex;align-items:center}
.ldg-h2-sw::before{content:'⌕';position:absolute;left:12px;font-size:16px;color:#6B7887;pointer-events:none}
.ldg-h2 .ldg-h1-q{width:320px;padding-left:34px}
.ldg-h2-top{display:grid;grid-template-columns:1.8fr 1fr;gap:16px;margin-bottom:22px}
.ldg-h2-card{background:#fff;border:1px solid #D9D5CE;border-radius:6px;padding:18px 22px}
.ldg-h2-ch{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}
.ldg-h2-ch b{font-size:14px;color:#2B3847}.ldg-h2-ch span{font-size:12px;color:#6B7887}
.ldg-h2-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;background:#E7E4DF;gap:2px;margin-bottom:14px}
.ldg-h2-seg{display:block;height:100%}
.ldg-h2-seg.s-nao,.ldg-h2-dot.s-nao{background:#C9C4BB}.ldg-h2-seg.s-prep,.ldg-h2-dot.s-prep{background:#4A6A8A}
.ldg-h2-seg.s-rev,.ldg-h2-dot.s-rev{background:#CFA852}.ldg-h2-seg.s-concl,.ldg-h2-dot.s-concl{background:#2F5E3B}
.ldg-h2-seg.s-impl,.ldg-h2-dot.s-impl{background:#D9B8B8}
.ldg-h2-stat{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
.ldg-h2-sb{all:unset;box-sizing:border-box;padding:12px 14px;cursor:pointer;border-radius:4px;font-family:inherit;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-h2-sb:hover{background:#F2F0ED}
.ldg-h2-sb.on{background:#F2F0ED;box-shadow:inset 0 -3px 0 #915959}
.ldg-h2-sb:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-h2-sbl{display:flex;align-items:center;gap:6px;font-size:12px;color:#6B7887;white-space:nowrap}
.ldg-h2-dot{display:inline-block;width:8px;height:8px;border-radius:1px}
.ldg-h2-sbv{display:block;font-size:24px;font-weight:700;color:#2B3847;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ldg-h2-qr{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:10px;width:100%;padding:11px 4px;border-bottom:1px solid #E7E4DF;cursor:pointer;font-family:inherit;border-radius:3px}
.ldg-h2-qr:last-child{border-bottom:none}
.ldg-h2-qr:hover{background:#F2F0ED}.ldg-h2-qr.on{background:#F2F0ED;box-shadow:inset 3px 0 0 #915959}
.ldg-h2-qi{color:#915959;font-size:13px;width:18px;text-align:center}
.ldg-h2-ql{flex:1;font-size:13.5px;color:#2B3847}
.ldg-h2-qv{font-size:17px;font-weight:700;color:#2B3847;font-variant-numeric:tabular-nums}
.ldg-h2-qa{color:#915959;font-weight:700;font-size:14px;width:14px;text-align:center}
.ldg-h2-chips{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.ldg-h2 .ldg-h1-chip{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.ldg-h2 .ldg-h1-chip b{font-weight:700;opacity:.75}
.ldg-h2-on{display:inline-block;width:6px;height:6px;border-radius:50%;background:#915959}
.ldg-h2 .ldg-h1-chip.on .ldg-h2-on{background:#fff}
.ldg-h2-cnt{font-size:12.5px;color:#6B7887}
.ldg-h2-tw{background:#fff;border:1px solid #D9D5CE;border-radius:6px;overflow:hidden}
.ldg-h2-tbl{width:100%;border-collapse:collapse;table-layout:fixed}
.ldg-h2-tbl th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;padding:12px 18px;border-bottom:1px solid #D9D5CE;background:#FAFAF8}
.ldg-h2-tbl th:nth-child(1){width:25%}.ldg-h2-tbl th:nth-child(2){width:12%}.ldg-h2-tbl th:nth-child(3){width:17%}.ldg-h2-tbl th:nth-child(4){width:13%}.ldg-h2-tbl th:nth-child(5){width:16%}
.ldg-h2-chr{display:inline-flex;align-items:center;gap:10px}
.ldg-h2-ysel{font:inherit;font-size:12px;color:#2B3847;border:1px solid #D9D5CE;border-radius:3px;background:#fff;padding:3px 6px;max-width:250px;cursor:pointer}
/* período dentro do exercício (07/10): Q1–Q4 + datas fora de trimestre */
.ldg-h2-pqs{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.ldg-h2-pq{font:inherit;font-size:12px;color:#2B3847;border:1px solid #D9D5CE;border-radius:3px;background:#fff;padding:4px 10px;cursor:pointer;white-space:nowrap}
.ldg-h2-pq b{font-weight:700;margin-right:2px}
.ldg-h2-pq span{color:#8a8a87}
.ldg-h2-pq:hover:not(:disabled){border-color:#915959}
.ldg-h2-pq.on{background:#2B3847;border-color:#2B3847;color:#fff}
.ldg-h2-pq.on span{color:#D9D5CE}
.ldg-h2-pq:disabled{opacity:.45;cursor:default}
.ldg-h2-rl{display:flex;align-items:center;gap:6px;font-size:10.5px;color:#6B7887;margin:2px 0}
.ldg-h2-rl span{width:34px;flex:none;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.ldg-h2-rs{font:inherit;font-size:12px;color:#8A949F;border:1px solid #E7E4DF;border-radius:3px;background:#fff;padding:2px 4px;min-width:0;width:100%;cursor:pointer}
.ldg-h2-rs.on{color:#2B3847;border-color:#D9D5CE;font-weight:600}
.ldg-h2-rs:disabled{background:#FAFAF8;cursor:default}
.ldg-h2-tbl td{padding:14px 18px;border-bottom:1px solid #E7E4DF;vertical-align:middle}
.ldg-h2-row{cursor:pointer;transition:background 120ms}.ldg-h2-row:hover{background:#FAFAF8}
.ldg-h2-row:last-child td{border-bottom:none}
.ldg-h2-n{font-size:15.5px;font-weight:700;color:#2B3847;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ldg-h2-n .ldg-op-badge{font-size:10px;padding:2px 7px}
.ldg-h2-c{font-size:12.5px;color:#6B7887;margin-top:3px}
.ldg-h2-fis .ldg-fis-none-w{flex-wrap:wrap;gap:4px}
.ldg-h2-fis .ldg-fis-none{display:none}
.ldg-h2-st .ldg-h1-mini{max-width:260px}
.ldg-h2-sm{display:flex;justify-content:space-between;font-size:12.5px;color:#3F4C5C;margin-top:7px;max-width:260px}
.ldg-h2-sm span:last-child{color:#6B7887}
.ldg-h2-mvd{font-size:13.5px;font-weight:600;color:#2B3847}.ldg-h2-mvd.warn{color:#8E3B46}
.ldg-h2-mvs{font-size:12px;color:#6B7887;margin-top:2px}
.ldg-h2-nx{text-align:right}
.ldg-h2-nt{font-size:14px;font-weight:600;color:#2B3847;text-decoration:none}
.ldg-h2-nt:hover{color:#915959}
.ldg-h2-ar{color:#915959;margin-left:4px}
.ldg-h2-sect td{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;background:#FAFAF8;padding:9px 18px}
.ldg-h2-more td{font-size:12.5px;color:#6B7887;cursor:pointer;background:#FAFAF8}
.ldg-h2-more b{color:#2B3847;margin-right:8px}.ldg-h2-exp{float:right;font-weight:700;color:#915959}
@media(max-width:1100px){.ldg-h2-top{grid-template-columns:1fr}.ldg-h2-stat{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:860px){
  .ldg-h2-tbl thead{display:none}
  .ldg-h2-tbl,.ldg-h2-tbl tbody,.ldg-h2-tbl tr,.ldg-h2-tbl td{display:block;width:auto}
  .ldg-h2-row{padding:12px 16px;border-bottom:1px solid #E7E4DF}
  .ldg-h2-tbl td{padding:4px 0;border:none}
  .ldg-h2-nx{text-align:left}.ldg-h2-sm,.ldg-h2-st .ldg-h1-mini{max-width:none}
  .ldg-h2-stat{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ldg-h2 .ldg-h1-q{width:100%}
}
@media (max-width:1000px){.ldg-h1-card{grid-template-columns:1fr;gap:14px}.ldg-h1-next{text-align:left}.ldg-h1-kpis{grid-template-columns:repeat(2,1fr)}}
@media (prefers-reduced-motion:reduce){.ldg-h1-card,.ldg-ib-row,.ldg-tabb,.ldg-cy-s,.ldg-h1-chip,.ldg-h1-sb{transition:none}}
@media print{.ldg-hd{display:none !important}}

/* ── 4Ledger · Onda 2 (10/09, handoff "Lançamentos"): lista agrupada com filtros
   e editor lateral com balanceamento em tempo real ─────────────────────────── */
.ldg-jr{color:#3F4C5C;max-width:1400px}
.ldg-jr-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:14px}
.ldg-jr-acts{display:flex;gap:8px;flex-wrap:wrap}
.ldg-jr-body{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(420px,1fr);gap:16px;align-items:start}
.ldg-jr-body.no-ed{grid-template-columns:1fr}
.ldg-jr-body.no-ed .ldg-jr-ed{display:none}
.ldg-jr-list{min-width:0}
.ldg-jr-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;background:#F2F0ED;border-bottom:1px solid #D9D5CE}
.ldg-jr-chips{display:flex;gap:2px;flex-wrap:wrap}
.ldg-jr-chip{all:unset;cursor:pointer;padding:6px 12px;border-radius:2px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#3F4C5C;font-family:inherit;white-space:nowrap}
.ldg-jr-chip:hover{background:#E7E4DF}
.ldg-jr-chip.on{background:#2B3847;color:#F2F0ED}
.ldg-jr-chip:focus-visible{outline:2px solid #915959}
.ldg-jr-sel{height:34px;font-size:12.5px;width:auto}
.ldg-jr-q{height:34px;flex:1;min-width:160px}
.ldg-jr-grp{display:flex;align-items:center;gap:10px;background:#FAFAF8;padding:8px 16px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;border-bottom:1px solid #E7E4DF}
.ldg-jr-grp input{margin:0}
.ldg-jr-gn{margin-left:auto;font-weight:500;letter-spacing:0;text-transform:none;font-size:12px}
.ldg-jr-row{display:grid;grid-template-columns:16px minmax(0,1fr) 128px 176px;gap:14px;align-items:center;padding:12px 16px 12px 13px;border-bottom:1px solid #E7E4DF;border-left:3px solid #D9D5CE;cursor:pointer;background:#fff;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-jr-row:hover{background:#F7F5F1}
.ldg-jr-row.sel{background:#F2F0ED}
.ldg-jr-row.flash{background:#F3E8C8}
.ldg-jr-row.st-draft{border-left-color:#CFA852}.ldg-jr-row.st-posted{border-left-color:#5F8A6B}.ldg-jr-row.st-reversed{border-left-color:#BFBFBA}
.ldg-jr-row input[type=checkbox]{margin:0;flex:0 0 auto}
.ldg-jr-nochk{width:13px}
.ldg-jr-main{flex:1;min-width:0}
.ldg-jr-l1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px}
.ldg-jr-memo{font-weight:600;color:#2B3847;overflow-wrap:anywhere}
.ldg-jr-src{display:inline-block;padding:1px 7px;border-radius:2px;font-size:11px;font-weight:700;letter-spacing:.06em;background:#E9EBEE;color:#2B3847;white-space:nowrap}
.ldg-jr-pair{font-size:12px;font-weight:700;color:#915959;text-decoration:none;white-space:nowrap}
.ldg-jr-pair:hover{text-decoration:underline}
.ldg-jr-clar{font-size:12px;color:#6B7887}
.ldg-jr-l2{font-size:12px;color:#6B7887;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ldg-jr-amt{text-align:right}
.ldg-jr-val{font-weight:700;font-variant-numeric:tabular-nums;color:#2B3847;font-size:14px}
.ldg-jr-val .neg{color:#7A4A4A}
.ldg-jr-st{margin-top:2px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#6B7887}
.st-draft .ldg-jr-st{color:#8A6A1E}.st-posted .ldg-jr-st{color:#5F8A6B}
.ldg-jr-btns{white-space:nowrap;display:flex;gap:4px;justify-content:flex-end;opacity:.55;transition:opacity 140ms}
.ldg-jr-row:hover .ldg-jr-btns,.ldg-jr-row.sel .ldg-jr-btns{opacity:1}
.ldg-jr-btns .btn.has{background:#F7EFDD;border-color:#CFA852}
.ldg-jr-more{padding:12px 16px;text-align:center}
.ldg-jr-hidn{padding:8px 16px;font-size:12px;color:#6B7887;border-bottom:1px solid #EEEAE3}
.ldg-jr-hidn a{color:#915959;font-weight:600}
/* editor */
.ldg-jr-ed{position:sticky;top:16px}
.ldg-je{background:#fff;border:1px solid #D9D5CE;border-top:3px solid #915959;border-radius:4px;display:flex;flex-direction:column;max-height:calc(100vh - 32px);overflow:auto}
.ldg-je-modal{background:#fff;border-radius:6px;width:min(780px,96vw);max-height:92vh;overflow:auto}
.ldg-je-modal .ldg-je{border:none;max-height:none}
.ldg-je-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px 0}
.ldg-je-hr{display:flex;align-items:center;gap:8px}
.ldg-je-stc{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#6B7887}
.ldg-je-stc.st-draft{color:#8A6A1E}.ldg-je-stc.st-posted{color:#5F8A6B}
.ldg-je-x{all:unset;cursor:pointer;font-size:18px;line-height:1;color:#6B7887;padding:2px 6px}
.ldg-je-x:hover{color:#2B3847}
.ldg-je .ldg-cy-wv{margin:12px 20px 0}
.ldg-je-meta{display:grid;grid-template-columns:140px 1fr 120px;gap:8px;padding:12px 20px 0}
.ldg-je-meta .fi{height:40px}
.ldg-je-tbl{width:100%;border-collapse:collapse;margin:14px 0 0}
.ldg-je-tbl th{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;text-align:left;padding:0 6px 6px 20px;border-bottom:1px solid #D9D5CE}
.ldg-je-tbl th.n{width:118px;text-align:right;padding-left:6px}.ldg-je-tbl th.x{width:34px;padding:0}
.ldg-je-tbl td{padding:4px 6px 4px 20px;border-bottom:1px solid #E7E4DF;vertical-align:middle}
.ldg-je-tbl td.n{padding-left:6px}.ldg-je-tbl td.x{padding:0 8px 0 0;text-align:center}
.ldg-je-tbl .fi{height:36px}
.ldg-je-tbl td.n .fi{text-align:right;font-variant-numeric:tabular-nums}
.ldg-je-tbl .fi.bad{background:#F7E6E6;border-color:#CC7070}
.ldg-je-tbl .fi:focus{border-color:#915959;box-shadow:0 0 0 3px rgba(145,89,89,.18)}
.ldg-je-rm{all:unset;cursor:pointer;color:#6B7887;font-size:16px;padding:2px 6px}
.ldg-je-rm:hover{color:#7A4A4A}
.ldg-je-add{display:inline-block;margin:10px 20px 0;font-size:13px;font-weight:600;color:#915959;text-decoration:none}
.ldg-je-add:hover{text-decoration:underline}
.ldg-je-err{margin:12px 20px 0;padding:10px 14px;background:#F7E6E6;border-top:3px solid #CC7070;border-radius:3px;font-size:13px;color:#2B3847}
.ldg-je-foot{margin-top:16px;background:#2B3847;color:#F2F0ED;padding:14px 22px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.ldg-je-ft{display:flex;gap:24px;flex-wrap:wrap}
.ldg-je-fl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#D1BDA6}
.ldg-je-fv{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.ldg-je-fv.ok{color:#8FB89A}.ldg-je-fv.bad{color:#E3B4B4}
.ldg-je-fb{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ldg-je-fb .btn[disabled]{opacity:.45;cursor:not-allowed}
.ldg-je-del{background:transparent;color:#D1BDA6;border-color:rgba(209,189,166,.5)}
.ldg-je-del:hover{color:#F2F0ED}
.ldg-je-fn{font-size:12px;color:#D1BDA6}
@media (max-width:1100px){.ldg-jr-body{grid-template-columns:1fr}.ldg-jr-ed{position:static}.ldg-je{max-height:none}}
@media (prefers-reduced-motion:reduce){.ldg-jr-row,.ldg-jr-btns{transition:none}}

/* ── 4Ledger · Onda 3 (10/09, handoff "Carteira Revisão"): bloco superior da
   Carteira (conciliação + motores) e Revisão reestruturada ─────────────────── */
.ldg-iv-top{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr));gap:12px;margin:0 0 16px;max-width:1240px}
.ldg-iv-conc{border-radius:4px;padding:14px 18px;border:1px solid #CFA852;border-top:3px solid #CFA852;background:#F7EFDD}
.ldg-iv-conc.ok{border-color:#5F8A6B;background:#E4EDE6}
.ldg-iv-kl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-iv-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:6px}
.ldg-iv-kv{font-size:22px;font-weight:700;color:#2B3847;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ldg-iv-sub{font-size:12px;color:#6B7887}
.ldg-iv-cause{font-size:12.5px;margin-top:8px;color:#8A6A1E;line-height:1.45}
.ldg-iv-conc.ok .ldg-iv-cause{color:#2F5E3B}
.ldg-iv-cause a{color:inherit;font-weight:700}
.ldg-iv-eng{background:#fff;border:1px solid #D9D5CE;border-top:3px solid #D9D5CE;border-radius:4px;padding:14px 18px;display:flex;flex-direction:column}
.ldg-iv-eng.st-done{border-top-color:#5F8A6B}.ldg-iv-eng.st-draft{border-top-color:#CFA852}
.ldg-iv-eh{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ldg-iv-st{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#6B7887}
.st-done .ldg-iv-st{color:#5F8A6B}.st-draft .ldg-iv-st{color:#8A6A1E}
.ldg-iv-val{font-size:18px;font-weight:700;color:#2B3847;font-variant-numeric:tabular-nums;margin-top:8px}
.ldg-iv-eng .ldg-iv-sub{margin-top:2px}
.ldg-iv-btn{margin-top:auto;padding-top:12px;display:flex;gap:6px;flex-wrap:wrap}
.ldg-iv-guard{margin-top:10px;padding:8px 12px;background:#F7E6E6;border-top:3px solid #CC7070;border-radius:3px;font-size:12.5px;color:#2B3847;line-height:1.45}
@media (max-width:1000px){.ldg-iv-top{grid-template-columns:1fr 1fr}}
/* Revisão */
.ldg-rv{color:#3F4C5C;max-width:1400px}
.ldg-rv-stamp{margin-top:8px}
.ldg-rv-base{display:inline-flex;align-items:center;gap:6px}
.ldg-rv-base .fi{width:150px;height:34px}
.ldg-rv-bar{display:flex;gap:3px;margin-top:14px}
.ldg-rv-bar span{flex:1;height:6px;border-radius:1px;background:#D9D5CE}
.ldg-rv-bar .st-ok{background:#5F8A6B}.ldg-rv-bar .st-warn{background:#CFA852}.ldg-rv-bar .st-fail{background:#CC7070}
.ldg-rv-ran{font-size:12px;color:#6B7887;margin:6px 0 16px;min-height:14px}
.ldg-rv-body{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:16px;align-items:start}
.ldg-rv-g{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887;margin:14px 2px 8px}
.ldg-rv-g:first-child{margin-top:0}
.ldg-rv-ck{background:#fff;border:1px solid #D9D5CE;border-top:3px solid #5F8A6B;border-radius:4px;overflow:hidden;margin-bottom:10px}
.ldg-rv-ck.st-warn{border-top-color:#CFA852}.ldg-rv-ck.st-fail{border-top-color:#CC7070}
.ldg-rv-ch{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:100%;padding:14px 18px;cursor:pointer;font-family:inherit}
.ldg-rv-ch:hover{background:#FAFAF8}
.ldg-rv-ch:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-rv-n{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:2px;font-size:12px;font-weight:700;background:#5F8A6B;color:#fff;flex:0 0 auto}
.st-warn .ldg-rv-n{background:#CFA852}.st-fail .ldg-rv-n{background:#CC7070}
.ldg-rv-t{font-weight:700;color:#2B3847;font-size:14px;flex:1;min-width:0}
.ldg-rv-v{font-size:12.5px;color:#6B7887;font-variant-numeric:tabular-nums;max-width:40%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ldg-rv-s{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#5F8A6B;min-width:64px;text-align:right}
.st-warn .ldg-rv-s{color:#8A6A1E}.st-fail .ldg-rv-s{color:#CC7070}
.ldg-rv-cb{padding:0 18px 16px 54px}
.ldg-rv-cb p{margin:0 0 10px;font-size:13px;line-height:1.5;color:#3F4C5C}
.ldg-rv-hint{font-size:12px;color:#6B7887}
.ldg-rv-items{border:1px solid #E7E4DF;border-radius:3px;overflow:hidden;margin-bottom:12px}
.ldg-rv-item{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid #E7E4DF;font-size:13px;color:#2B3847;text-decoration:none;font-variant-numeric:tabular-nums}
.ldg-rv-item:last-child{border-bottom:none}
.ldg-rv-item:hover{background:#F7F5F1}
.ldg-rv-item .go{color:#915959;font-weight:700;white-space:nowrap;font-size:12px}
.ldg-rv-fix{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ldg-rv-side{display:flex;flex-direction:column;gap:12px}
.ldg-rv-card{background:#fff;border:1px solid #D9D5CE;border-radius:4px;padding:14px 18px 16px}
/* Agente Revisor — cartão "Revisão com IA" no topo da Revisão (09/10) */
.ldg-ai-card{margin-bottom:12px}
.ldg-ai-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}
.ldg-ai-sub{font-size:12px;color:#6B7887;margin-top:2px;max-width:640px}
.ldg-ai-sum{font-size:13px;line-height:1.55;margin:4px 0 10px;white-space:pre-line}
.ldg-ai-f{border-top:1px solid #ECE8E1;padding:8px 0}
.ldg-ai-f summary{cursor:pointer;font-size:13px;font-weight:600;list-style:none;display:flex;gap:8px;align-items:baseline}
.ldg-ai-f summary::-webkit-details-marker{display:none}
.ldg-ai-sev{color:#fff;font-size:10.5px;font-weight:700;border-radius:3px;padding:1px 6px;flex:none}
.ldg-ai-k{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:#6B7887;margin:8px 0 2px}
.ldg-ai-v{font-size:12.5px;line-height:1.55;white-space:pre-line}
.ldg-ai-meta{font-size:11px;color:#8A8F98;margin-top:10px}
.ldg-ai-run{font-size:13px;display:flex;align-items:center;gap:8px}
.ldg-ai-dot{width:8px;height:8px;border-radius:50%;background:#B07A1F;animation:ldgAiPulse 1.2s infinite}
@keyframes ldgAiPulse{0%,100%{opacity:.3}50%{opacity:1}}
.ldg-ai-err{font-size:12.5px;color:#B23B3B}
.ldg-ai-acts{margin:4px 0 0 18px;padding:0;font-size:12.5px;line-height:1.55}
.ldg-ai-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ldg-ai-oc{font-size:10.5px;font-weight:700;border-radius:3px;padding:1px 6px;background:#ECE8E1;color:#5D6B7A}
.ldg-ai-oc-applied,.ldg-ai-oc-resolved{background:#E3F1E8;color:#1f7a47}
.ldg-ai-oc-failed{background:#F7E3E3;color:#B23B3B}
.ldg-ai-f.is-done summary{opacity:.7}
.ldg-ai-ocl{font-size:11.5px;color:#6B7887;margin-top:8px}
.ldg-ai-log{font-size:11.5px;color:#6B7887;margin-top:4px}
.ldg-rv-card.top{border-top:3px solid #915959}
.ldg-rv-it{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:#3F4C5C;margin:10px 0 0;cursor:pointer;line-height:1.4}
.ldg-rv-it input{accent-color:#915959;margin:3px 0 0;flex:0 0 auto}
.ldg-rv-card textarea{width:100%;box-sizing:border-box;min-height:70px;margin-top:12px;resize:vertical}
.ldg-rv-save{margin-top:10px;text-align:right}
.ldg-rv-muted{font-size:12.5px;color:#6B7887;margin-top:8px;line-height:1.45}
.ldg-rv-ov{background:#F2F0ED;border-radius:3px;padding:10px 12px;margin-top:10px;font-size:12.5px;color:#3F4C5C;line-height:1.45}
.ldg-rv-ov b{color:#2B3847}
.ldg-rv-ovm{font-size:12px;color:#6B7887;margin-top:2px}
.ldg-rv-jes summary{cursor:pointer;font-size:12.5px;color:#915959;font-weight:600;margin-top:8px}
.ldg-rv-jlist{display:flex;flex-direction:column;margin-top:6px;max-height:320px;overflow:auto}
.ldg-rv-j{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid #E7E4DF;font-size:12.5px;color:#3F4C5C;text-decoration:none}
.ldg-rv-j:hover{color:#915959}
.ldg-rv-j b{font-variant-numeric:tabular-nums;color:#2B3847;white-space:nowrap}
.ldg-rv-appr{background:#2B3847;color:#F2F0ED;border-radius:4px;padding:16px 20px}
.ldg-rv-ap{font-size:12.5px;color:#D1BDA6;margin-top:8px;line-height:1.5}
.ldg-rv-ap b{color:#F2F0ED;font-weight:600}
.ldg-rv-ap .warn{color:#F0CB6A}
.ldg-rv-ah{font-size:13px;color:#F2F0ED;margin:12px 0;line-height:1.5}
.ldg-rv-ah.warn{color:#F0CB6A}
.ldg-rv-appr .btn[disabled]{opacity:.45;cursor:not-allowed}
@media (max-width:1000px){.ldg-rv-body{grid-template-columns:1fr}}

/* ── 4Ledger · Onda 4 (10/09): Setup — jornada no topo, seções por frequência
   de uso, zona administrativa isolada ─────────────────────────────────────── */
.ldg-su{color:#3F4C5C;max-width:1240px}
.ldg-su-jc{margin-bottom:16px}
.ldg-su-jh{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;padding:16px 18px 14px;border-bottom:1px solid #D9D5CE}
.ldg-su-jn{max-width:360px;text-align:right;font-size:12.5px}
.ldg-su-row7{grid-template-columns:repeat(7,minmax(0,1fr))}
.ldg-su-step{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;text-align:left;cursor:pointer;padding:14px 16px;border-right:1px solid #E7E4DF;border-bottom:3px solid transparent;background:#fff;font-family:inherit;transition:background 140ms cubic-bezier(.2,0,.2,1)}
.ldg-su-step .ldg-cy-sum{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}
.ldg-su-step:last-child{border-right:none}
.ldg-su-step:hover{background:#F2F0ED}
.ldg-su-step.on{background:#FAFAF8;border-bottom-color:#915959}
.ldg-su-step:focus-visible{outline:2px solid #915959;outline-offset:-2px}
.ldg-su-step.st-done .ldg-cy-n{background:#5F8A6B;border-color:#5F8A6B;color:#fff}
.ldg-su-step.st-done .ldg-cy-st{color:#5F8A6B}
.ldg-su-step.st-todo .ldg-cy-st{color:#8A6A1E}
.ldg-su-panel{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 18px;background:#FAFAF8;border-top:1px solid #D9D5CE;font-size:13px;line-height:1.5}
.ldg-su-panel b{color:#2B3847}
.ldg-su-pb{display:flex;gap:8px;flex-wrap:wrap}
.ldg-su-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.ldg-su-card{padding:16px 18px 18px;min-width:0}
.ldg-su-full{grid-column:1 / -1}
.ldg-su-ch{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.ldg-su-eb{color:#6B7887}
.ldg-su-t{font-size:16px;font-weight:700;color:#2B3847;margin-top:4px;letter-spacing:-.01em}
.ldg-su-muted{font-size:12.5px;color:#6B7887;line-height:1.5}
.ldg-su-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin:14px 0 10px}
.ldg-su-fields.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.ldg-su-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.ldg-su-fl{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B7887}
.ldg-su-f .fi{height:38px;width:100%;box-sizing:border-box}
.ldg-su-f .fi[disabled]{background:#F2F0ED;color:#6B7887}
.ldg-su-fs{text-align:right;font-variant-numeric:tabular-nums}
.ldg-su-chk{margin-top:2px;padding:8px 12px;border-radius:3px;font-size:12.5px;background:#F2F0ED;color:#6B7887;border-top:3px solid #D9D5CE}
.ldg-su-chk.ok{background:#E4EDE6;color:#2F5E3B;border-top-color:#5F8A6B}
.ldg-su-chk.warn{background:#F7EFDD;color:#8A6A1E;border-top-color:#CFA852}
.ldg-su-cf{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.ldg-su-links{font-size:12.5px}
.ldg-su-links a{color:#915959;font-weight:600;text-decoration:none}
.ldg-su-links a:hover{text-decoration:underline}
.ldg-su-navy{background:#2B3847;color:#F2F0ED;border-color:#2B3847;font-weight:700}
.ldg-su-navy:hover{background:#374759}
.ldg-su-add{display:flex;gap:8px;align-items:center;margin:12px 0 0}
.ldg-su-rows{display:flex;flex-direction:column;margin-top:10px}
.ldg-su-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:9px 0;border-bottom:1px solid #E7E4DF;font-size:13px}
.ldg-su-row:last-child{border-bottom:none}
.ldg-su-row b{color:#2B3847;font-weight:700;font-variant-numeric:tabular-nums}
.ldg-su-num{text-align:right;font-variant-numeric:tabular-nums}
.ldg-su-acts{text-align:right;white-space:nowrap;font-size:12.5px}
.ldg-su-acts a{color:#915959;font-weight:600;text-decoration:none}
.ldg-su-acts a:hover{text-decoration:underline}
.ldg-su-admin{margin-top:18px;border:1px solid #E3C6BE;border-top:3px solid #B3261E;border-radius:4px;background:#FBF3F1;overflow:hidden}
.ldg-su-ah{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid #E3C6BE}
.ldg-su-ah .ldg-su-muted{max-width:420px}
.ldg-su-ag{display:grid;grid-template-columns:1fr 1fr;background:#fff}
.ldg-su-ag>div{padding:16px 18px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.ldg-su-ag>div+div{border-left:1px solid #E7E4DF}
.ldg-su-ag b{color:#2B3847}
.ldg-su-danger{color:#B3261E;border-color:#B3261E66}
@media (max-width:1000px){.ldg-su-grid,.ldg-su-ag{grid-template-columns:1fr}.ldg-su-row7{grid-template-columns:repeat(4,minmax(0,1fr))}.ldg-su-step{border-bottom:1px solid #E7E4DF}.ldg-su-fields{grid-template-columns:1fr}.ldg-su-jn{text-align:left}}
/* ═══════════════ Comunicados (Accounting) — tickets kind=comunicado ═══════════════ */
.tk-st-disp { background:rgba(145,89,89,.14); color:#7a3d3d; }
.tk-kind { display:inline-block; font-size:10px; font-weight:800; letter-spacing:.4px; text-transform:uppercase; padding:1px 6px; border-radius:5px; background:rgba(207,168,82,.18); color:#7a5a12; margin-right:4px; vertical-align:middle; }
.tk-tl-declined { background:#915959; }
.tk-tl-link_revoked { background:var(--text-light); }
.tk-tl-reactivated { background:var(--green); }
.tk-tl-email_sent { background:#CFA852; }
.tk-tl-email_failed { background:var(--red); }
.tk-tl-delivery_sync { background:#4a78a3; }
.cp-chip.decl { background:rgba(145,89,89,.10); color:#7a3d3d; border-color:rgba(145,89,89,.3); }

.cmd-stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; }
.cmd-stat { background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:12px 14px; }
.cmd-stat-n { font-size:22px; font-weight:800; color:var(--text); line-height:1.1; font-variant-numeric:tabular-nums; }
.cmd-stat-l { font-size:11.5px; color:var(--text-light); margin-top:3px; }
.cmd-stat.is-active { border-color:var(--gold); box-shadow:0 0 0 2px rgba(207,168,82,.18); }
.cmd-stat[data-filter] { cursor:pointer; }
.cmd-table { width:100%; border-collapse:separate; border-spacing:0; font-size:12.5px; }
.cmd-table th { text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-light); padding:8px 10px; border-bottom:1px solid var(--border); white-space:nowrap; }
.cmd-table td { padding:10px 10px; border-bottom:1px solid var(--border); vertical-align:middle; }
.cmd-table tr:hover td { background:var(--surface-alt); }
.cmd-co { font-weight:600; color:var(--text); }
.cmd-co-code { font-size:11px; color:var(--text-light); font-variant-numeric:tabular-nums; }
.cmd-contact { font-size:12px; color:var(--text); }
.cmd-contact-mail { font-size:11px; color:var(--text-light); }
.cmd-contact-missing { font-size:11.5px; color:var(--red); font-weight:600; }
.cmd-when { font-size:11.5px; color:var(--text-mid); font-variant-numeric:tabular-nums; white-space:nowrap; }
.cmd-when small { display:block; color:var(--text-light); font-size:10.5px; }
.cmd-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.cmd-actions .btn { white-space:nowrap; }
.cmd-actions .btn:disabled, .cmd-actions .btn.is-off { opacity:.42; cursor:not-allowed; filter:grayscale(1); }
.cmd-tag-decl { display:inline-block; font-size:11px; font-weight:700; padding:3px 9px; border-radius:99px; background:rgba(145,89,89,.12); color:#7a3d3d; border:1px solid rgba(145,89,89,.25); white-space:nowrap; }
/* FUP final (26/10): prazo em andamento × vencido sem retorno */
.cmd-tag-fup { display:inline-block; font-size:11px; font-weight:700; padding:3px 9px; border-radius:99px; background:rgba(43,56,71,.08); color:var(--text-mid); border:1px solid var(--border); white-space:nowrap; }
.cmd-tag-fup.is-late { background:rgba(145,89,89,.12); color:#7a3d3d; border-color:rgba(145,89,89,.35); }
/* FUP final v2 (26/10): formulário à esquerda, prévia do e-mail à direita */
.cmd-fuf { display:grid; grid-template-columns:minmax(280px,1fr) minmax(320px,1.15fr); gap:18px; align-items:start; }
.cmd-fuf-form textarea { resize:vertical; }
.cmd-fuf-prev { border:1px solid var(--border); border-radius:10px; overflow:hidden; background:var(--surface-alt); }
.cmd-fuf-meta { padding:10px 12px; font-size:12px; color:var(--text-mid); border-bottom:1px solid var(--border); line-height:1.6; word-break:break-word; }
.cmd-fuf-frame { display:block; width:100%; height:62vh; border:0; background:#fff; }
@media (max-width: 900px) { .cmd-fuf { grid-template-columns:1fr; } .cmd-fuf-frame { height:50vh; } }
.cmd-tag-skip { display:inline-block; font-size:11px; font-weight:700; padding:3px 9px; border-radius:99px; background:var(--surface-alt); color:var(--text-mid); border:1px dashed var(--border); white-space:nowrap; max-width:260px; overflow:hidden; text-overflow:ellipsis; vertical-align:middle; }
.cmd-tag-deliv { display:inline-block; font-size:10.5px; padding:2px 7px; border-radius:99px; background:var(--surface-alt); border:1px solid var(--border); color:var(--text-mid); margin-left:4px; white-space:nowrap; }
.cmd-prev { display:flex; flex-direction:column; gap:10px; }
.cmd-prev-rcp { display:flex; flex-direction:column; gap:6px; padding:10px 12px; background:var(--surface-alt); border:1px solid var(--border); border-radius:10px; }
.cmd-prev-rcp label { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text); cursor:pointer; }
.cmd-prev-rcp label .m { color:var(--text-light); font-size:11.5px; }
.cmd-prev-rcp label .r { font-size:10px; text-transform:uppercase; letter-spacing:.3px; color:#7a5a12; background:rgba(207,168,82,.18); padding:1px 6px; border-radius:4px; }
.cmd-prev-rcp .noemail { color:var(--red); font-size:11px; }
.cmd-prev textarea.fi { font-family:inherit; line-height:1.5; }
.cmd-prev #cmd-body { min-height:220px; }
.cmd-prev-note { font-size:11.5px; color:var(--text-light); }
.cmd-btns-preview { display:flex; gap:8px; justify-content:center; margin:6px 0; }
.cmd-btn-mock { font-size:12px; font-weight:700; padding:8px 14px; border-radius:8px; }
.cmd-btn-mock.g { background:#915959; color:#fff; }
.cmd-btn-mock.w { background:#fff; color:#2B3847; border:2px solid #2B3847; }
@media (max-width:900px){ .cmd-table th:nth-child(4), .cmd-table td:nth-child(4) { display:none; } }

/* ── Início · painel de pendências (20/09): o apontamento do cartão abre a lista ── */
.home-mod-crit-btn { background:none; border:0; padding:0; margin:0; font:inherit; font-weight:inherit; cursor:pointer; text-align:left; border-radius:4px; text-decoration:underline; text-decoration-color:transparent; text-underline-offset:3px; transition:text-decoration-color .12s; }
.home-mod-crit-btn:hover { text-decoration-color:currentColor; }
.home-mod-crit-btn:focus-visible { outline:2px solid currentColor; outline-offset:2px; }
.home-pend { position:fixed; inset:0; z-index:600; display:none; }
.home-pend.on { display:block; }
.home-pend-bg { position:absolute; inset:0; background:rgba(24,29,38,.38); }
.home-pend-p { position:absolute; top:0; right:0; bottom:0; width:min(520px,96vw); background:var(--surface,#fff); box-shadow:-12px 0 40px rgba(24,29,38,.18); display:flex; flex-direction:column; }
.home-pend-h { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding:18px 20px 12px; border-bottom:1px solid var(--border); }
.home-pend-t { font-size:17px; font-weight:700; color:var(--text); letter-spacing:-.2px; margin-top:4px; }
.home-pend-s { font-size:12.5px; color:var(--text-light); margin-top:2px; }
.home-pend-x { width:32px; height:32px; border:0; background:none; font-size:22px; line-height:1; color:var(--text-mid); cursor:pointer; border-radius:6px; }
.home-pend-x:hover { background:var(--surface-alt); }
.home-pend-q { padding:10px 20px; border-bottom:1px solid var(--border-soft); }
.home-pend-q .fi { width:100%; height:34px; font-size:12.5px; box-sizing:border-box; }
.home-pend-b { flex:1; overflow-y:auto; }
.home-pend-f { padding:12px 20px; border-top:1px solid var(--border); display:flex; justify-content:flex-end; }
.home-pend-f:empty { display:none; }

/* ── CRM · WhatsApp (F2) ─────────────────────────────────────── */
.crm-wa-badge { position:absolute; right:10px; top:50%; transform:translateY(-50%); background:var(--green);
  color:#fff; font-size:9px; font-weight:800; min-width:17px; height:17px; border-radius:9px;
  display:inline-flex; align-items:center; justify-content:center; padding:0 4px; line-height:1; }
.crm-wa { display:grid; grid-template-columns:minmax(260px, 340px) minmax(0, 1fr); gap:0;
  border:1px solid var(--border); border-radius:var(--radius); background:var(--surface);
  height:calc(100vh - 190px); min-height:480px; overflow:hidden; }
.crm-wa-fila { display:flex; flex-direction:column; border-right:1px solid var(--border); min-height:0; }
.crm-wa-busca { padding:12px 12px 8px; }
.crm-wa-filtros { display:flex; flex-wrap:wrap; gap:6px; padding:0 12px 10px; margin:0; border-bottom:1px solid var(--border-soft); }
.crm-wa-filtros .crm-preset { font-size:11.5px; }
.crm-wa-n { display:inline-block; min-width:16px; padding:0 4px; border-radius:8px; background:var(--surface-alt);
  color:var(--text-mid); font-size:10px; font-weight:700; margin-left:3px; }
.crm-preset.on .crm-wa-n { background:rgba(0,0,0,.08); color:inherit; }
.crm-wa-aviso { margin:0 0 10px; padding:8px 12px; border-radius:8px; background:#FEF7E0; color:#7A5A00; font-size:12.5px; }
.crm-wa-lista { overflow-y:auto; flex:1; }
.crm-wa-lista-vazia { padding:28px 16px; text-align:center; color:var(--text-light); font-size:12.5px; }
.crm-wa-item { display:flex; gap:10px; width:100%; text-align:left; padding:10px 12px; border:0;
  border-bottom:1px solid var(--border-soft); background:transparent; cursor:pointer; font:inherit; color:var(--text); }
.crm-wa-item:hover { background:var(--surface-alt); }
.crm-wa-item.on { background:#f0f0f0; }
.crm-wa-item:focus-visible { outline:2px solid var(--blue2); outline-offset:-2px; }
.crm-wa-av { flex:0 0 34px; height:34px; border-radius:50%; background:#DCEFE4; color:var(--green);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; }
.crm-wa-item-c { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.crm-wa-item-l1, .crm-wa-item-l2 { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.crm-wa-item-l1 strong { font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-item.nova .crm-wa-item-l1 strong { font-weight:800; }
.crm-wa-hora { font-size:11px; color:var(--text-light); flex:0 0 auto; font-variant-numeric:tabular-nums; }
.crm-wa-item.nova .crm-wa-hora { color:var(--green); font-weight:700; }
.crm-wa-prev { font-size:12px; color:var(--text-mid); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-unread { flex:0 0 auto; min-width:18px; height:18px; border-radius:9px; background:var(--green); color:#fff;
  font-size:10px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; padding:0 5px; }
.crm-wa-item-l3 { font-size:11px; color:var(--text-light); }
.crm-wa-conv { display:flex; flex-direction:column; min-height:0; min-width:0; }
.crm-wa-conv > .crm-vazio { margin:auto; }
.crm-wa-cab { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;
  padding:12px 16px; border-bottom:1px solid var(--border); }
.crm-wa-cab-nome { font-size:15px; font-weight:700; }
.crm-wa-cab-nome a { color:var(--text); text-decoration:none; }
.crm-wa-cab-nome a:hover { text-decoration:underline; }
.crm-wa-cab-a { display:flex; gap:8px; align-items:center; }
.crm-wa-cab-a .fi { width:auto; min-width:170px; }
.crm-wa-msgs { flex:1; overflow-y:auto; padding:16px 18px; display:flex; flex-direction:column; gap:6px;
  background:var(--bg); }
.crm-wa-dia { text-align:center; margin:10px 0 4px; }
.crm-wa-dia span { font-size:11px; color:var(--text-light); background:var(--surface); border:1px solid var(--border);
  border-radius:10px; padding:2px 10px; }
.crm-wa-b { max-width:min(72%, 560px); padding:8px 11px 6px; border-radius:10px; font-size:13.5px; line-height:1.45;
  background:var(--surface); border:1px solid var(--border); align-self:flex-start; overflow-wrap:anywhere; }
.crm-wa-b.out { align-self:flex-end; background:#DCF3E4; border-color:#C5E8D2; }
.crm-wa-b.out.falhou { background:#FDECEA; border-color:#F5C2BC; }
.crm-wa-b.nota { align-self:stretch; max-width:none; background:#FEF7E0; border:1px dashed #D9B45A; }
.crm-wa-b-rot { display:block; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:#8A6100; margin-bottom:2px; }
.crm-wa-b-meta { display:block; text-align:right; font-size:10.5px; color:var(--text-light); margin-top:2px; font-variant-numeric:tabular-nums; }
.crm-wa-b.nota .crm-wa-b-meta { text-align:left; }
.crm-wa-lido { color:#1E88E5; }
.crm-wa-falha { color:var(--red); font-weight:700; }
.crm-wa-sim { color:#A15C07; font-weight:700; }
.crm-wa-comp { border-top:1px solid var(--border); padding:8px 12px 12px; background:var(--surface); }
.crm-wa-comp.nota { background:#FFFBEF; }
.crm-wa-modos { display:flex; align-items:center; gap:4px; margin-bottom:6px; flex-wrap:wrap; }
.crm-wa-modos button { border:0; background:transparent; font:inherit; font-size:12px; font-weight:600; color:var(--text-light);
  padding:4px 8px; border-radius:6px; cursor:pointer; }
.crm-wa-modos button.on { background:var(--surface-alt); color:var(--text); }
.crm-wa-comp.nota .crm-wa-modos button.on { background:#FEF0C7; color:#8A6100; }
.crm-wa-janela { margin-left:auto; font-size:11.5px; color:var(--text-light); }
.crm-wa-janela.perto { color:#A15C07; }
.crm-wa-janela.fechada { color:var(--red); }
.crm-wa-linha { display:flex; gap:8px; align-items:flex-end; }
.crm-wa-linha textarea { flex:1; resize:vertical; min-height:42px; max-height:200px; }
@media (max-width: 860px) {
  .crm-wa { grid-template-columns:1fr; height:auto; }
  .crm-wa-fila { border-right:0; border-bottom:1px solid var(--border); max-height:320px; }
  .crm-wa-conv { min-height:460px; }
  .crm-wa-b { max-width:88%; }
}
.crm-wa-card-bt { margin-left:6px; font-size:11px; font-weight:700; color:var(--green); text-decoration:none;
  border:1px solid #BFE3CC; border-radius:10px; padding:1px 7px; white-space:nowrap; }
.crm-wa-card-bt:hover { background:#E8F6EE; }
/* Importar histórico (conversa exportada do celular) */
.crm-wa-imp-passos { margin:0 0 12px; padding-left:18px; font-size:12.5px; color:var(--text-light); line-height:1.55; }
.crm-wa-imp-res { margin:12px 0 4px; font-size:13px; }
.crm-wa-imp-aut { display:flex; align-items:center; gap:6px; font-size:13px; padding:3px 0; cursor:pointer; }
.crm-wa-imp-barra { height:6px; border-radius:3px; background:var(--border); overflow:hidden; margin:14px 0 6px; }
.crm-wa-imp-barra span { display:block; height:100%; background:#25A55F; transition:width .2s; }
.crm-wa-imp-ok { margin-top:14px; padding:10px 12px; border-radius:8px; background:#E4F5EA; color:#185C35; font-size:13px; }
.crm-wa-imp-erro { margin-top:12px; padding:10px 12px; border-radius:8px; background:#FDECEA; color:#8A1F14; font-size:13px; }
.crm-wa-antigas { text-align:center; margin:2px 0 8px; }
.crm-wa-dono { margin-left:4px; }
.crm-wa-sem-dono { background:var(--bg); color:var(--text-light); border:1px dashed var(--border); }
.crm-wa-n-res { margin-top:10px; max-height:340px; overflow-y:auto; display:flex; flex-direction:column; gap:2px; }
.crm-wa-n-item { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:8px 4px; border-bottom:1px solid var(--border-soft); }
.crm-wa-n-fones { display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; }
.crm-wa-n-fone { border:1px solid #BFE3CC; background:#F2FAF5; color:var(--green); border-radius:14px; padding:4px 10px;
  font:inherit; font-size:12px; font-weight:600; cursor:pointer; font-variant-numeric:tabular-nums; }
.crm-wa-n-fone:hover { background:#E1F3E8; }
.crm-wa-b-mod { color:var(--green); }
.crm-wa-mod-prev { max-width:none; align-self:stretch; margin-top:4px; }
.crm-wa-mod-falta { color:var(--red); font-weight:700; }
.crm-wa-clipe { border:1px solid var(--border); background:var(--surface); border-radius:var(--radius-sm); width:38px; height:42px;
  cursor:pointer; font-size:16px; flex:0 0 auto; }
.crm-wa-clipe:hover { background:var(--surface-alt); }
.crm-wa-anexo { display:flex; align-items:center; gap:10px; padding:6px 8px; margin-bottom:6px; border:1px solid var(--border);
  border-radius:8px; background:var(--surface-alt); }
.crm-wa-anexo img { width:44px; height:44px; object-fit:cover; border-radius:6px; }
.crm-wa-anexo-n { display:flex; flex-direction:column; min-width:0; flex:1; font-size:12.5px; }
.crm-wa-anexo-n strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-anexo-x { border:0; background:transparent; cursor:pointer; color:var(--text-light); font-size:14px; padding:4px 6px; }
.crm-wa-b.foto { padding:0; overflow:hidden; position:relative; }
/* a lista é flex em coluna: sem isto a bolha com overflow:hidden encolhe e corta a foto */
.crm-wa-msgs > * { flex-shrink:0; }
.crm-wa-b.foto .crm-wa-leg { margin:0; padding:7px 10px 0; }
.crm-wa-b.foto .crm-wa-b-meta { padding:2px 10px 6px; }
/* sem legenda: horário por cima da foto, como no WhatsApp */
.crm-wa-b.foto.sem-leg .crm-wa-b-meta { position:absolute; right:6px; bottom:6px; margin:0; padding:2px 8px; border-radius:10px;
  background:rgba(0,0,0,.5); color:#fff; }
.crm-wa-b.foto.sem-leg .crm-wa-b-meta span { color:#fff; }
.crm-wa-img { display:block; }
.crm-wa-img img { display:block; width:260px; max-width:100%; max-height:320px; object-fit:cover; cursor:zoom-in;
  background:var(--surface-alt); min-height:140px; }
.crm-wa-img img[src] { min-height:0; }
/* visualizador de foto */
.crm-wa-lb { position:fixed; inset:0; z-index:9999; background:rgba(14,17,21,.9); display:flex; flex-direction:column; }
.crm-wa-lb-bar { display:flex; align-items:center; gap:6px; padding:12px 16px; color:#fff; }
.crm-wa-lb-n { flex:1; min-width:0; font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-lb-bar button { border:1px solid rgba(255,255,255,.25); background:transparent; color:#fff; border-radius:6px;
  padding:6px 12px; font:inherit; font-size:12.5px; font-weight:600; cursor:pointer; }
.crm-wa-lb-bar button:hover { background:rgba(255,255,255,.1); }
.crm-wa-lb-bar .crm-wa-lb-x { border:0; font-size:16px; padding:6px 10px; }
.crm-wa-lb-c { flex:1; min-height:0; display:flex; align-items:center; justify-content:center; padding:0 24px 24px; }
.crm-wa-lb-c img { max-width:100%; max-height:100%; object-fit:contain; border-radius:4px; box-shadow:0 10px 40px rgba(0,0,0,.4); }
.crm-wa-lb-load { color:rgba(255,255,255,.7); font-size:13px; }
.crm-wa-leg { margin-top:5px; }
/* cartão de arquivo */
.crm-wa-arq { display:flex; align-items:center; gap:10px; width:280px; max-width:100%; padding:7px 6px 7px 8px;
  border:1px solid var(--border); border-radius:10px; background:var(--surface); cursor:pointer; text-align:left; }
.crm-wa-b.out .crm-wa-arq { border-color:#C5E8D2; background:rgba(255,255,255,.7); }
.crm-wa-arq:hover { border-color:var(--border-strong); }
.crm-wa-arq:focus-visible { outline:2px solid var(--blue2); outline-offset:1px; }
.crm-wa-arq-selo { flex:0 0 32px; height:38px; border-radius:5px; display:flex; align-items:flex-end; justify-content:center;
  padding-bottom:6px; color:#fff; font-size:9.5px; font-weight:800; letter-spacing:.04em;
  clip-path:polygon(0 0, 70% 0, 100% 24%, 100% 100%, 0 100%); }
.crm-wa-arq-pdf { background:#C8412F; } .crm-wa-arq-doc { background:#2F63B8; } .crm-wa-arq-xls { background:#1F7A47; }
.crm-wa-arq-img { background:#0E7C86; }
.crm-wa-arq-ic { align-items:center; padding-bottom:0; }
.crm-wa-arq-mid { background:#5B4FA8; font-size:13px; align-items:center; padding-bottom:0; } .crm-wa-arq-out { background:#6B7480; }
.crm-wa-arq-t { flex:1; min-width:0; display:flex; flex-direction:column; gap:1px; }
.crm-wa-arq-n { font-size:13px; font-weight:600; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-arq-i { font-size:11px; color:var(--text-light); font-variant-numeric:tabular-nums; }
.crm-wa-arq-bx { flex:0 0 30px; height:30px; border-radius:50%; border:0; background:transparent; color:var(--text-mid);
  display:flex; align-items:center; justify-content:center; cursor:pointer; }
.crm-wa-arq-bx:hover { background:var(--surface-alt); color:var(--text); }
/* WhatsApp · pacote de uso diário */
.crm-wa-busca-info { padding:8px 12px; font-size:11.5px; color:var(--text-light); border-bottom:1px solid var(--border-soft); }
.crm-wa-prev mark { background:#FEF0C7; color:inherit; padding:0 1px; border-radius:2px; }
.crm-wa-pres { padding:7px 16px; font-size:12.5px; background:#EFF6FF; color:#1E4E8C; border-bottom:1px solid var(--border); }
.crm-wa-pres.dig { background:#FEF3C7; color:#8A5A00; }
.crm-wa-comp { position:relative; }
.crm-wa-rr { position:absolute; left:12px; right:12px; bottom:calc(100% - 4px); max-height:280px; overflow-y:auto; z-index:20;
  background:var(--surface); border:1px solid var(--border-strong); border-radius:10px; box-shadow:0 10px 30px rgba(0,0,0,.12); }
.crm-wa-rr-i { display:grid; grid-template-columns:auto 1fr; column-gap:10px; row-gap:1px; width:100%; text-align:left; border:0;
  background:transparent; padding:8px 12px; cursor:pointer; font:inherit; border-bottom:1px solid var(--border-soft); }
.crm-wa-rr-i.on, .crm-wa-rr-i:hover { background:var(--surface-alt); }
.crm-wa-rr-a { font-family:ui-monospace, Menlo, monospace; font-size:12px; font-weight:700; color:var(--green); }
.crm-wa-rr-t { font-size:13px; font-weight:600; color:var(--text); }
.crm-wa-rr-p { grid-column:2; font-size:11.5px; color:var(--text-light); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-wa-rr-vazio { padding:14px 12px; font-size:12.5px; color:var(--text-light); }
.crm-wa-rr-pe { display:flex; justify-content:space-between; gap:10px; padding:6px 12px; font-size:11px; color:var(--text-light);
  background:var(--surface-alt); position:sticky; bottom:0; }
.crm-wa-rr-pe a { color:var(--blue2); font-weight:700; text-decoration:none; }
.crm-wa-rr-lista { display:flex; flex-direction:column; gap:2px; max-height:420px; overflow-y:auto; }
.crm-wa-rr-li { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding:10px 4px; border-bottom:1px solid var(--border-soft); font-size:13px; }
.crm-wa-rr-ac { display:flex; gap:6px; flex:0 0 auto; }
/* WhatsApp · player de áudio (como no app) */
.crm-wa-b.audio { min-width:260px; max-width:320px; }
.crm-wa-aud { display:flex; align-items:center; gap:10px; padding:2px 0; }
.crm-wa-aud-play { flex:0 0 38px; height:38px; border-radius:50%; border:0; cursor:pointer; display:flex; align-items:center; justify-content:center;
  background:var(--green); color:#fff; }
.crm-wa-aud-play:hover { filter:brightness(1.08); }
.crm-wa-aud-play:focus-visible { outline:2px solid var(--blue2); outline-offset:2px; }
.crm-wa-aud.carregando .crm-wa-aud-play { opacity:.55; }
.crm-wa-aud-mid { flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
.crm-wa-aud-bar { position:relative; height:16px; cursor:pointer; }
.crm-wa-aud-bar::before { content:""; position:absolute; left:0; right:0; top:7px; height:3px; border-radius:2px; background:rgba(0,0,0,.14); }
.crm-wa-aud-fill { position:absolute; left:0; top:7px; height:3px; width:0; border-radius:2px; background:var(--green); }
.crm-wa-aud-knob { position:absolute; top:3px; left:0; width:11px; height:11px; margin-left:-5px; border-radius:50%; background:var(--green);
  box-shadow:0 0 0 2px var(--surface); }
.crm-wa-b.out .crm-wa-aud-knob { box-shadow:0 0 0 2px #DCF3E4; }
.crm-wa-aud-t { font-size:11px; color:var(--text-light); font-variant-numeric:tabular-nums; }
.crm-wa-aud-vel { flex:0 0 auto; border:0; border-radius:10px; padding:2px 7px; font:inherit; font-size:11px; font-weight:800;
  background:rgba(0,0,0,.07); color:var(--text-mid); cursor:pointer; font-variant-numeric:tabular-nums; }
.crm-wa-aud-vel:hover { background:rgba(0,0,0,.12); }
/* WhatsApp · gravação de áudio */
.crm-wa-mic { font-size:15px; }
.crm-wa-grav { display:flex; align-items:center; gap:10px; padding:8px 10px; margin-bottom:6px; border-radius:8px;
  background:#FDECEA; border:1px solid #F5C2BC; }
.crm-wa-grav-dot { width:10px; height:10px; border-radius:50%; background:var(--red); animation:crm-wa-pisca 1s infinite; }
@keyframes crm-wa-pisca { 50% { opacity:.25; } }
@media (prefers-reduced-motion: reduce) { .crm-wa-grav-dot { animation:none; } }
.crm-wa-grav-t { font-weight:800; font-variant-numeric:tabular-nums; color:var(--red); }
.crm-wa-grav-txt { flex:1; font-size:12px; color:var(--text-mid); }
   LIVROS ESTATUTÁRIOS (ROM / ROD) — Fase 4 do livro societário.

   O layout é TRANSCRIÇÃO dos registros oficiais emitidos pela BVI Financial
   Services Commission, não desenho próprio: a familiaridade com o documento que
   o time já lê todo dia é o motivo de a leitura existir neste formato.

   As regras do registro que o AGENTE emite (título centrado, faixa em caixa,
   cabeçalho escuro) viveram aqui até 21/09 e saíram quando o ROM e o ROD foram
   alinhados à FSC — CSS morto é tão ruim quanto código morto.

   Por isso as regras aqui destoam do resto do portal de propósito — borda
   preta fina em vez de --border, cabeçalho escuro no ROD, serifa no título.
   É documento, e tem de parecer documento; suavizar para o visual das outras
   grades desfaz exatamente o que se quer.
   ============================================================ */
.corp-reg { background:#fff; padding:26px 28px 34px; }


/* Cabeçalho do registro da BVI FSC: autoridade à esquerda, nome do registro à
   direita, e os pares de identificação logo abaixo. Não é o cabeçalho do agente
   de registro, que vinha em caixa — são documentos diferentes. */
.corp-reg-auth { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:13px; font-weight:700; color:#111; }
.corp-reg-auth .kind { font-size:14px; text-align:right; }
.corp-reg-id { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:2px 26px; margin:10px 0 0; font-size:11.5px; color:#111; }
.corp-reg-id div { display:flex; gap:8px; }
.corp-reg-id dt { width:104px; flex:none; }
.corp-reg-id dd { margin:0; font-weight:600; }
.corp-reg-sec { margin:14px 0 6px; font-size:11px; letter-spacing:.09em; font-weight:700; color:#111; }
.corp-reg-tbl td.sn { text-align:center; }

.corp-reg-tbl { width:100%; border-collapse:collapse; font-size:11px; color:#111; }
.corp-reg-tbl th, .corp-reg-tbl td { border:1px solid #111; padding:5px 6px; vertical-align:top; text-align:left; }
.corp-reg-tbl th { font-weight:700; font-size:10.5px; line-height:1.25; }
.corp-reg-tbl td.num { text-align:right; }
.corp-reg-tbl tbody tr { min-height:64px; }
.corp-reg-tbl td { height:52px; }

/* Entrada encerrada continua no livro — lançamento não some (princípio 2).
   Esmaecida, nunca oculta. */
.corp-reg-tbl tr.encerrada td { color:#6b7280; background:#fafafa; }

.corp-reg-foot { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:10.5px; color:#111; margin-top:10px; }
.corp-reg-vazio { text-align:center; color:var(--text-light); font-size:12px; padding:34px 10px; }

/* A legenda das colunas que o portal ainda não captura. Fica FORA da moldura
   do documento: dentro dela, viraria conteúdo do livro. */
.corp-reg-lacuna { margin-top:16px; border-left:3px solid #d8c48a; background:#fdfaf1;
  padding:10px 12px; font-size:11.5px; line-height:1.6; color:var(--text-mid); }
.corp-reg-lacuna b { color:var(--text); }

/* A barra de lancamento do livro fica FORA da moldura do documento: o
   documento continua parecendo documento, e a porta formal de member, diretor
   e beneficial owner e esta. */
.corp-reg-acoes { display:flex; align-items:center; justify-content:flex-end; gap:6px; flex-wrap:wrap; padding:10px 0 12px; }
.corp-reg-acoes:empty { display:none; }
.corp-reg-acoes-rotulo { font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--text-mid); margin-right:4px; }
.corp-reg-acoes-nota { font-size:12px; color:var(--text-mid); }
/* Papel de livro na aba de vinculos: chip que LEVA ao livro. */
.cp-chip.livro { cursor:pointer; background:#eef3fb; color:#2f4f7f; border-color:#c9d8ee; }
.cp-chip.livro:hover { background:#dfe9f8; }
/* Papel de livro travado no modal de vinculo: aparece, nao se desmarca. */
.cp-tag-chip.locked { opacity:.85; border-style:dashed !important; }
/* Rodape de uma linha da grade (CLAUDE.md): a explicacao mora no manual/livro. */
.cprofile-rodape { font-size:11px; color:var(--text-mid); padding:8px 0 0; }
.cprofile-rodape a { color:var(--blue2); text-decoration:none; }
.corp-reg-switch { display:inline-flex; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.corp-reg-switch button { border:0; background:#fff; padding:7px 16px; font-size:12px; font-weight:600;
  color:var(--text-mid); cursor:pointer; }
.corp-reg-switch button.active { background:#2f6bde; color:#fff; }
=======
/* grade de permissões por módulo (etapa 3, 23/09) */
.pg-help { font-size:10.5px; color:var(--text-light); margin-top:2px; line-height:1.4; }
.pg-help b { color:var(--text-mid); font-weight:700; }
.pg-coll { font-size:9.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.pg-row { grid-template-columns:1fr 64px 64px 84px; }
.pg-badge { font-size:10.5px; }

/* =====================================================

/* F7 — Prévia DIRPF (overlay somente-leitura no formato do relatório) */
/* ── F7 · Relatórios Fiscais (#page-fiscal) — lista por empresa + documento
   no LAYOUT DO RELATÓRIO OFICIAL (capa, disclaimer, fichas 3/página A4,
   contracapa). Folha própria (.fsc-page): mesma métrica da .ldg-doc-page do
   F6, mas sem depender do escopo #page-ledger. ─────────────────────────── */
.fsc-warn { background:#fdf6ec; border:1px solid #ecd9b4; border-left:3px solid #c89a3e; border-radius:8px; padding:10px 14px; font-size:12.5px; color:#6b5415; margin-bottom:14px; max-width:794px; }
.fsc-intro { font-size:12.5px; color:var(--text-light,#7C848D); max-width:720px; margin-bottom:16px; line-height:1.55; }
.fsc-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; max-width:1100px; }
.fsc-card { text-align:left; background:var(--surface,#fff); border:1px solid var(--border-strong,#DDD5C6); border-radius:10px; padding:14px 16px; cursor:pointer; font-family:inherit; transition:box-shadow .12s,border-color .12s; }
.fsc-card:hover { border-color:var(--bordo,#8E3B46); box-shadow:0 4px 16px rgba(36,48,64,.08); }
.fsc-card-name { font-weight:700; font-size:13.5px; color:var(--text,#2B3847); margin-bottom:3px; }
.fsc-card-meta { font-size:11px; color:var(--text-light,#7C848D); margin-bottom:9px; }
.fsc-badge { display:inline-block; font-size:9.5px; font-weight:800; letter-spacing:.8px; padding:3px 8px; border-radius:20px; }
.fsc-badge-t { background:#e8f2e8; color:#2e6b36; border:1px solid #bcd9bf; }
.fsc-badge-o { background:#eef1f6; color:#3d4c66; border:1px solid #c9d2e0; }
.fsc-badge-n { background:#fdf6ec; color:#8a6a1d; border:1px solid #ecd9b4; text-transform:none; letter-spacing:.2px; }
.fsc-bar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; border:1px solid var(--border-strong,#DDD5C6); border-radius:7px; background:var(--surface,#fff); padding:4px 8px; margin-bottom:14px; max-width:794px; }
.fsc-bar-name { font-weight:800; font-size:13.5px; color:var(--text,#2B3847); }
.fsc-bar-tag { font-size:10px; color:var(--text-light,#7C848D); }
.fsc-tab-on { color:var(--bordo,#8E3B46) !important; box-shadow:inset 0 -2px 0 var(--bordo,#8E3B46); border-radius:5px 5px 0 0 !important; }
.fsc-co-card { grid-template-columns:2fr auto; }
.fsc-card-btns { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.fsc-rel-btn { background:var(--surface,#fff); border:1px solid var(--bordo,#8E3B46); color:var(--bordo,#8E3B46); border-radius:6px; padding:7px 13px; font-size:12px; font-weight:700; cursor:pointer; font-family:inherit; transition:background .12s; }
.fsc-rel-btn:hover { background:rgba(142,59,70,.07); }
.fsc-rel-off { border-color:var(--border-strong,#DDD5C6); color:var(--text-light,#7C848D); font-weight:600; }
.fsc-rel-off:hover { background:rgba(120,105,80,.06); }
.fsc-rel-off::after { content:" · em breve"; font-size:10px; font-weight:400; }
.fsc-rel-dis { border-color:var(--border,#E9E4DA); color:#B9B3A8; background:var(--surface,#fff); cursor:not-allowed; font-weight:600; }
.fsc-rel-dis:hover { background:var(--surface,#fff); }
.fsc-tab-dis { color:#B9B3A8 !important; cursor:not-allowed !important; }
/* ⚙ Setup fiscal — no formato do próprio relatório (handoff v6: Urbanist,
   eyebrow bordô, tabela com régua navy 2px, números tabulares) */
/* os blocos do Setup são FOLHAS do relatório (section.page = Urbanist/papel),
   com altura livre — não forçam o A4 completo */
.fsc-doc section.page.fsc-setup-page { min-height:0; padding:44px 48px 48px; background:#fff; margin-bottom:18px; }
.fsc-setup-t { margin-top:22px; font-size:26px; font-weight:300; letter-spacing:-.01em; line-height:1.15; color:#2B3847; }
.fsc-setup-s { font-size:11.5px; color:#6B7887; line-height:1.6; margin-top:8px; margin-bottom:4px; max-width:78ch; text-align:justify; }
.fsc-setup-tbl { margin-top:12px; border-top:2px solid #2B3847; }
.fsc-setup-grid { display:grid; grid-template-columns:2fr 110px 160px 190px; gap:12px; align-items:center; padding:9px 0; border-bottom:1px solid #E7E4DF; font-size:12px; }
.fsc-setup-head { padding:7px 0; font-size:9.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:#6B7887; }
.fsc-setup-num { font-weight:700; color:#915959; margin-right:8px; }
.fsc-setup-nome { font-weight:600; color:#2B3847; }
.fsc-setup-val { text-align:right; font-variant-numeric:tabular-nums; }
.fsc-setup-grid input.fi { border:1px solid #9AA4B0; border-radius:3px; background:#fff; padding:6px 8px; font-size:11.5px; text-align:right; font-family:inherit; font-variant-numeric:tabular-nums; }
.fsc-setup-item { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:9px 0; border-bottom:1px solid #E7E4DF; font-size:12px; }
.fsc-setup-item .fsc-setup-sub { font-size:10.5px; color:#6B7887; margin-top:2px; }
.fsc-setup-acts { display:flex; gap:6px; }
.fsc-setup-acts button { background:none; border:1px solid #E7E4DF; border-radius:3px; padding:5px 10px; font-size:10.5px; font-weight:600; color:#2B3847; cursor:pointer; font-family:inherit; }
.fsc-setup-acts button:hover { border-color:#915959; color:#915959; }
.fsc-setup-add { margin-top:12px; }
.fsc-doc { max-width:794px; }
/* Rendimentos por ativo (20/10): atribuição dividendo/juros/retenção → ativo,
   acima da prévia; fora das folhas (o documento nunca carrega tela de sistema) */
.fsc-rend { max-width:980px; background:var(--surface,#fff); border:1px solid var(--border-strong,#DDD5C6); border-radius:7px; margin-bottom:12px; }
.fsc-rend-head { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; padding:10px 14px; cursor:pointer; font-size:12.5px; color:var(--text,#2B3847); }
.fsc-rend-car { color:#915959; width:10px; }
.fsc-rend-cnt { font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:20px; background:#e8f2e8; color:#2e6b36; border:1px solid #bcd9bf; }
.fsc-rend-cnt-w { background:#fdf6ec; color:#8a6a1d; border-color:#ecd9b4; }
.fsc-rend-sub { font-size:11px; color:var(--text-light,#7C848D); }
.fsc-rend-body { padding:0 14px 14px; }
.fsc-rend-tools { display:flex; align-items:center; gap:8px; margin:10px 0; }
.fsc-rend-live { font-size:11.5px; color:#6B7887; }
.fsc-rend-wrap { overflow-x:auto; }
.fsc-rend-t { width:100%; border-collapse:collapse; font-size:11.5px; color:#2B3847; }
.fsc-rend-t th { text-align:left; font-size:9.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:#6B7887; padding:7px 8px; border-bottom:2px solid #2B3847; }
.fsc-rend-t td { padding:6px 8px; border-bottom:1px solid #E7E4DF; vertical-align:top; }
.fsc-rend-t tr.fsc-rend-sug td { background:#FBF3E2; }
.fsc-rend-tag { font-size:10px; color:#8A5A12; margin-top:3px; }
.fsc-rend-sub2 { font-size:10px; color:#6B7887; margin-top:2px; }
/* casca das páginas do Relatório (design handoff v5): A4 794×1123, Urbanist,
   sombra só na tela — o conteúdo de cada página vem inline do fiscal-report.js */
.fsc-doc section.page { display:block; width:794px; min-height:1123px; margin:0 auto 18px; border-radius:2px;
  box-shadow:0 12px 32px rgba(43,56,71,.18); font-family:'Urbanist',system-ui,sans-serif;
  color:#3F4C5C; font-variant-numeric:tabular-nums; -webkit-font-smoothing:antialiased;
  -webkit-print-color-adjust:exact; print-color-adjust:exact; }
.fsc-doc section.page * { box-sizing:border-box; }
.fsc-doc section.page img { display:block; }
@media print { .fsc-doc section.page { box-shadow:none; margin:0; page-break-after:always; } }
/* Imprimir / PDF do relatório (20/10): só as folhas — o #fsc-doc vai para a
   raiz do body no beforeprint (app.js) e todo o resto some */
@media print {
  html:has(body.fsc-printing){margin:0;padding:0;width:210mm}
  body.fsc-printing{margin:0;padding:0;width:210mm;background:#fff}
  body.fsc-printing > :not(#fsc-doc){display:none !important}
  /* a regra global de impressão do 4Ledger esconde tudo (body * visibility:hidden)
     e só libera #ledger-content — sem isto a folha saía EM BRANCO (teste 20/10) */
  body.fsc-printing #fsc-doc, body.fsc-printing #fsc-doc *{visibility:visible !important}
  body.fsc-printing #fsc-doc{margin:0;padding:0;width:210mm;background:none;box-shadow:none}
  body.fsc-printing .fsc-doc section.page{width:210mm;min-height:297mm;break-after:page}
  body.fsc-printing .fsc-doc section.page:last-child{page-break-after:auto;break-after:auto}
}

.ldg-ai-warn{margin-top:10px;padding:10px 12px;border-radius:8px;background:#FFF4E0;border:1px solid #E8B45A;color:#6B4A10;font-size:12.5px;line-height:1.45}
.ldg-ai-warn label{display:flex;gap:8px;align-items:center;margin-top:8px;font-weight:700;cursor:pointer}

/* ── Assistente do portal (10/10/2026) — assets/assistant-boot.js + assistant.js ── */
#asst-fab{position:fixed;right:22px;bottom:22px;z-index:900;width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;
  background:var(--bordo,#915959);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 24px rgba(26,29,36,.22),0 2px 6px rgba(26,29,36,.12);transition:transform .15s ease,box-shadow .15s ease}
#asst-fab:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(26,29,36,.26)}
body.asst-on #asst-fab{opacity:0;pointer-events:none}
#asst-panel{position:fixed;right:18px;bottom:18px;z-index:901;width:460px;max-width:calc(100vw - 24px);height:min(760px,calc(100vh - 36px));
  background:var(--surface,#fff);border-radius:16px;box-shadow:0 18px 50px rgba(26,29,36,.28);display:none;flex-direction:column;overflow:hidden;
  border:1px solid rgba(26,29,36,.08);font-size:13.5px;color:var(--navy,#1a1d24)}
#asst-panel.is-open{display:flex}
.asst-head{display:flex;align-items:center;gap:4px;padding:12px 10px 12px 16px;background:var(--navy,#1a1d24);color:#fff}
.asst-ttl{flex:1;display:flex;flex-direction:column;line-height:1.25}
.asst-ttl b{font-size:14.5px;letter-spacing:.02em}
.asst-ttl span{font-size:10.5px;opacity:.65}
.asst-hb{background:none;border:none;color:#fff;font-size:18px;width:32px;height:32px;border-radius:8px;cursor:pointer;opacity:.85}
.asst-hb:hover{background:rgba(255,255,255,.12);opacity:1}
.asst-histbox{max-height:260px;overflow:auto;border-bottom:1px solid #E7E4DF;padding:6px;background:#FAF8F5}
.asst-hi{display:flex;align-items:stretch;border-radius:8px}
.asst-hi.is-on,.asst-hi:hover{background:#F1ECE6}
.asst-hi-t{flex:1;text-align:left;background:none;border:none;padding:7px 9px;cursor:pointer;font-size:12.5px;color:inherit;display:flex;flex-direction:column}
.asst-hi-t small{color:#8A8F98;font-size:10.5px}
.asst-hi-x{background:none;border:none;color:#8A8F98;cursor:pointer;font-size:16px;padding:0 9px}
.asst-body{flex:1;overflow:auto;padding:14px 14px 6px;background:#FBFAF8}
.asst-m{margin:0 0 12px;line-height:1.55;word-wrap:break-word}
.asst-u{margin-left:48px;background:var(--navy,#1a1d24);color:#fff;padding:9px 12px;border-radius:14px 14px 4px 14px;white-space:normal}
.asst-a{background:#fff;border:1px solid #ECE8E2;padding:11px 13px;border-radius:14px 14px 14px 4px}
.asst-run{display:flex;align-items:center;gap:10px;color:#6B7887;font-size:12.5px}
.asst-err{border-color:#E5B8B0;background:#FCF3F1;color:#8E3B2E}
.asst-dots{display:inline-flex;gap:3px}
.asst-dots i{width:6px;height:6px;border-radius:50%;background:var(--bordo,#915959);animation:asstb 1.1s infinite ease-in-out}
.asst-dots i:nth-child(2){animation-delay:.15s}.asst-dots i:nth-child(3){animation-delay:.3s}
@keyframes asstb{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.asst-md h3,.asst-md h4,.asst-md h5,.asst-md h6{font-size:13.5px;margin:12px 0 4px;color:var(--bordo,#915959);letter-spacing:.01em}
.asst-md h3:first-child,.asst-md h4:first-child{margin-top:0}
.asst-md p{margin:0 0 8px}.asst-md ul,.asst-md ol{margin:0 0 8px;padding-left:18px}.asst-md li{margin:2px 0}
.asst-md code{background:#F1ECE6;padding:0 4px;border-radius:4px;font-size:12px}
.asst-md hr{border:none;border-top:1px solid #ECE8E2;margin:10px 0}
.asst-tw{overflow-x:auto;margin:4px 0 10px}
.asst-md table{border-collapse:collapse;font-size:12px;min-width:100%}
.asst-md th,.asst-md td{border-bottom:1px solid #ECE8E2;padding:4px 7px;text-align:left;vertical-align:top}
.asst-md th{font-weight:700;color:#6B7887;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.asst-lk{color:var(--bordo,#915959);font-weight:600;text-decoration:none;border-bottom:1px dotted currentColor}
.asst-meta{margin-top:6px;font-size:10.5px;color:#9A9FA8;display:flex;align-items:center;gap:6px}
.asst-meta button{background:none;border:1px solid #E2DED8;border-radius:6px;font-size:10.5px;padding:1px 7px;cursor:pointer;color:#6B7887}
.asst-empty{padding:18px 4px}
.asst-empty-t{font-size:17px;font-weight:700;margin-bottom:4px}
.asst-muted{color:#8A8F98;font-size:12px;margin-bottom:12px}
.asst-sug{display:block;width:100%;text-align:left;background:#fff;border:1px solid #ECE8E2;border-radius:10px;padding:9px 11px;margin:0 0 7px;cursor:pointer;font-size:12.5px;color:inherit;line-height:1.4}
.asst-sug:hover{border-color:var(--bordo,#915959)}
.asst-foot{display:flex;gap:8px;align-items:flex-end;padding:10px 12px 12px;border-top:1px solid #ECE8E2;background:#fff}
.asst-foot textarea{flex:1;resize:none;border:1px solid #DCD7D0;border-radius:10px;padding:9px 11px;font:inherit;font-size:13px;max-height:160px;outline:none}
.asst-foot textarea:focus{border-color:var(--bordo,#915959)}
.asst-send{width:38px;height:38px;border-radius:10px;border:none;background:var(--bordo,#915959);color:#fff;font-size:15px;cursor:pointer}
.asst-acts{margin-top:10px;border-top:1px dashed #E2DED8;padding-top:8px}
.asst-acts-t{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#9A9FA8;margin-bottom:6px}
.asst-act{border:1px solid #ECE8E2;border-radius:10px;padding:8px 10px;margin-bottom:7px;background:#FDFCFA}
.asst-act.is-applied{border-color:#BFD8C6;background:#F3F9F4}.asst-act.is-dismissed{opacity:.6}.asst-act.is-failed{border-color:#E5B8B0}
.asst-act-h{display:flex;justify-content:space-between;gap:8px;font-size:12.5px}
.asst-act-h span{color:#6B7887;font-size:11px;white-space:nowrap}
.asst-act-d{font-size:12px;margin-top:4px;color:#3A4250}
.asst-act-m{font-size:11px;margin-top:4px;color:#8A8F98;font-style:italic}
.asst-act-oc{font-size:11px;margin-top:6px;color:#4C7A5A;font-weight:600}
.asst-act-b{display:flex;gap:6px;margin-top:7px}
.asst-act-b button{border:1px solid #DCD7D0;background:#fff;border-radius:7px;padding:3px 10px;font-size:11.5px;cursor:pointer}
.asst-act-b .asst-ok{background:var(--bordo,#915959);border-color:var(--bordo,#915959);color:#fff}
/* atalhos do assistente */
.asst-hb-at{width:auto;padding:0 10px;font-size:12px;font-weight:600;border:1px solid rgba(255,255,255,.25)}
.asst-menubox{max-height:min(420px,55vh);overflow:auto;border-bottom:1px solid #E7E4DF;padding:8px;background:#FAF8F5}
.asst-mc{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#9A9FA8;margin:8px 4px 4px}
.asst-mc:first-child{margin-top:2px}
.asst-mi{display:block;width:100%;text-align:left;background:#fff;border:1px solid #ECE8E2;border-radius:9px;padding:7px 10px;margin:0 0 5px;cursor:pointer;color:inherit;font-size:12.5px}
.asst-mi:hover{border-color:var(--bordo,#915959)}
.asst-mi span{display:block;font-size:11px;color:#8A8F98;margin-top:1px}
.asst-mi-pend{border-style:dashed;margin-top:10px}
.asst-mf label{display:flex;flex-direction:column;gap:3px;font-size:11.5px;color:#6B7887;margin:0 4px 8px}
.asst-mf .fi{font:inherit;font-size:13px;padding:6px 8px;border:1px solid #DCD7D0;border-radius:8px;color:var(--navy,#1a1d24)}
.asst-mf-b{display:flex;justify-content:flex-end;gap:6px;margin:4px}
.asst-mf-b button{border:1px solid #DCD7D0;background:#fff;border-radius:7px;padding:4px 12px;font-size:12px;cursor:pointer}
.asst-mf-b .asst-ok{background:var(--bordo,#915959);border-color:var(--bordo,#915959);color:#fff}
.asst-gap{background:#fff;border:1px solid #ECE8E2;border-radius:9px;padding:7px 10px;margin:0 0 5px;font-size:12.5px}
.asst-gap span{display:block;font-size:11px;color:#6B7887;margin-top:2px}
.asst-gap small{display:block;font-size:10.5px;color:#9A9FA8;margin-top:2px}

/* painel de custo da IA (superadmin) */
.asst-cost-nav{display:flex;align-items:center;justify-content:space-between;margin:2px 2px 8px}
.asst-cost-nav button{border:1px solid #DCD7D0;background:#fff;border-radius:7px;width:28px;height:26px;cursor:pointer}
.asst-cost-tot{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.asst-cost-tot div,.asst-cost-grid div{background:#fff;border:1px solid #ECE8E2;border-radius:9px;padding:7px 9px}
.asst-cost-tot small,.asst-cost-grid small{display:block;font-size:10px;color:#8A8F98;text-transform:uppercase;letter-spacing:.05em}
.asst-cost-tot b{font-size:15px}.asst-cost-grid b{font-size:14px}
.asst-cost-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.asst-cost-grid span{display:block;font-size:10.5px;color:#8A8F98}
.asst-cost-bar{height:6px;border-radius:4px;background:#ECE8E2;margin-top:8px;overflow:hidden}
.asst-cost-bar i{display:block;height:100%;background:var(--bordo,#915959)}
.asst-cbars{display:flex;align-items:flex-end;gap:3px;height:74px;padding:4px 2px;overflow-x:auto}
.asst-cb{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:14px}
.asst-cb i{display:block;width:10px;background:var(--navy,#1a1d24);border-radius:3px 3px 0 0}
.asst-cb span{font-size:8.5px;color:#9A9FA8;margin-top:2px}
.asst-ct{width:100%;border-collapse:collapse;font-size:11.5px;background:#fff}
.asst-ct th,.asst-ct td{border-bottom:1px solid #ECE8E2;padding:4px 6px;text-align:right}
.asst-ct th:first-child,.asst-ct td:first-child{text-align:left}
.asst-ct th{font-size:10px;color:#8A8F98;text-transform:uppercase}

/* relatórios do assistente */
.asst-reps{margin-top:10px}
.asst-rep{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #DCE6EE;background:#F5F9FC;border-radius:10px;padding:8px 10px;margin-bottom:6px;font-size:12.5px}
.asst-rep span{display:block;font-size:10.5px;color:#7A8796}
.asst-rep-b{display:flex;gap:6px}
.asst-rep-b button{border:1px solid #DCD7D0;background:#fff;border-radius:7px;padding:3px 10px;font-size:11.5px;cursor:pointer}
.asst-rep-b .asst-ok{background:var(--navy,#1a1d24);border-color:var(--navy,#1a1d24);color:#fff}
@media (max-width:640px){
  #asst-panel{right:0;bottom:0;width:100vw;max-width:100vw;height:100vh;border-radius:0}
  #asst-fab{right:16px;bottom:16px}
}
@media print{#asst-fab,#asst-panel{display:none!important}}
/* Imposto estimado — Lei 14.754 na Revisão (opaca, 19/10 caso MPV) */
.ldg-tx-card{margin-top:12px}
.ldg-tx-t{border-collapse:collapse;font-size:13px;color:#2B3847;font-variant-numeric:tabular-nums;margin-top:6px}
.ldg-tx-t td{padding:4px 24px 4px 0}
.ldg-tx-t td:last-child{padding-right:0;text-align:right;white-space:nowrap}
.ldg-tx-t tr.b td{font-weight:700;border-top:1.5px solid #2B3847;padding-top:6px}
.ldg-tx-t .ldg-rv-hint{margin-left:4px}
.ldg-tx-w{font-size:12.5px;color:#8A5A12;background:#FBF3E2;border-radius:3px;padding:8px 10px;margin-top:10px;line-height:1.45}

/* faixa "Filtros ativos" (21/10, diagnóstico dos controles) — Accounting e 4Ledger */
.ff-faixa{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:7px 10px;margin:0 0 10px;background:#FBF6E9;border:1px solid #EAD9AE;border-radius:6px;font-size:12px;color:#5C4A1E;line-height:1.4}
.ff-faixa b{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8A6A1E}
.ff-item{background:#fff;border:1px solid #EAD9AE;border-radius:999px;padding:1px 9px}
.ff-n{color:#6B7887;margin-left:auto;font-variant-numeric:tabular-nums}
.ff-limpar{all:unset;cursor:pointer;font-weight:700;color:#915959;padding:2px 6px;border-radius:4px}
.ff-limpar:hover{background:#F1ECEC}
.ff-limpar:focus-visible{outline:2px solid #915959;outline-offset:1px}
