/* =============================================================
   SEMOG · Admin Tahoe — shell + dashboard primitives
   Extends tokens.css.

   USE: import after tokens.css. Provides the layout shell (sidebar
   + main card), toolbar, KPIs, cards, pills, tables and detail
   primitives that constitute the Tahoe admin pattern.

   ⚠️ SCOPED: every selector below lives under `.tahoe-shell`.
   Wrap the page region you want to be Tahoe-styled in:

     <body>
       <div class="tahoe-shell">
         <aside class="sidebar">...</aside>
         <section class="main">
           <header class="toolbar">...</header>
           <div class="content">...</div>
         </section>
       </div>
     </body>

   Architecture (v0.8.0 — brand sidebar / inset main):
   - `.tahoe-shell` is the grid layout AND the wallpaper. The wallpaper
     IS the Blue World gradient — emoldura tudo edge-to-edge. Place
     directly inside `<body>`; body is the scroller (Ctrl+F, mouse
     wheel, keyboard nav all work naturally).
   - `.sidebar` is sticky-pinned at left, TRANSPARENT — os nav items
     vivem direto sobre o wallpaper escuro. No glass, no backdrop blur.
     Textos em branco/sky pra ler contra o azul.
   - `.main` is a rounded WHITE card (`#FBFCFD`) com margem em volta
     (0 na esquerda — colado na sidebar). Sombra firme (`0 16px 36px
     rgba(0,0,0,0.22)`) pra eleva contra o wallpaper escuro. Os 8px
     de wallpaper que aparecem em volta são o próprio Blue World —
     padrão macOS Tahoe SidebarInset.
   - `.toolbar` lives at the top of `.main` and scrolls with the
     content. It is NOT sticky — filtros e ações ficam na página,
     não na topbar global.
   - Cards (`.card`, `.kpi`, `.mini-kpi`) flutuam no .main com hairline
     1px + drop shadow leve (`0 4px 10px rgba(10,19,48,0.04)`) — não
     são flat, têm elevação real pra se distinguirem do canvas branco.

   Replaced in v0.8.0: glass-on-sky wallpaper, glass sidebar, glass
   main. Tudo virou opaco e a sidebar deixou de ser card próprio —
   o wallpaper E a sidebar compartilham a mesma cor Blue World.
   --side-w reduzida 248px → 220px na mesma versão, e → 66px na v0.39.0,
   quando o rail deixou de ser modo e virou o único layout acima de 768px.

   Outside `.tahoe-shell`, host app's existing styles are untouched.
   Do NOT add new rules at the top level (no `body{}`, no `*{}`).
   ============================================================= */

:root{
  --card-radius:14px;
  --pill-radius:999px;
  --side-w:66px;
  --tb-h:56px;
  --ui-font: 'Inter', -apple-system, 'SF Pro Text', system-ui, sans-serif;
  --num-font: 'Saira', system-ui, sans-serif;

  /* Paleta da esteira de recuperação — um estado, uma cor. Em CANAIS e não hex
     porque as superfícies dos nós precisam de alpha, e rgba() aceita var() nos
     canais sem exigir color-mix (que este kit não usa em lugar nenhum; adotá-lo
     seria assumir um piso de browser novo pro pacote inteiro).

     A mesma cor serve a três lugares: a superfície do nó, o rótulo dele, e a
     barra empilhada da coluna "Distribuição" em shell-cobranca-condominios.html,
     que espelha a esteira DE PROPÓSITO — divergir quebraria a correspondência
     entre painel e lista. Antes da v0.42.0 aquela barra trazia o hex escrito à
     mão em cada um dos 23 <i>, e só a disciplina de quem editava impedia a
     divergência.

     Três batem EXATAMENTE com token Tier 3 e estão anotadas: se o token mudar,
     mude aqui junto. As outras duas não têm equivalente semântico — não dá pra
     aliasar um token que é hex quando o consumo precisa de canais. */
  --esteira-em-regua-rgb:   79,111,181;   /* --blue-400 #4F6FB5 — sem par no Tier 3 */
  --esteira-aguardando-rgb: 200,136,26;   /* = --warning #C8881A */
  --esteira-acordo-rgb:     47,140,94;    /* = --success #2F8C5E */
  --esteira-quebrado-rgb:   179,58,58;    /* = --danger  #B33A3A */
  --esteira-juridico-rgb:   46,46,54;     /* --gray-700 #2E2E36 — sem par no Tier 3 */

  /* Alias sólido — a mesma cor, pronta pra usar onde não há alpha. Os canais
     acima continuam sendo a fonte; isto é só a forma consumível.
     Existe porque `-rgb` NÃO é uma cor: `color:var(--esteira-quebrado-rgb)` não
     dá erro de sintaxe, é declaração inválida e descartada em silêncio — o
     elemento herda a cor de cima e ninguém descobre. Além disso, canais não
     servem a API de JS, a atributo SVG `fill`, nem a lib de gráfico. */
  --esteira-em-regua:   rgb(var(--esteira-em-regua-rgb));
  --esteira-aguardando: rgb(var(--esteira-aguardando-rgb));
  --esteira-acordo:     rgb(var(--esteira-acordo-rgb));
  --esteira-quebrado:   rgb(var(--esteira-quebrado-rgb));
  --esteira-juridico:   rgb(var(--esteira-juridico-rgb));

  /* Rótulo: variante sólida escurecida, não derivável da base por alpha. */
  --esteira-em-regua-fg:   #2F4FA0;
  --esteira-aguardando-fg: #8A5D10;
  --esteira-acordo-fg:     #1F6B46;
  --esteira-quebrado-fg:   #8C2828;
  --esteira-juridico-fg:   #2E2E36;
}

/* ─────────── The Tahoe shell (layout + wallpaper) ─────────── */
.tahoe-shell{
  box-sizing:border-box;
  font-family:var(--ui-font);
  color:#1A1A20;
  min-height:100vh;
  display:grid;
  grid-template-columns:var(--side-w) 1fr;
  /* Wallpaper — Blue World gradient. A "cor da sidebar" emoldura o
     .main inset edge-to-edge (top/bottom/right). A sidebar em si é
     transparente — os nav items vivem direto sobre esse wallpaper,
     padrão macOS Tahoe SidebarInset. */
  background:
    radial-gradient(45% 55% at 0% 0%, rgba(255,255,255,0.10) 0%, rgba(255,255,255,0) 65%),
    radial-gradient(55% 60% at 100% 100%, rgba(173,213,235,0.10) 0%, rgba(173,213,235,0) 60%),
    linear-gradient(180deg, #213A87 0%, #1B2D70 55%, #16265D 100%);
  background-attachment:fixed;
}
.tahoe-shell *{box-sizing:border-box;}
.tahoe-shell svg{width:1em;height:1em;flex-shrink:0;}
.tahoe-shell .spark{width:100%;height:48px;}

/* ─────────── Sidebar ───────────
   Sticky-pinned na esquerda; height: 100vh ocupa a viewport e
   permite scroll interno SE o conteúdo do nav exceder (raro).
   O body é quem rola pra todo o resto. `align-self: start`
   impede que o grid estique a sidebar pra altura da row. */
.tahoe-shell .sidebar{
  position:sticky;
  top:0;
  align-self:start;
  height:100vh;
  overflow-y:auto;
  background:transparent;
  padding:14px 12px;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.tahoe-shell .org{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:14px;
  background:rgba(255,255,255,0.08);
  box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.14);
  margin-bottom:12px;
}
.tahoe-shell .org-mark{
  width:30px;height:30px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(180deg,#3D5BB8 0%, #2F4FA0 60%, #1B2D70 100%);
  display:flex;align-items:center;justify-content:center;
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.40);
}
/* Override the generic `.tahoe-shell svg { width:1em; height:1em }` rule
   so the III monogram inside .org-mark stays at a fixed, brand-correct
   width regardless of inherited font-size. */
.tahoe-shell .org-mark svg{width:16px;height:auto;}
.tahoe-shell .org-name{font-size:13px;font-weight:600;line-height:1.1;color:#fff;}
.tahoe-shell .org-sub{font-size:11px;color:rgba(255,255,255,0.60);margin-top:1px;}

.tahoe-shell .nav-section{font-size:11px;font-weight:500;color:rgba(255,255,255,0.45);padding:14px 10px 6px;}
.tahoe-shell .nav-item{
  display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:10px;cursor:pointer;
  font-size:13px;font-weight:500;color:rgba(255,255,255,0.86);text-decoration:none;
  transition:background 120ms ease, color 120ms ease;
}
.tahoe-shell .nav-item svg{width:17px;height:17px;color:rgba(173,213,235,0.80);}
.tahoe-shell .nav-item:hover{background:rgba(255,255,255,0.08);color:#fff;}
.tahoe-shell .nav-item.active{
  background:rgba(255,255,255,0.14);color:#fff;
  box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.18);
}
.tahoe-shell .nav-item.active svg{color:#ADD5EB;}
.tahoe-shell .nav-item .count{
  margin-left:auto;font-size:11px;color:rgba(255,255,255,0.80);font-weight:500;
  background:rgba(255,255,255,0.12);padding:1px 7px;border-radius:999px;
}
.tahoe-shell .nav-item.active .count{background:rgba(255,255,255,0.22);color:#fff;}
.tahoe-shell .nav-item .alert{background:rgba(255,180,180,0.22);color:#FFC7C7;}

.tahoe-shell .user{
  margin-top:auto;padding:8px;border-radius:14px;
  display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,0.06);
  box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.14);
}
.tahoe-shell .avatar{
  width:28px;height:28px;border-radius:999px;flex-shrink:0;
  background:linear-gradient(135deg,#ADD5EB 0%, #4F6FB5 100%);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:600;
}
.tahoe-shell .user-name{font-size:12px;font-weight:600;line-height:1.1;color:#fff;}
.tahoe-shell .user-role{font-size:10px;color:rgba(255,255,255,0.55);margin-top:1px;}

/* ─────────── Main pane ───────────
   Card branco semi-transparente arredondado (estilo shadcn
   dashboard-01 SidebarInset). Margem 8px nos três lados que
   não tocam a sidebar — o lado esquerdo cola na sidebar pra
   eles parecerem encaixados. Cresce com o conteúdo; body é
   quem rola. `overflow: hidden` mantém os cantos limpos. */
.tahoe-shell .main{
  min-width:0;
  display:flex;
  flex-direction:column;
  margin:8px 8px 8px 0;
  background:#FBFCFD;
  border-radius:var(--card-radius);
  box-shadow:
    0 0 0 0.5px rgba(0,0,0,0.20),
    0 1px 2px rgba(0,0,0,0.10),
    0 16px 36px rgba(0,0,0,0.22);
  /* `clip` recorta igual ao `hidden` (mantém os cantos limpos) mas NÃO cria um
     contexto de rolagem — e é isso que faz `position:sticky` funcionar aqui dentro.
     Com `hidden`, a .sticky-bar grudava em relação ao .main, que não rola, e por isso
     saía da tela junto com a página (quebrada desde a v0.28.0, corrigido na v0.30.0).
     `hidden` fica antes como fallback: navegador sem suporte a `clip` mantém o
     recorte e só perde o sticky. */
  overflow:hidden;
  overflow:clip;
}

/* Toolbar — parte da página (NÃO sticky). Vive no topo do .main,
   border-bottom separa do .content. Filtros e ações de página
   ficam DENTRO do .content, não aqui. A toolbar é só breadcrumb +
   busca global + ações cross-route (ex: + Novo). */
.tahoe-shell .toolbar{
  height:var(--tb-h);
  flex-shrink:0;
  display:flex;align-items:center;gap:8px;
  padding:8px 24px;
  background:transparent;
  border-bottom:1px solid rgba(10,19,48,0.08);
}
.tahoe-shell .tb-title{font-size:14px;font-weight:600;margin-right:14px;}
.tahoe-shell .tb-breadcrumb{font-size:12px;color:#8C8C99;font-weight:500;}
.tahoe-shell .tb-breadcrumb b{color:#1A1A20;font-weight:600;}
.tahoe-shell .tb-spacer{flex:1;}
.tahoe-shell .tb-group{
  display:flex;align-items:center;background:rgba(10,19,48,0.05);
  border-radius:var(--pill-radius);padding:3px;gap:1px;
}
.tahoe-shell .tb-btn{
  height:30px;min-width:34px;padding:0 10px;border:none;background:transparent;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border-radius:999px;color:#1A1A20;font-size:12px;font-weight:500;font-family:inherit;
  transition:background 120ms ease;
}
.tahoe-shell .tb-btn svg{width:14px;height:14px;}
.tahoe-shell .tb-btn:hover{background:rgba(255,255,255,0.7);}
.tahoe-shell .tb-btn.on{background:#fff;box-shadow:0 1px 2px rgba(10,19,48,0.08);}
.tahoe-shell .tb-btn.solo{background:rgba(10,19,48,0.05);}
.tahoe-shell .tb-btn.solo:hover{background:rgba(10,19,48,0.10);}
.tahoe-shell .tb-btn:active{transform:translateY(1px);}
.tahoe-shell .tb-search{
  height:30px;border-radius:999px;background:rgba(10,19,48,0.05);
  display:flex;align-items:center;gap:6px;padding:0 12px;color:#8C8C99;font-size:12px;min-width:220px;
}
.tahoe-shell .tb-search svg{width:13px;height:13px;}
.tahoe-shell .tb-search input{border:none;background:transparent;outline:none;flex:1;font-family:inherit;font-size:12px;color:#1A1A20;}
.tahoe-shell .tb-primary{
  height:30px;padding:0 14px;border:none;cursor:pointer;
  /* v0.11.0: flat — cor sólida, sem gradiente nem sombra de elevação.
     A tatilidade vem do :active (afunda), não da profundidade. */
  background:#1B2D70;
  color:#fff;font-size:12px;font-weight:600;border-radius:999px;
  display:inline-flex;align-items:center;gap:6px;font-family:inherit;
  transition:background 120ms ease, box-shadow 120ms ease, transform 70ms ease;
}
.tahoe-shell .tb-primary:hover{background:#24378F;}
.tahoe-shell .tb-primary:active{background:#152459;box-shadow:inset 0 2px 4px rgba(0,0,0,0.22);transform:translateY(1px);}
.tahoe-shell .tb-primary svg{width:13px;height:13px;}
.tahoe-shell .greet-cta svg{width:13px;height:13px;}

/* Content — sem overflow:auto. O body é o scroller único.
   Padding-bottom generoso pra o último card respirar antes do
   final do card .main. */
.tahoe-shell .content{padding:24px 28px 32px;}

/* ─────────── Greeting / page header ─────────── */
.tahoe-shell .greet{display:flex;align-items:end;justify-content:space-between;margin-bottom:24px;gap:24px;flex-wrap:wrap;}
.tahoe-shell .greet h1{
  font-family:var(--num-font);font-weight:400;letter-spacing:-0.02em;
  font-size:32px;line-height:1.05;margin:0;color:#0A1330;
}
.tahoe-shell .greet h1 .accent{color:#4F6FB5;}
.tahoe-shell .greet h1 .alert{color:#8A5D10;}
.tahoe-shell .greet p{font-size:13px;color:#4B4B55;margin:8px 0 0;}
.tahoe-shell .greet-cta{display:flex;gap:8px;align-items:center;}
.tahoe-shell .ghost-btn{
  height:34px;padding:0 14px;border:none;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
  background:#fff;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);
  color:#1B2D70;font-size:12px;font-weight:600;border-radius:999px;font-family:inherit;
  text-decoration:none;
  transition:background 120ms ease, box-shadow 120ms ease, transform 70ms ease;
}
/* v0.11.0: hover CINZA (estilo shadcn) + press que afunda */
.tahoe-shell .ghost-btn:hover{background:#EEF0F4;}
.tahoe-shell .ghost-btn:active{background:#E3E6EC;box-shadow:inset 0 1px 2px rgba(10,19,48,0.10);transform:translateY(1px);}

.tahoe-shell .page-h{display:flex;align-items:center;gap:14px;margin-bottom:8px;}
.tahoe-shell .page-h h2{font-family:var(--num-font);font-size:24px;font-weight:400;margin:0;letter-spacing:-0.01em;color:#0A1330;}
.tahoe-shell .page-sub{font-size:13px;color:#4B4B55;margin:0 0 18px;max-width:680px;}

/* ─────────── KPIs ─────────── */
.tahoe-shell .kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px;}
.tahoe-shell .kpi{
  border-radius:18px;padding:18px;position:relative;overflow:hidden;
  background:#fff;
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
}
.tahoe-shell .kpi::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;opacity:0.85;}
.tahoe-shell .kpi.k1::before{background:radial-gradient(120% 100% at 100% 0%, rgba(173,213,235,0.55) 0%, rgba(173,213,235,0) 60%);}
.tahoe-shell .kpi.k2::before{background:radial-gradient(120% 100% at 100% 0%, rgba(47,140,94,0.18) 0%, rgba(47,140,94,0) 60%);}
.tahoe-shell .kpi.k3::before{background:radial-gradient(120% 100% at 100% 0%, rgba(126,186,220,0.50) 0%, rgba(126,186,220,0) 60%);}
.tahoe-shell .kpi.k4::before{background:radial-gradient(120% 100% at 100% 0%, rgba(200,136,26,0.22) 0%, rgba(200,136,26,0) 60%);}
.tahoe-shell .kpi > *{position:relative;}
.tahoe-shell .kpi .lbl{font-size:11px;color:#6C6C78;font-weight:500;display:flex;justify-content:space-between;align-items:center;}
.tahoe-shell .kpi .lbl svg{width:14px;height:14px;color:#8C8C99;}
.tahoe-shell .kpi .val{font-family:var(--num-font);font-size:30px;font-weight:400;color:#0A1330;margin-top:6px;letter-spacing:-0.01em;line-height:1;}
.tahoe-shell .kpi .sub{font-size:11px;color:#6C6C78;margin-top:6px;}
.tahoe-shell .kpi .delta{font-size:11px;color:#2F8C5E;margin-top:6px;font-weight:500;display:flex;align-items:center;gap:4px;}
.tahoe-shell .kpi .delta.neg{color:#8C2828;}
.tahoe-shell .kpi .delta.warn{color:#8A5D10;}
.tahoe-shell .kpi .delta svg{width:12px;height:12px;}

/* Mini KPIs (smaller, for detail pages) */
.tahoe-shell .mini-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px;}
/* Variante de 5 colunas — mesma classe base, um modificador, pra continuar
   respeitando o colapso responsivo abaixo (inline style não respeitaria). */
.tahoe-shell .mini-kpis.mini-kpis-5{grid-template-columns:repeat(5,minmax(0,1fr));}
.tahoe-shell .mini-kpi{
  padding:14px;border-radius:14px;background:#fff;
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
}
.tahoe-shell .mini-kpi .lbl{font-size:11px;color:#6C6C78;}
.tahoe-shell .mini-kpi .val{font-family:var(--num-font);font-size:22px;font-weight:400;color:#0A1330;margin-top:4px;letter-spacing:-0.01em;line-height:1;}
.tahoe-shell .mini-kpi .delta{font-size:11px;color:#1F6B46;margin-top:4px;font-weight:500;}
.tahoe-shell .mini-kpi .delta.neg{color:#8C2828;}
.tahoe-shell .mini-kpi .delta.warn{color:#8A5D10;}

/* ─────────── Layout grids ─────────── */
.tahoe-shell .row2{display:grid;grid-template-columns:1.55fr 1fr;gap:14px;margin-bottom:14px;}
.tahoe-shell .row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;}
.tahoe-shell .card{
  border-radius:18px;padding:18px;background:#fff;
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
}
.tahoe-shell .card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.tahoe-shell .card-h h3{font-size:14px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;}
.tahoe-shell .card-h .pill{font-size:11px;}
/* Links de texto do header (ex.: "Tudo →"). Exclui âncoras que são
   botões (.tb-primary/.ghost-btn) pra não sobrescrever a cor deles. */
.tahoe-shell .card-h a:not(.tb-primary):not(.ghost-btn){font-size:12px;color:#4F6FB5;font-weight:500;cursor:pointer;}

/* ─────────── Pill badges ───────────
   Moved to components/pills.css (unscoped) in 0.3.0. The new pills are
   global atomic utilities composed from feedback tokens (--success-soft
   etc). Apps already wrapping content in .tahoe-shell continue to work
   because the unscoped classes still apply inside the wrapper.
   Import via:  @import "@semog-tech/tahoe/pills";  */

/* ─────────── Carteira list ─────────── */
.tahoe-shell .carteira-row{
  display:grid;grid-template-columns: 1.5fr 1fr 1fr 0.9fr 0.6fr 80px;align-items:center;gap:12px;
  padding:12px 4px;border-top:0.5px solid var(--hairline-row);font-size:13px;
}
.tahoe-shell .carteira-row.header{
  border-top:none;font-size:11px;color:#6C6C78;font-weight:500;
  padding:6px 4px;
}
.tahoe-shell .condo{display:flex;align-items:center;gap:10px;min-width:0;}
.tahoe-shell .condo-mark{
  width:34px;height:34px;border-radius:10px;flex-shrink:0;
  background:linear-gradient(135deg, rgba(173,213,235,0.6), rgba(126,186,220,0.4));
  color:#1B2D70;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;
}
.tahoe-shell .condo-name{font-weight:500;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tahoe-shell .condo-sub{font-size:11px;color:#6C6C78;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tahoe-shell .num{font-family:var(--num-font);font-size:14px;font-weight:500;color:#0A1330;}
.tahoe-shell .inadi{display:flex;align-items:center;gap:6px;}
.tahoe-shell .inadi-bar{flex:1;height:5px;background:rgba(10,19,48,0.08);border-radius:999px;overflow:hidden;max-width:60px;}
.tahoe-shell .inadi-bar > i{display:block;height:100%;border-radius:999px;}
.tahoe-shell .row-action{
  background:transparent;border:none;cursor:pointer;
  color:#4F6FB5;font-size:12px;font-weight:500;padding:0;font-family:inherit;
}
.tahoe-shell .row-action:hover{text-decoration:underline;}
.tahoe-shell .row-action svg{width:12px;height:12px;}

/* ─────────── Pipeline funnel ─────────── */
.tahoe-shell .funnel{display:flex;flex-direction:column;gap:8px;}
.tahoe-shell .funnel-step{display:flex;align-items:center;gap:12px;}
.tahoe-shell .funnel-bar{
  flex:1;height:32px;border-radius:10px;display:flex;align-items:center;
  padding:0 12px;color:#fff;font-size:12px;font-weight:600;
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.2);
}
.tahoe-shell .funnel-meta{font-size:12px;color:#4B4B55;width:80px;text-align:right;font-family:var(--num-font);}
.tahoe-shell .funnel-step .step-num{
  width:22px;height:22px;border-radius:999px;background:rgba(10,19,48,0.06);
  color:#6C6C78;font-size:11px;font-weight:600;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}

/* ─────────── Activity feed ─────────── */
.tahoe-shell .feed-row{
  display:flex;align-items:start;gap:10px;
  padding:8px 0;border-top:0.5px solid var(--hairline-row);
}
.tahoe-shell .feed-row:first-of-type{border-top:none;}
.tahoe-shell .feed-icon{
  width:28px;height:28px;border-radius:9px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.tahoe-shell .feed-icon svg{width:14px;height:14px;}
.tahoe-shell .feed-text{font-size:12px;line-height:1.4;}
.tahoe-shell .feed-text b{font-weight:600;}
.tahoe-shell .feed-text small{color:#6C6C78;font-size:11px;display:block;margin-top:1px;}

/* ─────────── Document row & integration primitives ───────────
   Linha de documento com card-shape: ícone + nome + status + ações.
   Diferente da .feed-row (texto plano) pelo treatment de card individual
   com border-radius e hairline. Usado em fluxos de upload/import (prestação,
   onboarding, condo) onde cada documento é uma unidade discreta com
   próprio estado (pendente / uploaded / warn).

   .ext-link → ícone pequeno de seta externa ao lado de um valor que aponta
   pro relatório correspondente em sistema externo (ERP, Drive, etc).

   .erp-session → chip de status da extensão Chrome que captura token
   Superlógica. Variante .inactive quando sessão expira.
   ─────────────────────────────────────────────────────────────── */
.tahoe-shell .doc-row{
  display:flex;align-items:center;gap:14px;
  padding:12px 14px;border-radius:14px;
  background:#fff;
  box-shadow:0 0 0 1px rgba(10,19,48,0.07);
  margin-top:8px;
}
.tahoe-shell .doc-row:first-child{margin-top:0;}
.tahoe-shell .doc-row .doc-icon{
  width:32px;height:32px;border-radius:9px;flex-shrink:0;
  background:rgba(10,19,48,0.04);color:#6C6C78;
  display:inline-flex;align-items:center;justify-content:center;
}
.tahoe-shell .doc-row .doc-icon svg{width:16px;height:16px;}
.tahoe-shell .doc-row .doc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.tahoe-shell .doc-row .doc-name{
  font-size:13px;font-weight:600;color:#0A1330;
  display:inline-flex;align-items:center;gap:4px;
}
.tahoe-shell .doc-row .doc-meta{font-size:11px;color:#6C6C78;}
.tahoe-shell .doc-row .doc-actions{display:flex;gap:6px;flex-shrink:0;align-items:center;}
.tahoe-shell .doc-row.uploaded .doc-icon{background:rgba(47,140,94,0.14);color:#1F6B46;}
.tahoe-shell .doc-row.uploaded .doc-meta{color:#1F6B46;}
.tahoe-shell .doc-row.warn{background:rgba(200,136,26,0.08);box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.30);}
.tahoe-shell .doc-row.warn .doc-icon{background:rgba(200,136,26,0.18);color:#8A5D10;}
.tahoe-shell .doc-row.warn .doc-name{color:#8A5D10;}
.tahoe-shell .doc-row.add-row{background:rgba(10,19,48,0.02);box-shadow:inset 0 0 0 1px dashed rgba(10,19,48,0.12);}
.tahoe-shell .doc-row.add-row .doc-icon{background:transparent;}
.tahoe-shell .doc-row.add-row input{
  flex:1;border:none;background:transparent;font-size:13px;outline:none;
  font-family:inherit;color:#1A1A20;padding:0;
}
.tahoe-shell .doc-row.add-row input::placeholder{color:#8C8C99;}

.tahoe-shell .ext-link{
  display:inline-flex;align-items:center;justify-content:center;
  color:#8C8C99;margin-left:2px;
  border-bottom:1px solid transparent;
}
.tahoe-shell .ext-link:hover{color:#4F6FB5;}
.tahoe-shell .ext-link svg{width:12px;height:12px;}

.tahoe-shell .erp-session{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 9px 3px 8px;border-radius:999px;
  font-size:10.5px;font-weight:500;
  background:rgba(47,140,94,0.10);color:#1F6B46;
  box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.22);
}
.tahoe-shell .erp-session .dot{
  width:6px;height:6px;border-radius:999px;background:#2F8C5E;
  box-shadow:0 0 0 2px rgba(47,140,94,0.18);
}
.tahoe-shell .erp-session.inactive{
  background:rgba(10,19,48,0.05);color:#6C6C78;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);
}
.tahoe-shell .erp-session.inactive .dot{background:#BCBCC7;box-shadow:none;}
.tahoe-shell .erp-session a{color:#4F6FB5;text-decoration:none;}

/* ─────────── Date block / upcoming ─────────── */
.tahoe-shell .date-block{
  width:50px;height:58px;border-radius:12px;flex-shrink:0;
  background:linear-gradient(180deg, #EEF1FA 0%, #D6DEF1 100%);
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.tahoe-shell .date-block .d{font-family:var(--num-font);font-size:20px;font-weight:400;color:#1B2D70;line-height:1;}
.tahoe-shell .date-block .m{font-size:9px;color:#6C6C78;text-transform:uppercase;margin-top:2px;letter-spacing:0.04em;}
.tahoe-shell .upcoming-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:0.5px solid var(--hairline-row);}
.tahoe-shell .upcoming-row:first-of-type{border-top:none;}

/* ─────────── Tables ─────────── */
.tahoe-shell .filters{display:flex;align-items:center;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
.tahoe-shell .seg{display:inline-flex;background:rgba(10,19,48,0.05);border-radius:999px;padding:3px;gap:1px;}
.tahoe-shell .seg button{
  height:28px;padding:0 14px;border:none;background:transparent;cursor:pointer;
  border-radius:999px;font-size:12px;font-weight:500;font-family:inherit;color:#1A1A20;
  transition:background 120ms ease, box-shadow 120ms ease, transform 70ms ease;
}
/* v0.11.0: abas inativas reagem ao hover; press no clique */
.tahoe-shell .seg button:not(.on):hover{background:rgba(10,19,48,0.06);}
.tahoe-shell .seg button:active{transform:translateY(1px);}
.tahoe-shell .seg button.on{background:#fff;box-shadow:0 1px 2px rgba(10,19,48,0.08);}

/* ═══════════ v0.11.0 · Search escopado + filtros (lista) ═══════════
   Search da PÁGINA (filtra a lista atual) — distinto do .tb-search
   global da topbar. Filtros secundários como chip-dropdown. O JS de
   comportamento é opcional: kits/admin/interactions.js. */

/* Search escopado */
.tahoe-shell .list-search{
  height:34px;border-radius:999px;background:rgba(10,19,48,0.05);
  display:flex;align-items:center;gap:7px;padding:0 13px;color:#8C8C99;
  min-width:230px;transition:box-shadow 120ms ease, background 120ms ease, width 200ms cubic-bezier(.22,.61,.36,1);
}
.tahoe-shell .list-search:focus-within{
  background:#fff;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.55), 0 2px 6px rgba(10,19,48,0.06);
}
.tahoe-shell .list-search svg{width:14px;height:14px;}
.tahoe-shell .list-search input{
  border:none;background:transparent;outline:none;flex:1;
  font-family:inherit;font-size:12.5px;color:#1A1A20;
}
/* Variante retrátil: vira só a lupa; expande no .open (via interactions.js).
   Recolhido zera gap/flex pra a lupa ficar centralizada de verdade. */
.tahoe-shell .list-search.collapsible{
  min-width:34px;width:34px;padding:0;gap:0;justify-content:center;cursor:pointer;overflow:hidden;
}
.tahoe-shell .list-search.collapsible input{flex:0 0 0;width:0;opacity:0;transition:opacity 140ms ease;}
.tahoe-shell .list-search.collapsible.open{
  width:240px;min-width:240px;padding:0 13px;gap:7px;justify-content:flex-start;cursor:text;
}
.tahoe-shell .list-search.collapsible.open input{flex:1;opacity:1;}

/* Chip-dropdown de filtro */
.tahoe-shell .filter{position:relative;display:inline-flex;}
.tahoe-shell .filter-chip{
  height:34px;padding:0 11px 0 13px;border:none;cursor:pointer;
  display:inline-flex;align-items:center;gap:7px;
  background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);
  color:#1B2D70;font-size:12px;font-weight:600;border-radius:999px;font-family:inherit;
  transition:background 120ms ease, box-shadow 120ms ease, transform 70ms ease;
}
.tahoe-shell .filter-chip:hover{background:#EEF0F4;}
.tahoe-shell .filter-chip:active{box-shadow:inset 0 1px 2px rgba(10,19,48,0.10);transform:translateY(1px);}
.tahoe-shell .filter-chip .caret{width:13px;height:13px;opacity:.55;transition:transform 140ms ease;}
.tahoe-shell .filter.open .filter-chip{background:#fff;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.45);}
.tahoe-shell .filter.open .filter-chip .caret{transform:rotate(180deg);}
.tahoe-shell .filter-chip.active{background:rgba(79,111,181,0.12);box-shadow:inset 0 0 0 1px rgba(79,111,181,0.30);}
.tahoe-shell .filter-chip .badge{
  min-width:17px;height:17px;padding:0 5px;border-radius:999px;
  background:#1B2D70;color:#fff;font-size:10.5px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;font-family:var(--num-font);
}

/* Popover do filtro */
.tahoe-shell .filter-pop{
  position:absolute;top:calc(100% + 6px);left:0;z-index:40;
  min-width:212px;background:#fff;border-radius:12px;padding:6px;
  box-shadow:0 12px 30px rgba(10,19,48,0.16), 0 0 0 0.5px rgba(10,19,48,0.10);
  opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none;
  transition:opacity 120ms ease, transform 120ms ease;transform-origin:top left;
}
.tahoe-shell .filter.open .filter-pop{opacity:1;transform:none;pointer-events:auto;}
/* v0.13.1: alinha o popover pela direita do chip — evita vazar pra fora da
   tela em filtros colados na borda direita. interactions.js aplica `.align-right`
   automaticamente quando detecta overflow; também pode ser forçado no markup. */
.tahoe-shell .filter.align-right .filter-pop{left:auto;right:0;transform-origin:top right;}
.tahoe-shell .filter-pop .pop-h{
  font-size:10.5px;font-weight:600;color:#8C8C99;text-transform:uppercase;
  letter-spacing:.04em;padding:6px 8px 4px;
}
.tahoe-shell .opt{
  display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;
  cursor:pointer;font-size:12.5px;color:#1A1A20;user-select:none;
}
.tahoe-shell .opt:hover{background:rgba(10,19,48,0.045);}
.tahoe-shell .opt input{position:absolute;opacity:0;pointer-events:none;}
.tahoe-shell .opt .box{
  width:16px;height:16px;border-radius:5px;flex-shrink:0;
  box-shadow:inset 0 0 0 1.5px rgba(10,19,48,0.22);
  display:inline-flex;align-items:center;justify-content:center;transition:all 100ms ease;
}
.tahoe-shell .opt input[type=radio] + .box{border-radius:999px;}
.tahoe-shell .opt .box svg{width:11px;height:11px;color:#fff;opacity:0;}
.tahoe-shell .opt input:checked + .box{background:#1B2D70;box-shadow:inset 0 0 0 1.5px #1B2D70;}
.tahoe-shell .opt input:checked + .box svg{opacity:1;}
.tahoe-shell .opt .opt-label{flex:1;}
.tahoe-shell .opt .opt-count{font-size:11px;color:#A0A0AC;font-family:var(--num-font);}
.tahoe-shell .filter-pop .pop-f{
  display:flex;justify-content:space-between;align-items:center;
  padding:6px 8px 2px;margin-top:4px;border-top:0.5px solid rgba(10,19,48,0.08);
}
.tahoe-shell .pop-f a{font-size:11.5px;color:#4F6FB5;font-weight:600;cursor:pointer;}

/* Linha de filtros ativos (removíveis) — escondida até ter filtro */
.tahoe-shell .active-filters{display:none;align-items:center;gap:7px;flex-wrap:wrap;margin:-4px 0 16px;}
.tahoe-shell .active-filters.show{display:flex;}
.tahoe-shell .active-filters .lbl{font-size:11.5px;color:#8C8C99;font-weight:500;margin-right:2px;}
.tahoe-shell .achip{
  height:26px;padding:0 6px 0 11px;border:none;cursor:pointer;
  display:inline-flex;align-items:center;gap:7px;
  background:rgba(79,111,181,0.10);color:#1B2D70;
  font-size:11.5px;font-weight:600;border-radius:999px;font-family:inherit;
}
.tahoe-shell .achip .x{
  width:15px;height:15px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  background:rgba(27,45,112,0.14);font-size:11px;line-height:1;
}
.tahoe-shell .achip:hover .x{background:rgba(27,45,112,0.26);}
.tahoe-shell .clear-all{font-size:11.5px;color:#8C8C99;font-weight:600;cursor:pointer;margin-left:2px;}
.tahoe-shell .clear-all:hover{color:#B33A3A;}

.tahoe-shell table.tbl{width:100%;border-collapse:collapse;}
.tahoe-shell .tbl th{
  text-align:left;font-size:11px;font-weight:500;color:#6C6C78;
  padding:8px 12px;border-bottom:0.5px solid var(--hairline-section);
}
/* v0.11.0: cabeçalho ordenável — clique alterna asc/desc (interactions.js) */
.tahoe-shell .tbl th.sortable{cursor:pointer;user-select:none;white-space:nowrap;transition:color 120ms ease;}
.tahoe-shell .tbl th.sortable:hover{color:#1B2D70;}
.tahoe-shell .tbl th.sortable .sort-ic{
  width:12px;height:12px;display:inline-block;vertical-align:-2px;margin-left:3px;
  opacity:0;transition:opacity 120ms ease, transform 140ms ease;
}
.tahoe-shell .tbl th.sortable:hover .sort-ic{opacity:.4;}
.tahoe-shell .tbl th.sortable.asc,
.tahoe-shell .tbl th.sortable.desc{color:#1B2D70;font-weight:600;}
.tahoe-shell .tbl th.sortable.asc .sort-ic,
.tahoe-shell .tbl th.sortable.desc .sort-ic{opacity:1;color:#4F6FB5;}
.tahoe-shell .tbl th.sortable.desc .sort-ic{transform:rotate(180deg);}
.tahoe-shell .tbl td{
  font-size:13px;color:#1A1A20;padding:11px 12px;
  border-bottom:0.5px solid var(--hairline-row);
}
.tahoe-shell .tbl tr:hover td{background:rgba(173,213,235,0.10);}
.tahoe-shell .tbl td .num{font-family:var(--num-font);font-size:14px;font-weight:500;}
.tahoe-shell .tbl td.right{text-align:right;}

/* ─────────── Pipeline deal cards ─────────── */
.tahoe-shell .deal-card{
  border-radius:14px;padding:14px;background:#fff;
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
  display:flex;flex-direction:column;gap:8px;
}
.tahoe-shell .deal-card .h{display:flex;align-items:center;justify-content:space-between;}
.tahoe-shell .deal-card .h .v{font-family:var(--num-font);font-size:18px;color:#1B2D70;}
.tahoe-shell .deal-card .name{font-size:13px;font-weight:600;}
.tahoe-shell .deal-card .meta{font-size:11px;color:#6C6C78;}
.tahoe-shell .col-h{font-size:11px;font-weight:500;color:#6C6C78;display:flex;justify-content:space-between;align-items:center;padding:0 4px 6px;}
.tahoe-shell .col-h .count{background:rgba(10,19,48,0.06);padding:1px 8px;border-radius:999px;color:#1A1A20;font-weight:600;}

/* ─────────── Quote callout ─────────── */
.tahoe-shell .quote{
  margin-top:24px;padding:18px 22px;border-radius:18px;
  background:linear-gradient(135deg, rgba(173,213,235,0.25), rgba(255,255,255,0) 80%);
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
}
.tahoe-shell .quote p{font-family:var(--num-font);font-size:18px;color:#1B2D70;margin:0;font-weight:400;letter-spacing:-0.01em;}
.tahoe-shell .quote small{font-size:11px;color:#6C6C78;}

/* ─────────── Detail pages ─────────── */
.tahoe-shell .detail-header{
  display:flex;align-items:center;gap:18px;
  padding:8px 0 18px;margin-bottom:18px;
  border-bottom:0.5px solid var(--hairline-section);
}
.tahoe-shell .detail-mark{
  width:54px;height:54px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(135deg, rgba(173,213,235,0.7), rgba(126,186,220,0.5));
  color:#1B2D70;display:flex;align-items:center;justify-content:center;
  font-weight:600;font-size:18px;font-family:var(--num-font);
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
}
.tahoe-shell .detail-mark.person{border-radius:999px;}
.tahoe-shell .detail-title{font-family:var(--num-font);font-size:26px;font-weight:400;letter-spacing:-0.01em;color:#0A1330;margin:0;line-height:1.1;}
.tahoe-shell .detail-meta{font-size:12px;color:#6C6C78;margin-top:4px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.tahoe-shell .detail-pills{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}

/* Author / cross-reference links que vivem dentro de conteúdo textual
   (.timeline, .feed-row, .upcoming-row, .tbl, .tb-breadcrumb, .kv, .quote).
   Default = herdar cor do texto + sem sublinhado. Hover ganha sublinhado
   sutil pra confirmar clicabilidade. Sem isso, browser pinta de azul-roxo
   e sublinhado, destoando do resto do shell. */
.tahoe-shell .timeline a,
.tahoe-shell .feed-row a,
.tahoe-shell .upcoming-row a,
.tahoe-shell .tbl a,
.tahoe-shell .tb-breadcrumb a,
.tahoe-shell .kv a,
.tahoe-shell .quote a,
.tahoe-shell .detail-meta a{
  color:inherit;text-decoration:none;font-weight:inherit;
  border-bottom:1px solid transparent;
  transition:border-color 120ms ease;
}
.tahoe-shell .timeline a:hover,
.tahoe-shell .feed-row a:hover,
.tahoe-shell .upcoming-row a:hover,
.tahoe-shell .tbl a:hover,
.tahoe-shell .tb-breadcrumb a:hover,
.tahoe-shell .kv a:hover,
.tahoe-shell .quote a:hover,
.tahoe-shell .detail-meta a:hover{
  border-bottom-color:rgba(79,111,181,0.45);
}

/* Owner inline avatar — link ao lado do .detail-title (autor responsável
   pela entidade). NÃO é pill; o header já carrega 3-4. Aparece em
   shell-condo / shell-cliente / shell-proposta / shell-onboarding-detalhe. */
.tahoe-shell .owner-link{
  display:inline-flex;align-items:center;gap:6px;
  margin-left:10px;padding:2px 8px 2px 2px;border-radius:999px;
  font-size:12px;font-weight:500;color:#4F6FB5;text-decoration:none;
  background:rgba(173,213,235,0.14);
  box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.18);
  transition:background 120ms ease;
}
.tahoe-shell .owner-link:hover{background:rgba(173,213,235,0.26);}
.tahoe-shell .owner-avatar{
  width:20px;height:20px;border-radius:999px;
  background:linear-gradient(135deg,rgba(173,213,235,0.7),rgba(126,186,220,0.5));
  color:#1B2D70;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num-font);font-size:10px;font-weight:500;
  box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.10);
}
.tahoe-shell .back-link{
  background:rgba(10,19,48,0.05);color:#1B2D70;
  height:28px;padding:0 12px;border:none;cursor:pointer;
  border-radius:999px;font-size:12px;font-weight:500;font-family:inherit;
  display:inline-flex;align-items:center;gap:6px;margin-right:auto;
  /* respiro do que vem abaixo (steps do wizard, detail-header, doc-frame…): sem isso
     o back-link encostava no elemento seguinte, que não tem margem-topo própria. */
  margin-bottom:14px;
}
.tahoe-shell .back-link:hover{background:rgba(10,19,48,0.10);}
.tahoe-shell .back-link svg{width:12px;height:12px;}

/* ─────────── Tabs (segmented, inline) ─────────── */
.tahoe-shell .tabs{display:flex;gap:1px;background:rgba(10,19,48,0.05);border-radius:999px;padding:3px;margin-bottom:18px;width:fit-content;}
.tahoe-shell .tabs button{
  height:30px;padding:0 14px;border:none;background:transparent;cursor:pointer;
  border-radius:999px;font-size:12px;font-weight:500;font-family:inherit;color:#4B4B55;
}
.tahoe-shell .tabs button.on{background:#fff;color:#0A1330;box-shadow:0 1px 2px rgba(10,19,48,0.08);}
.tahoe-shell .tabs button .count{
  margin-left:6px;background:rgba(10,19,48,0.08);color:#4B4B55;
  font-family:var(--num-font);font-size:11px;font-weight:600;
  padding:0 6px;border-radius:999px;line-height:1.6;
}
.tahoe-shell .tabs button.on .count{background:rgba(27,45,112,0.12);color:#1B2D70;}
/* Painel de aba (usado no detalhe do lead): só o ativo aparece. */
.tahoe-shell .tab-panel[hidden]{display:none;}

/* ─────────── Timeline ─────────── */
.tahoe-shell .timeline{position:relative;padding-left:18px;}
.tahoe-shell .timeline::before{
  content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;
  background:rgba(10,19,48,0.10);
}
.tahoe-shell .timeline-item{position:relative;padding:6px 0 16px;}
.tahoe-shell .timeline-item:last-child{padding-bottom:0;}
.tahoe-shell .timeline-dot{
  position:absolute;left:-18px;top:8px;width:13px;height:13px;border-radius:999px;
  background:#fff;box-shadow:0 0 0 1.5px #4F6FB5, inset 0 0 0 3px #fff;
}
.tahoe-shell .timeline-item.ok .timeline-dot{box-shadow:0 0 0 1.5px #2F8C5E, inset 0 0 0 3px #fff;}
.tahoe-shell .timeline-item.warn .timeline-dot{box-shadow:0 0 0 1.5px #C8881A, inset 0 0 0 3px #fff;}
.tahoe-shell .timeline-time{font-size:11px;color:#6C6C78;}
.tahoe-shell .timeline-title{font-size:13px;font-weight:500;margin-top:2px;}
.tahoe-shell .timeline-sub{font-size:12px;color:#4B4B55;margin-top:2px;}

/* ─────────── Bar chart ─────────── */
.tahoe-shell .bars{display:flex;align-items:end;gap:6px;height:140px;padding:8px 0;}
.tahoe-shell .bar{flex:1;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#7EBADC,#1B2D70);min-height:6px;position:relative;}
.tahoe-shell .bar.fade{background:linear-gradient(180deg,rgba(126,186,220,0.4),rgba(27,45,112,0.4));}
.tahoe-shell .bar-labels{display:flex;gap:6px;font-size:10px;color:#6C6C78;}
.tahoe-shell .bar-labels > span{flex:1;text-align:center;}

/* ─────────── Donut / stacked bars helpers ─────────── */
.tahoe-shell .stack{height:8px;border-radius:999px;overflow:hidden;display:flex;background:rgba(10,19,48,0.06);margin:8px 0;}
.tahoe-shell .stack i{display:block;height:100%;}
.tahoe-shell .legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:#4B4B55;}
.tahoe-shell .legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:middle;}

/* ─────────── Detail two-column ─────────── */
.tahoe-shell .det2{display:grid;grid-template-columns:2fr 1fr;gap:14px;}
.tahoe-shell .det3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;}

/* ─────────── Inline key/value list ─────────── */
.tahoe-shell .kv{display:grid;grid-template-columns:120px 1fr;gap:4px 12px;font-size:13px;}
.tahoe-shell .kv dt{color:#6C6C78;font-weight:400;font-size:12px;align-self:center;}
.tahoe-shell .kv dd{margin:0;font-weight:500;color:#1A1A20;}

/* ─────────── Pricing card ─────────── */
.tahoe-shell .price-card{
  border-radius:18px;padding:22px;
  background:linear-gradient(140deg, rgba(173,213,235,0.30) 0%, rgba(255,255,255,0.5) 60%);
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08), inset 0 1px 0 rgba(255,255,255,0.6);
}
.tahoe-shell .price-card .mrr{font-family:var(--num-font);font-size:42px;font-weight:400;color:#0A1330;letter-spacing:-0.02em;line-height:1;}
.tahoe-shell .price-card .mrr small{font-size:14px;color:#6C6C78;margin-left:6px;}
.tahoe-shell .price-card .breakdown{margin-top:14px;display:grid;grid-template-columns:1fr auto;gap:6px 12px;font-size:12px;}
.tahoe-shell .price-card .breakdown .k{color:#4B4B55;}
.tahoe-shell .price-card .breakdown .v{font-family:var(--num-font);color:#1A1A20;font-weight:500;text-align:right;}
.tahoe-shell .price-card .breakdown .sep{grid-column:1/-1;border-top:0.5px solid rgba(10,19,48,0.10);margin:6px 0;}

/* ─────────── Form field ─────────── */
.tahoe-shell .field{display:flex;flex-direction:column;gap:6px;}
.tahoe-shell .field > label{font-size:12px;font-weight:500;color:#4B4B55;}
.tahoe-shell .field input, .tahoe-shell .field select{
  height:34px;padding:0 12px;border-radius:10px;
  border:0.5px solid rgba(10,19,48,0.12);
  background:#fff;font-family:inherit;font-size:13px;color:#1A1A20;outline:none;
  transition:border-color 140ms ease, box-shadow 140ms ease;
}
.tahoe-shell .field input:focus, .tahoe-shell .field select:focus{border-color:#4F6FB5;box-shadow:0 0 0 3px rgba(173,213,235,0.5);}
.tahoe-shell .field-row{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}

/* ─────────── Tier / pricing selectors ─────────── */
.tahoe-shell .tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.tahoe-shell .tier{
  border-radius:14px;padding:14px;cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);
  transition:all 160ms ease;
}
.tahoe-shell .tier:hover{box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.40);}
.tahoe-shell .tier.on{
  background:linear-gradient(180deg, rgba(126,186,220,0.20), rgba(255,255,255,0.7));
  box-shadow:inset 0 0 0 1.5px #1B2D70, 0 4px 12px rgba(27,45,112,0.10);
}
.tahoe-shell .tier .h{font-size:13px;font-weight:600;color:#0A1330;display:flex;align-items:center;justify-content:space-between;}
.tahoe-shell .tier .h .tick{color:#2F8C5E;display:inline-flex;opacity:0;transition:opacity 140ms ease;}
.tahoe-shell .tier.on .h .tick{opacity:1;}
.tahoe-shell .tier .pv{font-family:var(--num-font);font-size:20px;color:#1B2D70;margin-top:6px;}
.tahoe-shell .tier .s{font-size:11px;color:#6C6C78;margin-top:2px;}

/* ─────────── Checklist row ─────────── */
.tahoe-shell .check-row{
  display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;cursor:pointer;
  background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);margin-bottom:6px;
}
.tahoe-shell .check-row:hover{background:rgba(173,213,235,0.10);}
.tahoe-shell .check-row.on{background:linear-gradient(135deg, rgba(173,213,235,0.20), rgba(255,255,255,0.5)); box-shadow:inset 0 0 0 1px rgba(27,45,112,0.18);}
.tahoe-shell .check-box{
  width:18px;height:18px;border-radius:6px;flex-shrink:0;
  background:#fff;box-shadow:inset 0 0 0 1px rgba(10,19,48,0.20);
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.tahoe-shell .check-box svg{width:11px;height:11px;}
.tahoe-shell .check-row.on .check-box{background:#1B2D70;box-shadow:inset 0 0 0 1px #1B2D70;}
.tahoe-shell .check-title{font-size:13px;font-weight:500;line-height:1.2;}
.tahoe-shell .check-sub{font-size:11px;color:#6C6C78;margin-top:2px;}
.tahoe-shell .check-val{
  font-family:var(--num-font);font-size:14px;color:#1B2D70;
  display:flex;flex-direction:column;align-items:flex-end;gap:1px;white-space:nowrap;
}
.tahoe-shell .check-val .eff{font-size:13px;color:#2F8C5E;}
.tahoe-shell .check-val .base.is-struck{color:#8C8C99;text-decoration:line-through;font-size:11.5px;}

/* ─── Desconto por serviço (R$ ou %) — wizard de proposta ───
   Aparece só quando o serviço está marcado (.check-row.on). Toggle
   segmentado R$/% + input; recalcula o MRR ao vivo (JS no shell). */
.tahoe-shell .svc-disc{display:none;align-items:center;gap:8px;margin-top:8px;}
.tahoe-shell .check-row.on .svc-disc{display:flex;}
.tahoe-shell .svc-disc .lbl{font-size:11px;color:#6C6C78;font-weight:500;}
.tahoe-shell .disc-seg{
  display:inline-flex;border-radius:8px;overflow:hidden;background:#fff;
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.12);
}
.tahoe-shell .disc-seg button{
  border:none;background:transparent;cursor:pointer;
  font-family:var(--num-font);font-size:11px;font-weight:600;color:#6C6C78;
  padding:3px 10px;line-height:1.5;
}
.tahoe-shell .disc-seg button + button{box-shadow:inset 1px 0 0 rgba(10,19,48,0.10);}
.tahoe-shell .disc-seg button.on{background:linear-gradient(135deg,#2F4FA0,#1B2D70);color:#fff;}
.tahoe-shell .disc-input{
  width:66px;height:26px;padding:0 8px;border:none;border-radius:8px;background:#fff;
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.12);
  font-family:var(--num-font);font-size:12.5px;color:#1A1A20;text-align:right;outline:none;
}
.tahoe-shell .disc-input:focus{box-shadow:inset 0 0 0 1px #4F6FB5, 0 0 0 3px rgba(173,213,235,0.45);}

/* ─────────── Wizard steps ─────────── */
.tahoe-shell .steps{display:flex;align-items:center;gap:8px;margin-bottom:18px;}
.tahoe-shell .step{
  flex:1;display:flex;align-items:center;gap:8px;
  padding:8px 12px;border-radius:999px;
  background:rgba(10,19,48,0.05);font-size:12px;color:#6C6C78;
}
.tahoe-shell .step.done{background:rgba(47,140,94,0.14);color:#1F6B46;}
.tahoe-shell .step.current{background:linear-gradient(180deg,#2F4FA0,#1B2D70);color:#fff;box-shadow:0 1px 2px rgba(10,19,48,0.10);}
.tahoe-shell .step .num{width:18px;height:18px;border-radius:999px;background:rgba(10,19,48,0.10);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:inherit;flex-shrink:0;}
.tahoe-shell .step.current .num{background:rgba(255,255,255,0.25);}
.tahoe-shell .step.done .num{background:rgba(47,140,94,0.25);}

/* ─────────── Onboarding checklist ─────────── */
.tahoe-shell .onb-progress{
  height:8px;border-radius:999px;background:rgba(10,19,48,0.06);
  overflow:hidden;flex:1;max-width:240px;
}
.tahoe-shell .onb-progress > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7EBADC,#1B2D70);transition:width 200ms ease;}
.tahoe-shell .onb-section{margin-bottom:18px;}
.tahoe-shell .onb-section-h{
  display:flex;align-items:center;gap:10px;margin-bottom:8px;
  font-size:13px;font-weight:600;color:#0A1330;
}
.tahoe-shell .onb-section-h .pill{font-size:11px;}
.tahoe-shell .onb-item{
  display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;
  background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);margin-bottom:6px;
  cursor:pointer;transition:background 120ms ease;
}
.tahoe-shell .onb-item:hover{background:rgba(173,213,235,0.10);}
.tahoe-shell .onb-item.done{background:rgba(47,140,94,0.07);}
.tahoe-shell .onb-item.late{background:rgba(179,58,58,0.06);}
.tahoe-shell .onb-tick{
  width:22px;height:22px;border-radius:999px;flex-shrink:0;
  background:#fff;box-shadow:inset 0 0 0 1.5px rgba(10,19,48,0.20);
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.tahoe-shell .onb-tick svg{width:12px;height:12px;}
.tahoe-shell .onb-item.done .onb-tick{background:#2F8C5E;box-shadow:inset 0 0 0 1.5px #2F8C5E;}
.tahoe-shell .onb-item.late .onb-tick{box-shadow:inset 0 0 0 1.5px #B33A3A;color:#B33A3A;}
.tahoe-shell .onb-item.late .onb-tick svg{display:none;}
.tahoe-shell .onb-item.late .onb-tick::after{content:"!";font-family:var(--num-font);font-size:14px;font-weight:500;color:#B33A3A;}
.tahoe-shell .onb-item .t{font-size:13px;font-weight:500;line-height:1.2;}
.tahoe-shell .onb-item.done .t{color:#4B4B55;}
.tahoe-shell .onb-item .s{font-size:11px;color:#6C6C78;margin-top:2px;}

/* ── Itens de checklist enriquecidos ──────────────────────────────
   Variações do .onb-item por natureza da etapa:
   - .onb-rich   → item que carrega um controle/detalhe abaixo do título
                   (alinha o tick ao topo em vez de centralizar).
   - .onb-cred   → credencial guardada (usuário + senha mascarada + ações).
   - .onb-choice → escolha inline segmentada (ex.: rateio Fração ideal | Igualitário).
   - .onb-input  → valor digitável inline (ex.: fundo de reserva %).
   - .onb-act    → ações/status à direita do item (botão + pill).
   Botões/pills reaproveitam .ghost-btn / .tb-primary / .pill do shell. */
.tahoe-shell .onb-item.onb-rich{align-items:flex-start;}
.tahoe-shell .onb-item.onb-rich > .onb-tick{margin-top:1px;}

.tahoe-shell .onb-cred{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin-top:9px;
  padding:9px 12px;border-radius:10px;background:rgba(173,213,235,0.12);
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
}
.tahoe-shell .onb-cred .k{font-size:10px;text-transform:uppercase;letter-spacing:0.05em;color:#8C8C99;margin-right:6px;}
.tahoe-shell .onb-cred .v{font-size:12.5px;color:#1A1A20;font-weight:500;font-family:var(--num-font);}
.tahoe-shell .onb-cred .cred-act{
  width:24px;height:24px;border-radius:7px;border:none;background:transparent;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;color:#6C6C78;
}
.tahoe-shell .onb-cred .cred-act:hover{background:rgba(10,19,48,0.07);color:#1B2D70;}
.tahoe-shell .onb-cred .cred-act svg{width:14px;height:14px;}
.tahoe-shell .onb-cred .cred-meta{font-size:11px;color:#8C8C99;margin-left:auto;}

.tahoe-shell .onb-choice{display:inline-flex;gap:2px;margin-top:9px;padding:3px;border-radius:10px;background:rgba(10,19,48,0.05);}
.tahoe-shell .onb-choice button{
  border:none;background:transparent;cursor:pointer;border-radius:8px;padding:5px 13px;
  font-size:12px;color:#4B4B55;font-family:inherit;transition:background 120ms ease,color 120ms ease;
}
.tahoe-shell .onb-choice button:hover{color:#1A1A20;}
.tahoe-shell .onb-choice button.on{background:#fff;color:#0A1330;font-weight:600;box-shadow:0 1px 2px rgba(10,19,48,0.10);}

.tahoe-shell .onb-input{display:inline-flex;align-items:center;gap:7px;margin-top:9px;}
.tahoe-shell .onb-input input{
  width:64px;border:1px solid rgba(10,19,48,0.14);border-radius:8px;padding:5px 9px;
  font-size:12.5px;font-family:var(--num-font);color:#1A1A20;background:#fff;
}
.tahoe-shell .onb-input input:focus{outline:none;border-color:#4F6FB5;box-shadow:0 0 0 3px rgba(173,213,235,0.5);}
.tahoe-shell .onb-input .suffix{font-size:12.5px;color:#6C6C78;}

.tahoe-shell .onb-item .onb-act{display:flex;align-items:center;gap:8px;flex-shrink:0;}

/* Chips selecionáveis (ex.: despesas fixas, tipos de conta) — multi-seleção.
   .chip-add é a affordance tracejada de "adicionar / outras". */
.tahoe-shell .onb-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;}
.tahoe-shell .onb-chips .chip{
  display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;
  font-size:12px;cursor:pointer;border:1px solid rgba(10,19,48,0.14);background:#fff;color:#6C6C78;
  transition:background 120ms ease,color 120ms ease,box-shadow 120ms ease,border-color 120ms ease;
}
.tahoe-shell .onb-chips .chip:hover{border-color:#4F6FB5;color:#1A1A20;}
.tahoe-shell .onb-chips .chip.on{background:rgba(27,45,112,0.08);border-color:transparent;color:#1B2D70;font-weight:500;box-shadow:inset 0 0 0 1px rgba(27,45,112,0.28);}
.tahoe-shell .onb-chips .chip.on::before{content:'✓';font-size:9px;font-weight:700;}
.tahoe-shell .onb-chips .chip-add{border-style:dashed;color:#4F6FB5;font-weight:500;}
.tahoe-shell .onb-chips .chip-add:hover{background:rgba(79,111,181,0.06);}

/* ─────────── Stage indicator ─────────── */
.tahoe-shell .stage-track{display:flex;align-items:center;gap:6px;}
.tahoe-shell .stage-track > div{
  flex:1 1 auto;min-width:max-content;white-space:nowrap;
  height:26px;display:flex;align-items:center;justify-content:center;padding:0 12px;
  font-size:11px;font-weight:500;color:#6C6C78;
  background:rgba(10,19,48,0.05);border-radius:8px;
}
.tahoe-shell .stage-track > div.done{background:rgba(47,140,94,0.18);color:#1F6B46;}
.tahoe-shell .stage-track > div.current{background:linear-gradient(180deg,#2F4FA0,#1B2D70);color:#fff;box-shadow:0 1px 2px rgba(10,19,48,0.12);}

/* ─────────── Esteira de recuperação (.esteira) ───────────
   ESTOQUE atual por estado da cobrança — quantos casos estão AGORA em cada
   etapa. Não confundir com .funnel (conversão do mês) nem com .stage-track
   (progresso de UMA entidade). Cada nó é um link que abre a lista já filtrada.
   Cores espelham as pills dos 6 estados (ver cobranca-core.js). Referência:
   shell-cobranca-recuperacao.html. */
.tahoe-shell .esteira{
  display:flex;align-items:stretch;gap:8px;margin:0 0 10px;
}
.tahoe-shell .esteira-node{
  flex:1 1 0;min-width:0;
  display:flex;flex-direction:column;gap:3px;
  padding:12px 14px;border-radius:12px;text-decoration:none;
  background:rgba(10,19,48,0.04);
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.06);
  transition:box-shadow .15s ease, transform .15s ease;
}
.tahoe-shell .esteira-node:hover{
  transform:translateY(-1px);
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.14), 0 2px 8px rgba(10,19,48,0.08);
}
.tahoe-shell .esteira-node .en-lbl{
  font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;
  color:#6C6C78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tahoe-shell .esteira-node .en-num{font-family:var(--num-font);font-size:22px;font-weight:600;line-height:1.1;color:#1A1A20;}
.tahoe-shell .esteira-node .en-val{font-family:var(--num-font);font-size:12px;color:#6C6C78;}

/* Um modificador por estado — só a cor muda; forma e peso são idênticos,
   pra leitura comparativa entre os nós. */
.tahoe-shell .esteira-node.em-regua{background:rgba(var(--esteira-em-regua-rgb),0.09);box-shadow:inset 0 0 0 1px rgba(var(--esteira-em-regua-rgb),0.18);}
.tahoe-shell .esteira-node.em-regua .en-lbl{color:var(--esteira-em-regua-fg);}
.tahoe-shell .esteira-node.aguardando{background:rgba(var(--esteira-aguardando-rgb),0.11);box-shadow:inset 0 0 0 1px rgba(var(--esteira-aguardando-rgb),0.20);}
.tahoe-shell .esteira-node.aguardando .en-lbl{color:var(--esteira-aguardando-fg);}
.tahoe-shell .esteira-node.acordo{background:rgba(var(--esteira-acordo-rgb),0.11);box-shadow:inset 0 0 0 1px rgba(var(--esteira-acordo-rgb),0.20);}
.tahoe-shell .esteira-node.acordo .en-lbl{color:var(--esteira-acordo-fg);}
.tahoe-shell .esteira-node.quebrado{background:rgba(var(--esteira-quebrado-rgb),0.10);box-shadow:inset 0 0 0 1px rgba(var(--esteira-quebrado-rgb),0.20);}
.tahoe-shell .esteira-node.quebrado .en-lbl{color:var(--esteira-quebrado-fg);}
.tahoe-shell .esteira-node.juridico{background:rgba(var(--esteira-juridico-rgb),0.08);box-shadow:inset 0 0 0 1px rgba(var(--esteira-juridico-rgb),0.18);}
.tahoe-shell .esteira-node.juridico .en-lbl{color:var(--esteira-juridico-fg);}

.tahoe-shell .esteira-arrow{
  align-self:center;flex:0 0 auto;color:#A8A8B4;font-size:14px;line-height:1;user-select:none;
}

/* Conversão do mês, comprimida numa linha — substitui o .funnel no painel. */
.tahoe-shell .esteira-taxas{
  display:flex;flex-wrap:wrap;gap:18px;
  padding:0 2px 2px;font-size:12px;color:#6C6C78;
}
.tahoe-shell .esteira-taxas b{font-family:var(--num-font);color:#1A1A20;font-weight:600;}

/* Abaixo de 900px vira grid 2 colunas e as setas somem — a ordem de leitura
   já carrega a sequência, a seta só ocuparia espaço. */
@media (max-width:900px){
  .tahoe-shell .esteira{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .tahoe-shell .esteira-arrow{display:none;}
}

/* Selo de isenção da taxa administrativa. Auditoria, não alerta — fica
   discreto pra não competir com a pill de estado ao lado. Autor, data e
   motivo vão no title (o app preenche). */
.tahoe-shell .caso-isento{
  display:inline-flex;align-items:center;gap:4px;
  padding:2px 7px;border-radius:999px;
  font-size:11px;font-weight:500;color:#4B4B55;
  background:rgba(10,19,48,0.05);
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.08);
  cursor:help;white-space:nowrap;
}
.tahoe-shell .caso-isento svg{width:11px;height:11px;flex:0 0 11px;color:#6C6C78;}

/* Modificador de tom (v0.42.0). A anatomia é a mesma — tamanho, raio,
   cursor:help, gap do ícone — porque o papel é o mesmo: informação pra quem
   audita, não alerta. Muda só o tom, e o tom carrega a distinção que importa:
   o neutro de origem diz FATO CONSUMADO (a isenção já foi concedida), o âmbar
   diz ETAPA PENDENTE (um acordo nasce sem parcelas, que são negociadas caso a
   caso com anuência do síndico — nulo ali é fila de trabalho, não dado
   faltando). Reusa o par --warning-soft/--warning-border do .pill-warn em vez
   de inventar um âmbar paralelo; o color fica literal porque --warning (#C8881A)
   é claro demais pra texto de 11px sobre esse fundo. */
.tahoe-shell .caso-isento.warn{
  color:#8A5D10;
  background:var(--warning-soft);
  box-shadow:inset 0 0 0 1px var(--warning-border);
}
.tahoe-shell .caso-isento.warn svg{color:#B07714;}

/* Contador até o encaminhamento ao jurídico. A faixa "iminente" usa o
   grafite do jurídico — sinaliza o DESTINO, não alarme (vermelho já é
   acordo quebrado). Classes vêm de faixaDiasPara() no cobranca-core. */
.tahoe-shell .dias-para{
  display:inline-flex;align-items:baseline;gap:4px;
  font-size:12px;font-weight:500;color:#6C6C78;white-space:nowrap;
}
.tahoe-shell .dias-para b{font-family:var(--num-font);font-size:13px;font-weight:600;color:#4B4B55;}
.tahoe-shell .dias-para.alerta{color:#8A5D10;}
.tahoe-shell .dias-para.alerta b{color:#8A5D10;}
.tahoe-shell .dias-para.iminente{color:#2E2E36;}
.tahoe-shell .dias-para.iminente b{color:#2E2E36;}

/* ─────────── Confirmação do disparo forçado (.blast-confirm) ───────────
   Um botão que dispara dezenas de WhatsApps precisa de preview antes de
   enviar. Composto sobre .card / .stack / .cfg-field / .comms-preview —
   estas classes são só o container e o rodapé. Referência:
   shell-cobranca-condominios.html. */
.tahoe-shell .blast-confirm{
  max-width:560px;
}
.tahoe-shell .blast-confirm .bc-head{
  font-size:13px;line-height:1.5;color:#4B4B55;margin:0 0 4px;
}
.tahoe-shell .blast-confirm .bc-head b{font-family:var(--num-font);color:#1A1A20;font-weight:600;}
.tahoe-shell .blast-confirm .bc-split{
  display:flex;flex-wrap:wrap;gap:14px;
  margin:10px 0 4px;font-size:12px;color:#6C6C78;
}
.tahoe-shell .blast-confirm .bc-split i{font-family:var(--num-font);font-style:normal;font-weight:600;color:#1A1A20;}

/* A guarda das 48h. Fundo âmbar suave: é a proteção que impede a equipe de
   metralhar o morador — desligar precisa parecer uma decisão, não um clique
   qualquer. Vem marcada por padrão no HTML. */
.tahoe-shell .blast-confirm .bc-guard{
  display:flex;align-items:center;gap:10px;
  margin:14px 0;padding:10px 12px;border-radius:10px;
  background:linear-gradient(135deg,rgba(250,241,221,0.65) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(235,217,168,0.7);
  font-size:12.5px;color:#5C4416;
}
.tahoe-shell .blast-confirm .bc-guard .bc-delta{
  margin-left:auto;font-weight:600;color:#8A5D10;white-space:nowrap;
}
.tahoe-shell .blast-confirm .bc-foot{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;
  margin-top:16px;padding-top:14px;
  border-top:1px solid rgba(10,19,48,0.08);
}

/* ─────────── Régua — fluxo do acordo (promovido na v0.42.0) ───────────
   Estas sete regras viviam num <style> local de shell-cobranca-regua.html e
   nunca chegaram ao pacote: o shell renderizava certo porque carregava o
   próprio <style>, mas quem instala o kit não tinha como reproduzir a tela.
   Cores em hex literal, como o resto deste arquivo — a doutrina de tiers do
   SKILL se dirige a quem constrói no app consumidor, não à folha do kit. */

/* Fluxo numerado "Como funciona o acordo". Numerais em Saira; superfícies só
   com box-shadow inset (hairline), sem borda real. */
.tahoe-shell .regua-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;}
.tahoe-shell .regua-flow .fstep{
  display:flex;align-items:center;gap:10px;flex:1 1 168px;min-width:158px;
  background:rgba(173,213,235,0.10);border-radius:12px;padding:10px 12px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
}
.tahoe-shell .regua-flow .fnum{
  flex:0 0 24px;width:24px;height:24px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;font-family:var(--num-font);
  font-size:13px;color:#fff;background:linear-gradient(180deg,#2F4FA0,#1B2D70);
}
.tahoe-shell .regua-flow .ftext{font-size:12px;line-height:1.35;color:#1A1A20;}
.tahoe-shell .regua-flow .ftext b{color:#1B2D70;font-weight:600;}

/* Bifurcação "Pagou / Não pagou", logo abaixo do fluxo. */
.tahoe-shell .regua-branch{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
.tahoe-shell .regua-branch .br{
  flex:1 1 260px;display:flex;gap:10px;align-items:flex-start;
  background:#fff;border-radius:12px;padding:11px 13px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
}
.tahoe-shell .regua-branch .br .txt{font-size:12px;line-height:1.45;color:#4B4B55;}
.tahoe-shell .regua-branch .br .txt b{color:#1A1A20;font-weight:600;}

/* D+7 destacado no trilho — é onde a oferta de acordo entra. E o passo
   desligado pelo toggle: .step-off nasce ausente do markup e é aplicada em
   runtime, então não espere encontrá-la no HTML servido. */
/* O azul do realce coincide com --esteira-em-regua e NÃO está acoplado a ele
   de propósito: são coisas diferentes — aqui é "o passo onde a oferta entra",
   lá é "o estado em que o caso está". Se a cor da esteira mudar, esta não
   deve seguir junto sem alguém decidir isso. */
.tahoe-shell .comms-step.is-acordo{
  box-shadow:inset 0 0 0 1.5px rgba(79,111,181,0.42),0 6px 16px rgba(27,45,112,0.08);
  background:rgba(173,213,235,0.09);
}
.tahoe-shell .comms-step.step-off{opacity:.5;}

/* ─────────── Config — per-condomínio (.cfg-*) ───────────
   Tela interna de configurações de UM condomínio. Usa o
   `.detail-header` padrão (avatar + título + meta + pills) igual o
   resto do admin kit — sem hero próprio. Sidenav interno funciona
   como TABS verticais: clicar mostra só aquela seção, esconde as
   outras (não é scroll-spy multi-seção).

   Componentes específicos:
   - .cfg-rule (Regra Padrão Semog vs Personalizado)
   - .cfg-cert (certificado A1 com 3 níveis de validade)
   - .cfg-logo-up (uploader do logo do condomínio)
   - .cfg-people + .cfg-person-row (síndico, conselho, funcionários,
     equipe Semog interna)
   Botões de ação dentro das seções usam .ghost-btn / .tb-primary do
   shell — não temos botão próprio aqui. Grid padrão é 2 colunas;
   .col-3 só em casos onde 3 pills curtas faz mais sentido.
   Referência: shell-config-condo.html. Todos os tokens vêm de tokens.css. */

/* Faixa contextual de pendências */
.tahoe-shell .cfg-pending-bar{
  display:flex;align-items:center;gap:12px;
  margin:-2px 0 14px;padding:10px 14px;border-radius:12px;
  background:linear-gradient(135deg,rgba(250,241,221,0.65) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(235,217,168,0.7);
  font-size:12.5px;color:#5C4416;line-height:1.5;
}
.tahoe-shell .cfg-pending-bar svg{width:16px;height:16px;flex:0 0 16px;color:#C8881A;}
.tahoe-shell .cfg-pending-bar b{color:#1A1A20;font-weight:600;}
.tahoe-shell .cfg-pending-bar i{font-style:normal;color:#1A1A20;font-weight:500;}
.tahoe-shell .cfg-pending-bar a{
  margin-left:auto;font-size:12px;font-weight:500;color:#4F6FB5;
  cursor:pointer;white-space:nowrap;text-decoration:none;
}
.tahoe-shell .cfg-pending-bar a:hover{text-decoration:underline;text-underline-offset:3px;}

/* Layout: 210px sidenav + corpo */
.tahoe-shell .cfg-layout{display:grid;grid-template-columns:210px 1fr;gap:24px;align-items:start;}

/* Sidenav interno (paleta light) */
.tahoe-shell .cfg-sidenav{
  position:sticky;top:16px;
  display:flex;flex-direction:column;gap:2px;
  padding:6px;border-radius:14px;background:#fff;
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.06),0 1px 0 rgba(255,255,255,0.6);
}
.tahoe-shell .cfg-sidenav-section{
  font-size:10px;text-transform:uppercase;letter-spacing:0.06em;
  color:#8C8C99;padding:8px 10px 4px;
}
.tahoe-shell .cfg-sidenav-item{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;
  padding:7px 10px;border-radius:10px;
  font-size:12.5px;color:#4B4B55;text-decoration:none;cursor:pointer;
  transition:background 120ms ease,color 120ms ease;
}
.tahoe-shell .cfg-sidenav-item:hover{background:rgba(173,213,235,0.14);color:#1A1A20;}
.tahoe-shell .cfg-sidenav-item.on{
  background:linear-gradient(135deg,rgba(173,213,235,0.22),rgba(255,255,255,0.6));
  color:#0A1330;font-weight:600;
  box-shadow:inset 0 0 0 1px rgba(27,45,112,0.10);
}
.tahoe-shell .cfg-sidenav-item .dot{width:7px;height:7px;border-radius:999px;background:#BCBCC7;}
.tahoe-shell .cfg-sidenav-item .dot.ok{background:#2F8C5E;}
.tahoe-shell .cfg-sidenav-item .dot.warn{background:#C8881A;}
.tahoe-shell .cfg-sidenav-item .dot.crit{background:#B33A3A;}
.tahoe-shell .cfg-sidenav-divider{height:1px;background:rgba(10,19,48,0.06);margin:6px 8px;}

/* Section — comporta-se como TAB PANEL: só a com `.on` é visível.
   Botões de ação (Editar / Salvar / Cancelar) vivem no .cfg-section-actions
   mas usam .ghost-btn / .tb-primary do shell — não temos botão próprio. */
.tahoe-shell .cfg-section{display:none;}
.tahoe-shell .cfg-section.on{display:block;}

.tahoe-shell .cfg-section .card-h{align-items:flex-start;gap:10px;}
.tahoe-shell .cfg-section-head{display:flex;align-items:baseline;gap:12px;flex:1;min-width:0;}
.tahoe-shell .cfg-section-title{display:flex;flex-direction:column;min-width:0;}
.tahoe-shell .cfg-section-title h3{
  margin:0;font-size:15px;font-weight:600;color:#0A1330;letter-spacing:-0.005em;
  display:inline-flex;align-items:center;gap:8px;
}
.tahoe-shell .cfg-section-sub{margin-top:2px;font-size:12px;color:#6C6C78;line-height:1.4;}
.tahoe-shell .cfg-section-actions{display:flex;gap:6px;align-items:center;flex:0 0 auto;}
.tahoe-shell .cfg-section-pending-pill{
  display:inline-flex;align-items:center;gap:5px;margin-left:4px;
  padding:2px 8px;border-radius:999px;
  background:rgba(250,241,221,0.85);color:#8A5C0A;
  font-size:10.5px;font-weight:500;
  box-shadow:inset 0 0 0 1px rgba(235,217,168,0.9);
}

/* Sub-cabeçalho dentro de uma seção — ganha um tick brand à esquerda pra
   dar cor e ancorar o agrupamento (pedido: "subcategoria precisa de cor").
   Texto mais escuro + mais respiro acima pra separar blocos de verdade. */
.tahoe-shell .cfg-subhead{
  margin:26px 0 10px;font-size:11px;color:#4B4B55;
  font-weight:600;letter-spacing:0.06em;text-transform:uppercase;
  display:flex;align-items:center;gap:10px;
}
.tahoe-shell .cfg-subhead::before{
  content:'';width:4px;height:12px;border-radius:2px;flex:0 0 4px;
  background:linear-gradient(180deg,#2F4FA0,#1B2D70);
}
.tahoe-shell .cfg-subhead::after{content:'';flex:1;height:1px;background:rgba(10,19,48,0.06);}
.tahoe-shell .cfg-subhead:first-child{margin-top:14px;}

/* Grid de campos — mais respiro entre linhas pra escapar do aperto. */
.tahoe-shell .cfg-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 24px;margin-top:10px;}
.tahoe-shell .cfg-grid.col-3{grid-template-columns:repeat(3,1fr);}
.tahoe-shell .cfg-grid.col-4{grid-template-columns:repeat(4,1fr);}
.tahoe-shell .cfg-field{display:flex;flex-direction:column;gap:4px;min-width:0;position:relative;}
.tahoe-shell .cfg-field.span-2{grid-column:span 2;}
.tahoe-shell .cfg-field.span-3{grid-column:span 3;}
.tahoe-shell .cfg-field > label{
  font-size:11px;color:#6C6C78;font-weight:500;letter-spacing:0.01em;
  display:flex;align-items:center;gap:6px;
}
.tahoe-shell .cfg-field > label .info{color:#BCBCC7;cursor:help;line-height:0;}
.tahoe-shell .cfg-field > label .info svg{width:12px;height:12px;}
.tahoe-shell .cfg-field > label .req{color:#C8881A;font-size:10px;font-weight:500;margin-left:2px;}
.tahoe-shell .cfg-field .val{
  font-size:13px;color:#1A1A20;font-weight:500;
  min-height:20px;line-height:1.4;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.tahoe-shell .cfg-field .val.num{font-family:var(--num-font);font-weight:500;font-size:13.5px;}
.tahoe-shell .cfg-field .val.empty{color:#8C8C99;font-weight:400;font-style:italic;}
.tahoe-shell .cfg-field .val.pending{color:#8A5C0A;font-weight:500;font-style:normal;}
.tahoe-shell .cfg-field .val.pending::before{
  content:'';width:6px;height:6px;border-radius:999px;background:#C8881A;flex:0 0 6px;
}
.tahoe-shell .cfg-field .val .pill{font-size:10.5px;padding:1px 7px;}
.tahoe-shell .cfg-field .val .check{
  color:#2F8C5E;font-size:11px;font-weight:500;
  display:inline-flex;align-items:center;gap:3px;
}
.tahoe-shell .cfg-field .val .check svg{width:11px;height:11px;}
.tahoe-shell .cfg-field .help{font-size:11px;color:#8C8C99;margin-top:2px;line-height:1.4;}

/* ─── Regra Padrão Semog ─────────────────────────────────────────
   Pattern central da config. A HERANÇA é a espinha visual: o estado é
   o que organiza a leitura.

   - DEFAULT (herdado) = QUIETO. Recua. Marcador sem caixa "= Padrão
     Semog" em cinza; clicável (deep-link pra regra global). Nada de
     nota "personalizar" sempre visível — editar é via "Editar" da
     seção. Assim o campo herdado vira só `valor = Padrão`.
   - CUSTOM (personalizado) = ALTO. O campo inteiro vira um card com
     tint sky + anel brand (sem rail lateral), pra saltar no scan. Chip
     "Personalizado" cheio em brand, e a nota mostra o BASELINE do
     padrão de forma estruturada (não frase corrida) + reverter.
   ──────────────────────────────────────────────────────────────── */

/* Default herdado — marcador quieto, recua. */
.tahoe-shell .cfg-rule.default{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;color:#8C8C99;font-weight:500;letter-spacing:0;
  line-height:1.4;text-decoration:none;
}
.tahoe-shell .cfg-rule.default::before{
  content:'=';font-family:var(--num-font);font-size:13px;font-weight:600;color:#BCBCC7;
}
.tahoe-shell a.cfg-rule.default:hover{color:#4F6FB5;}
.tahoe-shell a.cfg-rule.default:hover::before{color:#4F6FB5;}

/* Campo personalizado — vira card destacado. Sem rail lateral (não faz
   parte da linguagem): o destaque vem do tint + anel + chip "Personalizado". */
.tahoe-shell .cfg-field.is-custom{
  padding:11px 14px;border-radius:11px;
  background:linear-gradient(135deg,rgba(173,213,235,0.22),rgba(173,213,235,0.06));
  box-shadow:inset 0 0 0 1px rgba(27,45,112,0.16);
}
.tahoe-shell .cfg-rule.custom{
  display:inline-flex;align-items:center;gap:5px;
  font-size:9.5px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;
  padding:2px 9px;border-radius:999px;line-height:1.6;text-decoration:none;
  background:linear-gradient(135deg,#2F4FA0,#1B2D70);color:#fff;
  box-shadow:0 1px 2px rgba(10,19,48,0.20);
}
.tahoe-shell .cfg-rule.custom::before{
  content:'';width:5px;height:5px;border-radius:999px;flex:0 0 5px;
  background:rgba(255,255,255,0.9);
}

/* Nota de diff (só em campo custom): baseline do padrão + reverter. */
.tahoe-shell .cfg-rule-note{
  font-size:11px;color:#8C8C99;margin-top:7px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.tahoe-shell .cfg-rule-note .std{display:inline-flex;align-items:center;gap:5px;color:#8C8C99;}
.tahoe-shell .cfg-rule-note .std b{color:#4B4B55;font-weight:600;font-family:var(--num-font);}
.tahoe-shell .cfg-rule-note .revert{margin-left:auto;}
.tahoe-shell .cfg-rule-note a{
  color:#4F6FB5;cursor:pointer;font-weight:500;text-decoration:none;
  display:inline-flex;align-items:center;gap:4px;
}
.tahoe-shell .cfg-rule-note a:hover{text-decoration:underline;text-underline-offset:2px;}
.tahoe-shell .cfg-rule-note b{color:#1A1A20;font-weight:500;}

/* ─── Adoção (Regras Padrão Semog, config global) ────────────────
   Substitui a frase corrida "N condomínios herdam · M personalizam ·
   ver →" (que quebrava feio) por um stat estruturado: caption +
   medidor de proporção herdam/personalizam + legenda alinhada que
   nunca quebra. Vira mini data-viz scannável. */
.tahoe-shell .cfg-adoption{display:flex;flex-direction:column;gap:7px;margin-top:8px;}
.tahoe-shell .cfg-adoption .caption{font-size:11px;color:#8C8C99;line-height:1.4;}
.tahoe-shell .cfg-adoption .meter{
  display:flex;height:5px;border-radius:999px;overflow:hidden;
  background:rgba(10,19,48,0.05);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.04);
}
.tahoe-shell .cfg-adoption .meter .herdam{background:linear-gradient(90deg,#4F6FB5,#2F4FA0);}
.tahoe-shell .cfg-adoption .meter .custom{background:linear-gradient(90deg,#E2A93C,#C8881A);}
.tahoe-shell .cfg-adoption .legend{
  font-size:11px;color:#6C6C78;display:flex;align-items:center;gap:7px;white-space:nowrap;
}
.tahoe-shell .cfg-adoption .legend b{font-weight:600;font-family:var(--num-font);}
.tahoe-shell .cfg-adoption .legend .h-c{color:#1B2D70;}
.tahoe-shell .cfg-adoption .legend .c-c{color:#8A5C0A;}
.tahoe-shell .cfg-adoption .legend .sep{color:#D9D9DF;}
.tahoe-shell .cfg-adoption .legend a{
  margin-left:auto;color:#4F6FB5;font-weight:500;text-decoration:none;
}
.tahoe-shell .cfg-adoption .legend a:hover{text-decoration:underline;text-underline-offset:2px;}
/* Quando todos herdam (0 personalizam) o medidor fica calmo, sem âmbar. */
.tahoe-shell .cfg-adoption.all-default .legend .c-c{color:#8C8C99;}

/* Inputs em modo edit */
.tahoe-shell .cfg-field input,
.tahoe-shell .cfg-field select,
.tahoe-shell .cfg-field textarea{
  appearance:none;border:1px solid rgba(10,19,48,0.14);background:#fff;
  border-radius:10px;padding:7px 10px;
  font-size:13px;color:#1A1A20;font-family:inherit;
  transition:border-color 120ms ease,box-shadow 120ms ease;
  min-height:32px;
}
.tahoe-shell .cfg-field input:focus,
.tahoe-shell .cfg-field select:focus,
.tahoe-shell .cfg-field textarea:focus{
  outline:none;border-color:#4F6FB5;box-shadow:0 0 0 3px rgba(173,213,235,0.5);
}
.tahoe-shell .cfg-field input.num-input{font-family:var(--num-font);text-align:right;}
.tahoe-shell .cfg-field .input-affix{
  display:grid;grid-template-columns:auto 1fr;align-items:stretch;
  border:1px solid rgba(10,19,48,0.14);background:#fff;
  border-radius:10px;overflow:hidden;
  transition:border-color 120ms ease,box-shadow 120ms ease;
}
.tahoe-shell .cfg-field .input-affix:focus-within{
  border-color:#4F6FB5;box-shadow:0 0 0 3px rgba(173,213,235,0.5);
}
.tahoe-shell .cfg-field .input-affix .prefix,
.tahoe-shell .cfg-field .input-affix .suffix{
  display:inline-flex;align-items:center;padding:0 10px;
  font-size:12px;color:#8C8C99;background:rgba(246,246,248,0.7);
}
.tahoe-shell .cfg-field .input-affix .suffix{order:2;border-left:1px solid rgba(10,19,48,0.06);}
.tahoe-shell .cfg-field .input-affix .prefix{border-right:1px solid rgba(10,19,48,0.06);}
.tahoe-shell .cfg-field .input-affix input{border:none;box-shadow:none;padding:7px 10px;background:transparent;}
.tahoe-shell .cfg-field .input-affix input:focus{box-shadow:none;}

/* Toggle (switch) */
.tahoe-shell .cfg-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;user-select:none;}
.tahoe-shell .cfg-toggle input{position:absolute;opacity:0;pointer-events:none;}
.tahoe-shell .cfg-toggle .track{
  width:34px;height:20px;border-radius:999px;
  background:rgba(10,19,48,0.14);position:relative;
  transition:background 160ms ease;flex:0 0 34px;
}
.tahoe-shell .cfg-toggle .track::before{
  content:'';position:absolute;top:2px;left:2px;
  width:16px;height:16px;border-radius:999px;background:#fff;
  box-shadow:0 1px 2px rgba(10,19,48,0.18);
  transition:transform 160ms ease;
}
.tahoe-shell .cfg-toggle input:checked + .track{background:linear-gradient(180deg,#2F4FA0,#1B2D70);}
.tahoe-shell .cfg-toggle input:checked + .track::before{transform:translateX(14px);}
.tahoe-shell .cfg-toggle .label-text{font-size:13px;color:#1A1A20;font-weight:500;}

/* Address sub-card */
.tahoe-shell .cfg-address{
  background:#F6F6F8;border-radius:12px;padding:12px 14px;
  display:grid;grid-template-columns:1fr 2fr 1fr;gap:10px 14px;
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.05);
}
.tahoe-shell .cfg-address .cfg-field > label{color:#6C6C78;font-size:10.5px;}
.tahoe-shell .cfg-address .cfg-field .val{font-size:12.5px;}
.tahoe-shell .cfg-address .cfg-field.full{grid-column:1 / -1;}

/* Logo uploader */
.tahoe-shell .cfg-logo-up{
  display:grid;grid-template-columns:80px 1fr auto;gap:14px;align-items:center;
  padding:12px 14px;background:#F6F6F8;border-radius:12px;
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.05);
}
.tahoe-shell .cfg-logo-up .preview{
  width:80px;height:80px;border-radius:12px;background:#fff;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num-font);font-size:20px;color:#1B2D70;
  box-shadow:inset 0 0 0 1px rgba(27,45,112,0.10);overflow:hidden;
}
.tahoe-shell .cfg-logo-up .meta{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tahoe-shell .cfg-logo-up .meta b{font-size:13px;color:#1A1A20;font-weight:600;}
.tahoe-shell .cfg-logo-up .meta span{font-size:11px;color:#6C6C78;}
.tahoe-shell .cfg-logo-up .actions{display:flex;gap:6px;align-items:center;}

/* Matriz e filiais — rede de unidades da operação (config global).
   Cada unidade tem código curto (PE/JP/PA/CG), CNPJ e endereço. A
   matriz recebe badge cheia brand; filiais badge sky. */
.tahoe-shell .cfg-units{display:flex;flex-direction:column;margin-top:6px;}
.tahoe-shell .cfg-unit{
  display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:14px;
  padding:11px 0;border-bottom:1px solid var(--hairline-row);
}
.tahoe-shell .cfg-unit:last-child{border-bottom:none;}
.tahoe-shell .cfg-unit .code{
  width:42px;height:42px;border-radius:11px;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num-font);font-size:14px;font-weight:600;letter-spacing:0.02em;
  color:#1B2D70;background:linear-gradient(135deg,rgba(173,213,235,0.5),rgba(126,186,220,0.24));
  box-shadow:inset 0 0 0 1px rgba(27,45,112,0.12);
}
.tahoe-shell .cfg-unit.is-matriz .code{
  color:#fff;background:linear-gradient(135deg,#2F4FA0,#1B2D70);
  box-shadow:0 1px 2px rgba(10,19,48,0.20);
}
.tahoe-shell .cfg-unit .info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tahoe-shell .cfg-unit .name{
  font-size:13px;font-weight:600;color:#1A1A20;
  display:inline-flex;align-items:center;gap:8px;
}
.tahoe-shell .cfg-unit .name .tag{
  font-size:9.5px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;
  padding:1px 7px;border-radius:999px;
  background:linear-gradient(135deg,rgba(173,213,235,0.32),rgba(173,213,235,0.18));
  color:#15366A;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.28);
}
.tahoe-shell .cfg-unit .addr{font-size:11.5px;color:#6C6C78;line-height:1.4;}
.tahoe-shell .cfg-unit .cnpj{
  font-family:var(--num-font);font-size:12.5px;font-weight:500;color:#4B4B55;
  display:flex;align-items:center;justify-content:flex-end;gap:8px;white-space:nowrap;
}

/* ─── Edit mode (seções de config que suportam edição inline) ─────
   Alterna entre leitura (.u-read) e campos editáveis (.u-edit). Em
   leitura, os .u-edit somem; ao entrar em .editing, os .u-read somem
   e cada .u-edit volta ao seu display natural. A barra Salvar/Descartar
   e o "Adicionar filial" só aparecem em edição. */
.tahoe-shell .cfg-section:not(.editing) .u-edit{display:none;}
.tahoe-shell .cfg-section.editing .u-read{display:none;}
.tahoe-shell .cfg-section.editing .cfg-section-actions{display:none;}
.tahoe-shell .cfg-section .cfg-edit-bar{display:none;}
.tahoe-shell .cfg-section.editing .cfg-edit-bar{display:flex;}

/* Inputs das unidades em edição */
.tahoe-shell .cfg-unit input{
  appearance:none;border:1px solid rgba(10,19,48,0.14);background:#fff;border-radius:9px;
  padding:6px 9px;font-size:12.5px;color:#1A1A20;font-family:inherit;width:100%;
  transition:border-color 120ms ease,box-shadow 120ms ease;
}
.tahoe-shell .cfg-unit input:focus{outline:none;border-color:#4F6FB5;box-shadow:0 0 0 3px rgba(173,213,235,0.5);}
.tahoe-shell .cfg-unit .info input{margin-top:2px;}
.tahoe-shell .cfg-unit .code input{
  width:42px;height:42px;text-align:center;text-transform:uppercase;padding:0;border-radius:11px;
  font-family:var(--num-font);font-weight:600;font-size:13px;
}
.tahoe-shell .cfg-unit .cnpj input{width:auto;max-width:190px;text-align:right;font-family:var(--num-font);}
.tahoe-shell .cfg-section.editing .cfg-unit .code{background:none;box-shadow:none;}
.tahoe-shell .unit-remove{
  border:none;background:rgba(179,58,58,0.08);color:#B33A3A;border-radius:8px;
  width:28px;height:28px;flex:0 0 28px;cursor:pointer;font-size:18px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
}
.tahoe-shell .unit-remove:hover{background:rgba(179,58,58,0.16);}

/* Listas de pessoas (síndico, conselho, funcionários, equipe Semog) */
.tahoe-shell .cfg-people{display:flex;flex-direction:column;margin-top:6px;}
.tahoe-shell .cfg-person-row{
  display:grid;grid-template-columns:32px 1fr auto auto;
  align-items:center;gap:12px;padding:10px 0;
  border-bottom:1px solid rgba(10,19,48,0.05);
}
.tahoe-shell .cfg-person-row:last-child{border-bottom:none;}
.tahoe-shell .cfg-person-avatar{
  width:32px;height:32px;border-radius:999px;
  background:linear-gradient(135deg,rgba(173,213,235,0.7),rgba(126,186,220,0.5));
  color:#1B2D70;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num-font);font-size:12px;font-weight:500;
  box-shadow:inset 0 0 0 1px rgba(27,45,112,0.10);
}
.tahoe-shell .cfg-person-avatar.internal{
  background:linear-gradient(135deg,rgba(27,45,112,0.10),rgba(173,213,235,0.18));
}
.tahoe-shell .cfg-person-info{display:flex;flex-direction:column;gap:1px;min-width:0;}
.tahoe-shell .cfg-person-name{
  font-size:13px;font-weight:600;color:#1A1A20;
  display:inline-flex;align-items:center;gap:8px;
}
.tahoe-shell .cfg-person-role{font-size:11px;color:#6C6C78;}
.tahoe-shell .cfg-person-period{font-size:11px;color:#6C6C78;}
.tahoe-shell .cfg-person-extra{
  font-family:var(--num-font);font-size:12.5px;color:#1A1A20;
  font-weight:500;text-align:right;
}
.tahoe-shell .cfg-person-extra.muted{color:#8C8C99;font-style:italic;}
.tahoe-shell .cfg-add-row{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:10px;padding:6px 10px;
  background:transparent;border:1px dashed rgba(10,19,48,0.14);border-radius:10px;
  color:#4F6FB5;font-size:12px;font-weight:500;cursor:pointer;
}
.tahoe-shell .cfg-add-row:hover{background:rgba(173,213,235,0.10);border-color:rgba(79,111,181,0.4);}

/* Callout (sky-tinted, ex: aviso INSS) */
.tahoe-shell .cfg-callout{
  display:flex;align-items:flex-start;gap:10px;
  margin-top:14px;padding:12px 14px;border-radius:12px;
  background:linear-gradient(135deg,rgba(173,213,235,0.20) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(126,186,220,0.35);
}
.tahoe-shell .cfg-callout .icon{width:18px;height:18px;color:#1F4C6B;flex:0 0 18px;margin-top:1px;}
.tahoe-shell .cfg-callout .text{font-size:12.5px;color:#1A1A20;line-height:1.5;flex:1;}
.tahoe-shell .cfg-callout .text b{color:#1B2D70;font-weight:600;}
.tahoe-shell .cfg-callout .text a{color:#4F6FB5;font-weight:500;cursor:pointer;text-decoration:none;margin-left:4px;}

/* Certificado A1 (3 níveis por proximidade de vencimento) */
.tahoe-shell .cfg-cert{
  display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;
  padding:14px 16px;border-radius:12px;
  background:linear-gradient(135deg,rgba(232,243,237,0.55) 0%,rgba(255,255,255,0.5) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(184,220,200,0.6);
}
.tahoe-shell .cfg-cert.warn{
  background:linear-gradient(135deg,rgba(250,241,221,0.65) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(235,217,168,0.8);
}
.tahoe-shell .cfg-cert.crit{
  background:linear-gradient(135deg,rgba(249,227,227,0.55) 0%,rgba(255,255,255,0.5) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(232,184,184,0.6);
}
.tahoe-shell .cfg-cert .icon{
  width:44px;height:44px;border-radius:12px;
  background:rgba(47,140,94,0.10);color:#2F8C5E;
  display:inline-flex;align-items:center;justify-content:center;
}
.tahoe-shell .cfg-cert.warn .icon{background:rgba(200,136,26,0.10);color:#C8881A;}
.tahoe-shell .cfg-cert.crit .icon{background:rgba(179,58,58,0.10);color:#B33A3A;}
.tahoe-shell .cfg-cert .info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tahoe-shell .cfg-cert .info b{font-size:13px;color:#1A1A20;font-weight:600;}
.tahoe-shell .cfg-cert .info span{font-size:11px;color:#6C6C78;}
.tahoe-shell .cfg-cert .actions{display:flex;gap:6px;align-items:center;}

/* Campo modificado recentemente — mesmo card do is-custom, sem rail lateral. */
.tahoe-shell .cfg-field.recent{
  padding:11px 14px;border-radius:11px;
  background:linear-gradient(135deg,rgba(173,213,235,0.16),rgba(173,213,235,0.04));
  box-shadow:inset 0 0 0 1px rgba(126,186,220,0.32);
}
.tahoe-shell .cfg-field.recent > label::after{
  content:'modificado há 2 dias';
  margin-left:8px;font-size:9.5px;color:#4F6FB5;font-weight:500;
  text-transform:none;letter-spacing:0;font-style:italic;
}

/* Edit bar (rodapé com Salvar/Descartar dentro da seção) */
.tahoe-shell .cfg-edit-bar{
  display:flex;justify-content:flex-end;gap:8px;
  margin-top:16px;padding-top:14px;
  border-top:1px solid rgba(10,19,48,0.06);
}
.tahoe-shell .cfg-edit-bar .changed-count{
  margin-right:auto;align-self:center;
  font-size:11.5px;color:#8A5C0A;font-weight:500;
  display:inline-flex;align-items:center;gap:6px;
}
.tahoe-shell .cfg-edit-bar .changed-count::before{
  content:'';width:6px;height:6px;border-radius:999px;background:#C8881A;
}

/* ═══════════════════════════════════════════════════════════════
   ONBOARDING FLOWS (v0.17.0) — Instalação & Transição
   Primitivos para os dois fluxos de implantação: classificação de
   tipo, banner de data de corte, painel kanban, leitura de convenção
   por IA (dupla checagem) e régua de comunicação. Escopados em
   .tahoe-shell, sem cor nova fora dos tokens.
   ═══════════════════════════════════════════════════════════════ */

/* ─── Tipo de onboarding ─── */
.tahoe-shell .onb-type{
  display:inline-flex;align-items:center;gap:5px;
  font-size:10.5px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;
  padding:2px 9px 2px 7px;border-radius:999px;line-height:1.6;white-space:nowrap;
}
.tahoe-shell .onb-type::before{content:'';width:6px;height:6px;border-radius:999px;background:currentColor;opacity:0.85;}
.tahoe-shell .onb-type.install{background:rgba(126,186,220,0.20);color:#1B2D70;}
.tahoe-shell .onb-type.transition{background:rgba(200,136,26,0.16);color:#8A5D10;}

/* ─── Data de corte (transição) ─── */
.tahoe-shell .onb-cutover{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;
  background:linear-gradient(180deg,rgba(173,213,235,0.16),rgba(173,213,235,0.06));
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
  border-radius:14px;padding:14px 18px;margin-bottom:18px;
}
.tahoe-shell .onb-cutover .side{display:flex;flex-direction:column;gap:2px;}
.tahoe-shell .onb-cutover .lbl{font-size:11px;color:#6C6C78;}
.tahoe-shell .onb-cutover .who{font-size:13px;font-weight:500;color:#4B4B55;}
.tahoe-shell .onb-cutover .date{font-family:var(--num-font);font-size:20px;font-weight:400;color:#1B2D70;letter-spacing:-0.01em;line-height:1.1;}
.tahoe-shell .onb-cutover .side.ours .who{color:#1F6B46;}
.tahoe-shell .onb-cutover .side.ours .date{color:#0A1330;}
.tahoe-shell .onb-cutover .arrow{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);color:#1B2D70;}
.tahoe-shell .onb-cutover .arrow svg{width:16px;height:16px;}

/* ─── Kanban (Painel de Transição) ───
   Generaliza o board inline do shell-pipeline.html: colunas com
   scroll horizontal, header com dot de estágio + contagem, cards
   arrastáveis (visual). .blocked recebe faixa de atenção à esquerda. */
.tahoe-shell .kanban{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(238px,1fr);
  gap:12px;overflow-x:auto;padding-bottom:10px;align-items:start;
}
.tahoe-shell .kanban-col{display:flex;flex-direction:column;gap:8px;min-width:238px;}
.tahoe-shell .kanban-col-h{
  display:flex;align-items:center;gap:7px;padding:2px 4px 8px;
  font-size:11.5px;font-weight:600;color:#4B4B55;
}
.tahoe-shell .kanban-col-h .dot{width:8px;height:8px;border-radius:999px;background:#8C8C99;flex-shrink:0;}
.tahoe-shell .kanban-col-h .dot.info{background:#4F6FB5;}
.tahoe-shell .kanban-col-h .dot.warn{background:#C8881A;}
.tahoe-shell .kanban-col-h .dot.ok{background:#2F8C5E;}
.tahoe-shell .kanban-col-h .dot.crit{background:#B33A3A;}
.tahoe-shell .kanban-col-h .count{margin-left:auto;background:rgba(10,19,48,0.06);padding:1px 8px;border-radius:999px;color:#1A1A20;font-weight:600;font-family:var(--num-font);}
.tahoe-shell .kanban-card{
  display:block;text-decoration:none;color:inherit;
  background:rgba(255,255,255,0.96);border-radius:12px;padding:12px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06),0 1px 2px rgba(10,19,48,0.04);
  transition:box-shadow 140ms ease,transform 140ms ease;
}
.tahoe-shell .kanban-card:hover{box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10),0 4px 12px rgba(10,19,48,0.08);transform:translateY(-1px);}
.tahoe-shell .kanban-card.blocked{box-shadow:inset 3px 0 0 0 #B33A3A,inset 0 0 0 0.5px rgba(10,19,48,0.06),0 1px 2px rgba(10,19,48,0.04);}
.tahoe-shell .kanban-card .top{display:flex;align-items:center;gap:9px;margin-bottom:8px;}
.tahoe-shell .kanban-card .mark{
  width:30px;height:30px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(180deg,#E7EEFA,#D6DEF1);color:#1B2D70;
  display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;font-family:var(--num-font);
}
.tahoe-shell .kanban-card .name{font-size:13px;font-weight:600;line-height:1.2;}
.tahoe-shell .kanban-card .sub{font-size:11px;color:#6C6C78;margin-top:1px;}
.tahoe-shell .kanban-card .prog{display:flex;align-items:center;gap:7px;margin:9px 0;}
.tahoe-shell .kanban-card .prog .num{font-size:11.5px;width:30px;text-align:right;}
.tahoe-shell .kanban-card-foot{display:flex;align-items:center;gap:8px;margin-top:9px;padding-top:9px;box-shadow:inset 0 0.5px 0 rgba(10,19,48,0.06);}
.tahoe-shell .kanban-card-foot .avatar{width:22px;height:22px;font-size:9.5px;}
.tahoe-shell .kanban-card-foot .when{font-size:11px;color:#6C6C78;}
.tahoe-shell .kanban-card-foot .when.late{color:#8C2828;}
.tahoe-shell .kanban-card-foot .spacer{margin-left:auto;}

/* ─── Leitura de Convenção (IA) — dupla checagem ───
   Split documento ↔ campos. Esquerda: viewer "papel" rolável com
   trechos-fonte realçáveis (.ai-doc-mark). Direita: cards de campo
   extraído com confiança (meter de 3 dots) e ações confirmar/corrigir. */
.tahoe-shell .ai-split{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;align-items:start;}
.tahoe-shell .ai-doc{
  background:#fff;border-radius:14px;padding:22px 24px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.07),0 1px 3px rgba(10,19,48,0.05);
  max-height:640px;overflow-y:auto;position:sticky;top:14px;
}
.tahoe-shell .ai-doc-h{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.07);}
.tahoe-shell .ai-doc-h svg{width:16px;height:16px;color:#B33A3A;flex-shrink:0;}
.tahoe-shell .ai-doc-h .fname{font-size:12.5px;font-weight:600;}
.tahoe-shell .ai-doc-h .page{margin-left:auto;font-size:11px;color:#6C6C78;font-family:var(--num-font);}
.tahoe-shell .ai-doc h4{font-size:12px;font-weight:600;color:#4B4B55;margin:18px 0 6px;text-transform:uppercase;letter-spacing:0.03em;}
.tahoe-shell .ai-doc h4:first-of-type{margin-top:0;}
.tahoe-shell .ai-doc p{font-size:12.5px;line-height:1.7;color:#6C6C78;margin:0 0 10px;}
.tahoe-shell .ai-doc-mark{
  border-radius:4px;padding:1px 3px;margin:0 -1px;
  background:rgba(200,136,26,0.14);color:#4B4B55;
  box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.30);
  scroll-margin-top:60px;transition:background 160ms ease,box-shadow 160ms ease;
}
.tahoe-shell .ai-doc-mark.active{background:rgba(200,136,26,0.30);color:#1A1A20;box-shadow:inset 0 0 0 1px rgba(200,136,26,0.55);}
.tahoe-shell .ai-fields{display:flex;flex-direction:column;gap:10px;}
.tahoe-shell .ai-field{
  background:rgba(255,255,255,0.96);border-radius:12px;padding:13px 14px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);transition:box-shadow 140ms ease;
}
.tahoe-shell .ai-field.confirmed{box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.22);background:rgba(47,140,94,0.05);}
.tahoe-shell .ai-field.flagged{box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.38);background:rgba(200,136,26,0.05);}
.tahoe-shell .ai-field .row1{display:flex;align-items:flex-start;gap:10px;}
.tahoe-shell .ai-field-label{font-size:11px;color:#6C6C78;line-height:1.3;}
.tahoe-shell .ai-field-val{font-family:var(--num-font);font-size:19px;font-weight:400;color:#0A1330;letter-spacing:-0.01em;line-height:1.15;margin-top:2px;}
.tahoe-shell .ai-field-val.empty{color:#B33A3A;font-size:14px;font-family:'Inter',system-ui,sans-serif;}
.tahoe-shell .ai-confidence{display:inline-flex;align-items:center;gap:5px;margin-left:auto;flex-shrink:0;font-size:10px;font-weight:600;letter-spacing:0.03em;text-transform:uppercase;color:#6C6C78;}
.tahoe-shell .ai-confidence .meter{display:inline-flex;gap:2px;}
.tahoe-shell .ai-confidence .meter i{width:6px;height:6px;border-radius:999px;background:rgba(10,19,48,0.12);}
.tahoe-shell .ai-confidence.high{color:#1F6B46;}
.tahoe-shell .ai-confidence.high .meter i{background:#2F8C5E;}
.tahoe-shell .ai-confidence.mid{color:#8A5D10;}
.tahoe-shell .ai-confidence.mid .meter i:nth-child(-n+2){background:#C8881A;}
.tahoe-shell .ai-confidence.low{color:#8C2828;}
.tahoe-shell .ai-confidence.low .meter i:nth-child(1){background:#B33A3A;}
.tahoe-shell .ai-field-src{
  display:inline-flex;align-items:center;gap:5px;margin-top:9px;
  font-size:11.5px;color:#4F6FB5;cursor:pointer;background:none;border:0;padding:0;
}
.tahoe-shell .ai-field-src svg{width:13px;height:13px;}
.tahoe-shell .ai-field-src:hover{color:#1B2D70;text-decoration:underline;}
.tahoe-shell .ai-field-actions{display:flex;gap:6px;margin-top:11px;}
.tahoe-shell .ai-field-btn{
  display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;
  padding:5px 11px;border-radius:8px;cursor:pointer;border:0;
  background:rgba(10,19,48,0.05);color:#1A1A20;
}
.tahoe-shell .ai-field-btn svg{width:13px;height:13px;}
.tahoe-shell .ai-field-btn:hover{background:rgba(173,213,235,0.20);}
.tahoe-shell .ai-field-btn.primary{background:#1B2D70;color:#fff;}
.tahoe-shell .ai-field-btn.primary:hover{background:#24378F;}
.tahoe-shell .ai-field.confirmed .ai-field-actions{opacity:0.55;}
.tahoe-shell .ai-field-done{display:inline-flex;align-items:center;gap:5px;margin-top:11px;font-size:11.5px;font-weight:500;color:#1F6B46;}
.tahoe-shell .ai-field-done svg{width:14px;height:14px;}
/* Estado upload / processando */
.tahoe-shell .ai-dropzone{
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:40px 24px;border-radius:14px;background:rgba(173,213,235,0.07);
  box-shadow:inset 0 0 0 1.5px rgba(10,19,48,0.10);
  outline:2px dashed rgba(79,111,181,0.30);outline-offset:-8px;
}
.tahoe-shell .ai-dropzone svg{width:30px;height:30px;color:#4F6FB5;}
.tahoe-shell .ai-dropzone .t{font-size:13px;font-weight:600;}
.tahoe-shell .ai-dropzone .s{font-size:12px;color:#6C6C78;}
.tahoe-shell .ai-scan{height:6px;border-radius:999px;background:rgba(10,19,48,0.06);overflow:hidden;position:relative;}
.tahoe-shell .ai-scan > i{position:absolute;top:0;left:0;height:100%;width:40%;border-radius:999px;background:linear-gradient(90deg,#7EBADC,#1B2D70);animation:ai-scan-slide 1.4s ease-in-out infinite;}
@keyframes ai-scan-slide{0%{left:-40%;}100%{left:100%;}}

/* ─── Régua de Comunicação (T-30 → Go-live) ───
   Trilho vertical com âncoras de data, passos por público (síndico/
   moradores), chips de canal (WhatsApp/E-mail/Impresso) e preview da
   copy. Canais usam tokens existentes — sem verde-WhatsApp inventado. */
.tahoe-shell .comms-rail{position:relative;padding-left:22px;}
.tahoe-shell .comms-rail::before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:1.5px;background:rgba(10,19,48,0.10);}
.tahoe-shell .comms-anchor{position:relative;display:flex;align-items:center;gap:9px;margin:0 0 12px;padding-top:6px;}
.tahoe-shell .comms-anchor:not(:first-child){margin-top:8px;}
.tahoe-shell .comms-anchor::before{content:'';position:absolute;left:-22px;width:12px;height:12px;border-radius:999px;background:#fff;box-shadow:0 0 0 1.5px #4F6FB5,inset 0 0 0 3px #fff;}
.tahoe-shell .comms-anchor.go::before{box-shadow:0 0 0 1.5px #2F8C5E,inset 0 0 0 3px #fff;}
.tahoe-shell .comms-anchor .tcode{font-family:var(--num-font);font-size:15px;font-weight:400;color:#1B2D70;letter-spacing:-0.01em;}
.tahoe-shell .comms-anchor.go .tcode{color:#1F6B46;}
.tahoe-shell .comms-anchor.juridico::before{box-shadow:0 0 0 1.5px #2E2E36,inset 0 0 0 3px #fff;}
.tahoe-shell .comms-anchor.juridico .tcode{color:#2E2E36;}
.tahoe-shell .comms-anchor .tdate{font-size:11.5px;color:#6C6C78;}
.tahoe-shell .comms-anchor .tlabel{font-size:12px;color:#4B4B55;font-weight:500;margin-left:2px;}
.tahoe-shell .comms-step{
  position:relative;background:rgba(255,255,255,0.96);border-radius:12px;
  padding:13px 15px;margin:0 0 10px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);
}
.tahoe-shell .comms-step::before{content:'';position:absolute;left:-21px;top:18px;width:8px;height:8px;border-radius:999px;background:rgba(10,19,48,0.18);box-shadow:0 0 0 3px #fff;}
.tahoe-shell .comms-step.sent::before{background:#2F8C5E;}
.tahoe-shell .comms-step.scheduled::before{background:#C8881A;}
.tahoe-shell .comms-step .row1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.tahoe-shell .comms-step .title{font-size:13px;font-weight:600;}
.tahoe-shell .comms-step .when{margin-left:auto;font-size:11px;color:#6C6C78;font-family:var(--num-font);}
.tahoe-shell .comms-aud{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;letter-spacing:0.03em;text-transform:uppercase;padding:1px 8px;border-radius:999px;}
.tahoe-shell .comms-aud.sindico{background:rgba(126,186,220,0.20);color:#1B2D70;}
.tahoe-shell .comms-aud.moradores{background:rgba(10,19,48,0.06);color:#4B4B55;}
.tahoe-shell .comms-channels{display:flex;gap:6px;margin:8px 0;}
.tahoe-shell .comms-channel{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;padding:3px 9px;border-radius:999px;}
.tahoe-shell .comms-channel svg{width:13px;height:13px;}
.tahoe-shell .comms-channel.wa{background:rgba(47,140,94,0.12);color:#1F6B46;}
.tahoe-shell .comms-channel.email{background:rgba(126,186,220,0.18);color:#1B2D70;}
.tahoe-shell .comms-channel.print{background:rgba(10,19,48,0.06);color:#4B4B55;}
.tahoe-shell .comms-channel.app{background:rgba(27,45,112,0.10);color:#1B2D70;} /* Gruvi (app push) — canal do módulo Comunicados. Ícone smartphone distingue do e-mail (mesma família azul, cor mais fechada). Nunca verde-WhatsApp fora de .wa. */
.tahoe-shell .comms-preview{
  font-size:12px;line-height:1.55;color:#4B4B55;
  background:rgba(173,213,235,0.10);border-radius:10px;padding:10px 12px;margin-top:8px;
  box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.05);
}
.tahoe-shell .comms-preview b{color:#1A1A20;font-weight:600;}

@media (max-width:1180px){
  .tahoe-shell .ai-split{grid-template-columns:1fr;}
  .tahoe-shell .ai-doc{position:static;max-height:420px;}
  .tahoe-shell .onb-cutover{grid-template-columns:1fr;text-align:center;}
  .tahoe-shell .onb-cutover .arrow{transform:rotate(90deg);margin:0 auto;}
}

/* ─────────── Responsive ─────────── */
@media (max-width:1180px){
  .tahoe-shell .kpis{grid-template-columns:repeat(2,1fr);}
  .tahoe-shell .row2{grid-template-columns:1fr;}
  .tahoe-shell .row3{grid-template-columns:1fr;}
  .tahoe-shell .mini-kpis{grid-template-columns:repeat(2,1fr);}
  .tahoe-shell .mini-kpis.mini-kpis-5{grid-template-columns:repeat(2,1fr);}
  .tahoe-shell .det2{grid-template-columns:1fr;}
  .tahoe-shell .det3{grid-template-columns:1fr;}
  /* Config: sidenav vira chips horizontais quando o layout
     deixa de comprtar a coluna lateral. */
  .tahoe-shell .cfg-layout{grid-template-columns:1fr;}
  .tahoe-shell .cfg-sidenav{
    position:sticky;top:0;
    flex-direction:row;overflow-x:auto;padding:8px;gap:4px;
  }
  .tahoe-shell .cfg-sidenav-section,
  .tahoe-shell .cfg-sidenav-divider{display:none;}
  .tahoe-shell .cfg-sidenav-item{white-space:nowrap;}
  .tahoe-shell .cfg-grid.col-4{grid-template-columns:repeat(2,1fr);}
}

/* ─── Mobile (max-width: 767.98px): linear flow ───
   Sidebar deixa de ser sticky e empilha em cima do main. Main
   perde a margem e o radius pra ocupar a largura toda. Wallpaper
   continua aparecendo no body como background. */
@media (max-width: 767.98px){
  .tahoe-shell{
    grid-template-columns:1fr;
  }
  .tahoe-shell .sidebar{
    position:static;
    height:auto;
    width:100%;
    overflow-y:visible;
  }
  .tahoe-shell .main{
    margin:0;
    border-radius:0;
    box-shadow:none;
  }
  .tahoe-shell .toolbar{
    padding:8px 16px;
  }
  .tahoe-shell .content{
    padding:20px 16px 32px;
  }
  /* Config: campos empilham em 1 coluna; endereço mantém 2. */
  .tahoe-shell .cfg-grid,
  .tahoe-shell .cfg-grid.col-3,
  .tahoe-shell .cfg-grid.col-4{grid-template-columns:1fr;}
  .tahoe-shell .cfg-address{grid-template-columns:1fr 1fr;}
  .tahoe-shell .cfg-logo-up{grid-template-columns:64px 1fr;}
  .tahoe-shell .cfg-logo-up .actions{grid-column:1 / -1;justify-content:flex-start;}
}

/* ═══════════ v0.12.0 · Tarefas (lista 2-grid + kanban + detalhe/drawer) ═══════════
   Nav contextual na sidebar (.nav-group), layout 2-grid (lista + detalhe),
   visão kanban (.kanban), detalhe com subtarefas/anexos/comentários, e drawer
   (.task-drawer) que abre de qualquer rota. Comportamento: interactions.js.
   Refs: shell-tarefas.html (lista) · shell-tarefas-quadro.html (kanban). */

/* ── Nav contextual (sob um .nav-group na sidebar) ── */
.tahoe-shell .nav-caret{margin-left:8px;width:14px;height:14px;color:rgba(255,255,255,0.45);transition:transform 160ms ease;flex-shrink:0;}
.tahoe-shell .nav-group.open .nav-caret{transform:rotate(180deg);}
.tahoe-shell .nav-group .nav-sub{display:none;}
.tahoe-shell .nav-group.open .nav-sub{display:flex;flex-direction:column;gap:1px;margin:3px 0 6px;}
.tahoe-shell .nav-subitem{display:flex;align-items:center;gap:9px;padding:6px 10px 6px 34px;border-radius:9px;cursor:pointer;font-size:12.5px;font-weight:500;color:rgba(255,255,255,0.62);text-decoration:none;transition:background 120ms ease, color 120ms ease;}
.tahoe-shell .nav-subitem:hover{background:rgba(255,255,255,0.07);color:#fff;}
.tahoe-shell .nav-subitem.on{background:rgba(255,255,255,0.12);color:#fff;}
.tahoe-shell .nav-subitem svg{width:14px;height:14px;color:rgba(173,213,235,0.7);}
.tahoe-shell .nav-subitem.on svg{color:#ADD5EB;}
.tahoe-shell .nav-subitem .sub-count{margin-left:auto;font-size:11px;color:rgba(255,255,255,0.5);font-family:var(--num-font);}
.tahoe-shell .nav-subitem .sub-count.crit{color:#FFB0B0;}
.tahoe-shell .nav-subitem .sub-dot{width:8px;height:8px;border-radius:999px;margin-left:2px;flex-shrink:0;}
.tahoe-shell .nav-subhead{font-size:10px;font-weight:600;color:rgba(255,255,255,0.4);text-transform:uppercase;letter-spacing:.05em;padding:9px 10px 4px 34px;display:flex;justify-content:space-between;align-items:center;}
.tahoe-shell .nav-subhead span{cursor:pointer;font-size:14px;}

/* ── Avatares + tags ── */
.tahoe-shell .tavatar{width:20px;height:20px;border-radius:999px;background:linear-gradient(180deg,#7FA2D8,#4F6FB5);color:#fff;font-size:9.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-family:var(--num-font);}
.tahoe-shell .task-tag{display:inline-flex;align-items:center;height:21px;padding:0 9px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap;}
.tahoe-shell .tag-sky{background:rgba(79,111,181,0.13);color:#3A5694;}
.tahoe-shell .tag-amber{background:rgba(200,136,26,0.15);color:#8A5D10;}
.tahoe-shell .tag-red{background:rgba(179,58,58,0.12);color:#8C2828;}
.tahoe-shell .tag-green{background:rgba(47,140,94,0.15);color:#1F6B46;}
.tahoe-shell .tag-violet{background:rgba(124,93,196,0.14);color:#5A43A0;}
.tahoe-shell .tag-add{height:21px;min-width:21px;padding:0 6px;border-radius:999px;border:1px dashed rgba(10,19,48,0.2);color:#8C8C99;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;}
.tahoe-shell .tag-add:hover{border-color:#4F6FB5;color:#1B2D70;}

/* ── Layout 2-grid ── */
.tahoe-shell .tasks-layout{display:grid;grid-template-columns:minmax(0,1.45fr) 420px;height:calc(100vh - 188px);min-height:540px;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px rgba(10,19,48,0.07), 0 4px 10px rgba(10,19,48,0.04);}
.tahoe-shell .task-center{border-right:0.5px solid rgba(10,19,48,0.08);overflow-y:auto;display:flex;flex-direction:column;}
.tahoe-shell .task-detail{overflow-y:auto;display:flex;flex-direction:column;}

/* ── Lista de tarefas ── */
.tahoe-shell .center-h{display:flex;align-items:center;gap:10px;padding:15px 22px 11px;border-bottom:0.5px solid rgba(10,19,48,0.07);position:sticky;top:0;background:#fff;z-index:2;}
.tahoe-shell .center-h h3{font-family:var(--num-font);font-size:19px;font-weight:400;margin:0;color:#0A1330;letter-spacing:-0.01em;}
.tahoe-shell .center-h .ch-count{font-family:var(--num-font);font-size:13px;color:#A0A0AC;}
.tahoe-shell .center-scroll{overflow-y:auto;flex:1;padding:6px 0 18px;}
.tahoe-shell .group-h{font-size:11.5px;font-weight:600;color:#8C8C99;padding:13px 22px 6px;display:flex;align-items:center;gap:7px;}
.tahoe-shell .group-h.crit{color:#B33A3A;}
.tahoe-shell .group-h .gc{font-family:var(--num-font);font-weight:500;color:#B7B7C0;}
.tahoe-shell .task-row{display:flex;align-items:flex-start;gap:11px;padding:9px 22px;cursor:pointer;border-left:2px solid transparent;transition:background 110ms ease;}
.tahoe-shell .task-row:hover{background:rgba(10,19,48,0.028);}
.tahoe-shell .task-row.selected{background:rgba(79,111,181,0.08);border-left-color:#4F6FB5;}
.tahoe-shell .tcheck{width:18px;height:18px;border-radius:999px;flex-shrink:0;margin-top:1px;cursor:pointer;box-shadow:inset 0 0 0 1.6px rgba(10,19,48,0.25);display:inline-flex;align-items:center;justify-content:center;transition:all 120ms ease;}
.tahoe-shell .tcheck svg{width:11px;height:11px;color:#fff;opacity:0;}
.tahoe-shell .task-row.done .tcheck{background:#2F8C5E;box-shadow:inset 0 0 0 1.6px #2F8C5E;}
.tahoe-shell .task-row.done .tcheck svg{opacity:1;}
.tahoe-shell .trow-main{flex:1;min-width:0;}
.tahoe-shell .ttitle{font-size:13.5px;color:#1A1A20;line-height:1.35;}
.tahoe-shell .task-row.done .ttitle{color:#A0A0AC;text-decoration:line-through;}
.tahoe-shell .tmeta{display:flex;align-items:center;gap:10px;margin-top:5px;flex-wrap:wrap;}
.tahoe-shell .tmeta .m{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:#8C8C99;}
.tahoe-shell .tmeta .pdot{width:8px;height:8px;border-radius:999px;}
.tahoe-shell .tmeta svg{width:13px;height:13px;}
.tahoe-shell .tmeta .task-tag{height:18px;font-size:10px;padding:0 7px;}
.tahoe-shell .due.today{color:#1B6FB3;font-weight:600;}
.tahoe-shell .due.over{color:#B33A3A;font-weight:600;}
.tahoe-shell .prio-flag{width:13px;height:13px;}
.tahoe-shell .prio-hi{color:#B33A3A;}
.tahoe-shell .prio-med{color:#C8881A;}
.tahoe-shell .prio-lo{color:#A0A0AC;}
.tahoe-shell .add-task{display:flex;align-items:center;gap:9px;padding:9px 22px;color:#8C8C99;font-size:12.5px;cursor:pointer;}
.tahoe-shell .add-task:hover{color:#1B2D70;}
.tahoe-shell .add-task svg{width:15px;height:15px;}

/* ── Detalhe da tarefa (painel ou drawer) ── */
.tahoe-shell .td-h{display:flex;align-items:flex-start;gap:11px;padding:18px 22px 13px;border-bottom:0.5px solid rgba(10,19,48,0.07);}
.tahoe-shell .td-check{width:21px;height:21px;border-radius:999px;flex-shrink:0;margin-top:2px;cursor:pointer;box-shadow:inset 0 0 0 1.7px rgba(10,19,48,0.25);display:inline-flex;align-items:center;justify-content:center;transition:all 120ms ease;}
.tahoe-shell .td-check svg{width:13px;height:13px;color:#fff;opacity:0;}
.tahoe-shell .td-h.done .td-check{background:#2F8C5E;box-shadow:inset 0 0 0 1.7px #2F8C5E;}
.tahoe-shell .td-h.done .td-check svg{opacity:1;}
.tahoe-shell .td-title{flex:1;font-size:17px;font-weight:600;color:#0A1330;line-height:1.3;}
.tahoe-shell .td-h.done .td-title{color:#A0A0AC;text-decoration:line-through;}
.tahoe-shell .td-iconbtn{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#8C8C99;background:transparent;border:none;}
.tahoe-shell .td-iconbtn:hover{background:rgba(10,19,48,0.06);color:#1B2D70;}
.tahoe-shell .td-iconbtn svg{width:16px;height:16px;}
.tahoe-shell .td-meta{padding:15px 22px;display:flex;flex-direction:column;gap:12px;border-bottom:0.5px solid rgba(10,19,48,0.07);}
.tahoe-shell .tdm{display:flex;align-items:center;gap:12px;font-size:13px;}
.tahoe-shell .tdm-label{width:100px;flex-shrink:0;color:#8C8C99;display:flex;align-items:center;gap:7px;font-size:12px;}
.tahoe-shell .tdm-label svg{width:14px;height:14px;}
.tahoe-shell .tdm-val{color:#1A1A20;display:inline-flex;align-items:center;gap:7px;}
.tahoe-shell .tdm-val .pdot{width:9px;height:9px;border-radius:999px;}
.tahoe-shell .td-section{padding:16px 22px;border-bottom:0.5px solid rgba(10,19,48,0.07);}
.tahoe-shell .td-sec-h{font-size:11px;font-weight:600;color:#8C8C99;text-transform:uppercase;letter-spacing:.04em;margin-bottom:9px;display:flex;align-items:center;justify-content:space-between;}
.tahoe-shell .td-desc{font-size:13px;color:#37373F;line-height:1.6;}
.tahoe-shell .subtask{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13px;color:#1A1A20;cursor:pointer;}
.tahoe-shell .subtask .sb{width:16px;height:16px;border-radius:5px;flex-shrink:0;box-shadow:inset 0 0 0 1.5px rgba(10,19,48,0.22);display:inline-flex;align-items:center;justify-content:center;transition:all 120ms ease;}
.tahoe-shell .subtask .sb svg{width:11px;height:11px;color:#fff;opacity:0;}
.tahoe-shell .subtask.done .sb{background:#1B2D70;box-shadow:inset 0 0 0 1.5px #1B2D70;}
.tahoe-shell .subtask.done .sb svg{opacity:1;}
.tahoe-shell .subtask.done span{color:#A0A0AC;text-decoration:line-through;}
.tahoe-shell .sub-prog{height:5px;border-radius:999px;background:rgba(10,19,48,0.08);overflow:hidden;margin:4px 0 10px;}
.tahoe-shell .sub-prog i{display:block;height:100%;background:#2F8C5E;border-radius:999px;}

/* ── Anexos ── */
.tahoe-shell .attach{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:10px;cursor:pointer;transition:background 120ms ease;}
.tahoe-shell .attach:hover{background:rgba(10,19,48,0.04);}
.tahoe-shell .attach-ic{width:34px;height:34px;border-radius:8px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;}
.tahoe-shell .attach-ic svg{width:17px;height:17px;}
.tahoe-shell .attach-name{font-size:13px;color:#1A1A20;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tahoe-shell .attach-meta{font-size:11px;color:#A0A0AC;margin-top:1px;}
.tahoe-shell .attach-dl{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#8C8C99;flex-shrink:0;opacity:0;transition:opacity 120ms ease, background 120ms ease;}
.tahoe-shell .attach:hover .attach-dl{opacity:1;}
.tahoe-shell .attach-dl:hover{background:rgba(10,19,48,0.07);color:#1B2D70;}
.tahoe-shell .attach-dl svg{width:15px;height:15px;}
.tahoe-shell .attach-add{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:10px;border:1px dashed rgba(10,19,48,0.18);color:#8C8C99;font-size:12.5px;cursor:pointer;margin-top:5px;}
.tahoe-shell .attach-add:hover{border-color:#4F6FB5;color:#1B2D70;}
.tahoe-shell .attach-add svg{width:15px;height:15px;}

/* ── Seletor de responsável (popover) ── */
.tahoe-shell .resp-pick{position:relative;cursor:pointer;border-radius:8px;padding:2px 6px 2px 2px;margin:-2px -6px -2px -2px;transition:background 120ms ease;}
.tahoe-shell .resp-pick:hover{background:rgba(10,19,48,0.05);}
.tahoe-shell .resp-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:212px;background:#fff;border-radius:12px;padding:6px;box-shadow:0 12px 30px rgba(10,19,48,0.16), 0 0 0 0.5px rgba(10,19,48,0.10);opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none;transition:opacity 120ms ease, transform 120ms ease;transform-origin:top left;}
.tahoe-shell .resp-pick.open .resp-pop{opacity:1;transform:none;pointer-events:auto;}
.tahoe-shell .resp-pop .pop-h{font-size:10.5px;font-weight:600;color:#8C8C99;text-transform:uppercase;letter-spacing:.04em;padding:6px 8px 4px;}
.tahoe-shell .resp-opt{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px;color:#1A1A20;}
.tahoe-shell .resp-opt:hover{background:rgba(10,19,48,0.045);}
.tahoe-shell .resp-opt .tavatar{width:24px;height:24px;font-size:10px;}

/* ── Comentários ── */
.tahoe-shell .cmt{display:flex;gap:10px;padding:10px 0;}
.tahoe-shell .cmt-av{width:28px;height:28px;border-radius:999px;flex-shrink:0;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-family:var(--num-font);}
.tahoe-shell .cmt-b{flex:1;min-width:0;}
.tahoe-shell .cmt-top{display:flex;align-items:baseline;gap:8px;margin-bottom:3px;}
.tahoe-shell .cmt-auth{font-size:12.5px;font-weight:600;color:#1A1A20;}
.tahoe-shell .cmt-time{font-size:11px;color:#A0A0AC;}
.tahoe-shell .cmt-text{font-size:13px;color:#37373F;line-height:1.5;}
.tahoe-shell .cmt-compose{display:flex;gap:10px;align-items:center;padding:12px 22px;border-top:0.5px solid rgba(10,19,48,0.07);position:sticky;bottom:0;background:#fff;}
.tahoe-shell .cmt-compose input{flex:1;height:38px;border-radius:10px;border:none;background:rgba(10,19,48,0.05);padding:0 13px;font-family:inherit;font-size:13px;color:#1A1A20;outline:none;transition:box-shadow 120ms ease, background 120ms ease;}
.tahoe-shell .cmt-compose input:focus{background:#fff;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.5);}
.tahoe-shell .cmt-send{width:38px;height:38px;border-radius:10px;border:none;cursor:pointer;background:#1B2D70;color:#fff;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background 120ms ease, transform 70ms ease;}
.tahoe-shell .cmt-send:hover{background:#24378F;}
.tahoe-shell .cmt-send:active{transform:translateY(1px);}
.tahoe-shell .cmt-send svg{width:16px;height:16px;}

/* ── Kanban (visão Quadro) ── */
.tahoe-shell .kanban{display:flex;gap:14px;height:calc(100vh - 188px);min-height:540px;overflow-x:auto;padding-bottom:4px;}
.tahoe-shell .kcol{flex:0 0 304px;display:flex;flex-direction:column;background:rgba(10,19,48,0.025);border-radius:14px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);max-height:100%;}
.tahoe-shell .kcol-h{display:flex;align-items:center;gap:8px;padding:13px 14px 10px;}
.tahoe-shell .kcol-h .kdot{width:9px;height:9px;border-radius:999px;}
.tahoe-shell .kcol-h .ktitle{font-size:13px;font-weight:600;color:#1A1A20;}
.tahoe-shell .kcol-h .kcount{font-family:var(--num-font);font-size:12px;color:#A0A0AC;}
.tahoe-shell .kcol-h .kadd{margin-left:auto;width:24px;height:24px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#8C8C99;cursor:pointer;border:none;background:transparent;}
.tahoe-shell .kcol-h .kadd:hover{background:rgba(10,19,48,0.06);color:#1B2D70;}
.tahoe-shell .kcol-h .kadd svg{width:15px;height:15px;}
.tahoe-shell .kcol-body{overflow-y:auto;padding:0 10px 12px;display:flex;flex-direction:column;gap:9px;flex:1;}
.tahoe-shell .kcard{background:#fff;border-radius:11px;padding:12px;cursor:pointer;box-shadow:0 0 0 0.5px rgba(10,19,48,0.08), 0 1px 2px rgba(10,19,48,0.04);transition:box-shadow 120ms ease, transform 80ms ease;}
.tahoe-shell .kcard:hover{box-shadow:0 0 0 0.5px rgba(79,111,181,0.4), 0 4px 10px rgba(10,19,48,0.08);}
.tahoe-shell .kcard:active{transform:translateY(1px);}
.tahoe-shell .kcard-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px;}
.tahoe-shell .kcard-tags .task-tag{height:20px;font-size:10.5px;padding:0 8px;}
.tahoe-shell .kcard-title{font-size:13px;color:#1A1A20;line-height:1.4;font-weight:500;}
.tahoe-shell .kcard.done .kcard-title{color:#A0A0AC;text-decoration:line-through;}
.tahoe-shell .kcard-proj{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:#8C8C99;margin-top:8px;}
.tahoe-shell .kcard-proj .pdot{width:7px;height:7px;border-radius:999px;}
.tahoe-shell .kcard-prog{height:4px;border-radius:999px;background:rgba(10,19,48,0.08);overflow:hidden;margin-top:9px;}
.tahoe-shell .kcard-prog i{display:block;height:100%;background:#2F8C5E;border-radius:999px;}
.tahoe-shell .kcard-foot{display:flex;align-items:center;gap:11px;margin-top:10px;padding-top:9px;border-top:0.5px solid rgba(10,19,48,0.06);}
.tahoe-shell .kcard-foot .m{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#8C8C99;}
.tahoe-shell .kcard-foot .m svg{width:13px;height:13px;}
.tahoe-shell .kcard-foot .tavatar{margin-left:auto;}
.tahoe-shell .kadd-card{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;color:#8C8C99;font-size:12px;cursor:pointer;}
.tahoe-shell .kadd-card:hover{background:rgba(10,19,48,0.04);color:#1B2D70;}
.tahoe-shell .kadd-card svg{width:14px;height:14px;}

/* ── Drawer (detalhe que abre de qualquer rota) ── */
.tahoe-shell .drawer-backdrop{position:fixed;inset:0;background:rgba(10,19,48,0.32);opacity:0;pointer-events:none;transition:opacity 200ms ease;z-index:90;}
.tahoe-shell .drawer-backdrop.show{opacity:1;pointer-events:auto;}
.tahoe-shell .task-drawer{position:fixed;top:0;right:0;height:100vh;width:440px;max-width:92vw;background:#fff;z-index:100;box-shadow:-12px 0 40px rgba(10,19,48,0.22);transform:translateX(100%);transition:transform 260ms cubic-bezier(.22,.61,.36,1);display:flex;flex-direction:column;overflow-y:auto;}
.tahoe-shell .task-drawer.show{transform:none;}
.tahoe-shell .drawer-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:0.5px solid rgba(10,19,48,0.08);position:sticky;top:0;background:#fff;z-index:2;}
.tahoe-shell .drawer-bar .db-ctx{font-size:11.5px;color:#8C8C99;}
.tahoe-shell .drawer-bar .db-ctx b{color:#1B2D70;}

/* ── Responsivo: 2-grid empilha o detalhe abaixo em telas estreitas ── */
@media (max-width:1080px){
  .tahoe-shell .tasks-layout{grid-template-columns:1fr;height:auto;}
  .tahoe-shell .task-center{border-right:none;border-bottom:0.5px solid rgba(10,19,48,0.08);}
}

/* ═══════════ v0.14.0 · Criar tarefa (form no drawer .task-drawer) ═══════════
   Form completo de criação: título, descrição, Projeto (agrupamento) e
   Relacionado a (vínculo com entidade) como eixos independentes, responsável,
   prazo, prioridade, status, tags, subtarefas, anexos. Comportamento:
   interactions.js. Abre via [data-new-task] ou [data-new-from-entity]. */
.tahoe-shell .create-body{padding:18px 22px;flex:1;overflow-y:auto;}
.tahoe-shell .create-title{width:100%;border:none;outline:none;font-family:var(--num-font);font-size:22px;font-weight:400;color:#0A1330;padding:2px 0 8px;letter-spacing:-0.01em;}
.tahoe-shell .create-title::placeholder{color:#C2C2CC;}
.tahoe-shell .create-desc{width:100%;border:none;outline:none;resize:none;min-height:52px;font-family:inherit;font-size:13.5px;color:#37373F;line-height:1.6;padding:0 0 14px;border-bottom:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .create-desc::placeholder{color:#A0A0AC;}
.tahoe-shell .create-ctx{font-size:11.5px;color:#8C8C99;margin-top:2px;}
.tahoe-shell .create-ctx b{color:#1B2D70;font-weight:600;}

.tahoe-shell .create-fields{display:flex;flex-direction:column;gap:11px;padding:15px 0;border-bottom:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .cf{display:flex;align-items:center;gap:12px;}
.tahoe-shell .cf-label{width:104px;flex-shrink:0;color:#8C8C99;font-size:12px;display:flex;align-items:center;gap:7px;}
.tahoe-shell .cf-label svg{width:14px;height:14px;}
.tahoe-shell .cf-chip{height:32px;padding:0 11px;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:7px;background:rgba(10,19,48,0.045);color:#1A1A20;font-size:12.5px;font-weight:500;border-radius:9px;font-family:inherit;transition:background 120ms ease;}
.tahoe-shell .cf-chip:hover{background:rgba(10,19,48,0.08);}
.tahoe-shell .cf-chip.placeholder{color:#9A9AA6;}
.tahoe-shell .cf-chip .pdot{width:9px;height:9px;border-radius:999px;}
.tahoe-shell .cf-chip .caret{width:12px;height:12px;opacity:.5;margin-left:1px;}
.tahoe-shell .cf-chip .tavatar{width:20px;height:20px;}
.tahoe-shell .cf-date{height:32px;border:none;background:rgba(10,19,48,0.045);border-radius:9px;padding:0 11px;font-family:inherit;font-size:12.5px;color:#1A1A20;outline:none;cursor:pointer;}
.tahoe-shell .cf .seg{background:rgba(10,19,48,0.05);}
.tahoe-shell .cf .seg button{height:26px;padding:0 12px;}
.tahoe-shell .sel-opt{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px;color:#1A1A20;}
.tahoe-shell .sel-opt:hover{background:rgba(10,19,48,0.045);}
.tahoe-shell .sel-opt .pdot{width:9px;height:9px;border-radius:999px;}
.tahoe-shell .pop-sub{font-size:10px;font-weight:600;color:#A0A0AC;text-transform:uppercase;letter-spacing:.05em;padding:9px 8px 3px;}
.tahoe-shell .sel-opt .rel-type{margin-left:auto;font-size:11px;color:#A0A0AC;}
.tahoe-shell .sel-opt .etype-ic{width:24px;height:24px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:rgba(79,111,181,0.10);color:#4F6FB5;flex-shrink:0;}
.tahoe-shell .sel-opt .etype-ic svg{width:13px;height:13px;}
.tahoe-shell .rel-search{width:calc(100% - 4px);border:none;outline:none;background:rgba(10,19,48,0.05);border-radius:8px;padding:7px 10px;font-family:inherit;font-size:12.5px;margin:2px;color:#1A1A20;}
.tahoe-shell .sel-opt.new-proj{color:#4F6FB5;font-weight:600;border-top:0.5px solid rgba(10,19,48,0.08);margin-top:4px;padding-top:9px;}
.tahoe-shell .sel-opt.new-proj svg{width:14px;height:14px;}

.tahoe-shell .create-sec{padding:14px 0;border-bottom:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .create-sec:last-of-type{border-bottom:none;}
.tahoe-shell .cs-h{font-size:11px;font-weight:600;color:#8C8C99;text-transform:uppercase;letter-spacing:.04em;margin-bottom:9px;}
.tahoe-shell .tag-input{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.tahoe-shell .tag-input input{border:none;outline:none;font-family:inherit;font-size:12.5px;flex:1;min-width:130px;padding:4px 0;color:#1A1A20;background:transparent;}
.tahoe-shell .tag-chip i{cursor:pointer;font-style:normal;margin-left:5px;opacity:.55;}
.tahoe-shell .tag-chip:hover i{opacity:1;}
.tahoe-shell .sub-new{display:flex;align-items:center;gap:10px;padding:4px 0;}
.tahoe-shell .sub-new .sb-box{width:16px;height:16px;border-radius:5px;box-shadow:inset 0 0 0 1.5px rgba(10,19,48,0.22);flex-shrink:0;}
.tahoe-shell .sub-new input{border:none;outline:none;font-family:inherit;font-size:13px;flex:1;color:#1A1A20;background:transparent;}
.tahoe-shell .add-sub{display:flex;align-items:center;gap:7px;color:#8C8C99;font-size:12.5px;cursor:pointer;margin-top:4px;}
.tahoe-shell .add-sub:hover{color:#1B2D70;}
.tahoe-shell .add-sub svg{width:14px;height:14px;}
.tahoe-shell .dropzone{border:1px dashed rgba(10,19,48,0.18);border-radius:10px;padding:15px;text-align:center;color:#8C8C99;font-size:12.5px;cursor:pointer;transition:all 120ms ease;}
.tahoe-shell .dropzone:hover{border-color:#4F6FB5;color:#1B2D70;background:rgba(79,111,181,0.03);}
.tahoe-shell .dropzone svg{width:18px;height:18px;vertical-align:-4px;margin-right:6px;}

.tahoe-shell .create-foot{display:flex;align-items:center;gap:9px;padding:12px 18px;border-top:0.5px solid rgba(10,19,48,0.08);position:sticky;bottom:0;background:#fff;}

@keyframes tahoeFlashNew{from{background:rgba(47,140,94,0.16)}to{background:transparent}}
.tahoe-shell .task-row.flash{animation:tahoeFlashNew 1.6s ease;}

/* ═══════════ Dashboard personalizável (zonas + edit mode) ═══════════ */

/* Zona de KPIs: grid flexível por contagem (não fixo em 4) */
.tahoe-shell .dash-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-bottom:20px;}
/* Board: 3 colunas com spans */
.tahoe-shell .dash-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px;}

/* Célula: wrapper que carrega os controles de edição */
.tahoe-shell .dash-cell{position:relative;min-width:0;}
.tahoe-shell .dash-board .dash-cell{grid-column:span 1;}
.tahoe-shell .dash-board .dash-cell[data-span="2"]{grid-column:span 2;}
.tahoe-shell .dash-board .dash-cell[data-span="3"]{grid-column:span 3;}
.tahoe-shell .dash-cell > .card{height:100%;}

/* Controles: escondidos fora do edit mode */
.tahoe-shell .dash-ctl{display:none;}
.tahoe-shell .dash-add{display:none;}
.tahoe-shell .dash-bar{display:none;}

/* Edit mode ON — a classe .dash-editing fica em [data-dash-root] (a .content), então o seletor é descendente */
.tahoe-shell .dash-editing .dash-ctl{display:flex;gap:4px;position:absolute;top:8px;right:8px;z-index:5;}
.tahoe-shell .dash-editing .dash-grip,
.tahoe-shell .dash-editing .dash-x{width:24px;height:24px;border-radius:7px;border:0.5px solid rgba(10,19,48,0.12);background:rgba(255,255,255,0.92);backdrop-filter:blur(8px);color:#4B4B55;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.tahoe-shell .dash-editing .dash-grip{cursor:grab;}
.tahoe-shell .dash-editing .dash-x:hover{color:#B33A3A;border-color:rgba(179,58,58,0.4);}
.tahoe-shell .dash-editing .dash-cell{outline:1px dashed rgba(79,111,181,0.45);outline-offset:2px;border-radius:16px;}
.tahoe-shell .dash-editing .dash-cell[draggable="true"]{cursor:grab;}

/* Tile "+ Adicionar" (só em edit mode) */
.tahoe-shell .dash-editing .dash-add{display:flex;align-items:center;justify-content:center;min-height:72px;border:1px dashed rgba(79,111,181,0.5);border-radius:16px;background:rgba(79,111,181,0.05);color:#4F6FB5;font-size:13px;font-weight:600;cursor:pointer;}
.tahoe-shell .dash-editing .dash-add:hover{background:rgba(79,111,181,0.1);}

/* Barra de personalização (só em edit mode) */
.tahoe-shell .dash-editing .dash-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px;padding:12px 14px;border-radius:14px;background:rgba(79,111,181,0.06);border:0.5px solid rgba(79,111,181,0.18);}
.tahoe-shell .dash-bar-presets{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tahoe-shell .dash-bar-lbl{font-size:12px;color:#6C6C78;}
.tahoe-shell .dash-preset-cur{font-size:13px;font-weight:600;color:#1B2D70;}
.tahoe-shell .dash-preset-opts{display:flex;gap:6px;flex-wrap:wrap;}
.tahoe-shell .dash-preset-opt{font-size:12px;padding:4px 10px;border-radius:999px;border:0.5px solid rgba(10,19,48,0.12);background:#fff;color:#4B4B55;cursor:pointer;}
.tahoe-shell .dash-preset-opt:hover{border-color:#4F6FB5;color:#1B2D70;}

/* Galeria (drawer reaproveita .task-drawer/.drawer-backdrop) */
.tahoe-shell .dash-gallery-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .dash-gallery-head h3{margin:0;font-size:15px;font-weight:600;}
.tahoe-shell .dash-gallery-body{padding:14px 20px 28px;display:flex;flex-direction:column;gap:18px;}
.tahoe-shell .gal-group{display:flex;flex-direction:column;gap:8px;}
.tahoe-shell .gal-cat{font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#6C6C78;font-weight:600;}
.tahoe-shell .gal-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;border:0.5px solid rgba(10,19,48,0.1);background:#fff;cursor:pointer;text-align:left;}
.tahoe-shell .gal-item:hover{border-color:#4F6FB5;}
.tahoe-shell .gal-item.on{opacity:0.55;cursor:default;}
.tahoe-shell .gal-title{font-size:13px;font-weight:500;color:#1A1A20;}
.tahoe-shell .gal-tag{font-size:11px;color:#4F6FB5;font-weight:600;}
.tahoe-shell .gal-item.on .gal-tag{color:#6C6C78;}

/* Widget "Minhas tarefas" */
.tahoe-shell .dash-tasks{display:flex;flex-direction:column;}
.tahoe-shell .dash-task{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:0.5px solid rgba(10,19,48,0.05);}
.tahoe-shell .dash-task:last-child{border-bottom:0;}
.tahoe-shell .dash-check{flex:none;width:18px;height:18px;margin-top:1px;border-radius:6px;border:1.5px solid rgba(10,19,48,0.22);background:#fff;cursor:pointer;position:relative;}
.tahoe-shell .dash-task.done .dash-check{background:#2F8C5E;border-color:#2F8C5E;}
.tahoe-shell .dash-task.done .dash-check::after{content:"";position:absolute;left:5px;top:1px;width:4px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);}
.tahoe-shell .dt-main{min-width:0;}
.tahoe-shell .dt-title{font-size:13px;font-weight:500;color:#1A1A20;}
.tahoe-shell .dash-task.done .dt-title{text-decoration:line-through;color:#9C9CA8;}
.tahoe-shell .dt-meta{font-size:11px;color:#6C6C78;margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}

/* Responsivo: board vira 1 coluna no estreito */
@media (max-width: 980px){
  .tahoe-shell .dash-board{grid-template-columns:1fr;}
  .tahoe-shell .dash-board .dash-cell[data-span="2"],
  .tahoe-shell .dash-board .dash-cell[data-span="3"]{grid-column:span 1;}
}

/* ═══════════ Notificações — sino + popover (v0.16.0) ═══════════
   Painel de histórico ancorado no sino da toolbar. Mecânica de popover
   igual a .filter-pop (abre via .open no wrapper, fecha em outside-click/
   Esc pelo interactions.js). O app real re-implementa com shadcn Popover;
   este é o markup+CSS de referência. Toasts ao vivo seguem no sonner. */

/* Sino na toolbar */
.tahoe-shell .tb-notif{position:relative;display:inline-flex;}
.tahoe-shell .tb-bell{
  height:34px;width:34px;border:none;cursor:pointer;border-radius:999px;
  background:transparent;color:#1A1A20;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background 120ms ease, transform 70ms ease;
}
.tahoe-shell .tb-bell svg{width:18px;height:18px;}
.tahoe-shell .tb-bell:hover{background:rgba(10,19,48,0.06);}
.tahoe-shell .tb-bell:active{transform:translateY(1px);}
.tahoe-shell .tb-notif.open .tb-bell{background:rgba(10,19,48,0.08);}
/* Badge de não-lidas */
.tahoe-shell .tb-bell .badge{
  position:absolute;top:1px;right:1px;
  min-width:16px;height:16px;padding:0 4px;border-radius:999px;
  background:var(--danger);color:#fff;
  font-family:var(--num-font);font-size:10px;font-weight:600;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px #fff;
}
.tahoe-shell .tb-bell .badge[hidden]{display:none;}

/* Popover */
.tahoe-shell .notif-pop{
  position:absolute;top:calc(100% + 8px);right:0;z-index:60;
  width:380px;max-width:calc(100vw - 32px);
  background:#fff;border-radius:var(--radius-md);
  box-shadow:0 16px 40px rgba(10,19,48,0.18), 0 0 0 0.5px rgba(10,19,48,0.10);
  opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none;
  transition:opacity 140ms ease, transform 140ms ease;transform-origin:top right;
  display:flex;flex-direction:column;overflow:hidden;
}
.tahoe-shell .tb-notif.open .notif-pop{opacity:1;transform:none;pointer-events:auto;}

/* Header */
.tahoe-shell .notif-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:13px 16px 11px;border-bottom:0.5px solid var(--hairline-section);
}
.tahoe-shell .notif-h-title{font-size:14px;font-weight:600;color:#1A1A20;}
.tahoe-shell .notif-markall{
  background:none;border:none;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:600;color:var(--link);padding:2px 4px;border-radius:6px;
}
.tahoe-shell .notif-markall:hover{background:rgba(79,111,181,0.10);}

/* Abas: usa o .seg existente, só posiciona */
.tahoe-shell .notif-pop .seg{margin:10px 16px 4px;}

/* Lista (área de scroll infinito) */
.tahoe-shell .notif-list{flex:1;overflow-y:auto;max-height:60vh;padding:4px 0 2px;}

/* Item (é <button> p/ acessibilidade) */
.tahoe-shell .notif-item{
  display:flex;align-items:flex-start;gap:11px;width:100%;
  padding:12px 16px;border:none;background:transparent;cursor:pointer;
  text-align:left;font-family:inherit;
  border-top:0.5px solid var(--hairline-row);transition:background 120ms ease;
}
.tahoe-shell .notif-list .notif-item:first-child{border-top:none;}
.tahoe-shell .notif-item:hover{background:rgba(10,19,48,0.03);}
.tahoe-shell .notif-item.unread{background:var(--blue-50);}
.tahoe-shell .notif-item.unread:hover{background:#E4E9F6;}

/* Ícone tint por tipo */
.tahoe-shell .notif-ic{
  flex:0 0 34px;width:34px;height:34px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;margin-top:1px;
}
.tahoe-shell .notif-ic svg{width:17px;height:17px;}
.tahoe-shell .notif-ic.task{background:var(--blue-50);color:var(--blue-600);}
.tahoe-shell .notif-ic.cobranca{background:var(--warning-soft);color:var(--warning);}
.tahoe-shell .notif-ic.assembleia{background:var(--sky-100);color:var(--sky-500);}

/* Corpo */
.tahoe-shell .notif-body{flex:1;min-width:0;display:flex;flex-direction:column;}
.tahoe-shell .notif-title{font-size:13px;font-weight:600;color:#1A1A20;line-height:1.35;}
.tahoe-shell .notif-snippet{
  font-size:12px;color:#6C6C78;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tahoe-shell .notif-time{font-size:11px;color:#8C8C99;margin-top:4px;}

/* Dot de não-lida */
.tahoe-shell .notif-dot{
  flex:0 0 8px;width:8px;height:8px;border-radius:999px;
  background:var(--blue-500);margin-top:6px;
}
.tahoe-shell .notif-item:not(.unread) .notif-dot{visibility:hidden;}

/* Skeleton (loading) */
.tahoe-shell .notif-skeleton{padding:4px 0;}
.tahoe-shell .notif-skel-row{display:flex;align-items:center;gap:11px;padding:12px 16px;}
.tahoe-shell .notif-skel-ic{flex:0 0 34px;width:34px;height:34px;border-radius:999px;}
.tahoe-shell .notif-skel-lines{flex:1;display:flex;flex-direction:column;gap:6px;}
.tahoe-shell .notif-skel-bar{height:9px;border-radius:6px;}
.tahoe-shell .notif-skel-bar.w70{width:70%;}
.tahoe-shell .notif-skel-bar.w40{width:40%;}
.tahoe-shell .notif-skel-ic,
.tahoe-shell .notif-skel-bar{
  background:linear-gradient(90deg,#EEF0F4 25%,#E2E6EE 37%,#EEF0F4 63%);
  background-size:400% 100%;animation:notif-shimmer 1.4s ease infinite;
}
@keyframes notif-shimmer{0%{background-position:100% 0;}100%{background-position:0 0;}}

/* Estado vazio */
.tahoe-shell .notif-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;padding:40px 24px;color:#8C8C99;text-align:center;
}
.tahoe-shell .notif-empty svg{width:28px;height:28px;color:#BCBCC7;}
.tahoe-shell .notif-empty-t{font-size:13px;font-weight:600;color:#6C6C78;}
.tahoe-shell .notif-empty-s{font-size:12px;}

/* Responsivo: telas estreitas → popover quase full-width */
@media (max-width:480px){
  .tahoe-shell .notif-pop{width:calc(100vw - 24px);}
}

/* Preferências de notificação por email (Configurações) — lista de tipos,
   cada linha com label + descrição + .cfg-toggle (switch existente). */
.tahoe-shell .notif-prefs{display:flex;flex-direction:column;}
.tahoe-shell .notif-pref-row{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 0;border-top:0.5px solid var(--hairline-row);
}
.tahoe-shell .notif-pref-row:first-child{border-top:none;}
.tahoe-shell .notif-pref-info{min-width:0;}
.tahoe-shell .notif-pref-info .label{font-size:13.5px;font-weight:600;color:#1A1A20;}
.tahoe-shell .notif-pref-info .desc{font-size:12px;color:#6C6C78;margin-top:2px;line-height:1.4;}

/* ═══════════════════════ Marketing (v0.20.0) ═══════════════════════
   Central de Marketing — avaliações Google, Instagram, Site, Google Ads.
   Reusa .kpi/.spark/.funnel/.bars/.stack/.tbl/.feed-row/.detail-header.
   Primitivos novos: .stars, .review*, .post-*, .mkt-trend. */

/* Nota em estrelas (Lucide, sem emoji) */
.tahoe-shell .stars{display:inline-flex;align-items:center;gap:2px;}
.tahoe-shell .stars svg{width:14px;height:14px;}
.tahoe-shell .stars svg.on{color:#C8881A;fill:#C8881A;}
.tahoe-shell .stars svg.off{color:rgba(10,19,48,0.16);fill:rgba(10,19,48,0.16);}
.tahoe-shell .stars .num{margin-left:6px;font-size:13px;color:#0A1330;}

/* Avaliação Google — card */
.tahoe-shell .review{display:flex;gap:12px;padding:14px 0;border-top:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .review:first-of-type{border-top:none;}
.tahoe-shell .review-avatar{width:36px;height:36px;border-radius:999px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--num-font);font-size:14px;color:#1B2D70;background:rgba(126,186,220,0.25);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);}
.tahoe-shell .review-body{flex:1;min-width:0;}
.tahoe-shell .review-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tahoe-shell .review-author{font-weight:600;font-size:13px;color:#1A1A20;}
.tahoe-shell .review-when{font-size:11px;color:#8C8C99;}
.tahoe-shell .review-praca{font-size:11px;color:#6C6C78;}
.tahoe-shell .review-text{font-size:13px;line-height:1.5;color:#4B4B55;margin-top:6px;}
.tahoe-shell .review-actions{display:flex;gap:8px;align-items:center;margin-top:10px;}
.tahoe-shell .review-reply{margin-top:10px;display:none;}
.tahoe-shell .review.replying .review-reply{display:block;}
.tahoe-shell .review-reply textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:62px;font:inherit;font-size:13px;padding:10px 12px;border:none;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);}
.tahoe-shell .review-response{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(10,19,48,0.03);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);}
.tahoe-shell .review-response .who{font-size:11px;color:#6C6C78;margin-bottom:3px;display:flex;align-items:center;gap:5px;}
.tahoe-shell .review-response .who svg{width:12px;height:12px;}
.tahoe-shell .review-response p{margin:0;font-size:12px;line-height:1.5;color:#4B4B55;}

/* Post de Instagram */
.tahoe-shell .post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.tahoe-shell .post-card{border-radius:14px;overflow:hidden;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);}
.tahoe-shell .post-thumb{height:116px;display:flex;align-items:flex-end;padding:8px;background:linear-gradient(135deg,#7EBADC,#1B2D70);}
.tahoe-shell .post-thumb .post-when{font-size:10px;color:rgba(255,255,255,0.92);}
.tahoe-shell .post-meta{display:flex;gap:12px;padding:8px 10px;}
.tahoe-shell .post-meta span{display:flex;align-items:center;gap:4px;font-size:11px;color:#4B4B55;}
.tahoe-shell .post-meta span .num{font-size:12px;color:#0A1330;}
.tahoe-shell .post-meta svg{width:13px;height:13px;color:#8C8C99;}

/* Tendência inline (seta + número) na tabela de ranking */
.tahoe-shell .mkt-trend{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-family:var(--num-font);color:#1F6B46;}
.tahoe-shell .mkt-trend.neg{color:#8C2828;}
.tahoe-shell .mkt-trend svg{width:12px;height:12px;}

/* Calendário editorial (Conteúdo) — grade mensal de 7 colunas */
.tahoe-shell .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.tahoe-shell .cal-dow{font-size:11px;color:#6C6C78;font-weight:500;text-align:center;padding:4px 0 2px;}
.tahoe-shell .cal-day{min-height:98px;border-radius:10px;background:#fff;padding:6px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);display:flex;flex-direction:column;gap:4px;}
.tahoe-shell .cal-day.out{background:rgba(10,19,48,0.02);}
.tahoe-shell .cal-day.out .cal-date{color:#B0B0BA;}
.tahoe-shell .cal-day.today{box-shadow:inset 0 0 0 1.5px #1B2D70;}
.tahoe-shell .cal-date{font-family:var(--num-font);font-size:12px;color:#4B4B55;}
.tahoe-shell .cal-day.today .cal-date{color:#1B2D70;font-weight:600;}
.tahoe-shell .cal-event{font-size:10px;line-height:1.3;padding:3px 6px;border-radius:6px;color:#1A1A20;background:rgba(126,186,220,0.22);display:flex;align-items:center;gap:5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.tahoe-shell .cal-event .dot{width:6px;height:6px;border-radius:999px;flex:none;background:#4F6FB5;}
.tahoe-shell .cal-event.published{background:rgba(47,140,94,0.16);}
.tahoe-shell .cal-event.published .dot{background:#2F8C5E;}
.tahoe-shell .cal-event.scheduled{background:rgba(79,111,181,0.14);}
.tahoe-shell .cal-event.scheduled .dot{background:#4F6FB5;}
.tahoe-shell .cal-event.draft{background:rgba(200,136,26,0.16);}
.tahoe-shell .cal-event.draft .dot{background:#C8881A;}

/* ═══════════════════════ Assembleias (v0.23.0) ═══════════════════════
   Módulo de Assembleias — Central, Nova, Detalhe. Reusa .kpi/.cal/.steps/
   .tier/.tbl/.filters/.detail-header/.stage-track/.mini-kpis/.timeline/
   .attach/.ai-• /.comms-rail/pills. Primitivos novos abaixo.
   (obs: o glifo acima evita a sequência "asterisco+barra", que fecharia este
   comentário antes da hora e engoliria a regra seguinte.) */

/* Chip do tipo de assembleia */
.tahoe-shell .assembleia-tipo{display:inline-flex;align-items:center;font-family:var(--num-font);font-size:11px;font-weight:600;letter-spacing:.02em;padding:2px 7px;border-radius:6px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);}
.tahoe-shell .assembleia-tipo.ago{color:#1F6B46;background:rgba(47,140,94,0.12);}
.tahoe-shell .assembleia-tipo.age{color:#8A5D10;background:rgba(200,136,26,0.14);}
.tahoe-shell .assembleia-tipo.agi{color:#1B2D70;background:rgba(126,186,220,0.22);}

/* Eventos no calendário .cal por status de assembleia */
.tahoe-shell .cal-event.reserva{color:#4B4B55;background:rgba(10,19,48,0.05);}
.tahoe-shell .cal-event.reserva .dot{background:#8C8C99;}
.tahoe-shell .cal-event.agendada{color:#1B2D70;background:rgba(79,111,181,0.12);}
.tahoe-shell .cal-event.agendada .dot{background:#4F6FB5;}
.tahoe-shell .cal-event.realizada{color:#1F6B46;background:rgba(47,140,94,0.12);}
.tahoe-shell .cal-event.realizada .dot{background:#2F8C5E;}

/* Ordem do dia (pauta) */
.tahoe-shell .pauta{display:flex;flex-direction:column;gap:10px;}
.tahoe-shell .pauta-item{padding:14px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);}
.tahoe-shell .pauta-item-h{display:flex;align-items:flex-start;gap:10px;}
.tahoe-shell .pauta-num{font-family:var(--num-font);font-size:13px;color:#8C8C99;flex:none;width:20px;}
.tahoe-shell .pauta-title{font-weight:600;font-size:14px;color:#1A1A20;flex:1;}
.tahoe-shell .pauta-desc{font-size:12px;color:#6C6C78;margin:4px 0 0 30px;}
.tahoe-shell .quorum-req{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#6C6C78;background:rgba(10,19,48,0.04);padding:2px 7px;border-radius:6px;white-space:nowrap;}
.tahoe-shell .proposta{display:flex;align-items:center;gap:8px;margin:6px 0 0 30px;font-size:13px;color:#4B4B55;}
.tahoe-shell .proposta .pnum{font-family:var(--num-font);color:#4F6FB5;}
.tahoe-shell .proposta .pval{font-family:var(--num-font);color:#0A1330;margin-left:auto;}
.tahoe-shell .add-proposta{margin:8px 0 0 30px;font-size:12px;color:#4F6FB5;background:none;border:none;cursor:pointer;padding:0;}
.tahoe-shell .pauta-result{margin:10px 0 0 30px;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:10px;}
.tahoe-shell .pauta-result.aprovado{color:#1F6B46;background:rgba(47,140,94,0.12);}
.tahoe-shell .pauta-result.reprovado{color:#8C2828;background:rgba(179,58,58,0.12);}

/* Grade de unidades — compartilhada por presença e votação */
.tahoe-shell .unit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;}
.tahoe-shell .unit-cell{box-sizing:border-box;position:relative;border-radius:10px;padding:8px 6px;text-align:center;cursor:pointer;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);transition:transform .06s ease;}
.tahoe-shell .unit-cell:active{transform:scale(0.97);}
.tahoe-shell .unit-cell .u-id{font-family:var(--num-font);font-size:12px;color:#1A1A20;font-weight:600;}
.tahoe-shell .unit-cell .u-frac{display:block;font-family:var(--num-font);font-size:10px;color:#8C8C99;margin-top:1px;}
/* presença */
.tahoe-shell .unit-cell.presente{background:rgba(47,140,94,0.12);box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.35);}
.tahoe-shell .unit-cell.procuracao{background:rgba(79,111,181,0.12);box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.35);}
.tahoe-shell .unit-cell.ausente{opacity:.72;border:1px dashed rgba(10,19,48,0.18);box-shadow:none;background:repeating-linear-gradient(135deg,transparent,transparent 5px,rgba(10,19,48,0.02) 5px,rgba(10,19,48,0.02) 10px);}
/* votação */
.tahoe-shell .unit-cell.fav{background:rgba(47,140,94,0.14);box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.40);}
.tahoe-shell .unit-cell.con{background:rgba(179,58,58,0.12);box-shadow:inset 0 0 0 0.5px rgba(179,58,58,0.35);}
.tahoe-shell .unit-cell.abs{background:rgba(10,19,48,0.05);}
.tahoe-shell .unit-cell.none{opacity:.7;border:1px dashed rgba(10,19,48,0.18);box-shadow:none;}
/* inadimplente: selo âmbar, bloqueado */
.tahoe-shell .unit-cell.inadimplente{cursor:not-allowed;box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.45);background:rgba(200,136,26,0.08);}
.tahoe-shell .unit-cell.inadimplente::after{content:"$";position:absolute;top:3px;right:5px;font-family:var(--num-font);font-size:10px;font-weight:700;color:#8A5D10;}

/* Placar ao vivo (presença e votação) */
.tahoe-shell .vote-tally,.tahoe-shell .presenca-tally{display:flex;flex-wrap:wrap;gap:14px;padding:12px 14px;border-radius:14px;background:rgba(10,19,48,0.03);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.06);}
.tahoe-shell .tally-cell{display:flex;flex-direction:column;gap:1px;}
.tahoe-shell .tally-cell .t-lbl{font-size:11px;color:#6C6C78;}
.tahoe-shell .tally-cell .t-val{font-family:var(--num-font);font-size:18px;color:#0A1330;}
.tahoe-shell .tally-cell.fav .t-val{color:#1F6B46;}
.tahoe-shell .tally-cell.con .t-val{color:#8C2828;}

/* Meter de quórum (reusa a ideia do .onb-progress) */
.tahoe-shell .quorum{display:flex;align-items:center;gap:10px;}
.tahoe-shell .quorum-bar{flex:1;height:8px;border-radius:999px;background:rgba(10,19,48,0.08);overflow:hidden;}
.tahoe-shell .quorum-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7EBADC,#1B2D70);width:0;transition:width .2s ease;}
.tahoe-shell .quorum.met .quorum-bar i{background:linear-gradient(90deg,#2F8C5E,#1F6B46);}
.tahoe-shell .quorum-num{font-family:var(--num-font);font-size:13px;color:#0A1330;white-space:nowrap;}
.tahoe-shell .quorum.met .quorum-num{color:#1F6B46;}

/* Card de fonte do gerador de ata (resumo do Google Meet · Gemini) */
.tahoe-shell .ai-source{display:flex;gap:12px;padding:14px;border-radius:14px;background:rgba(126,186,220,0.10);box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.14);}
.tahoe-shell .ai-source-ic{width:34px;height:34px;border-radius:10px;flex:none;display:flex;align-items:center;justify-content:center;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);}
.tahoe-shell .ai-source-ic svg{width:18px;height:18px;color:#1B2D70;}
.tahoe-shell .ai-source-body{flex:1;min-width:0;}
.tahoe-shell .ai-source-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tahoe-shell .ai-source-title{font-weight:600;font-size:13px;color:#1A1A20;}
.tahoe-shell .ai-badge{font-size:10px;font-weight:600;color:#1B2D70;background:rgba(27,45,112,0.10);padding:1px 6px;border-radius:6px;}
.tahoe-shell .ai-source ul{margin:8px 0 0;padding-left:18px;font-size:12px;line-height:1.55;color:#4B4B55;}
.tahoe-shell .ai-source-actions{display:flex;gap:8px;align-items:center;margin-top:10px;}

/* Livro de atas + trilha de assinatura */
.tahoe-shell .atas-book{display:flex;flex-direction:column;}
.tahoe-shell .ata-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:0.5px solid var(--hairline-row);font-size:13px;}
.tahoe-shell .ata-row:first-child{border-top:none;}
.tahoe-shell .ata-row .ata-when{font-family:var(--num-font);color:#6C6C78;width:78px;flex:none;}
.tahoe-shell .ata-row .ata-name{color:#1A1A20;flex:1;}
.tahoe-shell .sign-trail{display:flex;flex-direction:column;gap:8px;}
.tahoe-shell .sign-row{display:flex;align-items:center;gap:10px;font-size:13px;}
.tahoe-shell .sign-ic{width:22px;height:22px;border-radius:999px;flex:none;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);}
.tahoe-shell .sign-ic svg{width:13px;height:13px;}
.tahoe-shell .sign-row.assinado .sign-ic{background:rgba(47,140,94,0.14);color:#1F6B46;}
.tahoe-shell .sign-row.pendente .sign-ic{background:rgba(10,19,48,0.04);color:#8C8C99;}
.tahoe-shell .sign-row .sign-who{color:#1A1A20;flex:1;}
.tahoe-shell .sign-row .sign-st{font-size:11px;color:#6C6C78;}

/* ═══════════ Correções de tipografia/espaçamento (v0.23.1) ═══════════
   O .tahoe-shell nunca definiu font-size base → texto sem tamanho herdava
   16px do browser. Define a base do conteúdo em 13px (norma Tahoe) e faz o
   <b> de .card-h casar com o <h3> (14px). Cards empilhados ganham gap. */
.tahoe-shell .content{font-size:13px;}
.tahoe-shell .card-h b{font-size:14px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;color:#0A1330;}
/* Espaçamento entre cards EMPILHADOS. Vale nos containers de bloco vertical:
   .content, .tab-panel (abas) e as colunas do .det2. NÃO é universal de propósito —
   .row2/.row3 põem cards lado a lado num grid e .side-stack usa `gap`; uma regra
   `.card + .card` solta criaria margem dobrada/desalinhada nesses. Ao criar um
   NOVO container que empilha cards, some-o aqui (ou confira o espaçamento no browser). */
.tahoe-shell .content > .card + .card,
.tahoe-shell .tab-panel > .card + .card,
.tahoe-shell .det2 > div > .card + .card{margin-top:14px;}

/* ═══════════ Assembleia · presença em escala + propostas editáveis (v0.23.2) ═══════════ */
/* Toolbar da presença (busca + contagem + ações em massa) e grade rolável por bloco
   — pensada pra condomínios com muitas unidades (140, 300...). */
.tahoe-shell .presenca-toolbar{display:flex;align-items:center;gap:10px;margin:0 0 10px;flex-wrap:wrap;}
.tahoe-shell .presenca-count{font-size:12px;color:#6C6C78;}
.tahoe-shell .presenca-count .num{color:#0A1330;}
.tahoe-shell .unit-scroll{max-height:300px;overflow-y:auto;padding:2px;margin:0 -2px;}
.tahoe-shell .unit-group-h{position:sticky;top:0;background:rgba(255,255,255,0.94);backdrop-filter:blur(4px);font-size:11px;font-weight:600;color:#6C6C78;text-transform:uppercase;letter-spacing:.03em;padding:7px 2px 5px;z-index:1;display:flex;align-items:center;gap:8px;}
.tahoe-shell .unit-group-h .num{color:#0A1330;font-size:12px;}
.tahoe-shell .unit-scroll .unit-grid{margin-bottom:6px;}
.tahoe-shell .unit-cell.hide{display:none;}
/* Propostas editáveis (indicadas durante a assembleia) */
.tahoe-shell .proposta input{border:none;background:#fff;font:inherit;font-size:13px;color:#1A1A20;padding:3px 6px;border-radius:6px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);}
.tahoe-shell .proposta input.prop-desc{flex:1;min-width:0;}
.tahoe-shell .proposta .pval-edit{display:inline-flex;align-items:center;gap:4px;color:#6C6C78;font-size:12px;}
.tahoe-shell .proposta input.prop-val{width:64px;text-align:right;font-family:var(--num-font);color:#0A1330;}
.tahoe-shell .proposta .prop-del{border:none;background:none;color:#8C8C99;cursor:pointer;font-size:16px;line-height:1;padding:0 2px;}
.tahoe-shell .proposta .prop-del:hover{color:#B33A3A;}

/* ═══════════ Assembleia · refinamentos (v0.23.3) ═══════════ */
/* Tipo como pill (igual ao status) */
.tahoe-shell .assembleia-tipo{border-radius:999px;padding:2px 10px;}
/* Espaçamento: busca abaixo do calendário (Central) e etapas acima dos KPIs (Detalhe) */
.tahoe-shell .content > .card + .filters{margin-top:14px;}
.tahoe-shell .content > .filters + .card,
.tahoe-shell .tab-panel > .filters + .card{margin-top:14px;}
.tahoe-shell .stage-track{margin-bottom:16px;}
/* Inadimplente evidente já no load (antes de clicar) */
.tahoe-shell .unit-cell.inadimplente{box-shadow:inset 0 0 0 1px rgba(200,136,26,0.7);background:rgba(200,136,26,0.14);}
.tahoe-shell .unit-cell.inadimplente .u-id{color:#8A5D10;}
.tahoe-shell .unit-cell.inadimplente::after{content:"$";top:3px;right:6px;font-size:11px;}
/* Proposta: valor/observação livre (monetário OU não, ex.: aprovada com ressalva) */
.tahoe-shell .proposta input.prop-val{width:150px;text-align:right;font-family:inherit;color:#0A1330;}
/* Documentos — lista mais trabalhada */
.tahoe-shell .doc-row{display:flex;align-items:center;gap:10px;border-top:0.5px solid var(--hairline-row);}
.tahoe-shell .doc-row:first-of-type{border-top:none;}
.tahoe-shell .doc-ic{width:30px;height:34px;border-radius:6px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--num-font);font-size:9px;font-weight:700;letter-spacing:.02em;color:#fff;}
.tahoe-shell .doc-ic.pdf{background:#B33A3A;}
.tahoe-shell .doc-ic.doc{background:#1B2D70;}
.tahoe-shell .doc-info{flex:1;min-width:0;}
.tahoe-shell .doc-name{font-size:13px;color:#1A1A20;font-weight:500;}
.tahoe-shell .doc-meta{font-size:11px;color:#8C8C99;margin-top:1px;}
.tahoe-shell .doc-dl{color:#4F6FB5;flex:none;display:inline-flex;}
.tahoe-shell .doc-dl svg{width:16px;height:16px;}
/* Link de check-in público na presença */
.tahoe-shell .checkin-link{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:9px 12px;border-radius:10px;background:rgba(126,186,220,0.12);box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.14);font-size:12px;color:#1B2D70;text-decoration:none;}
.tahoe-shell .checkin-link:hover{background:rgba(126,186,220,0.2);}
.tahoe-shell .checkin-link svg{width:15px;height:15px;flex:none;}
.tahoe-shell .checkin-link .arrow{margin-left:auto;color:#4F6FB5;}

/* ═══════════ Assembleia · docs, presença, procuração/votação (v0.23.4) ═══════════ */
/* Documentos — à prova de estouro (trunca nome/meta) */
.tahoe-shell .doc-row{min-width:0;}
.tahoe-shell .doc-name,.tahoe-shell .doc-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tahoe-shell .doc-ic{width:28px;height:28px;border-radius:8px;font-size:8.5px;}
.tahoe-shell .doc-dl{width:28px;height:28px;border-radius:8px;align-items:center;justify-content:center;background:rgba(10,19,48,0.04);transition:background 120ms ease;}
.tahoe-shell .doc-dl:hover{background:rgba(79,111,181,0.14);}
/* Presença — hierarquia: status (meter) → divisória → registrar (link/busca/grade) */
.tahoe-shell .pres-sep{height:0;border-top:0.5px solid var(--hairline-section);margin:14px 0;}
.tahoe-shell .pres-subhead{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8C8C99;margin:0 0 8px;}
.tahoe-shell .quorum{margin:4px 0 0;}
.tahoe-shell .presenca-toolbar{margin:10px 0 12px;}
/* Procuração — uploader inline (admin) e campo no formulário público */
.tahoe-shell .proc-up{margin-top:10px;display:none;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-radius:10px;background:rgba(10,19,48,0.03);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);}
.tahoe-shell .proc-up.show{display:flex;}
.tahoe-shell .proc-up input[type=text]{flex:0 0 110px;font:inherit;font-size:12px;padding:6px 9px;border:none;border-radius:8px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.14);}
.tahoe-shell .proc-drop{flex:1;min-width:120px;display:flex;align-items:center;gap:7px;font-size:12px;color:#4F6FB5;cursor:pointer;border:1px dashed rgba(10,19,48,0.2);border-radius:8px;padding:6px 10px;background:#fff;}
.tahoe-shell .proc-drop svg{width:14px;height:14px;}
/* Botão gerar link (votação) */
.tahoe-shell .gen-link{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#1B2D70;background:rgba(126,186,220,0.16);border:none;border-radius:9px;padding:8px 12px;cursor:pointer;box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.14);}
.tahoe-shell .gen-link:hover{background:rgba(126,186,220,0.26);}
.tahoe-shell .gen-link svg{width:15px;height:15px;}

/* ═══════════ Assembleia · procuração prévia + votação (v0.23.5) ═══════════ */
/* Doc robusto: sem padding horizontal problemático; download sempre dentro */
/* v0.32.2: padding horizontal restaurado (era `…0` — deixava ícone/download colados na
   beira do card). É a fonte ÚNICA de padding do .doc-row; a legada (bloco antigo) fica
   sobrescrita. */
.tahoe-shell .doc-row{padding:9px;gap:9px;}
.tahoe-shell .doc-dl{flex:none;}
.tahoe-shell .doc-info{overflow:hidden;}
/* Badge P nas unidades com procuração (mostra quais têm procurador) */
.tahoe-shell .unit-cell.procuracao::before{content:"P";position:absolute;top:3px;left:5px;font-family:var(--num-font);font-size:9px;font-weight:700;color:#1B2D70;}
/* Lista chave-valor (regras & apoio em Datas & prazos) */
.tahoe-shell .kv-list{display:flex;flex-direction:column;gap:7px;margin-top:4px;}
.tahoe-shell .kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12px;}
.tahoe-shell .kv-row > span{color:#6C6C78;flex:none;}
.tahoe-shell .kv-row > b{color:#1A1A20;font-weight:500;text-align:right;}
/* Modal de votação repaginado */
.tahoe-shell .vd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 16px 12px;border-bottom:0.5px solid var(--hairline-section);}
.tahoe-shell .vd-eyebrow{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8C8C99;}
.tahoe-shell .vd-title{font-family:var(--num-font);font-size:18px;color:#0A1330;letter-spacing:-0.01em;margin-top:2px;}
.tahoe-shell .vd-head button{border:none;background:none;font-size:20px;line-height:1;color:#8C8C99;cursor:pointer;}
.tahoe-shell .vd-meta{display:flex;gap:8px;flex-wrap:wrap;padding:12px 16px 0;}
.tahoe-shell .vd-section{padding:14px 16px 0;}
.tahoe-shell .vd-foot{margin-top:14px;padding:14px 16px 16px;border-top:0.5px solid var(--hairline-section);background:rgba(10,19,48,0.02);}
.tahoe-shell .vd-foot .vote-tally{margin:0 0 10px;}
.tahoe-shell .vote-tally .tally-cell .t-val{font-size:20px;}

/* ═══════════ Assembleia · ajustes UI (v0.23.6) ═══════════ */
/* Documentos à prova de estouro (box-sizing + flex fixos) */
.tahoe-shell .doc-row{box-sizing:border-box;}
.tahoe-shell .doc-ic{flex:none;}
.tahoe-shell .doc-info{flex:1 1 auto;}
/* Remove o outline tracejado de foco POR CLIQUE em link/botão (mantém foco de teclado) */
.tahoe-shell a:focus:not(:focus-visible),.tahoe-shell button:focus:not(:focus-visible){outline:none;}
/* link estilizado como botão nunca sublinha (link-como-botao-sem-sublinhado) */
.tahoe-shell a.tb-primary,.tahoe-shell a.btn,.tahoe-shell a.tb-btn{text-decoration:none;}
/* Quórum exigido editável — select estilizado como o chip .quorum-req.
   .pcat-tipo (gestão do catálogo, v0.27.0) herda a mesma aparência de chip. */
.tahoe-shell select.quorum-req,
.tahoe-shell select.pcat-tipo{-webkit-appearance:none;appearance:none;line-height:1.5;padding-right:20px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 24 24' fill='none' stroke='%236C6C78' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;}
.tahoe-shell select.quorum-req:hover,
.tahoe-shell select.pcat-tipo:hover{background-color:rgba(10,19,48,0.08);}
/* Busca de unidades no drawer de votação */
.tahoe-shell .vd-search{padding:12px 16px 0;}
.tahoe-shell .vd-search .list-search{width:100%;}

/* ═══════════ Assembleia · revisão da ata, editor nativo & permanente (v0.24.0) ═══════════
   Aditivo, sem breaking. A ata deixa de ser .docx externo: edição no app
   (.ata-editor sobre a estética "papel" do .ai-doc), revisão em 2 portões
   (.review-rail jurídico interno + .review-row presidente externo por link
   público), assinatura ClickSign (.sign-row ganha o estado .enviado) e assembleia
   permanente (.sessions timeline + pautas pendentes). O .stage-track principal
   continua com 5 passos — o detalhamento vive dentro do card Ata (.ata-status). */

/* ─── Strip de sub-status da ata (dentro do card Ata) ───
   Dois níveis: as 5 macro-fases (mesmo idioma do .stage-track, menor) + o
   sub-status exato como pill nomeado. Fonte da verdade: TahoeAssembleiaCore. */
.tahoe-shell .ata-status{margin:0 0 14px;}
.tahoe-shell .ata-status-flow{display:flex;align-items:center;gap:6px;margin-bottom:10px;flex-wrap:wrap;}
.tahoe-shell .ata-status-step{font-size:11px;font-weight:600;letter-spacing:.02em;color:#8C8C99;background:rgba(10,19,48,0.05);border-radius:999px;padding:3px 11px;white-space:nowrap;}
.tahoe-shell .ata-status-step.done{background:rgba(47,140,94,0.16);color:#1F6B46;}
.tahoe-shell .ata-status-step.current{background:linear-gradient(180deg,#2F4FA0,#1B2D70);color:#fff;box-shadow:0 1px 2px rgba(10,19,48,0.12);}
.tahoe-shell .ata-status-now{display:flex;align-items:center;gap:9px;font-size:12px;color:#6C6C78;flex-wrap:wrap;}

/* ─── Editor de ata (viewer-papel editável, nativo) ─── */
.tahoe-shell .ata-editor{border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.07),0 1px 3px rgba(10,19,48,0.05);overflow:hidden;}
.tahoe-shell .ata-editor-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;background:rgba(10,19,48,0.02);box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.07);}
.tahoe-shell .ata-ver{font-family:var(--num-font);font-size:11.5px;color:#6C6C78;white-space:nowrap;}
.tahoe-shell .ata-ver b{color:#0A1330;font-weight:500;}
.tahoe-shell .ata-mode-chip{margin-left:auto;font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:2px 9px;border-radius:999px;white-space:nowrap;}
.tahoe-shell .ata-editor.readonly .ata-mode-chip{background:rgba(10,19,48,0.06);color:#6C6C78;}
.tahoe-shell .ata-editor.editing .ata-mode-chip{background:rgba(200,136,26,0.16);color:#8A5D10;}
.tahoe-shell .ata-tools{display:flex;align-items:center;gap:2px;flex-wrap:wrap;}
.tahoe-shell .ata-tool{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 6px;border:none;background:none;border-radius:7px;color:#4B4B55;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--num-font);}
.tahoe-shell .ata-tool svg{width:15px;height:15px;}
.tahoe-shell .ata-tool:hover{background:rgba(10,19,48,0.06);color:#1A1A20;}
.tahoe-shell .ata-tool i{font-style:italic;}
.tahoe-shell .ata-tool-sep{width:0.5px;height:16px;background:rgba(10,19,48,0.12);margin:0 4px;flex:none;}
/* Toolbar só existe no modo edição */
.tahoe-shell .ata-editor.readonly .ata-tools,.tahoe-shell .ata-editor.readonly .ata-tool-sep{display:none;}
/* Papel — herda a leitura do .ai-doc */
.tahoe-shell .ata-paper{padding:22px 24px;max-height:520px;overflow-y:auto;font-size:13px;line-height:1.7;color:#4B4B55;}
.tahoe-shell .ata-paper:focus{outline:none;}
.tahoe-shell .ata-editor.editing .ata-paper{background:rgba(126,186,220,0.04);cursor:text;}
.tahoe-shell .ata-paper h2{font-family:var(--num-font);font-size:15px;font-weight:500;color:#0A1330;letter-spacing:-0.01em;margin:18px 0 8px;}
.tahoe-shell .ata-paper h2:first-child{margin-top:0;}
.tahoe-shell .ata-paper h3{font-size:12px;font-weight:600;color:#4B4B55;text-transform:uppercase;letter-spacing:.03em;margin:16px 0 6px;}
.tahoe-shell .ata-paper p{margin:0 0 10px;}
.tahoe-shell .ata-paper ul,.tahoe-shell .ata-paper ol{margin:0 0 10px;padding-left:20px;}
.tahoe-shell .ata-paper li{margin:0 0 4px;}
.tahoe-shell .ata-paper table{width:100%;border-collapse:collapse;margin:0 0 12px;font-size:12.5px;}
.tahoe-shell .ata-paper th,.tahoe-shell .ata-paper td{text-align:left;padding:6px 9px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.1);}
.tahoe-shell .ata-paper th{background:rgba(10,19,48,0.03);color:#1A1A20;font-weight:600;}

/* ─── Portão 1 — revisão jurídica (interno) · .review-rail ───
   Reusa .cfg-person-row internal (revisor) e o botão .tb-primary/.ghost-btn. */
.tahoe-shell .review-rail{margin-top:12px;padding:14px;border-radius:14px;background:rgba(126,186,220,0.08);box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.12);}
.tahoe-shell .review-rail-h{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8C8C99;margin-bottom:10px;}
.tahoe-shell .review-rail .cfg-person-row{border:none;padding:0 0 10px;}
.tahoe-shell .review-feedback{width:100%;box-sizing:border-box;resize:vertical;min-height:64px;font:inherit;font-size:13px;padding:10px 12px;border:none;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);}
.tahoe-shell .review-feedback:focus{outline:none;box-shadow:inset 0 0 0 1.5px #4F6FB5;}
.tahoe-shell .review-feedback::placeholder{color:#8C8C99;}
.tahoe-shell .review-feedback-wrap{display:none;margin-top:8px;}
.tahoe-shell .review-rail.asking .review-feedback-wrap{display:block;}
.tahoe-shell .rev-actions{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap;}
/* Nota recebida (feedback do jurídico/presidente exibido de volta ao editor) */
.tahoe-shell .review-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(200,136,26,0.08);box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.28);}
.tahoe-shell .review-note .who{font-size:11px;color:#8A5D10;font-weight:600;margin-bottom:3px;display:flex;align-items:center;gap:5px;}
.tahoe-shell .review-note .who svg{width:12px;height:12px;}
.tahoe-shell .review-note p{margin:0;font-size:12.5px;line-height:1.5;color:#4B4B55;}

/* ─── Portão 2 — revisão do presidente (externo, link público) · .review-row ─── */
.tahoe-shell .review-row{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(10,19,48,0.03);box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);}
.tahoe-shell .review-row-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.tahoe-shell .review-row-who{display:flex;align-items:center;gap:9px;flex:1;min-width:0;}
.tahoe-shell .review-row-who .cfg-person-avatar{flex:none;}
.tahoe-shell .review-row-name{font-size:13px;font-weight:500;color:#1A1A20;}
.tahoe-shell .review-row-role{font-size:11px;color:#8C8C99;}

/* ─── Assinatura ClickSign — 3º estado "enviado" (envelope disparado) ─── */
.tahoe-shell .sign-row.enviado .sign-ic{background:rgba(126,186,220,0.22);color:#1B2D70;}
.tahoe-shell .sign-clicksign{font-size:10px;font-weight:600;color:#1B2D70;background:rgba(27,45,112,0.1);padding:1px 7px;border-radius:6px;}

/* ─── Assembleia permanente — sessões continuadas (timeline mãe↔filhas) ─── */
.tahoe-shell .sessions{position:relative;padding-left:22px;margin-top:2px;}
.tahoe-shell .sessions::before{content:'';position:absolute;left:5px;top:8px;bottom:8px;width:1.5px;background:rgba(10,19,48,0.1);}
.tahoe-shell .session-row{position:relative;padding:0 0 14px;}
.tahoe-shell .session-row:last-child{padding-bottom:0;}
.tahoe-shell .session-row::before{content:'';position:absolute;left:-22px;top:3px;width:12px;height:12px;border-radius:999px;background:#fff;box-shadow:0 0 0 1.5px rgba(10,19,48,0.2),inset 0 0 0 3px #fff;}
.tahoe-shell .session-row.done::before{box-shadow:0 0 0 1.5px #2F8C5E,inset 0 0 0 3px #fff;}
.tahoe-shell .session-row.current::before{box-shadow:0 0 0 1.5px #1B2D70,inset 0 0 0 3px #fff;}
.tahoe-shell .session-row-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tahoe-shell .session-n{font-family:var(--num-font);font-size:13px;font-weight:500;color:#0A1330;}
.tahoe-shell .session-when{font-size:11.5px;color:#6C6C78;font-family:var(--num-font);}
.tahoe-shell .session-meta{font-size:12px;color:#6C6C78;margin-top:3px;}
.tahoe-shell .session-meta b{font-family:var(--num-font);font-weight:500;color:#1A1A20;}
/* Pautas pendentes — passam pra próxima sessão */
.tahoe-shell .sessions-pend{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(200,136,26,0.07);box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.26);}
.tahoe-shell .sessions-pend-h{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8A5D10;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.tahoe-shell .sessions-pend-h svg{width:13px;height:13px;}
.tahoe-shell .pend-item{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#4B4B55;padding:4px 0;}
.tahoe-shell .pend-item .pnum{font-family:var(--num-font);font-size:11px;color:#8A5D10;width:16px;flex:none;}
/* Selo "Permanente" no evento do calendário (Central) + modo permanente do stage-track */
.tahoe-shell .cal-event .perm{font-family:var(--num-font);font-size:9px;font-weight:700;color:#1B2D70;margin-left:3px;}
.tahoe-shell .stage-track.permanente .stage.loop::after{content:'∞';margin-left:6px;font-size:13px;line-height:1;opacity:0.9;}

/* ═══════════ Assembleia · catálogo de pautas + automações (v0.25.0) ═══════════
   Passo 3 do wizard (shell-assembleia-nova): "+ item de pauta" abre um picker
   buscável de pautas padrão (.pauta-picker) OU insere um item personalizado de
   texto livre. Pautas de catálogo carregam automações — selo .pauta-auto ("gera
   N tarefa") no item + resumo das tarefas (reusa .cfg-callout). Só UI/estados; a
   criação real das tarefas no módulo Tarefas fica no app. */

/* Selo de automação — no .pick-opt e no .pauta-item vindo do catálogo. Âmbar suave. */
.tahoe-shell .pauta-auto{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:#8A5D10;background:rgba(200,136,26,0.10);padding:2px 8px;border-radius:999px;white-space:nowrap;flex:none;}
.tahoe-shell .pauta-auto svg{width:12px;height:12px;stroke-width:2;}
/* No item já inserido, o selo fica na linha de descrição, alinhado à esquerda do texto. */
.tahoe-shell .pauta-desc .pauta-auto{margin-left:8px;vertical-align:middle;}

/* Picker de catálogo — painel que abre abaixo do botão "+ item de pauta". */
.tahoe-shell .pauta-picker{margin-top:10px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);overflow:hidden;}
.tahoe-shell .pauta-picker[hidden]{display:none;}
.tahoe-shell .pauta-picker-search{display:flex;align-items:center;gap:8px;padding:10px 12px;box-shadow:inset 0 -0.5px 0 0 rgba(10,19,48,0.07);}
.tahoe-shell .pauta-picker-search svg{width:15px;height:15px;color:#8C8C99;flex:none;}
.tahoe-shell .pauta-picker-search input{border:none;background:none;outline:none;font:inherit;font-size:13px;color:#1A1A20;width:100%;}
.tahoe-shell .pauta-picker-list{max-height:240px;overflow-y:auto;padding:6px;}
.tahoe-shell .pauta-picker-empty{padding:14px 12px;font-size:12.5px;color:#8C8C99;text-align:center;}
.tahoe-shell .pick-opt{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px;cursor:pointer;}
.tahoe-shell .pick-opt:hover{background:rgba(10,19,48,0.04);}
.tahoe-shell .pick-opt[hidden]{display:none;}
.tahoe-shell .pick-opt-title{font-size:13px;font-weight:500;color:#1A1A20;flex:1;min-width:0;}
.tahoe-shell .pick-type{font-size:11px;color:#6C6C78;background:rgba(10,19,48,0.05);padding:2px 8px;border-radius:6px;white-space:nowrap;flex:none;}
.tahoe-shell .pauta-picker-foot{padding:8px;box-shadow:inset 0 0.5px 0 0 rgba(10,19,48,0.07);}
.tahoe-shell .pick-custom{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;border:none;border-radius:10px;background:rgba(27,45,112,0.06);color:#1B2D70;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;}
.tahoe-shell .pick-custom:hover{background:rgba(27,45,112,0.10);}
.tahoe-shell .pick-custom svg{width:14px;height:14px;stroke-width:2;}

/* Título editável de item personalizado — input inline no lugar do .pauta-title. */
.tahoe-shell input.pauta-title-edit{flex:1;min-width:0;border:none;background:#fff;font:inherit;font-weight:600;font-size:14px;color:#1A1A20;padding:3px 8px;border-radius:8px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);}

/* Resumo das automações — dentro de .cfg-callout (Passo 3 ao vivo + espelho no 5). */
.tahoe-shell .auto-list{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:5px;}
.tahoe-shell .auto-line{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:#4B4B55;line-height:1.4;}
.tahoe-shell .auto-line svg{width:12px;height:12px;color:#8A5D10;flex:none;margin-top:2px;stroke-width:2;}
.tahoe-shell .auto-line b{color:#1A1A20;font-weight:600;}
.tahoe-shell .auto-line .of{color:#8C8C99;}

/* ═══════════ Sidebar · rail de ícones + flyout (v0.26.0 · relayout v0.39.0) ═══════════
   O menu fixo estourava em monitor baixo (height:100vh + ~21 itens) e virava
   scroll interno. O initSidebarRail (interactions.js) agrupa, EM RUNTIME, cada
   .nav-section + os .nav-item seguintes num .nav-cat > (button.nav-cat-head +
   .nav-flyout) — sem reescrever o markup dos shells.

   v0.39.0 — o rail deixou de ser MODO e virou LAYOUT. Não existe mais modo
   expandido, botão de alternar, persistência em localStorage nem acordeão: a
   sidebar é função pura da largura da viewport.

   · ≥768px — rail: faixa de 66px, categoria vira tile de ícone e os itens vivem
     num flyout que abre no hover/foco (e no clique, que fixa, pra toque).
   · <768px — lista agrupada empilhada, todos os itens à vista. Nessa faixa não
     existe flyout: existe lista.

   As duas faixas são mutuamente exclusivas por media query — 767.98px e 768px
   não deixam vão entre si, qualquer largura cai numa das duas. Antes elas se
   COMPUNHAM: as regras do rail eram (0,3,0) por causa do modificador .nav-rail
   e venciam a faixa estreita, que é (0,2,0) — o padding, o align-items e o
   overflow do rail sobreviviam à media query estreita. O resultado era uma
   sidebar de largura total com tiles sem rótulo, o flyout inteiramente fora da
   tela à direita e scroll horizontal na página. Nenhuma das duas faixas
   desenhou aquilo; ele só existia na composição. */

/* Marcador de contrato: o initSidebarRail só reestrutura a nav se enxergar esta
   custom property. Sem ela (CSS antigo em cache / consumidor que não atualizou o
   tahoe.css), o JS não mexe em nada e a sidebar clássica continua intacta —
   em vez de virar uma lista sem estilo. */
.tahoe-shell{--nav-rail:1;}

/* ── Estrutura agrupada (vale nas duas faixas) ── */
.tahoe-shell .nav-cat{display:flex;flex-direction:column;flex:none;}
/* O head é <button> acima de 768px e <div> abaixo — o JS troca o elemento no
   breakpoint. As declarações de reset (border/background/font/text-align) valem
   nas duas faixas: no <div> são inertes, e mantê-las aqui evita duas regras que
   precisariam ser mantidas em sincronia. O que NÃO vale nas duas é o cursor:
   abaixo de 768px o head é rótulo, e mão de ponteiro prometeria um clique que
   não faz nada. */
.tahoe-shell .nav-cat-head{
  display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;
  font:inherit;font-size:11px;font-weight:500;letter-spacing:.02em;color:rgba(255,255,255,0.45);
  padding:14px 10px 6px;text-align:left;border-radius:10px;
  transition:background 120ms ease,color 120ms ease;
}
.tahoe-shell .nav-cat-head .cat-ic{width:14px;height:14px;color:rgba(173,213,235,0.65);flex:none;}
.tahoe-shell .nav-cat-head .cat-label{flex:1;min-width:0;}
.tahoe-shell .nav-cat.active > .nav-cat-head .cat-ic{color:#ADD5EB;}
.tahoe-shell .nav-flyout{display:flex;flex-direction:column;gap:2px;}
.tahoe-shell .nav-flyout-h{display:none;}
/* O JS cria o .cat-dot nas duas faixas, mas abaixo de 768px não há o que marcar:
   os itens da categoria estão todos à vista. Some por declaração, não por
   acidente de ficar sem estilo — um span de tamanho zero é invisível por sorte,
   não por decisão. */
.tahoe-shell .cat-dot{display:none;}

/* ── Rail (≥768px) ── */
@media (min-width:768px){
  /* A .sidebar é sticky (cria stacking context); sem z-index o .main pinta por
     cima e engole o flyout. 70 fica acima do painel e abaixo do drawer (90/100). */
  .tahoe-shell .sidebar{padding:12px 8px;align-items:center;gap:6px;overflow:visible;z-index:70;}
  /* O .org colapsa no monograma. */
  .tahoe-shell .org{
    background:none;box-shadow:none;margin-bottom:6px;padding:0;justify-content:center;width:auto;
  }
  .tahoe-shell .org > div:not(.org-mark){display:none;}
  .tahoe-shell .org-mark{width:36px;height:36px;border-radius:11px;}
  .tahoe-shell .org-mark svg{width:19px;}
  /* Categoria vira tile de ícone. */
  .tahoe-shell .nav-cat{position:relative;width:100%;align-items:center;}
  /* cursor:pointer vive só aqui: nesta faixa o head é <button> e o clique fixa
     o flyout. Abaixo de 768px ele é rótulo — a mão prometeria um clique inerte. */
  .tahoe-shell .nav-cat-head{
    width:46px;height:46px;padding:0;justify-content:center;border-radius:13px;
    color:rgba(173,213,235,0.85);cursor:pointer;
  }
  .tahoe-shell .nav-cat-head .cat-label{display:none;}
  .tahoe-shell .nav-cat-head .cat-ic{width:20px;height:20px;color:inherit;}
  .tahoe-shell .nav-cat-head:hover{background:rgba(255,255,255,0.12);color:#fff;}
  .tahoe-shell .nav-cat.active > .nav-cat-head{
    background:rgba(255,255,255,0.15);color:#fff;box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.18);
  }
  .tahoe-shell .nav-cat.active > .nav-cat-head .cat-ic{color:#ADD5EB;}
  /* Ponto de alerta quando a categoria tem item com badge .alert. */
  .tahoe-shell .cat-dot{
    display:block;
    position:absolute;top:6px;right:8px;width:7px;height:7px;border-radius:999px;
    background:#FF9E9E;box-shadow:0 0 0 2px #22377E;
  }
  /* Flyout — popover à direita do rail. */
  .tahoe-shell .nav-flyout{
    position:absolute;left:calc(100% + 8px);top:-6px;min-width:212px;z-index:60;
    /* Uma categoria com .nav-group aberto (ex.: Tarefas + suas visões) rende um
       flyout alto — limita e rola por dentro. */
    max-height:calc(100vh - 24px);overflow-y:auto;
    padding:8px;border-radius:14px;background:#22377E;
    box-shadow:0 18px 40px -14px rgba(6,12,40,0.70),inset 0 0 0 0.5px rgba(255,255,255,0.14);
    opacity:0;visibility:hidden;transform:translateX(-6px);
    transition:opacity 150ms ease,transform 150ms ease,visibility 150ms;
  }
  /* A transição do estado aberto NÃO lista visibility, a de repouso lista.
     Motivo: com visibility na transição, o primeiro frame depois do foco ainda
     está em progresso 0 — os .nav-item do flyout não são focáveis nesse frame e
     o Tab pula a categoria inteira. (Não é "propriedade discreta virando no
     meio do intervalo": visibility tem interpolação própria — com um extremo em
     `visible`, todo progresso em (0,1) mapeia pra visible. O custo é o frame do
     próprio evento, não metade do intervalo.)
     Tirar visibility da regra de REPOUSO não serve: aí ela vira hidden na hora
     do fechamento e o fade-out deixa de acontecer — medido. */
  /* .peek é o gatilho do PONTEIRO, e é uma classe em vez de `:hover` de
     propósito. O painel abre 8px à direita da .nav-cat e chega a 270px de altura
     contra os 46px do tile: o trajeto do ponteiro até um item de baixo é
     diagonal e sai da .nav-cat — atravessa o corredor de 8px e passa por cima da
     categoria SEGUINTE. Com `:hover` puro isso fechava o painel no meio do
     caminho e ainda abria o da vizinha no mesmo x; o painel não sumia, era
     substituído. `:hover` não tem como perdoar trajeto — quem segura a
     tolerância é o initSidebarRail (abre na hora, troca e fecha com atraso). */
  .tahoe-shell .nav-cat.peek > .nav-flyout,
  .tahoe-shell .nav-cat:focus-within > .nav-flyout,
  .tahoe-shell .nav-cat.open > .nav-flyout{
    opacity:1;visibility:visible;transform:none;
    transition:opacity 150ms ease,transform 150ms ease;
  }
  .tahoe-shell .nav-flyout-h{
    display:block;font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
    color:rgba(255,255,255,0.45);padding:4px 10px 7px;
  }
  .tahoe-shell .nav-flyout .nav-item{white-space:nowrap;}
  /* Rodapé: usuário vira avatar. */
  .tahoe-shell .user{
    width:46px;height:46px;padding:0;justify-content:center;background:none;box-shadow:none;
  }
  .tahoe-shell .user > div:not(.avatar){display:none;}
}

/* Precisa repetir os seletores de estado aberto: a regra que os cobre é (0,4,0)
   e um `.tahoe-shell .nav-flyout` solto é (0,2,0) — perderia, que foi exatamente
   o defeito da v0.38.0 (lá o modificador .nav-rail dava (0,3,0) ao flyout e o
   transition:none nunca se aplicava). Especificidade decide antes de ordem, e o
   Tahoe não usa @layer. Este bloco tem que ficar DEPOIS do bloco do rail. */
@media (min-width:768px) and (prefers-reduced-motion:reduce){
  .tahoe-shell .nav-flyout,
  .tahoe-shell .nav-cat.peek > .nav-flyout,
  .tahoe-shell .nav-cat:focus-within > .nav-flyout,
  .tahoe-shell .nav-cat.open > .nav-flyout{transition:none;}
}

/* ═══════════ Configurações · gestão do catálogo de pautas (v0.27.0) ═══════════
   Tela de manutenção do catálogo que o Passo 3 do wizard consome (v0.25.0). Cada
   .pcat-row é uma pauta padrão: título, tipo, quórum sugerido, ativo/inativo e as
   tarefas automáticas que ela dispara (sub-lista que abre no chevron). É um editor
   — os campos são inputs/selects direto, sem modo leitura. Persistência fica no app.
   Reusa .cfg-toggle (ativo), .pauta-auto (contador), .cfg-add-row e os pills. */

.tahoe-shell .pcat-list{display:flex;flex-direction:column;gap:10px;margin-top:10px;}
.tahoe-shell .pcat-row{border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);}
.tahoe-shell .pcat-row.inativa{background:rgba(10,19,48,0.02);}
.tahoe-shell .pcat-row.inativa .pcat-title,
.tahoe-shell .pcat-row.inativa .pcat-tipo,
.tahoe-shell .pcat-row.inativa .quorum-req{opacity:.55;}

.tahoe-shell .pcat-head{display:flex;align-items:center;gap:10px;padding:12px 14px;flex-wrap:wrap;}
.tahoe-shell .pcat-ord{font-family:var(--num-font);font-size:12px;color:#8C8C99;width:16px;flex:none;text-align:right;}
.tahoe-shell input.pcat-title{
  flex:1;min-width:160px;border:none;background:#fff;font:inherit;font-weight:600;font-size:14px;color:#1A1A20;
  padding:5px 9px;border-radius:8px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);
}
.tahoe-shell input.pcat-title:focus{outline:none;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.55);}
/* Chips de tipo e quórum (aparência definida junto do select.quorum-req). */
.tahoe-shell select.pcat-tipo{
  display:inline-flex;align-items:center;font-size:11px;color:#6C6C78;background:rgba(10,19,48,0.04);
  border:none;font-family:inherit;padding:3px 7px;border-radius:6px;white-space:nowrap;flex:none;cursor:pointer;
}
.tahoe-shell .pcat-head .quorum-req{border:none;font-family:inherit;cursor:pointer;}
/* Ações da linha. */
.tahoe-shell .pcat-acts{display:flex;align-items:center;gap:6px;margin-left:auto;flex:none;}
.tahoe-shell .pcat-expand,
.tahoe-shell .pcat-del{
  border:none;background:none;cursor:pointer;padding:5px;border-radius:8px;color:#8C8C99;
  display:inline-flex;align-items:center;justify-content:center;transition:background 120ms ease,color 120ms ease;
}
.tahoe-shell .pcat-expand svg,
.tahoe-shell .pcat-del svg{width:15px;height:15px;}
.tahoe-shell .pcat-expand:hover{background:rgba(10,19,48,0.06);color:#1B2D70;}
.tahoe-shell .pcat-del:hover{background:rgba(179,58,58,0.10);color:#B33A3A;}
.tahoe-shell .pcat-expand svg{transition:transform 180ms ease;}
.tahoe-shell .pcat-row.open .pcat-expand svg{transform:rotate(180deg);}

/* Sub-lista de tarefas automáticas — abre no chevron. */
.tahoe-shell .pcat-tasks{display:none;padding:0 14px 13px 40px;flex-direction:column;gap:7px;}
.tahoe-shell .pcat-row.open .pcat-tasks{display:flex;}
.tahoe-shell .pcat-tasks-h{
  display:grid;grid-template-columns:1.3fr 1.7fr 0.85fr 0.85fr 26px;gap:8px;
  font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8C8C99;padding:2px 2px 0;
}
.tahoe-shell .pcat-task{display:grid;grid-template-columns:1.3fr 1.7fr 0.85fr 0.85fr 26px;gap:8px;align-items:center;}
.tahoe-shell .pcat-task input{
  border:none;background:#fff;font:inherit;font-size:12.5px;color:#1A1A20;min-width:0;
  padding:5px 8px;border-radius:7px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);
}
.tahoe-shell .pcat-task input:focus{outline:none;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.55);}
.tahoe-shell .pcat-task-del{
  border:none;background:none;color:#8C8C99;cursor:pointer;font-size:17px;line-height:1;padding:0 2px;border-radius:6px;
}
.tahoe-shell .pcat-task-del:hover{color:#B33A3A;}
.tahoe-shell .pcat-tasks-empty{font-size:12px;color:#8C8C99;font-style:italic;padding:2px 2px 4px;}
.tahoe-shell .pcat-tasks .cfg-add-row{margin-top:2px;}

@media (max-width:900px){
  .tahoe-shell .pcat-tasks-h{display:none;}
  .tahoe-shell .pcat-task{grid-template-columns:1fr 1fr 26px;}
}

/* ═══════════ Detalhe · faixa de próximo passo (v0.28.0) ═══════════
   Etapa 1 da reorganização de shell-assembleia.html (ver
   docs/superpowers/specs/2026-07-23-assembleia-detalhe-ia-proposta.md).

   O detalhe da assembleia tinha 4 .tb-primary competindo em cards diferentes —
   e o mais proeminente ("Gerar ata", no card Ações) era justamente o que NÃO
   devia ser clicado na fase atual. A .next-step substitui o card Ações: uma
   frase dizendo o que fazer agora + UM CTA + ações de exceção no "⋯".

   Os botões da faixa NÃO reimplementam o fluxo: cada um proxia o controle real
   (data-next-proxy) que já vive no card do domínio, então a lógica continua com
   dono único. O texto/CTA derivam do sub-status da ata (initAtaReview).

   Convive com .cfg-pending-bar: pendência (âmbar, prazo estourado) entra ACIMA;
   próximo passo é outra coisa. */
.tahoe-shell .next-step{
  display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;margin-bottom:14px;
  background:rgba(126,186,220,0.12);box-shadow:inset 0 0 0 0.5px rgba(27,45,112,0.14);
}
.tahoe-shell .next-step.warn{background:rgba(200,136,26,0.10);box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.28);}
.tahoe-shell .next-step.done{background:rgba(47,140,94,0.10);box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.26);}
.tahoe-shell .next-step-ic{
  width:32px;height:32px;border-radius:11px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  background:rgba(27,45,112,0.10);color:#1B2D70;
}
.tahoe-shell .next-step.warn .next-step-ic{background:rgba(200,136,26,0.16);color:#8A5D10;}
.tahoe-shell .next-step.done .next-step-ic{background:rgba(47,140,94,0.16);color:#1F6B46;}
.tahoe-shell .next-step-ic svg{width:16px;height:16px;}
.tahoe-shell .next-step-body{flex:1;min-width:0;}
.tahoe-shell .next-step-title{font-size:13px;font-weight:600;color:#0A1330;line-height:1.3;}
/* O título quase nunca tem número — mas quando tem ("4 regras não pegam nada há
   mais de 90 dias"), o numeral é o dado da frase e precisa ser Saira como todos os
   outros. O .num do kit vem com 14px/500 próprios, de KPI; aqui ele só troca a
   fonte e devolve tamanho, peso e cor ao título, senão o dígito fica maior e mais
   claro que a palavra ao lado. Não se mexe em .next-step-title: quem se ajusta é o
   numeral que entrou, não a faixa que já servia 55 telas. */
.tahoe-shell .next-step-title .num{font-size:inherit;font-weight:inherit;color:inherit;}
.tahoe-shell .next-step-note{font-size:11.5px;color:#6C6C78;margin-top:2px;line-height:1.35;}
.tahoe-shell .next-step-note b{font-family:var(--num-font);font-weight:500;color:#4B4B55;}
.tahoe-shell .next-step-acts{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0;position:relative;}
/* "⋯" — ações de exceção (adiar/cancelar) não merecem peso permanente. */
.tahoe-shell .next-more{
  border:none;background:none;cursor:pointer;color:#6C6C78;padding:6px 8px;border-radius:9px;line-height:1;
  font-size:16px;font-weight:700;letter-spacing:.06em;
}
.tahoe-shell .next-more:hover{background:rgba(10,19,48,0.06);color:#1A1A20;}
.tahoe-shell .next-pop{
  position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:210px;padding:6px;
  background:#fff;border-radius:12px;box-shadow:0 12px 30px rgba(10,19,48,0.16),0 0 0 0.5px rgba(10,19,48,0.10);
  display:none;flex-direction:column;gap:2px;
}
.tahoe-shell .next-pop.show{display:flex;}
.tahoe-shell .next-pop button{
  border:none;background:none;font:inherit;font-size:12.5px;color:#1A1A20;text-align:left;
  padding:8px 10px;border-radius:8px;cursor:pointer;
}
.tahoe-shell .next-pop button:hover{background:rgba(10,19,48,0.05);}
.tahoe-shell .next-pop button.danger{color:#B33A3A;}
.tahoe-shell .next-pop button.danger:hover{background:rgba(179,58,58,0.09);}

/* ═══════════ Detalhe · zona fixa + abas por domínio (v0.28.0, etapa 2) ═══════════
   Só a faixa de ação + navegação gruda: identidade e .stage-track se leem uma vez
   na chegada; "o que fazer agora" e a navegação se consultam o tempo todo.
   As abas são por DOMÍNIO (estáveis) — a fase do ciclo decide qual abre e o que
   fica travado, não o que existe. `.tabs`/`.tab-panel[hidden]` já existiam. */
/* Barra que gruda no topo do .content: ação + navegação de uma tela.
   Nasceu no detalhe da assembleia como .detail-sticky (v0.28.0), mas serve a
   qualquer tela — a central usa para os filtros de uma fila longa. Por isso o nome
   canônico passou a ser .sticky-bar (v0.30.0).
   .detail-sticky segue como ALIAS depreciado: a v0.28/0.29 já saíram publicadas e
   um consumidor pode estar usando. Remover só numa major. */
.tahoe-shell .sticky-bar,
.tahoe-shell .detail-sticky{
  position:sticky;top:0;z-index:10;margin:0 -2px 14px;padding:10px 2px 0;
  background:rgba(251,252,253,0.88);backdrop-filter:saturate(1.4) blur(14px);
  -webkit-backdrop-filter:saturate(1.4) blur(14px);
}
.tahoe-shell .sticky-bar .tabs,
.tahoe-shell .detail-sticky .tabs{margin-bottom:12px;}
/* Numa fila, o que gruda são os filtros — eles é que se consultam rolando a lista.
   Sem margem dupla: a .filters já traz a sua. */
.tahoe-shell .sticky-bar .filters{margin-bottom:8px;}
.tahoe-shell .sticky-bar .active-filters{margin-bottom:10px;}
.tahoe-shell .sticky-bar .active-filters:empty{display:none;margin:0;}
/* Aba sem conteúdo na fase: apagada, NUNCA disabled — o gestor precisa poder espiar. */
.tahoe-shell .tabs button.dim{color:#8C8C99;}
.tahoe-shell .tabs button.dim .count{display:none;}

/* ── Pauta travada após a deliberação (v0.28.0 · lock por ITEM em v0.31.0) ──
   Campos com efeito jurídico (quórum exigido do item, texto/valor das propostas)
   continuavam <select>/<input> vivos DEPOIS de "Aprovado · 71,2%". Trocar o quórum
   de um item já votado deve ser ato explícito ("Reabrir item"), não clique distraído.

   A deliberação é item a item — uns deliberados, outros não. Por isso o lock é por
   ITEM (.pauta-item.locked). O .pauta.locked de LISTA continua válido (trava tudo) e
   é reescrito em termos do mesmo efeito, pra não duplicar regra. .reopened destrava
   um item específico. */
.tahoe-shell .pauta-item.locked:not(.reopened) select.quorum-req,
.tahoe-shell .pauta-item.locked:not(.reopened) .proposta input,
.tahoe-shell .pauta.locked .pauta-item:not(.locked):not(.reopened) select.quorum-req,
.tahoe-shell .pauta.locked .pauta-item:not(.locked):not(.reopened) .proposta input{
  -webkit-appearance:none;appearance:none;pointer-events:none;
  background:none;background-image:none;box-shadow:none;padding-left:0;color:#4B4B55;
}
.tahoe-shell .pauta-item.locked:not(.reopened) select.quorum-req,
.tahoe-shell .pauta.locked .pauta-item:not(.locked):not(.reopened) select.quorum-req{padding-right:0;}
.tahoe-shell .pauta-item.locked:not(.reopened) .proposta .prop-del,
.tahoe-shell .pauta-item.locked:not(.reopened) .add-proposta,
.tahoe-shell .pauta.locked .pauta-item:not(.locked):not(.reopened) .proposta .prop-del,
.tahoe-shell .pauta.locked .pauta-item:not(.locked):not(.reopened) .add-proposta{display:none;}
/* Botão de reabrir — discreto, alinhado com o corpo do item. Só aparece em item travado. */
.tahoe-shell .pauta-reopen{
  display:none;align-items:center;gap:6px;margin:8px 0 0 30px;
  border:none;background:none;cursor:pointer;font:inherit;font-size:11.5px;font-weight:600;
  color:#8C8C99;padding:3px 8px;border-radius:8px;
}
.tahoe-shell .pauta-item.locked .pauta-reopen,
.tahoe-shell .pauta.locked .pauta-item .pauta-reopen{display:inline-flex;}
.tahoe-shell .pauta-reopen:hover{background:rgba(10,19,48,0.06);color:#1B2D70;}
.tahoe-shell .pauta-reopen svg{width:12px;height:12px;}
.tahoe-shell .pauta-item.reopened .pauta-reopen{color:#8A5D10;background:rgba(200,136,26,0.12);}
.tahoe-shell .pauta-item.reopened{box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.35);}

/* ── Rotas extraídas do detalhe (v0.28.0, etapa 4) ──
   Duas tarefas não cabiam numa aba: conduzir a sessão ao vivo (uma coisa por vez,
   alvos grandes, zero cromo de admin — antes era um drawer de 440px sobre uma
   página rolada noutro lugar) e editar um documento jurídico (antes numa coluna
   de ~600px dentro de um card dentro do .det2). Viraram shells próprios. */

/* ═══════════ Fila de trabalho em tabela (v0.29.0) ═══════════
   Saiu do estudo da central de assembleias
   (docs/superpowers/specs/2026-07-23-assembleias-central-ia-proposta.md): a central
   era a única lista-fila do kit SEM eixo de urgência — prestações tem SLA, cobrança
   tem vencimento, onboarding tem prazo, e assembleias, o módulo com mais prazos
   legais, não tinha nenhum. Estes primitivos servem qualquer central de fila. */

/* Prazo relativo na célula. .over/.today já existiam dentro de .tmeta (task-row);
   aqui ganham base própria e o "soon". Isso também recolhe dívida: prestações e
   onboarding pintavam prazo com hex inline no markup. */
.tahoe-shell .due{
  font-family:var(--num-font);font-size:12.5px;font-weight:500;color:#4B4B55;
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
}
.tahoe-shell .due svg{width:13px;height:13px;}
.tahoe-shell .due.soon{color:#8A5D10;}
.tahoe-shell .due.today{color:#1B6FB3;}
.tahoe-shell .due.over{color:#B33A3A;}

/* Célula de duas linhas: verbo + contexto, sem gastar uma coluna. */
.tahoe-shell .tbl-2l{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tahoe-shell .tbl-2l .t1{font-size:12.5px;color:#1A1A20;line-height:1.25;}
.tahoe-shell .tbl-2l .t2{font-size:11px;color:#6C6C78;line-height:1.25;}
.tahoe-shell .tbl-2l .t2 b{font-family:var(--num-font);font-weight:500;color:#4B4B55;}

/* Linha de grupo dentro da tabela — reusa .group-h/.gc de shell-tarefas. O
   .group-h traz padding lateral próprio, que dentro de um <td> duplicaria o recuo. */
.tahoe-shell .tbl .tbl-group td{padding:0;}
.tahoe-shell .tbl .tbl-group .group-h{padding-left:14px;}

/* Promovidos do inline de shell-cobranca-casos.html — não são primitivos novos,
   é dívida recolhida: par de botões na última célula, em escala de linha. */
.tahoe-shell .row-btns{display:flex;gap:6px;justify-content:flex-end;}
.tahoe-shell .tb-primary.sm,
.tahoe-shell .ghost-btn.sm{height:26px;padding:0 11px;font-size:11px;}
.tahoe-shell .tbl-cap{padding:16px 18px 2px;}

/* ═══════════ Presença em escala — filtros e modo lista (v0.29.0) ═══════════
   A grade servia bem 48 unidades, mas a Semog tem condomínios bem maiores: em 300
   unidades vira ~600 células, e o .unit-scroll (max-height + overflow) era um
   scroll DENTRO do scroll da página — armadilha clássica de roda do mouse.

   Três respostas:
   1. .unit-scroll deixa de rolar por padrão (a página rola); quem quiser o teto
      antigo usa .unit-scroll.capped.
   2. Filtros de bloco/situação (o recorte que o operador realmente faz) — reusa
      .filters/.filter/.filter-pop e a busca que já existiam.
   3. Modo LISTA como alternativa à grade acima de ~100 unidades. As linhas são
      PROJEÇÃO das células (fonte única: o .unit-cell continua sendo o estado);
      o initPresenca gera e sincroniza. */
.tahoe-shell .unit-scroll{max-height:none;overflow:visible;}
.tahoe-shell .unit-scroll.capped{max-height:300px;overflow-y:auto;}
/* Barra de recorte da presença — busca + situação + bloco + alternador de modo. */
.tahoe-shell .pres-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;}
.tahoe-shell .pres-filters .seg button{font-size:11.5px;padding:5px 11px;}
.tahoe-shell .pres-view{margin-left:auto;}
/* Estado vazio do recorte (some tudo por causa do filtro). */
.tahoe-shell .unit-empty{padding:22px 12px;text-align:center;font-size:12.5px;color:#8C8C99;font-style:italic;}
.tahoe-shell .unit-cell.hide,
.tahoe-shell .unit-group-h.hide,
.tahoe-shell .unit-row.hide{display:none;}

/* Modo lista — escala melhor que a grade: uma linha por unidade, varredura
   vertical, e cabe rótulo de estado por extenso. */
.tahoe-shell .unit-list{display:none;flex-direction:column;}
.tahoe-shell .unit-scroll.as-list .unit-grid,
.tahoe-shell .unit-scroll.as-list .unit-group-h{display:none;}
.tahoe-shell .unit-scroll.as-list .unit-list{display:flex;}
.tahoe-shell .unit-row{
  display:grid;grid-template-columns:72px 1fr 88px 128px;align-items:center;gap:12px;
  padding:9px 12px;border-radius:10px;cursor:pointer;
  box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.06);
}
.tahoe-shell .unit-row:hover{background:rgba(10,19,48,0.03);}
.tahoe-shell .unit-row .r-id{font-family:var(--num-font);font-size:13px;font-weight:600;color:#1A1A20;}
.tahoe-shell .unit-row .r-bloco{font-size:12px;color:#6C6C78;}
.tahoe-shell .unit-row .r-frac{font-family:var(--num-font);font-size:12px;color:#6C6C78;text-align:right;}
.tahoe-shell .unit-row .r-st{justify-self:end;}
.tahoe-shell .unit-row.inadimplente{cursor:not-allowed;}
.tahoe-shell .unit-row.inadimplente .r-id::after{content:'$';font-size:10px;font-weight:700;color:#8A5D10;margin-left:4px;}

/* ═══════════ Regra Padrão Semog para campos não-numéricos (v0.28.0) ═══════════
   A afordância de herança (chip .cfg-rule.default/.custom + .cfg-rule-note com
   baseline e "voltar ao padrão" + .cfg-field.is-custom virando card) já era
   GENÉRICA: ela vive no .cfg-field, não no valor. O que faltava era o slot .val
   acomodar CONTROLES em vez de só texto/número — enum (.seg), boolean
   (.cfg-toggle) e texto livre (input). Nada de afordância nova: só o encaixe.

   Copy: quem define essas regras é a CONVENÇÃO do condomínio, não preferência do
   operador — daí o .cfg-field .help apontando isso nos campos legais. */

/* O valor vira uma linha que comporta controle + chip de herança, e quebra em
   telas estreitas sem espremer o controle. */
.tahoe-shell .cfg-field .val.control{align-items:center;gap:10px;flex-wrap:wrap;}
/* Enum — segmented compacto dentro do campo de config. */
.tahoe-shell .cfg-field .val .seg{padding:2px;}
.tahoe-shell .cfg-field .val .seg button{font-size:11.5px;padding:4px 10px;}
/* Boolean — toggle alinhado com o rótulo do estado. */
.tahoe-shell .cfg-field .val .cfg-toggle .label-text{font-size:12.5px;color:#4B4B55;}
/* Texto livre — input discreto, no peso do valor. */
.tahoe-shell .cfg-field input.cfg-text{
  flex:1;min-width:140px;border:none;background:#fff;font:inherit;font-size:13px;color:#1A1A20;
  padding:5px 9px;border-radius:8px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);
}
.tahoe-shell .cfg-field input.cfg-text:focus{outline:none;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.55);}
/* Baseline não-numérico na nota: o <b> padrão usa Saira (feito para dias/horas);
   "por fração ideal" precisa da fonte de corpo. */
.tahoe-shell .cfg-rule-note .std b.txt{font-family:var(--ui-font);font-weight:600;}

/* Mesa: rail da pauta à esquerda, item ativo à direita. Reusa a geometria e o
   tratamento do .tasks-layout, só invertendo as proporções. */
.tahoe-shell .tasks-layout.mesa{grid-template-columns:340px minmax(0,1fr);}
.tahoe-shell .tasks-layout.mesa .task-center{border-right:0.5px solid rgba(10,19,48,0.08);}
.tahoe-shell .mesa-item{display:flex;align-items:flex-start;gap:10px;padding:13px 16px;cursor:pointer;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.06);}
.tahoe-shell .mesa-item:hover{background:rgba(10,19,48,0.03);}
.tahoe-shell .mesa-item.on{background:rgba(126,186,220,0.14);box-shadow:inset 3px 0 0 #1B2D70;}
.tahoe-shell .mesa-item .pauta-num{margin-top:1px;}
.tahoe-shell .mesa-item-b{flex:1;min-width:0;}
.tahoe-shell .mesa-item-t{font-size:13px;font-weight:600;color:#1A1A20;line-height:1.3;}
.tahoe-shell .mesa-item-m{font-size:11px;color:#6C6C78;margin-top:3px;}
/* Placar grande — legível a distância, para quem conduz a mesa. */
.tahoe-shell .mesa-score{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0;}
.tahoe-shell .mesa-score .sc{padding:14px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);text-align:center;}
.tahoe-shell .mesa-score .sc-l{font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#8C8C99;}
.tahoe-shell .mesa-score .sc-v{font-family:var(--num-font);font-size:30px;font-weight:500;color:#0A1330;line-height:1.1;margin-top:4px;}
.tahoe-shell .mesa-score .sc.fav .sc-v{color:#1F6B46;}
.tahoe-shell .mesa-score .sc.con .sc-v{color:#8C2828;}
.tahoe-shell .mesa-bar{padding:14px 18px;display:flex;align-items:center;gap:12px;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.08);}
.tahoe-shell .mesa-bar .t{font-family:var(--num-font);font-size:17px;color:#0A1330;flex:1;min-width:0;}

/* Ata em tela cheia: papel à esquerda, rail de revisão à direita (sticky). */
.tahoe-shell .ata-split{display:grid;grid-template-columns:minmax(0,1.55fr) 360px;gap:16px;align-items:start;}
.tahoe-shell .ata-split .ata-rail{position:sticky;top:14px;display:flex;flex-direction:column;gap:14px;}
.tahoe-shell .ata-split .ata-paper{min-height:60vh;}
/* No rail estreito (360px) a linha do portão 2 precisa quebrar, senão o nome
   do presidente fica espremido em duas linhas contra o pill. */
.tahoe-shell .ata-split .review-row-top{flex-wrap:wrap;gap:6px;}
.tahoe-shell .ata-split .review-row-who{flex:1 1 100%;}
@media (max-width:1100px){
  .tahoe-shell .ata-split{grid-template-columns:1fr;}
  .tahoe-shell .ata-split .ata-rail{position:static;}
  .tahoe-shell .tasks-layout.mesa{grid-template-columns:1fr;}
}

/* ═══════════ Deliberação · modos de voto + resultado neutro (v0.31.0) ═══════════
   Fatia 1 do brief de 2026-07-24. A mesa só tinha a grade nominal para deliberação
   simples; agora há os 3 modos (Aclamação/Contagem/Nominal via .seg) e o voto nominal
   em propostas concorrentes. Só UI/estados — a lógica de qual modo, elegibilidade e
   gravação é do app. */

/* Resultado de empate — sem vencedor em propostas concorrentes. Neutro, segue o
   padrão dos irmãos (.aprovado/.reprovado): texto saturado sobre tint da própria
   família. Cinza porque o RESULTADO é neutro; "reabrir" é o CTA à parte. */
.tahoe-shell .pauta-result.neutro{color:#4B4B55;background:rgba(10,19,48,0.06);}

/* Contagem agregada — grade de inputs rotulados (A favor / Contra / Abstenção, ou
   um por proposta). Leve; o placar é derivado no app. */
.tahoe-shell .count-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:6px 0 2px;}
.tahoe-shell .count-cell{display:flex;flex-direction:column;gap:5px;}
.tahoe-shell .count-cell label{font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:#8C8C99;}
.tahoe-shell .count-cell input{border:none;background:#fff;font:inherit;font-family:var(--num-font);font-size:18px;font-weight:500;color:#0A1330;padding:8px 10px;border-radius:10px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);width:100%;}
.tahoe-shell .count-cell input:focus{outline:none;box-shadow:inset 0 0 0 1px rgba(79,111,181,0.55);}

/* Voto nominal em PROPOSTAS CONCORRENTES: cada unidade presente escolhe UMA proposta.
   A célula mostra a LETRA (A/B/C…) — a letra carrega qual proposta, então escala pra
   N propostas; a cor só diz votou × absteve × pendente (sem cor por proposta). */
.tahoe-shell .unit-cell.choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;}
.tahoe-shell .unit-cell.choice .u-pick{font-family:var(--num-font);font-size:17px;font-weight:700;line-height:1;color:#8C8C99;}
.tahoe-shell .unit-cell.choice.picked{background:rgba(79,111,181,0.14);box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.40);}
.tahoe-shell .unit-cell.choice.picked .u-pick{color:#1B2D70;}
.tahoe-shell .unit-cell.choice.abs{background:rgba(10,19,48,0.05);box-shadow:none;}
.tahoe-shell .unit-cell.choice.abs .u-pick{color:#8C8C99;}
/* pendente reusa o tracejado do .unit-cell.none (já definido) */

/* Painéis dos 3 modos — só um visível por vez (o JS alterna). */
.tahoe-shell [data-mode-panel]{margin-top:4px;}
.tahoe-shell [data-mode-panel][hidden]{display:none;}
.tahoe-shell .aclamacao-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;}

/* ═══════════ Documentos · papel formal + numeração + variantes (v0.32.0) ═══════════
   Fatia 2 do brief de 2026-07-24. O .ata-editor/.ata-paper é a superfície EDITÁVEL;
   .doc-paper é a versão IMPRESSA (print-preview) que vira PDF: convocação, ata
   numerada e o documento geral compilado. Só layout/estados — a geração real do PDF
   é do app. */

/* Moldura do documento — papel A4-like centralizado. */
.tahoe-shell .doc-frame{display:flex;flex-direction:column;align-items:center;gap:18px;padding:8px 0 24px;}
.tahoe-shell .doc-paper{
  width:100%;max-width:820px;background:#fff;border-radius:6px;
  box-shadow:0 0 0 0.5px rgba(10,19,48,0.10),0 8px 24px -12px rgba(10,19,48,0.30);
  padding:0;overflow:hidden;color:#3A3A44;font-size:13px;line-height:1.7;
}

/* Cabeçalho do documento: marca + identidade + data de geração + variante. */
.tahoe-shell .doc-head{display:flex;align-items:flex-start;gap:14px;padding:26px 40px 18px;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.08);}
.tahoe-shell .doc-head .doc-mark{width:38px;height:38px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#2F4FA0,#1B2D70 60%,#16265D);}
.tahoe-shell .doc-head .doc-mark svg{width:20px;height:auto;}
.tahoe-shell .doc-head .doc-org{flex:1;min-width:0;}
.tahoe-shell .doc-head .doc-org-name{font-family:var(--num-font);font-size:16px;color:#0A1330;letter-spacing:-0.01em;}
.tahoe-shell .doc-head .doc-org-sub{font-size:11.5px;color:#6C6C78;margin-top:2px;}
/* Data de geração — o brief pede que apareça (o síndico não pode alegar que "não sabia"). */
.tahoe-shell .doc-gen{font-size:11px;color:#8C8C99;text-align:right;flex:none;font-family:var(--num-font);}
.tahoe-shell .doc-gen b{color:#4B4B55;font-weight:500;}

/* Alternador de variante Condomínio × Associação — reusa .seg. */
.tahoe-shell .doc-variant{margin:14px 40px 0;}

/* Corpo do documento. */
.tahoe-shell .doc-body{padding:20px 40px 8px;}
.tahoe-shell .doc-title{font-family:var(--num-font);font-size:17px;color:#0A1330;text-align:center;letter-spacing:-0.01em;margin:6px 0 18px;}
.tahoe-shell .doc-sec{margin:0 0 18px;}
.tahoe-shell .doc-sec-h{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#8C8C99;margin:0 0 8px;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.07);padding-bottom:5px;}
.tahoe-shell .doc-body p{margin:0 0 10px;}
.tahoe-shell .doc-body table{width:100%;border-collapse:collapse;font-size:12px;margin:0 0 10px;}
.tahoe-shell .doc-body th,.tahoe-shell .doc-body td{text-align:left;padding:5px 8px;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);}
.tahoe-shell .doc-body th{background:rgba(10,19,48,0.03);color:#1A1A20;font-weight:600;}

/* Numeração de linhas — requisito legal da ata. Cada .doc-line é uma linha com o
   número no gutter. Contador CSS: não precisa numerar à mão no markup. */
.tahoe-shell .doc-numbered{counter-reset:docln;}
.tahoe-shell .doc-numbered .doc-line{position:relative;padding-left:44px;min-height:1.7em;}
.tahoe-shell .doc-numbered .doc-line::before{
  counter-increment:docln;content:counter(docln);
  position:absolute;left:0;top:0;width:30px;text-align:right;
  font-family:var(--num-font);font-size:11px;color:#B4B4BE;user-select:none;
  padding-top:0.15em;box-shadow:inset -0.5px 0 0 rgba(10,19,48,0.08);padding-right:8px;
}

/* Quebra e rodapé de página. */
.tahoe-shell .doc-page-brk{display:flex;align-items:center;gap:10px;margin:22px 0 18px;color:#B4B4BE;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;}
.tahoe-shell .doc-page-brk::before,.tahoe-shell .doc-page-brk::after{content:'';flex:1;height:0;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.10);}
.tahoe-shell .doc-page-foot{padding:12px 40px 22px;display:flex;align-items:center;justify-content:space-between;font-size:10.5px;color:#8C8C99;box-shadow:inset 0 0.5px 0 rgba(10,19,48,0.07);}
.tahoe-shell .doc-page-foot .pg{font-family:var(--num-font);}

/* Barra de ações do documento (imprimir / baixar), fora do papel. */
.tahoe-shell .doc-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}

/* Linha de procuração na aba Documentos — reusa .doc-row com ícone de pessoa. */
.tahoe-shell .doc-ic.proc{background:rgba(79,111,181,0.12);color:#4F6FB5;}

/* ═══════════ Contagem por contrato · votos herdados · comunicado (v0.33.0) ═══════════
   Fatia 3 do brief de 2026-07-24 (§5/§6/§7.2). Só indicador/estado — a contagem, o
   carryover dos votos e o envio dos canais são do app. */

/* §5 — Cota de assembleias por contrato. "2 de 3 no ano" + pontos de progresso.
   Estados reusam warn/danger; sem cor nova. */
.tahoe-shell .quota{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#4B4B55;}
.tahoe-shell .quota-dots{display:inline-flex;gap:4px;}
.tahoe-shell .quota-dots i{width:8px;height:8px;border-radius:999px;background:rgba(10,19,48,0.10);}
.tahoe-shell .quota-dots i.on{background:#4F6FB5;}
.tahoe-shell .quota-txt{white-space:nowrap;}
.tahoe-shell .quota-txt b{font-family:var(--num-font);font-weight:600;color:#0A1330;}
.tahoe-shell .quota.alert .quota-dots i.on{background:#C8881A;}
.tahoe-shell .quota.alert .quota-txt b{color:#8A5D10;}
.tahoe-shell .quota.over .quota-dots i.on{background:#B33A3A;}
.tahoe-shell .quota.over .quota-dots i.extra{background:#B33A3A;box-shadow:0 0 0 2px rgba(179,58,58,0.18);}
.tahoe-shell .quota.over .quota-txt b{color:#8C2828;}

/* §6 — Voto herdado da sessão anterior. Anel âmbar + marcador "↻"; editável (clicar
   remove o inherited e vira voto novo desta sessão). O .unit-cell já é position:relative. */
.tahoe-shell .unit-cell.inherited{box-shadow:inset 0 0 0 1px rgba(200,136,26,0.50);}
.tahoe-shell .unit-cell.inherited::before{content:'↻';position:absolute;top:2px;left:5px;font-size:9px;font-weight:700;color:#8A5D10;line-height:1;}
.tahoe-shell .inherited-note{display:flex;align-items:center;gap:8px;margin:2px 0 12px;padding:9px 12px;border-radius:10px;font-size:12px;color:#8A5D10;background:rgba(200,136,26,0.10);box-shadow:inset 0 0 0 0.5px rgba(200,136,26,0.28);}
.tahoe-shell .inherited-note svg{width:15px;height:15px;flex:none;}
.tahoe-shell .inherited-note b{font-weight:600;}

/* §7.2 — Comunicado da assembleia: previews de e-mail e WhatsApp lado a lado. */
.tahoe-shell .comms-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:4px;}
.tahoe-shell .comms-preview{border-radius:14px;background:#fff;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.10);overflow:hidden;}
.tahoe-shell .comms-preview-h{display:flex;align-items:center;gap:8px;padding:11px 14px;box-shadow:inset 0 -0.5px 0 rgba(10,19,48,0.07);}
.tahoe-shell .comms-preview-h .ph-sub{margin-left:auto;font-size:11px;color:#8C8C99;}
/* E-mail — assunto + corpo, na linguagem do notification.html. */
.tahoe-shell .mail-preview .mail-subj{font-size:13px;font-weight:600;color:#0A1330;padding:12px 14px 2px;}
.tahoe-shell .mail-preview .mail-from{font-size:11px;color:#8C8C99;padding:0 14px 10px;}
.tahoe-shell .mail-preview .mail-body{font-size:12.5px;line-height:1.65;color:#4B4B55;padding:0 14px 14px;}
.tahoe-shell .mail-preview .mail-body b{color:#1A1A20;}
/* WhatsApp — bolha verde, texto com merge-tags como chips + nota do limite/HSM. */
.tahoe-shell .wa-preview{padding:14px;}
.tahoe-shell .wa-bubble{background:rgba(47,140,94,0.08);border-radius:4px 14px 14px 14px;padding:12px 14px;font-size:12.5px;line-height:1.7;color:#1A1A20;box-shadow:inset 0 0 0 0.5px rgba(47,140,94,0.20);}
.tahoe-shell .wa-tag{background:rgba(47,140,94,0.16);color:#1F6B46;padding:1px 6px;border-radius:6px;font-size:11.5px;font-weight:600;white-space:nowrap;}
.tahoe-shell .wa-note{display:flex;align-items:center;gap:6px;font-size:11px;color:#8C8C99;margin-top:9px;}
.tahoe-shell .wa-note svg{width:13px;height:13px;flex:none;}

/* ═══════════════════════════════════════════════════════════════════════════
   v0.35.0 — F4e-2: inadimplente não vota
   Quórum de deliberação (.delib-meter), célula liberada por override, afordância
   de liberação (.u-unlock), callout de "sem dado" (.cfg-callout.warn) e legenda
   com marcadores. Sem cor nova: reusa âmbar/verde/sky→navy do kit.
   ═══════════════════════════════════════════════════════════════════════════ */

/* A. Quórum de DELIBERAÇÃO — ≠ .quorum (instalação). Barra escalada à BASE, com
   preenchimento (i = atual/base) e TIQUE de limiar (u = alvo/base). Mais alta e
   rotulada que a .quorum, pra os dois nunca se confundirem na mesma tela. */
.tahoe-shell .delib-meter{margin:6px 0 2px;}
.tahoe-shell .delib-bar{position:relative;height:12px;border-radius:999px;background:rgba(10,19,48,0.07);overflow:hidden;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.08);}
.tahoe-shell .delib-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7EBADC,#1B2D70);width:0;transition:width .2s ease;}
/* tique do limiar (o "falta isto") — some sob overflow, então mora numa camada acima */
.tahoe-shell .delib-bar u{position:absolute;top:-3px;bottom:-3px;width:2px;border-radius:2px;background:#0A1330;transform:translateX(-1px);box-shadow:0 0 0 1.5px #fff;}
.tahoe-shell .delib-meter[data-met="true"] .delib-bar i{background:linear-gradient(90deg,#2F8C5E,#1F6B46);}
.tahoe-shell .delib-meter[data-met="true"] .delib-bar u{background:#1F6B46;}
.tahoe-shell .delib-num{display:block;margin-top:7px;font-size:12px;color:#4B4B55;}
.tahoe-shell .delib-num b{font-family:var(--num-font);font-weight:600;color:#0A1330;}
.tahoe-shell .delib-meter[data-met="true"] .delib-num b{color:#1F6B46;}
.tahoe-shell .delib-num .delib-base{color:#8C8C99;}
/* estado atingido: um selo curto ao lado do número */
.tahoe-shell .delib-flag{display:none;margin-left:6px;font-size:11px;font-weight:600;color:#1F6B46;}
.tahoe-shell .delib-meter[data-met="true"] .delib-flag{display:inline;}
/* B*. maioria não tem denominador → vira placar fav × con (sem barra/tique) */
.tahoe-shell .delib-meter.placar .delib-bar{display:none;}
.tahoe-shell .delib-meter.placar .delib-num{margin-top:0;font-size:13px;}
.tahoe-shell .delib-meter.placar .fav-n{color:#1F6B46;font-family:var(--num-font);font-weight:600;}
.tahoe-shell .delib-meter.placar .con-n{color:#B33A3A;font-family:var(--num-font);font-weight:600;}

/* B. Célula liberada por override — mantém o $ (débito não sumiu) e ganha um 2º
   marcador (ponto verde no canto oposto) que denuncia a liberação. Pode votar. */
.tahoe-shell .unit-cell.inadimplente.liberado{cursor:pointer;box-shadow:inset 0 0 0 1px rgba(200,136,26,0.7),inset 0 0 0 3px rgba(47,140,94,0.0);}
.tahoe-shell .unit-cell.inadimplente.liberado::before{content:"";position:absolute;top:4px;left:5px;width:7px;height:7px;border-radius:999px;background:#1F6B46;box-shadow:0 0 0 1.5px #fff;}
/* liberado com voto: a cor do voto entra, mas o anel âmbar + os 2 marcadores ficam */
.tahoe-shell .unit-cell.inadimplente.liberado.fav{background:rgba(47,140,94,0.14);}
.tahoe-shell .unit-cell.inadimplente.liberado.con{background:rgba(179,58,58,0.12);}
.tahoe-shell .unit-cell.inadimplente.liberado.abs{background:rgba(10,19,48,0.05);}

/* C. Afordância do override — cadeado no canto da célula inadimplente, revelado no
   hover. Abre o diálogo de liberação (app/shadcn). Não aparece na já liberada. */
.tahoe-shell .unit-cell .u-unlock{position:absolute;bottom:3px;right:4px;width:16px;height:16px;padding:0;border:none;border-radius:5px;background:rgba(255,255,255,0.85);color:#8A5D10;display:none;align-items:center;justify-content:center;cursor:pointer;box-shadow:inset 0 0 0 0.5px rgba(138,93,16,0.35);}
.tahoe-shell .unit-cell .u-unlock svg{width:11px;height:11px;display:block;}
.tahoe-shell .unit-cell.inadimplente:hover .u-unlock{display:inline-flex;}
.tahoe-shell .unit-cell.inadimplente:focus-within .u-unlock{display:inline-flex;}
.tahoe-shell .unit-cell.inadimplente.liberado .u-unlock{display:none;}
.tahoe-shell .unit-cell .u-unlock:hover{background:#fff;color:#6E4A0D;}
/* slot opcional de motivo (o diálogo em si é do app) */
.tahoe-shell .liberar-motivo{font-size:12.5px;color:#1A1A20;padding:9px 11px;border:none;border-radius:9px;background:#fff;box-shadow:inset 0 0 0 1px rgba(10,19,48,0.14);width:100%;}
.tahoe-shell .liberar-motivo:focus{outline:none;box-shadow:inset 0 0 0 1.5px #4F6FB5;}

/* D. Callout de "sem dado de inadimplência" — variante âmbar do .cfg-callout. */
.tahoe-shell .cfg-callout.warn{
  background:linear-gradient(135deg,rgba(200,136,26,0.16) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(200,136,26,0.40);
}
.tahoe-shell .cfg-callout.warn .icon{color:#8A5D10;}
.tahoe-shell .cfg-callout.warn .text b{color:#8A5D10;}
/* contraparte neutra do warn: "consultada · posição de DD/MM · N sem voto" */
.tahoe-shell .pres-erp-note{font-size:12px;color:#6C6C78;margin:6px 0 2px;}
.tahoe-shell .pres-erp-note b{font-family:var(--num-font);color:#0A1330;font-weight:600;}

/* E. Legenda com marcadores — extensão da .legend genérica. Cada item pode carregar
   um MARCADOR real (letra/símbolo), não só o quadradinho de cor. */
.tahoe-shell .legend.legend-marks{gap:12px 16px;align-items:center;}
.tahoe-shell .legend.legend-marks span{display:inline-flex;align-items:center;gap:6px;}
.tahoe-shell .legend .mk{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:5px;font-family:var(--num-font);font-size:10px;font-weight:700;box-shadow:inset 0 0 0 0.5px rgba(10,19,48,0.12);flex:none;position:relative;}
.tahoe-shell .legend .mk.presente{background:rgba(47,140,94,0.14);color:#1F6B46;}
.tahoe-shell .legend .mk.contra{background:rgba(179,58,58,0.12);color:#B33A3A;}
.tahoe-shell .legend .mk.procuracao{background:rgba(79,111,181,0.14);color:#1B2D70;}
.tahoe-shell .legend .mk.procuracao::after{content:"P";}
.tahoe-shell .legend .mk.ausente{background:rgba(10,19,48,0.05);color:#8C8C99;}
.tahoe-shell .legend .mk.inadimplente{background:rgba(200,136,26,0.14);color:#8A5D10;}
.tahoe-shell .legend .mk.inadimplente::after{content:"$";}
.tahoe-shell .legend .mk.liberado{background:rgba(200,136,26,0.14);}
.tahoe-shell .legend .mk.liberado::after{content:"$";color:#8A5D10;}
.tahoe-shell .legend .mk.liberado::before{content:"";position:absolute;top:1px;left:1px;width:5px;height:5px;border-radius:999px;background:#1F6B46;box-shadow:0 0 0 1px #fff;}

/* ─────────── Impressão digital (.fingerprint) ───────────
   Hash SHA-256 (64 hex) exibido para conferência humana, no relatório de
   auditoria do voto.

   Monoespaçada via --font-mono, que hoje resolve em ui-monospace: a JetBrains
   Mono não é servida pelo kit. Isso é aceitável AQUI porque hex é 0-9a-f — não
   tem letra O, nem l, nem I, então as ambiguidades clássicas de monoespaçada
   não aparecem neste alfabeto. Carregar webfont seria peso sem ganho.

   Os grupos de 8 são separados por espaço NORMAL: as únicas quebras possíveis
   são entre grupos, nunca dentro de um. Por isso não há word-break aqui.
   Referência: shell-assembleia-auditoria.html. */
.tahoe-shell .fingerprint{
  display:flex;align-items:flex-start;gap:10px;
  margin-top:14px;padding:12px 14px;border-radius:12px;
  background:rgba(10,19,48,0.03);
  box-shadow:inset 0 0 0 1px rgba(10,19,48,0.07);
}
.tahoe-shell .fingerprint .fp-label{
  flex:0 0 auto;align-self:center;
  font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;
  color:#6C6C78;white-space:nowrap;
}
.tahoe-shell .fingerprint .fp-hash{
  flex:1 1 auto;min-width:0;
  font-family:var(--font-mono);font-size:12.5px;line-height:1.7;
  color:#1A1A20;letter-spacing:.01em;word-spacing:.28em;
}
.tahoe-shell .fingerprint .fp-copy{
  flex:0 0 auto;align-self:center;
  width:26px;height:26px;padding:0;border:0;border-radius:8px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(10,19,48,0.05);color:#4B4B55;
  transition:background .15s ease,color .15s ease;
}
.tahoe-shell .fingerprint .fp-copy:hover{background:rgba(10,19,48,0.10);color:#1A1A20;}
.tahoe-shell .fingerprint .fp-copy svg{width:14px;height:14px;}

/* Hash final: o que vai ao carimbo do tempo e o que alguém vai comparar
   caractere a caractere. Ganha peso para não se confundir com os das linhas. */
.tahoe-shell .fingerprint[data-final="true"]{
  background:linear-gradient(135deg,rgba(126,186,220,0.14) 0%,rgba(255,255,255,0.6) 70%),#fff;
  box-shadow:inset 0 0 0 1px rgba(79,111,181,0.28);
  border-left:3px solid #2F4FA0;padding-left:11px;
}
.tahoe-shell .fingerprint[data-final="true"] .fp-label{color:#2F4FA0;}
.tahoe-shell .fingerprint[data-final="true"] .fp-hash{font-size:13.5px;font-weight:600;color:#0A1330;}

/* Confirmação de cópia — o handler põe data-copied por ~1,5s e remove sozinho.
   "fail" cobre clipboard rejeitado (permissão, doc sem foco), contexto
   inseguro sem navigator.clipboard, e compacta sem title: nunca fingir
   sucesso quando a cópia não aconteceu. */
.tahoe-shell .fingerprint[data-copied="true"] .fp-copy{background:rgba(47,140,94,0.16);color:#1F6B46;}
.tahoe-shell .fingerprint[data-copied="fail"] .fp-copy{background:rgba(179,58,58,0.16);color:#8C2828;}

/* Compacta: dentro das linhas da tabela. Mostra o primeiro grupo + reticência;
   o valor inteiro fica no title. 64 caracteres por linha afogariam a lista, que
   é a informação principal da tela. */
.tahoe-shell .fingerprint.compact{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:0;padding:0;background:none;box-shadow:none;
}
.tahoe-shell .fingerprint.compact .fp-label{display:none;}
.tahoe-shell .fingerprint.compact .fp-hash{
  font-size:11.5px;line-height:1.4;color:#6C6C78;cursor:help;
}
.tahoe-shell .fingerprint.compact .fp-copy{width:20px;height:20px;border-radius:6px;}
.tahoe-shell .fingerprint.compact .fp-copy svg{width:11px;height:11px;}

@media (max-width:900px){
  .tahoe-shell .fingerprint{flex-wrap:wrap;}
  .tahoe-shell .fingerprint .fp-label{flex:1 0 100%;align-self:flex-start;}
}

/* ─────────── Selo de integridade (.integridade) ───────────
   Veredito binário sobre a corrente de hashes: íntegra, ou quebrada a partir
   do evento N. É a informação mais importante do relatório de auditoria.

   Estado via ATRIBUTO (data-ok), espelhando .delib-meter[data-met] — é a
   convenção da casa para veredito, e mantém o seletor previsível.

   NÃO é .pill: pill é rótulo dentro de uma linha, não carrega peso de veredito.
   NÃO é .cfg-callout.warn: aquele já significa "atenção, faltou dado", e reusá-lo
   aqui poria dois alarmes de naturezas diferentes na mesma tela.

   O vermelho do estado quebrado é deliberado, e é a escolha OPOSTA à feita na
   cobrança (onde o jurídico ganhou grafite justamente para não competir com o
   vermelho de "acordo quebrado"). Aqui corrente quebrada significa registro
   adulterado: é alarme acionável, não estado terminal.
   Referência: shell-assembleia-auditoria.html. */
.tahoe-shell .integridade{
  display:flex;align-items:flex-start;gap:12px;
  margin-top:14px;padding:14px 16px;border-radius:12px;
}
.tahoe-shell .integridade .int-icon{flex:0 0 20px;width:20px;height:20px;margin-top:1px;}
.tahoe-shell .integridade .int-body{display:flex;flex-direction:column;gap:3px;min-width:0;}
.tahoe-shell .integridade .int-verdict{font-size:15px;font-weight:600;line-height:1.25;}
.tahoe-shell .integridade .int-detail{font-size:12.5px;line-height:1.5;overflow-wrap:anywhere;}
.tahoe-shell .integridade .int-detail .num{font-family:var(--num-font);font-weight:600;}

.tahoe-shell .integridade[data-ok="true"]{
  background:linear-gradient(135deg,rgba(47,140,94,0.12) 0%,rgba(255,255,255,0.6) 70%),#fff;
  border:1px solid rgba(47,140,94,0.26);
}
.tahoe-shell .integridade[data-ok="true"] .int-icon{color:#1F6B46;}
.tahoe-shell .integridade[data-ok="true"] .int-verdict{color:#1F6B46;}
.tahoe-shell .integridade[data-ok="true"] .int-detail{color:#4B4B55;}

.tahoe-shell .integridade[data-ok="false"]{
  background:linear-gradient(135deg,rgba(179,58,58,0.12) 0%,rgba(255,255,255,0.6) 70%),#fff;
  border:1px dashed rgba(179,58,58,0.30);
}
.tahoe-shell .integridade[data-ok="false"] .int-icon{color:#8C2828;}
.tahoe-shell .integridade[data-ok="false"] .int-verdict{color:#8C2828;font-weight:700;}
.tahoe-shell .integridade[data-ok="false"] .int-detail{color:#5C2020;}
.tahoe-shell .integridade[data-ok="false"] .int-detail a{
  color:#8C2828;font-weight:600;text-decoration:underline;
}
/* ─────────── Carimbo do tempo (.carimbo) ───────────
   O estado do âncora EXTERNO sobre a corrente de auditoria: existe carimbo
   RFC 3161 sobre o hash final, de quando, e ele confere?

   É o par do .integridade e NUNCA deve ser fundido com ele. São afirmações
   diferentes: o .integridade diz que os elos batem entre si; este diz que o
   estado final foi ancorado fora do alcance da Semog. Fundir deixaria um
   implicar algo sobre o outro.

   Três estilos de traço (dotted/solid/dashed) porque a distinção não pode
   depender de matiz: o relatório é impresso — e navegador descarta fundo e
   sombra ao imprimir, mas imprime borda — e daltonismo vermelho-verde atinge
   ~8% dos homens.

   O 'ausente' NÃO é vermelho de propósito: não é alarme, é estado conhecido e
   declarado. Gastar o vermelho ali o tiraria do 'divergente', que precisa dele
   inteiro.

   'ausente' é a regra de BASE, não um [data-stamp="ausente"] à parte: sem
   backend de carimbo, um campo de stamp nulo é o render mais provável do
   servidor, e qualquer data-stamp com valor desconhecido (typo, estado
   futuro não mapeado) precisa cair em "não carimbado" por padrão, não em
   estilo nenhum. Referência: shell-assembleia-auditoria.html. */
.tahoe-shell .carimbo{
  display:flex;align-items:flex-start;gap:12px;
  margin-top:14px;padding:14px 16px;border-radius:12px;
  background:rgba(10,19,48,0.04);
  border:1px dotted rgba(10,19,48,0.24);
}
.tahoe-shell .carimbo .cb-icon{flex:0 0 20px;width:20px;height:20px;margin-top:1px;color:#6C6C78;}
.tahoe-shell .carimbo .cb-body{display:flex;flex-direction:column;gap:3px;min-width:0;}
.tahoe-shell .carimbo .cb-verdict{font-size:15px;font-weight:600;line-height:1.25;color:#2E2E36;}
.tahoe-shell .carimbo .cb-detail{font-size:12.5px;line-height:1.5;overflow-wrap:anywhere;color:#4B4B55;}
.tahoe-shell .carimbo .cb-detail .num{font-family:var(--num-font);font-weight:600;}
.tahoe-shell .carimbo .cb-detail b{font-weight:600;}
/* botão de baixar o token — empurrado à direita; compõe sobre .ghost-btn.sm */
.tahoe-shell .carimbo .cb-token{flex:0 0 auto;align-self:center;margin-left:auto;}

/* Carimbado e conferindo. Mesmo verde e mesmo traço sólido do
   .integridade[data-ok="true"]: mesma semântica, mesma linguagem. */
.tahoe-shell .carimbo[data-stamp="ok"]{
  background:linear-gradient(135deg,rgba(47,140,94,0.12) 0%,rgba(255,255,255,0.6) 70%),#fff;
  border:1px solid rgba(47,140,94,0.26);
}
.tahoe-shell .carimbo[data-stamp="ok"] .cb-icon{color:#1F6B46;}
.tahoe-shell .carimbo[data-stamp="ok"] .cb-verdict{color:#1F6B46;}
.tahoe-shell .carimbo[data-stamp="ok"] .cb-detail{color:#4B4B55;}

/* Divergente — o hash carimbado não bate com o de agora. É o estado que
   justifica o recurso inteiro: expõe uma mudança no hash final depois do
   carimbo — evento editado sem refazer a corrente (adulteração) OU evento
   novo anexado depois do carimbo (uso fora de ordem, sem adulteração); as
   duas produzem o mesmo sinal, e .integridade não distingue nenhuma delas
   porque todos os elos seguem batendo entre si. Peso 700 no veredito, como
   no .integridade[data-ok="false"]. */
.tahoe-shell .carimbo[data-stamp="divergente"]{
  background:linear-gradient(135deg,rgba(179,58,58,0.12) 0%,rgba(255,255,255,0.6) 70%),#fff;
  border:1px dashed rgba(179,58,58,0.30);
}
.tahoe-shell .carimbo[data-stamp="divergente"] .cb-icon{color:#8C2828;}
.tahoe-shell .carimbo[data-stamp="divergente"] .cb-verdict{color:#8C2828;font-weight:700;}
.tahoe-shell .carimbo[data-stamp="divergente"] .cb-detail{color:#5C2020;}

/* ═══════════ Conciliação bancária · o par lançamento × despesa (v0.43.0) ═══════════
   Duas telas: shell-conciliacao.html (a esteira) e shell-conciliacao-regras.html
   (o que o sistema aprendeu). Este bloco serve as duas — o rastro de regra e o
   editor são literalmente as mesmas classes nos dois lugares, de propósito: quem
   aprende a ler o rastro na esteira já sabe ler a lista de regras.

   A UNIDADE NÃO É A LINHA DO EXTRATO, É O PAR. Duas fontes independentes (o
   extrato do banco e a despesa em aberto do ERP) que a máquina afirma serem a
   mesma coisa, e um analista precisa aceitar ou recusar essa afirmação milhares
   de vezes por dia. Por isso .conc-par embrulha DUAS peles do mesmo DOM:
     · .conc-fita  — a linha fechada de 34px, oito colunas fixas. É o que se vê
                     90% do tempo, e é onde o volume é resolvido.
     · .conc-corpo — o argumento inteiro, que desce SEM mexer na fita. As colunas
                     não reflowam, e é isso que permite continuar varrendo as
                     linhas de baixo com três pares abertos no meio.

   A ETAPA DECIDE A DENSIDADE. Os três grupos são etapas de trabalho, não filtros
   de uma lista: CASADO é varredura (nasce fechado, 47 × 34px = ~1.600px, duas
   rolagens), REVISAR é escolha e ÓRFÃO é formulário (nascem com .is-aberto).
   Forçar os três na mesma densidade favorece um e estraga os outros dois.

   POR QUE COLUNAS FIXAS: a leitura aqui é VERTICAL. O analista não lê a linha da
   esquerda pra direita — ele desce a coluna do valor comparando centavos, com a
   vírgula decimal empilhada no mesmo x. Coluna que dança de largura entre linhas
   destrói isso, e é o motivo de este componente não ser um flex de chips.

   A LISTRA DO `=`: .conc-eq imprime `=` em toda linha em que os valores batem.
   Quarenta e quatro sinais de igual formam uma listra cinza descendo a lista, e
   QUEM QUEBRA A LISTRA É O PROBLEMA — divergência de valor, que é o dado mais
   checado do dia, é achada por ruptura de padrão e não por leitura. É o oposto de
   imprimir "valor exato, 2 dias antes do vencimento" 47 vezes: a terceira frase
   idêntica já não é lida. O `=` só sai quando a máquina AFIRMA igualdade; empate e
   órfão recebem `—`, porque inventar um glifo pra "não sei" ensina o operador a
   ler símbolo sem confiar nele.

   CONFIANÇA NÃO É PORCENTAGEM. Ninguém decide diferente entre 84% e 91%; todo
   mundo decide diferente entre "CNPJ confere" e "fornecedor por similaridade".
   Por isso .conc-provas: um chip por critério que o motor testou, verde quando
   bateu, âmbar quando bateu fraco, RISCADO quando foi tentado e falhou. No órfão,
   o que o motor procurou e não achou vale tanto quanto o que achou — sem isso,
   "nenhuma despesa corresponde" é indistinguível de "o motor não rodou", e o
   operador reconfere tudo à mão, que é o trabalho que estas telas existem pra apagar.

   O TRILHO DE CONFIANÇA MORA NO GRUPO, NÃO NO ITEM. Quarenta e sete trilhos verdes
   viram parede e as poucas exceções deixam de saltar. Um trilho no card do grupo
   diz a mesma coisa uma vez e devolve o canal de cor do item às exceções.

   TINTA DE LINHA é o recurso mais caro da fita e só três estados a merecem:
   divergência, falha ao liquidar e confirmado (que RECUA, não acende). "Marcado
   pro lote" NÃO entra: num grupo de 47 quase tudo nasce marcado, e tingir 44
   linhas é tingir a lista inteira — zero informação. O tique sozinho carrega a
   seleção, e é por isso que ele fica numa SARJETA à esquerda: o trilho vertical
   ininterrupto responde "quais eu desmarquei entre os 47?" de relance. É também
   por isso que o .conc-corpo recua só até depois da sarjeta, e não até a coluna
   do valor: um corpo aberto não pode partir esse trilho.

   NENHUM BOTÃO NA FITA. Alvo de 26px numa linha de 34px é erro de clique, e aqui
   erro de clique vira liquidação no ERP. Só o tique e a seta. O caminho feliz é o
   teclado — daí .conc-k em cada ação e .conc-par.is-cursor pro cursor sintético
   do navegador de fila.

   COR: só Tier 3 e os hex já correntes do arquivo. Onde a superfície precisa de
   alpha (para assentar sobre --bg-soft do corpo aberto), o tom entra em CANAIS do
   mesmo hex do token — rgba(47,140,94,…) é --success, rgba(200,136,26,…) é
   --warning, rgba(37,99,235,…) é --info — exatamente como o resto deste arquivo
   já faz. Nenhuma cor nova entra pelo módulo.

   RADIUS: 6/10/14/18 e 999px (pills, tiques e barras), como o resto do arquivo.
   HAIRLINE: box-shadow inset, nunca border. A ÚNICA exceção é o tracejado de
   .conc-tentativas, .conc-cond-add e .conc-estado.vazio — box-shadow não faz
   tracejado, e tracejado já é o idioma da casa pra "aqui não tem nada" (.dropzone,
   .cfg-add-row, .doc-row.add-row, .carimbo).
   Comportamento (abrir/fechar, marcar em lote, atalhos, arrastar ordem de regra)
   fica em interactions.js. Aqui só a superfície. */

/* ─────────── A · Contexto do extrato e progresso ─────────── */

/* Qual conta está em cima da mesa. Fica ACIMA do progresso porque a primeira
   pergunta de quem chega numa esteira não é "quanto falta", é "de quem é isto" —
   o operador roda muitas contas em sequência e conferir a conta errada custa mais
   que qualquer minuto de rolagem. */
.tahoe-shell .conc-extrato{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:12px 16px;border-radius:14px;margin-bottom:12px;
  background:var(--bg);
  box-shadow:inset 0 0 0 1px var(--hairline-section);
}
.tahoe-shell .conc-extrato-id{display:flex;flex-direction:column;gap:2px;min-width:0;}
.tahoe-shell .conc-extrato-id b{font-size:13.5px;font-weight:600;color:#0A1330;}
.tahoe-shell .conc-extrato-id span{font-size:11.5px;color:var(--fg-muted);}
.tahoe-shell .conc-extrato-id .num{font-family:var(--num-font);font-size:12px;color:var(--fg-muted);font-weight:500;}
.tahoe-shell .conc-extrato-meta{
  margin-left:auto;display:flex;flex-wrap:wrap;gap:4px 18px;
  font-size:11.5px;color:var(--fg-subtle);text-align:right;
}
.tahoe-shell .conc-extrato-meta b{font-family:var(--num-font);font-weight:600;color:#4B4B55;}

/* Progresso e fechamento na MESMA faixa, e não em .mini-kpis separados: são a
   mesma pergunta em duas unidades (itens e dinheiro). Separá-los convidaria o
   operador a somar coisas que não somam. */
.tahoe-shell .conc-progresso{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px 26px;align-items:center;
  padding:14px 18px;border-radius:18px;margin-bottom:18px;
  background:var(--bg);
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
}
.tahoe-shell .conc-prog-barra{
  display:flex;height:10px;border-radius:999px;overflow:hidden;
  background:rgba(10,19,48,0.06);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
.tahoe-shell .conc-prog-seg{display:block;height:100%;}
/* Resolvido é o verde SÓLIDO — já saiu da fila. Casado é o mesmo verde em alpha
   baixa: está pronto pra sair, mas ainda não saiu. A diferença de saturação entre
   os dois é a barra inteira dizendo "quanto do trabalho já virou fato".

   O SEGMENTO E A BOLINHA DA LEGENDA SAEM DA MESMA DECLARAÇÃO, de propósito: a
   legenda é o que dá nome à cor da faixa, e uma legenda que pode discordar da
   faixa que explica é pior que legenda nenhuma. Declarado uma vez, não existe
   estado em que os dois divirjam — antes disto o HTML cravava os cinco hex
   inline, e cor copiada à mão é cor que envelhece sozinha. Mesmos quatro nomes
   nos dois lados (resolvido · casado · revisar · orfao); um <i> sem modificador
   não tem cor nenhuma, porque swatch cinza genérico mentiria sobre a faixa.

   v0.44.0 — entrou um TERCEIRO renderizador na mesma lista: .conc-cobertura > i,
   a barrinha de 6px que a tela raiz imprime em cada conta da carteira. São três
   zooms do mesmo desenho (carteira → conta → extrato) e por isso não podem ser
   três declarações: cor copiada é cor que envelhece sozinha, e aqui ela
   envelheceria em três lugares ao mesmo tempo. */
.tahoe-shell .conc-prog-seg.resolvido,
.tahoe-shell .conc-prog-legenda i.resolvido,
.tahoe-shell .conc-cobertura > i.resolvido{background:#1F6B46;}
.tahoe-shell .conc-prog-seg.casado,
.tahoe-shell .conc-prog-legenda i.casado,
.tahoe-shell .conc-cobertura > i.casado{background:rgba(47,140,94,0.38);}
.tahoe-shell .conc-prog-seg.revisar,
.tahoe-shell .conc-prog-legenda i.revisar,
.tahoe-shell .conc-cobertura > i.revisar{background:rgba(200,136,26,0.55);}
/* Órfão em grafite e não âmbar: não é confiança baixa, é AUSÊNCIA de afirmação —
   âmbar o poria no eixo de REVISAR, ao qual ele não pertence. Mesma decisão (e
   mesmo motivo) do .pill-slate em pills.css. */
.tahoe-shell .conc-prog-seg.orfao,
.tahoe-shell .conc-prog-legenda i.orfao,
.tahoe-shell .conc-cobertura > i.orfao{background:rgba(46,46,54,0.42);}
/* O quinto tom, e ele só existe uma escala acima: LENDO. Numa conta só, "o motor
   está rodando" é a tela inteira (.conc-estado.proc) e não um segmento; na
   carteira são 3 contas de 612 que precisam caber na mesma partição, senão a
   faixa não fecha em 612 — e faixa que não fecha vira dashboard. Sky, porque no
   módulo sky é "em andamento, ninguém errou nada" (.pill-sky, .conc-proc-barra).
   Alpha alta porque 3 de 612 são três pixels: em 0,38 o segmento sumiria. */
.tahoe-shell .conc-prog-seg.lendo,
.tahoe-shell .conc-prog-legenda i.lendo,
.tahoe-shell .conc-cobertura > i.lendo{background:rgba(126,186,220,0.85);}
.tahoe-shell .conc-prog-legenda{
  display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:9px;
  font-size:11.5px;color:var(--fg-muted);
}
.tahoe-shell .conc-prog-legenda span{display:inline-flex;align-items:center;gap:6px;}
.tahoe-shell .conc-prog-legenda i{width:9px;height:9px;border-radius:6px;flex:none;}
.tahoe-shell .conc-prog-legenda b{font-family:var(--num-font);font-weight:600;color:#0A1330;}

/* O FECHAMENTO. O operador só sabe que terminou quando estes números batem, então
   a tela mostra a conta como conta — três termos e um operador entre eles — e não
   como três KPIs soltos que ele teria que subtrair de cabeça. */
.tahoe-shell .conc-fechamento{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:10px 16px;border-radius:14px;
  background:var(--bg-soft);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
.tahoe-shell .conc-fech-item{display:flex;flex-direction:column;gap:2px;}
.tahoe-shell .conc-fech-item span{font-size:10.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-subtle);}
.tahoe-shell .conc-fech-item b{font-family:var(--num-font);font-size:16px;font-weight:600;color:#0A1330;font-variant-numeric:tabular-nums;}
.tahoe-shell .conc-fech-op{font-family:var(--num-font);font-size:16px;color:var(--fg-subtle);line-height:1;}
/* O resto é o único número da faixa que muda de cor, porque é o único que tem um
   valor CERTO. Enquanto não for zero, ele é âmbar; zerado vira verde e o botão de
   fechar a conta acende ao lado. */
.tahoe-shell .conc-fech-resto b{color:#8A5D10;}
.tahoe-shell .conc-fech-resto.zerado b{color:#1F6B46;}

/* ─────────── B · Os cinco estados da tela ─────────── */

/* Um componente, cinco modificadores. Não são cinco telas: são cinco respostas à
   mesma pergunta ("o que está acontecendo com este extrato"), e dar cinco
   anatomias diferentes obrigaria o operador a reaprender o layout a cada uma. */
.tahoe-shell .conc-estado{
  display:flex;align-items:flex-start;gap:14px;
  padding:22px 24px;border-radius:18px;margin-bottom:18px;
  background:var(--bg);
  box-shadow:inset 0 0 0 1px var(--hairline-section);
}
.tahoe-shell .conc-estado-ic{
  flex:0 0 36px;width:36px;height:36px;border-radius:14px;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(27,45,112,0.08);color:#1B2D70;
}
.tahoe-shell .conc-estado-ic svg{width:18px;height:18px;}
.tahoe-shell .conc-estado-t{font-size:15px;font-weight:600;color:#0A1330;line-height:1.3;}
.tahoe-shell .conc-estado-s{font-size:12.5px;line-height:1.5;color:#4B4B55;margin:5px 0 0;max-width:640px;}
.tahoe-shell .conc-estado-s b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
.tahoe-shell .conc-estado-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px;}

/* Vazio — tracejado, porque no kit tracejado significa "aqui não tem nada ainda"
   (.dropzone, .cfg-add-row). É o único estado em que o painel ocupa a tela toda:
   não há esteira embaixo pra competir com ele. */
.tahoe-shell .conc-estado.vazio{
  background:rgba(10,19,48,0.015);
  border:1px dashed var(--border-strong);
  box-shadow:none;
}
.tahoe-shell .conc-estado.proc{
  background:linear-gradient(135deg,rgba(173,213,235,0.20) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px rgba(126,186,220,0.35);
}
.tahoe-shell .conc-estado.erro{
  background:linear-gradient(135deg,rgba(200,136,26,0.14) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px var(--warning-border);
}
.tahoe-shell .conc-estado.erro .conc-estado-ic{background:rgba(200,136,26,0.16);color:#8A5D10;}
.tahoe-shell .conc-estado.erro .conc-estado-t{color:#8A5D10;}
.tahoe-shell .conc-estado.pronto{
  background:linear-gradient(135deg,rgba(47,140,94,0.12) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px var(--success-border);
}
.tahoe-shell .conc-estado.pronto .conc-estado-ic{background:rgba(47,140,94,0.16);color:#1F6B46;}
.tahoe-shell .conc-estado.pronto .conc-estado-t{color:#1F6B46;}
/* Falha ao gravar no ERP é erro do SISTEMA, não do operador — vermelho porque
   exige retentativa e porque o dinheiro ficou num limbo: a esteira diz confirmado
   e o ERP não recebeu. É o único vermelho de superfície do módulo. */
.tahoe-shell .conc-estado.falha{
  background:linear-gradient(135deg,rgba(179,58,58,0.12) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px var(--danger-border);
}
.tahoe-shell .conc-estado.falha .conc-estado-ic{background:rgba(179,58,58,0.14);color:#8C2828;}
.tahoe-shell .conc-estado.falha .conc-estado-t{color:#8C2828;}

/* As linhas cruas que falharam. Monoespaçada e literais: num erro de parse, o que
   resolve é ver o byte que o banco mandou, não uma paráfrase educada dele. */
.tahoe-shell .conc-estado-linhas{
  margin-top:12px;padding:10px 12px;border-radius:10px;max-height:180px;overflow:auto;
  background:rgba(10,19,48,0.035);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
  font-family:var(--font-mono);font-size:11.5px;line-height:1.7;color:#1A1A20;
  overflow-wrap:anywhere;
}
.tahoe-shell .conc-estado-linhas b{color:#8C2828;font-weight:600;}

.tahoe-shell .conc-proc-barra{
  height:8px;border-radius:999px;margin-top:12px;max-width:420px;overflow:hidden;
  background:rgba(10,19,48,0.07);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
.tahoe-shell .conc-proc-barra > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7EBADC,#1B2D70);}

/* ─────────── C · O grupo — a etapa de trabalho ─────────── */

/* Cada grupo é um .card próprio com padding:0. O trilho de 3px identifica a etapa
   UMA vez, no card — e não 47 vezes, nos itens. Ver o cabeçalho do módulo. */
.tahoe-shell .conc-grupo{position:relative;padding:0;overflow:hidden;margin-bottom:18px;}
.tahoe-shell .conc-grupo.casado{box-shadow:
  inset 3px 0 0 rgba(47,140,94,0.55),
  0 0 0 1px rgba(10,19,48,0.07),0 1px 2px rgba(10,19,48,0.04),0 4px 10px rgba(10,19,48,0.04);}
.tahoe-shell .conc-grupo.revisar{box-shadow:
  inset 3px 0 0 rgba(200,136,26,0.65),
  0 0 0 1px rgba(10,19,48,0.07),0 1px 2px rgba(10,19,48,0.04),0 4px 10px rgba(10,19,48,0.04);}
.tahoe-shell .conc-grupo.orfao{box-shadow:
  inset 3px 0 0 rgba(46,46,54,0.48),
  0 0 0 1px rgba(10,19,48,0.07),0 1px 2px rgba(10,19,48,0.04),0 4px 10px rgba(10,19,48,0.04);}

.tahoe-shell .conc-grupo-h{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:15px 18px 4px;
}
.tahoe-shell .conc-grupo-h h3{
  margin:0;font-size:14px;font-weight:600;color:#0A1330;
  display:inline-flex;align-items:center;gap:8px;
}
/* No cabeçalho do grupo o .conc-acts não é o rodapé de ações de um par aberto: é
   uma barra de ferramentas na mesma linha do título. Some o fio de cima e o
   respiro que separam ações de conteúdo lá embaixo — aqui não há conteúdo acima
   de que separar, e o fio cortaria o cabeçalho ao meio. O reset mora aqui e não
   em três `style=` iguais no HTML: o terceiro copiar-e-colar é onde um deles vai
   ficar para trás. */
.tahoe-shell .conc-grupo-h .conc-acts{
  margin-left:auto;margin-top:0;padding-top:0;border-top:none;
}
/* A nota diz o que se FAZ ali e o que o grupo NÃO aceita. É o que substitui a
   pill "Casado" repetida em 47 linhas: o cabeçalho já disse, e a coluna de selos
   fica livre pras 3 exceções que dizem alguma coisa. */
.tahoe-shell .conc-grupo-nota{
  padding:0 18px 10px;margin:0;
  font-size:11.5px;line-height:1.45;color:var(--fg-muted);max-width:760px;
}
.tahoe-shell .conc-grupo-nota b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
/* A legenda do rodapé do grupo ("Mostrando 11 dos 47 pares · R$ 32.554,27 dos
   R$ 96.284,50") é feita SÓ de números em negrito, e são os números que dizem o
   quanto do grupo está na tela. Escopado em .conc-grupo de propósito: .tbl-cap é
   global e serve os 55 shells, onde o mesmo <b> carrega palavra ("Espaço",
   "retirado") — Saira em palavra é o defeito que este bloco existe pra não
   cometer. Fora do grupo, o numeral se resolve com <span class="num">. */
.tahoe-shell .conc-grupo .tbl-cap b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
/* v0.44.0 — E o .tbl-cap SOLTO, sem grupo em volta pra escopá-lo: a linha de
   cobertura da carteira e as legendas de teclado. O `>` é o que torna a regra
   segura, e não a boa vontade: nos 55 shells do kit TODO .tbl-cap vive dentro de
   um .card — só três são filhos diretos do .content, os dois da carteira e a
   legenda de teclado da esteira, e nenhum deles põe palavra em <b>. Põem número
   e TECLA, e tecla em Saira é o que a .conc-k já faz na mesma tela. Sem isto,
   dois parágrafos visualmente idênticos e a 300px um do outro renderizam em
   fontes diferentes, e o <span class="num"> em cada numeral de um parágrafo
   inteiro é o remendo que a próxima frase esquece de repetir. */
.tahoe-shell .content > .tbl-cap b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}

/* ─────────── D · O par fechado — a fita ─────────── */

/* A grade, declarada UMA vez e compartilhada com o cabeçalho, pra os rótulos
   caírem exatamente no x das células. Larguras: tique 26 · data 46 · valor 104 ·
   descrição 1fr · junta 124 · despesa 264 · selos 158 · seta 24. Com gap 10 e
   padding 16, num .content de 1440px sobram ~460px pra descrição bruta — cerca de
   70 caracteres na monoespaçada de 11,5px. "PIX ENVIADO 12/08 JOAO DA SILVA ME
   12.345.678/0001-90" tem 52. Só o código de barras de boleto estoura, e é o único
   caso em que o elide entra. */
.tahoe-shell .conc-fita,
.tahoe-shell .conc-cabeca{
  display:grid;
  grid-template-columns:26px 46px 104px minmax(0,1fr) 124px 264px 158px 24px;
  align-items:center;gap:0 10px;padding:0 16px;
}
/* 26px pagos uma vez pra o operador aprender os oito x. Sem cabeçalho, uma fita de
   oito colunas é decifração no primeiro dia. */
.tahoe-shell .conc-cabeca{
  min-height:26px;
  font-size:10.5px;font-weight:500;letter-spacing:.02em;color:var(--fg-muted);
  border-bottom:0.5px solid var(--hairline-section);
}
.tahoe-shell .conc-cabeca .r{text-align:right;}

/* O separador mora no PAR e não na fita: com o par aberto, a linha precisa fechar
   embaixo do corpo, senão o corpo parece pertencer ao par seguinte. */
.tahoe-shell .conc-par{border-bottom:0.5px solid var(--hairline-row);}
.tahoe-shell .conc-par:last-of-type{border-bottom:none;}

.tahoe-shell .conc-fita{min-height:34px;cursor:pointer;transition:background 100ms ease;}
/* Mesmo azul de hover da .tbl — a fita é uma lista, e listas do kit reagem assim.
   Não inventar um segundo idioma de hover. */
.tahoe-shell .conc-fita:hover{background:rgba(173,213,235,0.10);}
.tahoe-shell .conc-fita:focus-visible{outline:none;box-shadow:inset 0 0 0 1.5px rgba(79,111,181,0.55);}
/* Cursor sintético do navegador de fila (J/K). O caminho feliz não passa pelo
   mouse, então o cursor de teclado precisa ser tão visível quanto o foco real. */
.tahoe-shell .conc-par.is-cursor > .conc-fita{
  background:rgba(173,213,235,0.16);
  box-shadow:inset 0 0 0 1.5px rgba(79,111,181,0.55);
}

/* Tique. Mesma anatomia do .opt .box dos filtros, em escala de linha — marcar em
   lote e filtrar têm que ser o mesmo gesto visual. .travado NÃO é `disabled`: o
   operador precisa entender POR QUE não pode marcar, daí o traço e o title. E não
   some: sumir com a caixa quebraria o trilho vertical, que é como se responde
   "quais eu desmarquei entre os 47?". */
.tahoe-shell .conc-tick{
  display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;cursor:pointer;
}
.tahoe-shell .conc-tick input{position:absolute;opacity:0;pointer-events:none;}
.tahoe-shell .conc-tick .box{
  width:15px;height:15px;border-radius:6px;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--bg);
  box-shadow:inset 0 0 0 1.25px rgba(10,19,48,0.20);
  transition:background 100ms ease, box-shadow 100ms ease;
}
.tahoe-shell .conc-tick .box svg{width:10px;height:10px;color:var(--fg-inverse);opacity:0;}
.tahoe-shell .conc-tick input:checked + .box{background:#1B2D70;box-shadow:inset 0 0 0 1.25px #1B2D70;}
.tahoe-shell .conc-tick input:checked + .box svg{opacity:1;}
.tahoe-shell .conc-tick input:focus-visible + .box{box-shadow:inset 0 0 0 1.5px #4F6FB5, 0 0 0 3px rgba(173,213,235,0.55);}
.tahoe-shell .conc-tick.travado{cursor:help;}
.tahoe-shell .conc-tick.travado::after{content:"";width:9px;height:1.5px;border-radius:2px;background:var(--border-strong);}

/* A data NÃO é o texto mais escuro da linha, de propósito: é contexto, o operador
   já sabe o período. Um degrau abaixo do valor sem sumir. */
.tahoe-shell .conc-data{font-family:var(--num-font);font-size:12.5px;font-weight:500;color:#4B4B55;}

/* O valor — a âncora. Único texto em #0A1330 com peso 600 na linha inteira.
   Alinhado à direita com tabular-nums: a vírgula decimal cai no mesmo x em todas
   as linhas, e comparar centavos vira reconhecimento de forma, não leitura.
   O .num do kit não é usado aqui: 47 linhas × 4 spans só pra dizer "Saira" seria
   ruído no DOM. A célula já sabe — mesmo caminho de .kpi .val e .due. */
.tahoe-shell .conc-valor{
  font-family:var(--num-font);font-size:14.5px;font-weight:600;color:#0A1330;
  text-align:right;letter-spacing:-0.01em;font-variant-numeric:tabular-nums;
}

/* A descrição bruta do banco. NUNCA atrás de "ver detalhes" — é a evidência com
   que o operador julga. Monoespaçada porque isto é texto de MÁQUINA e não prosa:
   em 12.345.678/0001-90 o 0 e o O são o mesmo desenho numa proporcional, e quatro
   "TAR PACOTE SERVICOS" na mesma lista precisam empilhar caractere a caractere pra
   o repetido virar visível. --font-mono resolve em ui-monospace, como no
   .fingerprint — sem webfont nova.

   NÚCLEO × RUÍDO faz três trabalhos: o olho pousa no trecho que casou sem perder a
   string crua de vista; no elide o núcleo NUNCA encolhe, então o código de barras
   de 44 dígitos pode ser cortado sem esconder informação de julgamento; e é
   literalmente a condição que .conc-sugerida vai propor no painel de regra — o
   operador lê o mesmo realce nos dois lugares e não reaprende nada.

   Quando o motor NÃO identificou trecho estável (banco novo, texto sujo), envolva
   a string inteira em .conc-ruido: a linha renderiza cinza uniforme, e esse cinza
   é o sinal honesto de "não reconheci nada aqui". Nunca marque um núcleo falso. */
.tahoe-shell .conc-desc{
  display:flex;min-width:0;
  font-family:var(--font-mono);font-size:11.5px;line-height:1.2;white-space:nowrap;
}
.tahoe-shell .conc-nucleo{flex:0 0 auto;color:#1A1A20;font-weight:600;}
.tahoe-shell .conc-ruido{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;
  color:var(--fg-subtle);font-weight:400;
}

/* A JUNTA. Duas micro-células em posições fixas — 76px pro veredito de valor,
   o resto pro delta de dias. O `=` sai sempre no mesmo x, e é isso que faz a
   listra. Ver o cabeçalho do módulo.

   O valor da despesa não é impresso na fita: em 44 das 47 linhas ele é igual ao
   do extrato, e repeti-lo dobraria a carga numérica pra não dizer nada. O que
   falta é o delta, e é o delta que a junta imprime.

   Convenção de sinal: negativo = adiantado (bom), positivo = atrasado ou pago a
   mais (ruim). Os dois "ruins" ficam do mesmo lado do zero. */
.tahoe-shell .conc-junta{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:8px;}
.tahoe-shell .conc-eq{
  font-family:var(--num-font);font-size:12px;font-weight:600;color:var(--fg-subtle);
  justify-self:start;
}
/* Sem o que comparar (órfão, empate). Palavra nenhuma e glifo nenhum: um traço,
   porque a máquina não está afirmando coisa alguma nesta linha. */
.tahoe-shell .conc-eq.nulo{color:var(--border-strong);font-weight:400;}
/* A ruptura da listra. O chip existe porque cor sozinha, num texto de 11,5px, não
   sobrevive a um scan periférico — a SUPERFÍCIE âmbar sim. Reusa o par
   --warning-soft/--warning-border das pills; o texto vai em #8A5D10 literal porque
   --warning (#C8881A) é claro demais pra 11px, mesma decisão de .caso-isento.warn. */
.tahoe-shell .conc-eq.dif{
  color:#8A5D10;padding:1px 7px;border-radius:6px;
  background:var(--warning-soft);
  box-shadow:inset 0 0 0 0.5px var(--warning-border);
}
.tahoe-shell .conc-dias{font-family:var(--num-font);font-size:11px;font-weight:500;color:var(--fg-subtle);}
.tahoe-shell .conc-dias.alerta{color:#8A5D10;}

/* A despesa do ERP. Fornecedor no peso do corpo, vencimento e conta um degrau
   abaixo, na mesma linha. Só o fornecedor não elide — é o que identifica. O
   plano de contas entra pelo CÓDIGO: o cabeçalho da coluna diz o que ele é, e o
   nome por extenso espera no corpo. */
.tahoe-shell .conc-erp{display:flex;align-items:baseline;gap:6px;min-width:0;}
.tahoe-shell .conc-forn{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:12.5px;font-weight:500;color:#1A1A20;
}
.tahoe-shell .conc-meta{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:var(--num-font);font-size:11px;font-weight:500;color:var(--fg-muted);
}
.tahoe-shell .conc-meta.alerta{font-family:var(--ui-font);color:#8A5D10;}
/* Célula vazia é INFORMAÇÃO — não há contraparte. Dizemos isso em texto e não com
   um traço decorativo, porque órfão é a exceção mais cara da tela. */
.tahoe-shell .conc-sem{font-size:12px;font-style:italic;color:var(--fg-subtle);}

/* Canal de EXCEÇÃO, não de rótulo. Dentro do grupo CASADO o selo "Casado" não é
   impresso: o cabeçalho do grupo já o disse 47 vezes, e 47 pills verdes iguais são
   ruído que enterra as 3 que dizem algo. Resultado: 44 células vazias e 3
   preenchidas — as 3 se acham sozinhas. Nunca mais de dois selos; nowrap, sem
   quebrar a altura da fita. */
.tahoe-shell .conc-selos{display:flex;align-items:center;gap:5px;min-width:0;overflow:hidden;}
.tahoe-shell .conc-selos .pill{font-size:10.5px;padding:1px 8px;white-space:nowrap;}

.tahoe-shell .conc-abrir{
  width:22px;height:22px;padding:0;border:none;border-radius:6px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  background:transparent;color:var(--border-strong);
  transition:background 100ms ease, color 100ms ease;
}
.tahoe-shell .conc-abrir svg{width:14px;height:14px;transition:transform 160ms var(--ease-out);}
.tahoe-shell .conc-abrir:hover{background:rgba(10,19,48,0.06);color:#1A1A20;}
.tahoe-shell .conc-par.is-aberto .conc-abrir{color:#1B2D70;}
.tahoe-shell .conc-par.is-aberto .conc-abrir svg{transform:rotate(180deg);}

/* Os três estados que merecem tinta de linha — e nenhum deles é "selecionado".
   Vem de .onb-item.done/.late, que já é a linguagem da casa pra estado em lista. */
.tahoe-shell .conc-par.is-diverg > .conc-fita{background:rgba(200,136,26,0.07);}
.tahoe-shell .conc-par.is-diverg > .conc-fita:hover{background:rgba(200,136,26,0.12);}
.tahoe-shell .conc-par.is-falha > .conc-fita{background:rgba(179,58,58,0.07);}
.tahoe-shell .conc-par.is-falha > .conc-fita:hover{background:rgba(179,58,58,0.11);}
/* Confirmado RECUA. Já resolvido não compete por atenção com o que falta. */
.tahoe-shell .conc-par.is-confirmado .conc-valor{color:#4B4B55;font-weight:500;}
.tahoe-shell .conc-par.is-confirmado .conc-nucleo{color:#4B4B55;font-weight:500;}

/* NATUREZA DO PAR — eixo diferente do estado de trabalho, e por isso NENHUM
   destes três tinge a linha: tinta de linha é dos três estados acima e nada mais
   (ver o cabeçalho do módulo). O que eles governam é a célula da despesa e a de
   selos, porque nos três a máquina não afirmou "este lançamento = esta despesa":
   ela somou (agrupado), apontou uma conta (transferência) ou decidiu sozinha,
   antes de existir despesa pra casar (regra).

   AGRUPADO · a meta "soma de N" é a única coisa da fita fechada que diz que uma
   TED liquidou três despesas — o fornecedor é um só e o valor é um só. Então ela
   não elide e não some no estreito, ao contrário da meta comum (vencimento e
   conta, que o corpo aberto repete).

   TRANSFERÊNCIA · a célula não tem fornecedor, tem CONTA. Conta é número, e
   número é Saira em toda a casa; deixá-la em Inter a faz ler como mais um nome de
   fornecedor, que é exatamente o que uma transferência não é.

   REGRA · o chip do rastro divide 158px com o selo, e é o chip que não pode ser
   cortado: "Tarifa bancária" se recupera olhando a coluna da despesa, o número da
   regra não se recupera de lugar nenhum. Regra invisível em conciliação bancária
   é dinheiro mudando de lugar sem rastro. */
.tahoe-shell .conc-par.is-agrupado .conc-meta{flex:none;}
.tahoe-shell .conc-par.is-transf .conc-forn{font-family:var(--num-font);}
.tahoe-shell .conc-par.is-regra .conc-selos .conc-regra-chip{flex:none;}
.tahoe-shell .conc-par.is-regra .conc-selos .pill{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}

/* ─────────── E · O par aberto — o corpo do argumento ─────────── */

/* Recuado 52px — até depois da sarjeta do tique, e NÃO até a coluna do valor. O
   recuo diz "isto pertence àquela linha" sem gastar linha de conexão, e para antes
   do trilho de tiques justamente pra não parti-lo. Superfície soft porque as fitas
   são brancas: o corpo precisa ler como camada de dentro, não como o próximo par. */
.tahoe-shell .conc-corpo{display:none;}
.tahoe-shell .conc-par.is-aberto > .conc-corpo{
  display:block;
  margin:4px 16px 14px 52px;
  padding:14px 16px;border-radius:14px;
  background:var(--bg-soft);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}

/* O motivo em UMA frase. Vale uma vez aberto, não 47 vezes fechado — 47 frases
   idênticas param de ser lidas na terceira. */
.tahoe-shell .conc-frase{margin:0 0 10px;font-size:12.5px;line-height:1.5;color:#4B4B55;}
.tahoe-shell .conc-frase b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}

/* As provas SÃO o medidor de confiança. Ver o cabeçalho do módulo. Chip sem
   modificador é CONTEXTO (plano de contas), não critério. */
.tahoe-shell .conc-provas{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px;}
.tahoe-shell .conc-prova{
  font-size:10.5px;line-height:1.55;padding:1px 7px;border-radius:6px;white-space:nowrap;
  background:rgba(10,19,48,0.05);color:#4B4B55;
}
.tahoe-shell .conc-prova.ok{background:rgba(47,140,94,0.13);color:#1F6B46;}
.tahoe-shell .conc-prova.fraca{background:var(--warning-soft);color:#8A5D10;}
/* Critério TENTADO e falho — riscado, não ausente. */
.tahoe-shell .conc-prova.nula{
  background:rgba(46,46,54,0.07);color:var(--fg-muted);
  text-decoration:line-through;text-decoration-color:rgba(46,46,54,0.40);
}

/* Os dois painéis. Larguras IGUAIS e o mesmo .kv nos dois (96px de rótulo), então
   Valor cai no mesmo y e no mesmo x-relativo dos dois lados: quando os dois números
   se alinham, o par lê como equação sem gastar um eixo central de 176px.

   ALTURAS INDEPENDENTES (align-items:start): o padrão do grid é esticar os dois
   painéis até a altura do mais alto, e quando o lado direito cresce — dois
   candidatos empatados, três despesas agrupadas, a lista de tentativas do órfão —
   o lado do extrato ganha centímetros de cinza vazio embaixo. Vazio nesta tela
   não é neutro: sugere que falta dado no extrato, e o extrato é o FATO. Cada
   painel termina onde o conteúdo dele termina; o alinhamento que importa é o de
   cima, onde os rótulos do .kv se encontram. */
.tahoe-shell .conc-lados{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;
  align-items:start;
}
.tahoe-shell .conc-lado{
  padding:12px 14px;border-radius:10px;min-width:0;
  background:var(--bg);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
/* O extrato é FATO: superfície mais densa, ancorada. O ERP é o que a máquina
   propôs — a diferença de peso entre as duas superfícies diz, antes de qualquer
   texto, o que é dado e o que é palpite. */
.tahoe-shell .conc-lado.fato{background:rgba(10,19,48,0.04);box-shadow:inset 0 0 0 0.5px var(--hairline-section);}
.tahoe-shell .conc-lado-h{
  margin:0 0 10px;display:flex;align-items:center;gap:7px;
  font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-subtle);
}
.tahoe-shell .conc-lado-h svg{width:13px;height:13px;}
.tahoe-shell .conc-lado .kv{grid-template-columns:96px minmax(0,1fr);gap:6px 10px;font-size:12.5px;}
.tahoe-shell .conc-lado .kv dt{font-size:11px;}
.tahoe-shell .conc-lado .kv dd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}

/* A descrição bruta INTEIRA, agora podendo quebrar. É o compromisso do elide da
   fita: o que lá pode ser cortado, aqui não pode. */
.tahoe-shell .conc-bruta{
  margin:0;padding:8px 10px;border-radius:6px;
  background:var(--bg);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
  font-family:var(--font-mono);font-size:12px;line-height:1.6;color:#1A1A20;
  overflow-wrap:anywhere;
}
.tahoe-shell .conc-bruta .conc-nucleo,
.tahoe-shell .conc-bruta .conc-ruido{white-space:normal;overflow:visible;flex:none;}

/* O razão da divergência. Um RAZÃO de três linhas, não uma frase: o analista vai
   conferir a subtração, então damos a subtração com os números empilhados e
   alinhados à direita. Se ele tiver que calcular multa de cabeça, a tela falhou. */
.tahoe-shell .conc-conta{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 16px;margin:10px 0 0;
}
.tahoe-shell .conc-conta dt{font-size:12px;color:var(--fg-muted);}
.tahoe-shell .conc-conta dd{
  margin:0;text-align:right;
  font-family:var(--num-font);font-size:13px;font-weight:500;color:#1A1A20;
  font-variant-numeric:tabular-nums;
}
.tahoe-shell .conc-conta .conc-conta-t{
  padding-top:6px;margin-top:2px;
  border-top:0.5px solid var(--hairline-section);
  color:#8A5D10;font-weight:600;
}
.tahoe-shell .conc-conta dd.conc-conta-t{font-size:14px;}

/* Pagamento agrupado: as N despesas penduram sob o painel do ERP, com uma chave à
   esquerda que diz CONJUNTO e não ALTERNATIVAS — é exatamente essa a diferença de
   leitura entre isto e .conc-cands, onde os candidatos competem. Se a soma não
   fechar, o par recebe .is-diverg junto e a junta acende: mesmo mecanismo, sem
   regra nova. */
.tahoe-shell .conc-itens{margin-top:10px;padding-left:12px;position:relative;}
.tahoe-shell .conc-itens::before{
  content:"";position:absolute;left:0;top:4px;bottom:4px;width:2px;border-radius:2px;
  background:rgba(79,111,181,0.28);
}
.tahoe-shell .conc-item{
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;
  align-items:baseline;gap:10px;padding:6px 0;
  border-bottom:0.5px solid var(--hairline-row);
}
.tahoe-shell .conc-item:last-child{border-bottom:none;}
.tahoe-shell .conc-item span:first-child{font-size:12px;color:#1A1A20;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tahoe-shell .conc-item .num{font-family:var(--num-font);font-size:12.5px;font-weight:500;color:#0A1330;}

/* Candidatos empatados, EMPILHADOS e não lado a lado. Colunas irmãs leem melhor
   com dois candidatos e quebram com três ou quatro — e três acontece. Empilhado, o
   rótulo do .kv fica no mesmo x em todos, então o diff continua se lendo POR COLUNA
   mesmo com N candidatos. Teclas 1/2/3 escolhem sem tirar a mão do teclado. */
.tahoe-shell .conc-cands{display:flex;flex-direction:column;gap:8px;margin-top:2px;}
.tahoe-shell .conc-cand{
  display:grid;grid-template-columns:20px minmax(0,1fr) auto;
  align-items:start;gap:10px;
  padding:11px 13px;border-radius:10px;cursor:pointer;
  background:var(--bg);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
  transition:box-shadow 120ms ease, background 120ms ease;
}
.tahoe-shell .conc-cand:hover{box-shadow:inset 0 0 0 1px rgba(79,111,181,0.35);}
.tahoe-shell .conc-cand input{position:absolute;opacity:0;pointer-events:none;}
.tahoe-shell .conc-cand:has(input:checked){
  background:linear-gradient(135deg,rgba(173,213,235,0.22),rgba(255,255,255,0.6));
  box-shadow:inset 0 0 0 1.5px rgba(27,45,112,0.30);
}
.tahoe-shell .conc-cand-k{
  width:20px;height:20px;border-radius:6px;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--num-font);font-size:11px;font-weight:600;
  color:var(--fg-muted);background:rgba(10,19,48,0.06);
}
.tahoe-shell .conc-cand:has(input:checked) .conc-cand-k{background:#1B2D70;color:var(--fg-inverse);}
.tahoe-shell .conc-cand-b{min-width:0;}
.tahoe-shell .conc-cand-b > b{display:block;font-size:13px;font-weight:600;color:#0A1330;margin-bottom:7px;}
.tahoe-shell .conc-cand-b .kv{grid-template-columns:96px minmax(0,1fr);gap:5px 10px;font-size:12px;}
.tahoe-shell .conc-cand-b .kv dt{font-size:11px;}

/* O DIFF é o produto inteiro do caso empatado — e o mesmo par de classes serve à
   divergência de valor, onde os dois números que não batem acendem juntos e com o
   mesmo peso (nenhum dos dois está errado; eles apenas não são o mesmo número).
   Campo igual APAGA, campo que decide ACENDE: o operador lê 3 linhas em vez de 12,
   e a linha que ele lê é exatamente a que decide. Sem isto, comparar duas despesas
   quase idênticas é o erro mais caro da esteira — casar com a errada troca o rateio
   entre blocos e ninguém percebe até o balancete. */
.tahoe-shell .conc-igual{color:var(--fg-subtle);font-weight:400;}
.tahoe-shell .conc-igual .num{color:inherit;font-weight:400;}
/* A célula inteira em Saira, e não só o .num de dentro: o que difere aqui é quase
   sempre uma competência, um vencimento ou um valor — "08/2026" contra "07/2026"
   é O dado que decide qual despesa casar, e sair em Inter ao lado de um valor em
   Saira faz o olho tratar os dois como coisas de naturezas diferentes justamente
   na linha em que ele precisa compará-los. Mesma decisão de .conc-conta dd e
   .conc-meta, que já carregam texto misto ("20/08 · soma de 3") em Saira. */
.tahoe-shell .conc-difere{
  padding:1px 6px;margin:-1px -6px;border-radius:6px;font-weight:600;
  font-family:var(--num-font);
  background:var(--warning-soft);color:#8A5D10;
  box-shadow:inset 0 0 0 0.5px var(--warning-border);
}
.tahoe-shell .conc-difere .num{color:inherit;font-weight:600;}

/* O que o motor PROCUROU. Tracejado, como .cfg-add-row e .doc-row.add-row — no kit
   tracejado significa "aqui não tem nada". Listar as tentativas converte um
   resultado nulo em ARGUMENTO. Ver o cabeçalho do módulo. */
.tahoe-shell .conc-tentativas{
  margin:0;padding:12px 14px;list-style:none;border-radius:10px;min-width:0;
  background:rgba(10,19,48,0.02);
  border:1px dashed rgba(10,19,48,0.16);
}
.tahoe-shell .conc-tentativas li{
  position:relative;padding:5px 0 5px 16px;
  font-size:12px;line-height:1.45;color:#4B4B55;
  border-top:0.5px solid var(--hairline-row);
}
.tahoe-shell .conc-tentativas li:first-child{border-top:none;}
.tahoe-shell .conc-tentativas li::before{
  content:"";position:absolute;left:2px;top:11px;width:5px;height:5px;border-radius:999px;
  background:rgba(10,19,48,0.20);
}
.tahoe-shell .conc-tentativas .num{font-family:var(--num-font);font-size:12.5px;font-weight:600;color:#1A1A20;}

/* Transferência entre contas — a outra ponta. Não é despesa e nunca deve ser
   apresentada como uma: o painel do ERP dá lugar a esta faixa, que mostra a conta
   de destino e diz se a contraparte foi ACHADA no extrato dela ou apenas INFERIDA.
   Quando é inferida, o texto tem que dizer que confirmar TAMBÉM cria a regra —
   confirmar em silêncio uma inferência é como se perde a confiança numa tela de
   dinheiro. */
.tahoe-shell .conc-transf{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:11px 14px;border-radius:10px;
  background:linear-gradient(135deg,rgba(173,213,235,0.22) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px rgba(126,186,220,0.42);
  font-size:12.5px;line-height:1.45;color:#4B4B55;
}
.tahoe-shell .conc-transf > svg{width:16px;height:16px;flex:none;color:#2F4FA0;}
/* O <b> desta faixa é sempre o dado duro da contraparte — a conta de destino e a
   contagem de transferências anteriores. Saira como em .conc-frase b, .conc-nota b
   e .conc-lote-txt b: o negrito no meio da prosa do módulo é o numeral, e ele não
   muda de fonte só por estar dentro desta faixa. */
.tahoe-shell .conc-transf b{font-family:var(--num-font);color:#0A1330;font-weight:600;}
.tahoe-shell .conc-transf .num{font-family:var(--num-font);font-weight:600;color:#0A1330;}

/* Ações. Nenhuma delas existe na fita fechada — ver o cabeçalho do módulo. */
.tahoe-shell .conc-acts{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin-top:13px;padding-top:11px;
  border-top:0.5px solid var(--hairline-row);
}
.tahoe-shell .conc-corpo > .conc-acts:first-child{margin-top:0;padding-top:0;border-top:none;}
.tahoe-shell .conc-nota{
  flex:1 1 240px;margin-right:auto;min-width:0;
  font-size:11.5px;line-height:1.4;color:var(--fg-muted);
}
.tahoe-shell .conc-nota b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
.tahoe-shell .conc-acts svg{width:13px;height:13px;}

.tahoe-shell .conc-k{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:15px;height:15px;padding:0 4px;margin-left:7px;border-radius:6px;
  font-family:var(--num-font);font-size:10px;font-weight:600;line-height:1;
  color:var(--fg-muted);background:rgba(10,19,48,0.07);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
.tahoe-shell .tb-primary .conc-k{
  color:var(--fg-inverse);background:rgba(255,255,255,0.20);
  box-shadow:inset 0 0 0 0.5px rgba(255,255,255,0.26);
}

/* ─────────── F · Rastro de regra (as duas telas) ─────────── */

/* O rastro na fita FECHADA. Uma pill genérica "Resolvido por regra" diria que
   houve regra sem dizer QUAL, e regra anônima em conciliação bancária é dinheiro
   mudando de lugar sem rastro. O chip carrega o número e a condição curta, e é um
   <a> de verdade pra Tela 2 — não um ícone com tooltip. Tom sky (calmo) porque
   resolvido por regra é um bom estado; o alarme fica pro .conc-regra-erro. */
.tahoe-shell .conc-regra-chip{
  display:inline-flex;align-items:center;gap:4px;
  max-width:100%;padding:2px 8px;border-radius:999px;
  font-size:10.5px;font-weight:600;line-height:1.4;
  color:#1B2D70;text-decoration:none;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
  background:var(--link-soft);
  box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.28);
}
.tahoe-shell .conc-regra-chip svg{width:11px;height:11px;flex:0 0 11px;}
.tahoe-shell .conc-regra-chip:hover{background:rgba(126,186,220,0.42);}

/* A faixa no corpo aberto: condição por extenso, escopo, ação e o uso. O azul aqui
   é --info em canais (37,99,235) porque a faixa assenta sobre o --bg-soft do corpo
   e precisa de alpha; --info-soft opaco sumiria contra ele. */
.tahoe-shell .conc-regra{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:9px 12px;border-radius:10px;margin-bottom:12px;
  background:rgba(37,99,235,0.06);
  box-shadow:inset 0 0 0 0.5px rgba(37,99,235,0.22);
  font-size:12px;line-height:1.45;color:#4B4B55;
}
.tahoe-shell .conc-regra > svg{width:14px;height:14px;flex:none;color:var(--info);}
.tahoe-shell .conc-regra > a{
  flex:none;font-family:var(--num-font);font-size:12.5px;font-weight:600;
  color:#1B2D70;text-decoration:none;
  box-shadow:inset 0 -1px 0 rgba(27,45,112,0.30);
}
.tahoe-shell .conc-regra > a:hover{box-shadow:inset 0 -1px 0 rgba(27,45,112,0.70);}
.tahoe-shell .conc-regra-txt{min-width:0;}
.tahoe-shell .conc-regra-txt b{font-family:var(--font-mono);font-size:11.5px;font-weight:600;color:#1A1A20;}

/* Quantas vezes pegou e quando foi a última: é o que separa regra viva de lixo, e
   é o MESMO par de números da Tela 2 — quem aprende a ler aqui já sabe ler lá.
   .frio é a regra que parou de pegar; .zero é a que nunca pegou. */
.tahoe-shell .conc-regra-uso{
  display:inline-flex;align-items:center;gap:5px 14px;flex-wrap:wrap;
  font-size:11.5px;color:var(--fg-subtle);
}
.tahoe-shell .conc-regra-uso b{font-family:var(--num-font);font-weight:600;color:#4B4B55;}
.tahoe-shell .conc-regra-uso.frio b{color:#8A5D10;}
.tahoe-shell .conc-regra-uso.zero b{color:#8C2828;}

/* Desfazer o que a máquina decidiu sozinha não pode custar mais cliques que
   aceitar. Fica na faixa, visível, nunca dentro de um "⋯". Vermelho de texto sem
   superfície: é destrutivo mas reversível, e desfaz SÓ este lançamento — a regra
   continua ativa, e o texto ao lado precisa dizer isso, porque a leitura natural
   de "esta regra está errada aqui" seria "desativa a regra". */
.tahoe-shell .conc-regra-erro{
  margin-left:auto;flex:none;
  display:inline-flex;align-items:center;gap:6px;
  height:26px;padding:0 10px;border:none;border-radius:999px;cursor:pointer;
  background:transparent;color:#8C2828;
  font-family:inherit;font-size:11.5px;font-weight:600;
}
.tahoe-shell .conc-regra-erro svg{width:12px;height:12px;}
.tahoe-shell .conc-regra-erro:hover{background:rgba(179,58,58,0.09);}

/* ─────────── G · Rodapé de lote ─────────── */

/* A coluna de tiques não significa nada sem ele. Declara o que ficou DE FORA antes
   de o operador apertar: numa confirmação em massa a OMISSÃO é a parte perigosa —
   "Confirmar todos" que silenciosamente pula 3 divergências é como se perde a
   confiança numa tela de dinheiro. Os três números (marcados, total, de fora) têm
   que fechar entre si e com a barra de progresso. */
.tahoe-shell .conc-lote{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:11px 16px;
  background:var(--bg-soft);
  border-top:0.5px solid var(--hairline-section);
}
.tahoe-shell .conc-lote-txt{flex:1;min-width:0;font-size:12.5px;color:#4B4B55;}
.tahoe-shell .conc-lote-txt b{font-family:var(--num-font);font-weight:600;color:#0A1330;}

/* ═══════════ H · Tela 2 · o que o sistema aprendeu ═══════════
   NÃO é um CRUD. Regras nascem na esteira, e a hierarquia da tela precisa dizer
   isso antes de qualquer coisa: por isso o topo é uma .next-step apontando pra
   esteira, e não um botão "+ Nova regra".

   O EIXO DE ESCOPO é o organizador principal, e não uma coluna de tabela: o
   operador pensa "quais regras valem para o Itaú?", não "quais regras existem".
   Por isso .conc-escopo vem antes da lista e a lista é AGRUPADA por escopo. */

.tahoe-shell .conc-escopo{display:flex;align-items:stretch;gap:10px;margin-bottom:18px;flex-wrap:wrap;}
.tahoe-shell .conc-escopo-node{
  flex:1 1 220px;min-width:0;
  display:flex;flex-direction:column;gap:3px;
  padding:12px 14px;border-radius:14px;text-decoration:none;
  background:rgba(10,19,48,0.04);
  box-shadow:inset 0 0 0 1px var(--hairline-section);
  transition:box-shadow .15s ease, transform .15s ease;
}
.tahoe-shell .conc-escopo-node:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(10,19,48,0.14),0 2px 8px rgba(10,19,48,0.08);}
.tahoe-shell .conc-escopo-node .lbl{
  font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--fg-muted);
}
.tahoe-shell .conc-escopo-node .num{font-family:var(--num-font);font-size:22px;font-weight:600;line-height:1.1;color:#1A1A20;}
.tahoe-shell .conc-escopo-node .sub{font-size:11.5px;color:var(--fg-muted);}
/* Três tons, do mais amplo ao mais específico: quanto mais ampla a regra, mais
   caro o erro dela. Global recebe o azul de maior presença de propósito. */
.tahoe-shell .conc-escopo-node.global{background:rgba(79,111,181,0.10);box-shadow:inset 0 0 0 1px rgba(79,111,181,0.22);}
.tahoe-shell .conc-escopo-node.global .lbl{color:#2F4FA0;}
.tahoe-shell .conc-escopo-node.banco{background:rgba(126,186,220,0.16);box-shadow:inset 0 0 0 1px rgba(126,186,220,0.34);}
.tahoe-shell .conc-escopo-node.banco .lbl{color:#1F4C6B;}
.tahoe-shell .conc-escopo-node.condo{background:rgba(10,19,48,0.04);}
/* NUMERAL DENTRO DE FRASE. Duas superfícies o pedem — a .sub do cartão de escopo e
   a consequência escrita do interruptor de risco — e é a mesma figura: um número no
   meio de um texto corrido, não um número-título. Precisa de regra própria porque
   .conc-escopo-node .num é justamente o número-título do cartão (22px) e um "689
   lançamentos" no corpo herdaria esse peso e brigaria com o 8 do topo.
   display:inline é obrigatório do lado do risco: .conc-risco span é block — é ele
   que empilha rótulo e consequência — e sem isso cada numeral quebrava sozinho numa
   linha. #4B4B55 é um degrau mais escuro que o --fg-muted da frase: o número salta
   sem virar destaque. Era isto que o HTML resolvia com 17 `style=` iguais. */
.tahoe-shell .conc-escopo-node .sub .num,
.tahoe-shell .conc-risco span .num{
  display:inline;font-size:11.5px;color:#4B4B55;
}
/* Os dois desvios do mesmo número: frio pede faxina, conflito pede decisão. Mesmos
   tons de .conc-regra-uso.frio b e .conc-regra-uso.zero b, e mesmos nomes — o cartão
   e a linha lá embaixo falam do mesmo fato, e um fato não tem dois nomes. */
.tahoe-shell .conc-escopo-node .sub .num.frio{color:#8A5D10;}
.tahoe-shell .conc-escopo-node .sub .num.conflito{color:#8C2828;}

/* A lista. Grade compartilhada com o cabeçalho, mesma doutrina da fita.
   Ordem 34 · condição 1.5fr · escopo 132 · ação 1fr · uso 130 · modo 96 · ⋯ 28. */
.tahoe-shell .conc-regra-linha,
.tahoe-shell .conc-regras-h{
  display:grid;
  grid-template-columns:34px minmax(0,1.5fr) 132px minmax(0,1fr) 130px 96px 28px;
  align-items:center;gap:0 12px;padding:0 16px;
}
.tahoe-shell .conc-regras-h{
  min-height:26px;
  font-size:10.5px;font-weight:500;letter-spacing:.02em;color:var(--fg-muted);
  border-bottom:0.5px solid var(--hairline-section);
}
.tahoe-shell .conc-regra-linha{
  min-height:44px;
  border-bottom:0.5px solid var(--hairline-row);
  transition:background 100ms ease;
}
.tahoe-shell .conc-regra-linha:last-child{border-bottom:none;}
.tahoe-shell .conc-regra-linha:hover{background:rgba(173,213,235,0.10);}
/* FRIA: não pega há muito tempo, candidata a lixo. Tinge a linha inteira porque a
   tela precisa deixar isso óbvio SEM o operador procurar — se dependesse de ler a
   coluna de uso, ele teria que varrer 31 regras pra achar as 4 mortas. */
.tahoe-shell .conc-regra-linha.frio{background:rgba(200,136,26,0.07);}
.tahoe-shell .conc-regra-linha.frio:hover{background:rgba(200,136,26,0.12);}
/* Desligada continua na lista e continua na ordem: some da lista e o operador
   perde a noção de por que a regra seguinte passou a pegar coisa nova. */
.tahoe-shell .conc-regra-linha.desligada{opacity:.55;}
.tahoe-shell .conc-regra-linha.conflito{box-shadow:inset 2px 0 0 var(--danger);}

/* A ordem É a semântica: avaliadas de cima pra baixo, a primeira que casa vence.
   Por isso o número da posição fica visível e não implícito na sequência visual —
   e o punho de arrasto fica coladinho nele, porque mudar a ordem muda o resultado. */
.tahoe-shell .conc-ordem{
  display:inline-flex;align-items:center;gap:5px;color:var(--border-strong);cursor:grab;
}
.tahoe-shell .conc-ordem svg{width:12px;height:12px;}
.tahoe-shell .conc-ordem b{font-family:var(--num-font);font-size:11.5px;font-weight:600;color:var(--fg-subtle);}
.tahoe-shell .conc-ordem:hover{color:#1B2D70;}

/* A condição em linguagem natural, com o literal em monoespaçada. "descrição
   começa com TAR PACOTE SERVICOS" se lê; um par campo/operador/valor em três
   células, não. O literal é o mesmo trecho que o operador viu realçado na esteira. */
.tahoe-shell .conc-cond{
  font-size:12.5px;line-height:1.35;color:#1A1A20;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tahoe-shell .conc-cond-val{
  font-family:var(--font-mono);font-size:11.5px;font-weight:600;color:#0A1330;
  padding:1px 5px;border-radius:6px;background:rgba(10,19,48,0.05);
}
/* O IDENTIFICADOR DA REGRA (R-12). É o que o rastro da esteira cita e o que uma
   pessoa fala pra outra ("a R-12 está errada no Bradesco"), então precisa estar
   visível em toda linha — mas ele NOMEIA a regra, não a descreve: quem varre a
   lista lê a condição, e só desce até o código quando já achou a linha. Daí um
   degrau abaixo da condição em cor e tamanho, à esquerda dela e nunca em coluna
   própria, que gastaria 44px em 31 linhas pra repetir o que a ordem já sugere.
   Saira porque é numeral, e com tamanho e cor próprios porque o .num do kit é
   14px/#0A1330 — o mesmo peso do valor de um KPI, que aqui atropelaria a
   condição. Era isto que o HTML vinha resolvendo com 32 `style=` iguais. */
.tahoe-shell .conc-regra-id{
  font-family:var(--num-font);font-size:11.5px;font-weight:500;
  color:var(--fg-subtle);margin-right:7px;
}
/* A célula de ESCOPO da linha. Texto e não pill: pill aqui daria a 31 linhas o
   peso que o eixo de escopo (.conc-escopo, acima da lista) já carrega uma vez —
   e o organizador da tela é aquele bloco, não esta coluna, que só confirma a qual
   grupo a linha pertence. Elide porque nome de condomínio é longo e a condição
   tem prioridade sobre ele nesta grade. */
.tahoe-shell .conc-regra-escopo{
  font-size:11.5px;color:var(--fg-muted);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tahoe-shell .conc-acao{
  font-size:12px;color:#4B4B55;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tahoe-shell .conc-acao .num{font-family:var(--num-font);font-weight:600;color:#1A1A20;}

/* Aplica automaticamente × apenas sugere. É uma decisão de RISCO, então os dois
   modos não podem ter o mesmo peso visual: .auto tem superfície e o azul do
   sistema agindo sozinho; .sugere é neutro, porque nada acontece sem um humano. */
.tahoe-shell .conc-modo{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;border-radius:999px;white-space:nowrap;
  font-size:10.5px;font-weight:600;line-height:1.5;
}
.tahoe-shell .conc-modo svg{width:11px;height:11px;}
.tahoe-shell .conc-modo.auto{background:var(--info-soft);color:var(--info);box-shadow:inset 0 0 0 0.5px var(--info-border);}
.tahoe-shell .conc-modo.sugere{background:var(--bg-soft);color:var(--fg-muted);box-shadow:inset 0 0 0 0.5px var(--border);}

/* Conflito: duas regras pegariam o mesmo lançamento e a de cima vence. Vive ACIMA
   da lista, não dentro dela, porque é a única coisa da tela que exige ação hoje —
   e o aviso mostra as DUAS regras e diz qual venceu, senão o operador tem que
   deduzir a ordem de avaliação de cabeça.

   VERMELHO, não âmbar. Tudo que aponta pra cá é vermelho — a .pill-danger do
   .page-h, a .pill-danger do card "Por banco", o "1 conflito" do cartão de escopo e
   a tarja .conc-regra-linha.conflito, que já é var(--danger). O operador conta "1
   conflito" em vermelho e precisa achar a explicação no mesmo peso; em âmbar ela se
   confunde com a faixa de faxina (.next-step.warn) logo abaixo, que é o assunto
   oposto: regra parada não custa nada hoje, plano de contas errado no balancete
   custa. Um alarme, uma cor. */
.tahoe-shell .conc-conflito{
  padding:13px 16px;border-radius:14px;margin-bottom:18px;
  background:linear-gradient(135deg,rgba(179,58,58,0.12) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px var(--danger-border);
}
.tahoe-shell .conc-conflito > b{display:block;font-size:13px;font-weight:600;color:#8C2828;margin-bottom:3px;}
.tahoe-shell .conc-conflito > p{margin:0 0 10px;font-size:12px;line-height:1.45;color:#4B4B55;}
.tahoe-shell .conc-conflito > p b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
.tahoe-shell .conc-conflito-par{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:8px 12px;border-radius:10px;margin-bottom:6px;
  background:var(--bg);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
  font-size:12px;color:#4B4B55;
}
/* Dois numerais moram nesta linha e não são a mesma coisa. O filho direto é o
   IDENTIFICADOR da regra ("#10 · R-12") e leva o azul de identificador; o numeral
   aninhado na frase é o plano de contas, e leva o mesmo tom de .conc-conflito > p b
   — que é o mesmo fato dito em prosa dois parágrafos acima. Se os dois ficassem
   azuis, a linha teria dois carimbos de identidade disputando o olho. */
.tahoe-shell .conc-conflito-par .num{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
.tahoe-shell .conc-conflito-par > .num{color:#1B2D70;}
.tahoe-shell .conc-conflito-par .pill{margin-left:auto;}

/* ─── O editor — o MESMO nas duas telas ───
   Na Tela 1 ele abre a partir de "criar regra a partir deste lançamento", já
   preenchido. Na Tela 2 ele abre a partir de uma regra existente. Mesma anatomia:
   condição → escopo → ação → modo → PRÉVIA. A prévia é obrigatória e fica por
   último porque é ela que autoriza salvar. */
.tahoe-shell .conc-editor{
  padding:18px;border-radius:18px;
  background:var(--bg);
  box-shadow:
    0 0 0 1px rgba(10,19,48,0.07),
    0 1px 2px rgba(10,19,48,0.04),
    0 4px 10px rgba(10,19,48,0.04);
}

/* A condição sugerida a partir do lançamento. O que o motor RETIROU fica visível
   e riscado, não apagado: uma condição que casa com o lançamento inteiro nunca
   pega o próximo, e o operador precisa ver exatamente quais pedaços foram
   considerados voláteis pra discordar deles. */
.tahoe-shell .conc-sugerida{
  padding:11px 13px;border-radius:10px;margin-bottom:14px;
  background:rgba(10,19,48,0.035);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
  font-family:var(--font-mono);font-size:12.5px;line-height:1.8;color:#1A1A20;
  overflow-wrap:anywhere;
}
.tahoe-shell .conc-sugerida .conc-nucleo{
  white-space:normal;padding:1px 5px;border-radius:6px;
  background:var(--link-soft);
  box-shadow:inset 0 0 0 0.5px rgba(79,111,181,0.28);
}
.tahoe-shell .conc-removido{
  padding:1px 5px;border-radius:6px;
  color:var(--fg-subtle);text-decoration:line-through;
  text-decoration-color:rgba(46,46,54,0.45);
  background:rgba(10,19,48,0.05);
}

.tahoe-shell .conc-cond-linha{
  display:grid;grid-template-columns:minmax(0,1fr) 150px minmax(0,1.2fr) 28px;
  gap:10px;align-items:end;margin-bottom:10px;
}
.tahoe-shell .conc-cond-add{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 11px;border-radius:10px;cursor:pointer;
  background:transparent;border:1px dashed rgba(10,19,48,0.16);
  color:#4F6FB5;font-family:inherit;font-size:12px;font-weight:600;
}
.tahoe-shell .conc-cond-add:hover{background:rgba(173,213,235,0.12);border-color:rgba(79,111,181,0.40);}
.tahoe-shell .conc-cond-add svg{width:13px;height:13px;}

/* O interruptor de risco. É a decisão mais cara da tela — "aplicar
   automaticamente" significa dinheiro mudando de lugar sem ninguém olhar — então
   ele PARECE uma decisão: superfície própria, âmbar quando está em automático, e a
   consequência escrita ao lado em vez de escondida num tooltip. */
.tahoe-shell .conc-risco{
  display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;
  padding:13px 15px;border-radius:14px;margin:16px 0;
  background:var(--bg-soft);
  box-shadow:inset 0 0 0 1px var(--hairline-section);
}
.tahoe-shell .conc-risco > div{flex:1;min-width:0;}
.tahoe-shell .conc-risco b{display:block;font-size:13px;font-weight:600;color:#0A1330;}
.tahoe-shell .conc-risco span{display:block;margin-top:3px;font-size:11.5px;line-height:1.45;color:var(--fg-muted);}
.tahoe-shell .conc-risco:has(input:checked){
  background:linear-gradient(135deg,rgba(200,136,26,0.13) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px var(--warning-border);
}
.tahoe-shell .conc-risco:has(input:checked) b{color:#8A5D10;}

/* A PRÉVIA é obrigatória e nunca é só o número: o número diz o tamanho do estrago,
   a amostra diz se é o estrago certo. Um "pegaria 214 lançamentos" sem ver quais
   convence o operador de que a regra é boa exatamente quando ela é um desastre. */
.tahoe-shell .conc-previa{
  padding:14px 16px;border-radius:14px;
  background:linear-gradient(135deg,rgba(173,213,235,0.20) 0%,rgba(255,255,255,0.6) 70%),var(--bg);
  box-shadow:inset 0 0 0 1px rgba(126,186,220,0.35);
}
.tahoe-shell .conc-previa > p{margin:0;font-size:12.5px;line-height:1.5;color:#1A1A20;}
/* O número grande já é Saira; os números do argumento em volta dele ("só a
   primeira condição pegaria 214") também precisam ser, senão a mesma frase mede a
   regra em duas fontes — e é comparando esses dois números que o operador decide
   se a condição está apertada o bastante. */
.tahoe-shell .conc-previa > p b{font-family:var(--num-font);font-weight:600;color:#1A1A20;}
.tahoe-shell .conc-previa-n{font-family:var(--num-font);font-size:22px;font-weight:600;color:#0A1330;line-height:1;margin-right:4px;}
.tahoe-shell .conc-amostra{margin-top:12px;}
.tahoe-shell .conc-amostra-linha{
  display:grid;grid-template-columns:52px 104px minmax(0,1fr);
  align-items:baseline;gap:10px;padding:6px 0;
  border-top:0.5px solid var(--hairline-row);
  font-size:11.5px;
}
.tahoe-shell .conc-amostra-linha:first-child{border-top:none;}
.tahoe-shell .conc-amostra-linha .num{font-family:var(--num-font);font-weight:500;color:#1A1A20;font-variant-numeric:tabular-nums;}
.tahoe-shell .conc-amostra-linha .conc-desc{font-size:11px;}

/* ─────────── I · Estreito ───────────
   Oito colunas fixas exigem ~1.240px de .content. A ordem de sacrifício é
   deliberada: primeiro some a meta da despesa (vencimento e conta já estão no
   corpo), depois a coluna de selos encolhe pra caber um selo só. A descrição bruta
   e o valor NUNCA cedem largura — são o par de dados com que se julga. */
@media (max-width:1240px){
  .tahoe-shell .conc-fita,
  .tahoe-shell .conc-cabeca{grid-template-columns:26px 46px 104px minmax(0,1fr) 124px 190px 108px 24px;}
  .tahoe-shell .conc-meta{display:none;}
  /* Exceto no par agrupado: ali a meta não é meta, é a natureza do par. Sem o
     "soma de 3" a fita fechada passa a afirmar que uma TED de R$ 4.860,00 casou
     com UMA despesa da Verzani — e não casou, casou com três. */
  .tahoe-shell .conc-par.is-agrupado .conc-meta{display:inline;}
  /* Em 108px de selos não cabem o rótulo e o rastro. Sai o rótulo: ele se
     recupera olhando a coluna da despesa, o número da regra não se recupera de
     lugar nenhum. */
  .tahoe-shell .conc-par.is-regra .conc-selos .pill{display:none;}
  .tahoe-shell .conc-regra-linha,
  .tahoe-shell .conc-regras-h{grid-template-columns:34px minmax(0,1.4fr) 110px minmax(0,1fr) 110px 28px;}
  .tahoe-shell .conc-modo{display:none;}
}
@media (max-width:1080px){
  .tahoe-shell .conc-lados{grid-template-columns:minmax(0,1fr);}
  .tahoe-shell .conc-progresso{grid-template-columns:minmax(0,1fr);}
  .tahoe-shell .conc-cond-linha{grid-template-columns:minmax(0,1fr) 130px;}
}

/* ═══════════ J · Tela raiz · a carteira de contas (v0.44.0) ═══════════
   Três telas agora, não duas: shell-conciliacao.html (a carteira inteira),
   shell-conciliacao-extrato.html (a esteira de UMA conta) e
   shell-conciliacao-regras.html (o que o sistema aprendeu).

   POR QUE ESTA TELA EXISTE. A esteira abria direto no Boa Viagem / Itaú, como se
   o analista já soubesse qual conta atacar. São 550 condomínios e 612 contas
   bancárias, e a primeira pergunta das 8h não é "como está o Boa Viagem" — é
   "onde tem problema". Tela que responde isso com um seletor de condomínio está
   devolvendo a pergunta.

   A PARTIÇÃO É A REGRA. Toda conta cai em EXATAMENTE UM dos cinco baldes e os
   cinco somam 612: fechadas 525 + prontas 41 + travadas 19 + sem extrato 24 +
   lendo 3. Balde que não fecha vira dashboard, e dashboard é o que esta tela não
   pode ser — o analista vai somar, e se não bater a tela perde a credibilidade
   antes de qualquer decisão de design ser julgada. Por isso as contas em limbo no
   ERP NÃO viram um sexto grupo: elas já são travadas, e contá-las duas vezes
   quebraria a soma que dá crédito ao mapa inteiro. Elas aparecem no
   .conc-estado.falha do topo e como DESVIO na célula de veredito.

   DENTRO DO BALDE, A ORDEM É UMA OPINIÃO ASSUMIDA: exposição = R$ parado × dias
   parado. Quarenta tarifas de R$ 12 são uma tarde barata; um fundo de obras de
   R$ 84 mil travado há 47 dias é o risco. Situação diz O QUE é; exposição diz por
   onde começar. Uma sozinha não responde a manhã inteira.

   A LINHA É UMA .conc-fita DENTRO DE UM .conc-par — a mesma da esteira, e essa é
   a decisão que sustenta a tela. Hover, :focus-visible, tique, sarjeta, fio de
   baixo, cursor sintético do J/K e a tarja vermelha do .is-falha vêm de graça,
   sem uma declaração nova. Só a GRADE muda, porque a unidade subiu um nível: lá é
   lançamento × despesa, aqui é condomínio × conta. Quem aprendeu a ler a fita na
   esteira já sabe ler esta, e a barrinha de cobertura de cada conta é literalmente
   a .conc-prog-barra do topo em miniatura — a soma das barrinhas da coluna É a
   barra da frota.

   A UNIDADE É A CONTA, NUNCA O CONDOMÍNIO. Um prédio com três contas rende três
   linhas, possivelmente em três grupos diferentes, e está certo: fundir as três
   esconderia a transferência entre elas — a mesma frase que o estado vazio da
   esteira já diz. O preço é conhecido e está declarado: "como está o Villa Real?"
   custa uma busca em vez de um relance.

   RADIUS 6/10/14/18/999. HAIRLINE por box-shadow inset. A única exceção é o
   tracejado de .conc-cobertura.vazia, que entra na lista já sancionada do módulo
   (.dropzone, .cfg-add-row, .conc-tentativas, .conc-estado.vazio): box-shadow não
   faz tracejado, e tracejado já é o idioma da casa pra "aqui não tem nada". */

/* ─── A GRADE. Declarada uma vez e compartilhada com o cabeçalho, mesma doutrina
   da .conc-fita: a leitura aqui também é VERTICAL — o operador desce a coluna
   "Em aberto" procurando o que não é R$ 0,00 — e coluna que dança de largura
   entre linhas destrói isso.
   Nove colunas: tique 26 · condomínio 1fr · conta 168 · veredito 128 · em aberto
   124 · cobertura 122 · último extrato 108 · parada há 78 · ação 116. Com gap 10
   e padding 16 sobram ~326px pro condomínio num .content de 1440px: cabem o
   .condo-mark de 34px e "Edifício Recife Prime" + "Espinheiro · Recife · PE" sem
   elide.
   Os 168px da conta não são generosidade: "Ag 0138 · CC 71.209-4 · reserva" tem
   31 caracteres em Saira 11px e é o pior caso real da carteira. Elidir ali seria
   cortar justamente o que separa duas linhas com o mesmo nome de condomínio — a
   agência e a conta são a IDENTIDADE da linha, não o detalhe dela. */
.tahoe-shell .conc-fila,
.tahoe-shell .conc-fila-h{
  grid-template-columns:26px minmax(0,1fr) 168px 128px 124px 122px 108px 78px 116px;
}
/* 52px e não 34: a identidade é .condo, e .condo-mark tem 34px de altura. É a
   linha mais alta do módulo de propósito — aqui são ~20 linhas por tela, não 47,
   e cada uma vale uma conta bancária inteira. */
.tahoe-shell .conc-fila{min-height:52px;}

/* ─── A CONTA BANCÁRIA. É NÚMERO, e número é Saira em toda a casa. Um condomínio
   tem 1..N contas: é o par agência/conta que separa duas linhas com o mesmo nome,
   então ele não pode ler como subtítulo do condomínio — que é exatamente o que
   Inter faria com ele. Mesma decisão de .conc-par.is-transf .conc-forn.
   O nome do banco fica em Inter porque banco é nome, não número. */
.tahoe-shell .conc-banco{display:flex;flex-direction:column;gap:1px;min-width:0;}
.tahoe-shell .conc-banco b{
  font-size:12.5px;font-weight:500;color:#1A1A20;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tahoe-shell .conc-banco span{
  font-family:var(--num-font);font-size:11px;font-weight:500;color:var(--fg-muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* ─── DUAS CÉLULAS DE DUAS LINHAS, uma declaração. .conc-mix empilha a barrinha de
   cobertura sobre "21 de 68 em exceção"; .conc-quando empilha a data do extrato
   sobre o período que ele cobre. Nos dois casos a segunda linha é um .conc-dias
   reusado — o mesmo 11px Saira que a esteira usa pra delta de dias. */
.tahoe-shell .conc-mix,
.tahoe-shell .conc-quando{display:flex;flex-direction:column;gap:3px;min-width:0;}

/* ─── A COBERTURA DA CONTA em 6px: a MESMA barra do topo da tela, os MESMOS cinco
   tons com os mesmos cinco significados (ver a lista de seletores lá em cima —
   os tons não são redeclarados aqui). Nada novo pra aprender, e a barrinha diz de
   relance o que a coluna de exceções diz em número.
   Vazia e tracejada quando não há extrato: uma barra cheia de cinza afirmaria que
   o mês foi lido e deu zero, que é o oposto do fato. */
.tahoe-shell .conc-cobertura{
  display:flex;height:6px;border-radius:999px;overflow:hidden;
  background:rgba(10,19,48,0.06);
  box-shadow:inset 0 0 0 0.5px var(--hairline-section);
}
.tahoe-shell .conc-cobertura > i{display:block;height:100%;}
.tahoe-shell .conc-cobertura.vazia{
  background:transparent;box-shadow:none;
  border:1px dashed rgba(10,19,48,0.16);
}

/* ─── EM ABERTO. É o .conc-fech-resto em escala de linha, e é a MESMA conta
   (movimentado − conciliado). Reusa o .conc-valor da esteira inteiro — tamanho,
   alinhamento à direita e tabular-nums — e só troca a cor, porque aqui o número
   não é a âncora da linha, é o veredito em dinheiro.
   .zerado é a LISTRA: 525 "R$ 0,00" empilhados formam uma coluna cinza descendo a
   lista e QUEM QUEBRA A LISTRA É O PROBLEMA — mesmo mecanismo do `=` da .conc-eq,
   um zoom acima.
   .nulo é a conta sem extrato. R$ 0,00 ali seria uma afirmação que ninguém fez:
   ninguém leu o arquivo, então ninguém sabe o que aquela conta movimentou. Mesma
   decisão do .conc-eq.nulo — inventar glifo pra "não sei" ensina o operador a ler
   símbolo sem confiar nele. */
.tahoe-shell .conc-fila .conc-valor.aberto{color:#8A5D10;}
.tahoe-shell .conc-fila .conc-valor.zerado{color:var(--fg-subtle);font-weight:500;}
.tahoe-shell .conc-fila .conc-valor.nulo{color:var(--border-strong);font-weight:400;}

/* ─── PARADA HÁ. É esta coluna que torna "sem extrato" acionável: 19 contas sem o
   arquivo de agosto no dia 20 são rotina; a que ninguém toca desde junho é a
   emergência, e a diferença entre as duas não existe em nenhuma outra célula da
   linha. .alerta já é o âmbar do módulo; .critico é o vermelho que só as
   abandonadas merecem — mesmo #8C2828 do .conc-estado.falha. */
.tahoe-shell .conc-dias.critico{color:#8C2828;font-weight:600;}

/* ─── AS REDONDAS. Não somem — COMPRIMEM. Sumir com as 525 obrigaria o operador a
   confiar que a tela viu tudo; listá-las inteiras gastaria ~27.000px pra dizer
   "está tudo bem". Chips de 11px em verde translúcido: o operador consegue CONTAR
   525 pra acreditar nas 19, e nenhuma delas pede um pixel de atenção.
   Sem trilho no card que as embrulha, de propósito: trilho significa "há trabalho
   aqui". */
.tahoe-shell .conc-quietas{display:flex;flex-wrap:wrap;gap:4px;padding:2px 18px 16px;}
.tahoe-shell .conc-quieta{
  font-size:11px;line-height:1.6;color:#4B4B55;
  padding:2px 8px;border-radius:6px;white-space:nowrap;
  background:rgba(47,140,94,0.10);
}
/* O .num do kit vem com 14px/500 próprios, de KPI. Dentro de um chip de 11px ele
   ficaria maior que a palavra ao lado — troca só a fonte e devolve o resto. */
.tahoe-shell .conc-quieta .num{font-size:11px;font-weight:500;color:#4B4B55;}
.tahoe-shell .conc-quieta.mais{
  background:rgba(10,19,48,0.05);color:#1B2D70;font-weight:500;text-decoration:none;
}
.tahoe-shell .conc-quieta.mais:hover{background:rgba(27,45,112,0.10);}

/* ─── EM LIMBO NO ERP. Não é um quarto termo da equação — é a ANOMALIA QUE A
   EQUAÇÃO ESCONDE, e por isso mora na mesma faixa e mesmo assim não parece com
   os outros três. "Movimentado − Conciliado = Falta" fecha; o que não fecha é
   que R$ 11.434,45 do "Conciliado" a esteira deu por confirmados e o Superlógica
   recusou a gravação. O dinheiro está contado lá em cima e não está no ERP, e
   dizer isso em voz alta é mais honesto que escolher um dos dois lados e calar
   sobre o outro: o operador precisa PODER VER que existe dinheiro em estado
   ambíguo, senão ele soma uma tela que mente sem sotaque.
   Por isso ele é FILHO DA .conc-progresso e não da .conc-fechamento, ocupando
   uma terceira faixa de ponta a ponta (grid-column:1/-1): dentro da equação ele
   inchava a coluna `auto` do grid e espremia a barra e a legenda da frota a uns
   50px — a régua perdia pra nota de rodapé dela mesma. E de ponta a ponta ele
   lê melhor o que é: um adendo à faixa inteira, não uma quarta parcela.
   Tom danger e NENHUM operador (− ou =) ao lado. Operador convidaria a somar ou
   subtrair um valor que já está dentro de outro — o erro mais caro que esta
   faixa pode induzir. O vermelho é o #8C2828 de .conc-estado.falha e
   .conc-dias.critico, e não o --danger cheio: é o mesmo dinheiro do painel
   vermelho vinte pixels abaixo, e dois vermelhos pra um fato só seriam dois
   fatos na cabeça de quem lê. */
.tahoe-shell .conc-fech-limbo{
  grid-column:1/-1;display:flex;align-items:center;gap:10px;
  margin-top:-4px;padding:8px 12px;border-radius:10px;
  background:var(--danger-soft);
  box-shadow:inset 0 0 0 0.5px var(--danger-border);
}
.tahoe-shell .conc-fech-limbo > svg{flex:none;width:15px;height:15px;color:#8C2828;}
.tahoe-shell .conc-fech-limbo .conc-fech-item{flex:none;}
.tahoe-shell .conc-fech-limbo .conc-fech-item span{color:#8C2828;}
/* 14px e não os 16px dos três termos: menor de propósito. Ele é o rodapé da
   conta, não uma quarta parcela dela. */
.tahoe-shell .conc-fech-limbo .conc-fech-item b{font-size:14px;color:#8C2828;}
.tahoe-shell .conc-fech-limbo-nota{
  margin:0;min-width:0;font-size:11px;line-height:1.4;color:#8C2828;
}
.tahoe-shell .conc-fech-limbo-nota b{font-family:var(--num-font);font-weight:600;}

/* ─── Estreito. A ordem de sacrifício: primeiro cai a COBERTURA, porque é a única
   coluna cujo dado está inteiro na tela de detalhe — quem precisa dela clica na
   conta. O que nunca cede é a dupla identidade + em aberto: são o par de dados
   com que se escolhe a próxima conta.
   Fica DEPOIS do @media de 1240px que serve a esteira, e com seletor próprio:
   .conc-fila e .conc-fita têm a mesma especificidade, então quem vier por último
   no arquivo vence — e a grade da fila precisa vencer nas duas faixas. */
@media (max-width:1240px){
  .tahoe-shell .conc-fila,
  .tahoe-shell .conc-fila-h{
    grid-template-columns:26px minmax(0,1fr) 160px 122px 118px 0 100px 74px 108px;
  }
  /* COLAPSA, NÃO SOME. `display:none` aqui seria um bug e não uma economia: o
     grid é de colocação automática, então tirar a sexta célula do fluxo empurra
     as três seguintes uma coluna pra esquerda — a data cai na trilha de 0px, o
     texto quebra caractere a caractere e a linha passa de 52px pra 116px. A
     célula continua ocupando a posição dela e some por altura zero. */
  .tahoe-shell .conc-fila > .conc-mix,
  .tahoe-shell .conc-fila-h > .mix{height:0;overflow:hidden;visibility:hidden;}
}
