/* App local do admin (./admin servir), no design system da Tenex (a3s-Ventures/design-system-tenex, Manual da Marca v1.0).
   Modo escuro (painel do dono); um acento só, o âmbar; quadrado, sem sombra, separa por borda; número em mono tabular. */

@font-face { font-family: 'IBM Plex Mono'; font-weight: 400; font-display: swap; src: url('/fontes/ibm-plex-mono-400-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 400; font-display: swap; src: url('/fontes/ibm-plex-mono-400-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 500; font-display: swap; src: url('/fontes/ibm-plex-mono-500-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 500; font-display: swap; src: url('/fontes/ibm-plex-mono-500-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 600; font-display: swap; src: url('/fontes/ibm-plex-mono-600-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'IBM Plex Mono'; font-weight: 600; font-display: swap; src: url('/fontes/ibm-plex-mono-600-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url('/fontes/inter-400-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url('/fontes/inter-400-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter'; font-weight: 500; font-display: swap; src: url('/fontes/inter-500-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'Inter'; font-weight: 600; font-display: swap; src: url('/fontes/inter-600-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'Space Grotesk'; font-weight: 500; font-display: swap; src: url('/fontes/space-grotesk-500-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'Space Grotesk'; font-weight: 700; font-display: swap; src: url('/fontes/space-grotesk-700-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF; }
@font-face { font-family: 'Space Grotesk'; font-weight: 700; font-display: swap; src: url('/fontes/space-grotesk-700-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+1E00-1EFF, U+20A0-20AB, U+20AD-20C0, U+2C60-2C7F, U+A720-A7FF; }

:root {
  color-scheme: dark;
  --mono: 'IBM Plex Mono', ui-monospace, Menlo, monospace;
  --display: 'Space Grotesk', 'Helvetica Neue', sans-serif;
  --texto: 'Inter', -apple-system, 'Segoe UI', sans-serif;
  --bg: #0c0c0e; --painel: #111214; --sup: #17181b; --sup2: #1e1f23;
  --borda: #2a2b30; --borda2: #3a3b41;
  --fg: #f3f1ea; --fg2: #8b9096; --fg3: #5d6167;
  --ac: #ffc400; --ac-hover: #ffd23d; --ac-fg: #0c0c0e; --ac-suave: rgba(255, 196, 0, .12);
  --neg: #e5484d;
  --rotulo: .12em;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --gutter: clamp(16px, 2.6vw, 40px);
  --largura: 1536px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scrollbar-color: var(--borda2) var(--bg); }
/* No Mac, a página cresce com a largura (16px em 1536): a composição é a mesma de 1280 a 1600. */
@media (min-width: 1100px) { html { font-size: clamp(13.5px, 1.0417vw, 17.5px); } }
body {
  margin: 0; min-height: 100vh; background: var(--bg); color: var(--fg);
  font: 400 .9375rem/1.6 var(--texto); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  font-feature-settings: 'cv11', 'ss01'; text-rendering: optimizeLegibility;
}
::selection { background: var(--ac); color: var(--ac-fg); }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--ac); outline-offset: 3px; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--borda2); border: 2px solid var(--bg); }
.so-leitor { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ── Barra ───────────────────────────────────────────── */
.barra { border-bottom: 1px solid var(--borda); background: var(--bg); position: sticky; top: 0; z-index: 10; }
.barra__dentro { max-width: var(--largura); margin: 0 auto; padding: 0 var(--gutter); height: 4rem; display: flex; align-items: center; gap: clamp(24px, 8vw, 11rem); }
.marca { display: inline-flex; align-items: baseline; font: 600 1.75rem/1 var(--mono); letter-spacing: -.02em; color: var(--fg); text-decoration: none; white-space: nowrap; }
.marca b { font-weight: 600; color: var(--ac); }
.marca__cursor { display: inline-block; width: .55em; height: .1em; margin-left: .12em; background: var(--ac); align-self: flex-end; transform: translateY(-.02em); }
@media (prefers-reduced-motion: no-preference) { .marca__cursor { animation: piscar 1s step-end infinite; } }
@keyframes piscar { 50% { opacity: 0; } }

.nav { display: flex; gap: clamp(16px, 2.6vw, 40px); align-self: stretch; }
.nav__item {
  display: flex; align-items: center; gap: .5em; position: relative; text-decoration: none;
  font: 500 .9375rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--fg2);
  transition: color 120ms var(--ease);
}
.nav__item:hover { color: var(--fg); }
.nav__item[aria-current="page"] { color: var(--ac); }
.nav__item[aria-current="page"]::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--ac); }
.nav__conta { color: var(--ac); font-weight: 600; }

.periodo { margin-left: auto; display: flex; border: 1px solid var(--borda2); }
.periodo a {
  display: flex; align-items: center; gap: .35em; height: 2.5rem; padding: 0 1.25rem; text-decoration: none; white-space: nowrap;
  font: 500 1rem/1 var(--texto); color: var(--fg2); transition: color 120ms var(--ease), background-color 120ms var(--ease);
}
.periodo a + a { border-left: 1px solid var(--borda2); }
.periodo a:hover { color: var(--fg); }
.periodo a[aria-current="true"] { background: var(--painel); color: var(--fg); box-shadow: inset 0 0 0 1px var(--fg3); }
.periodo a span { color: inherit; }

/* ── Folha ───────────────────────────────────────────── */
.folha { max-width: var(--largura); margin: 0 auto; padding: 1.625rem var(--gutter) .875rem; }
.titulo { margin: 0 0 1.25rem; font: 700 2.875rem/1.1 var(--display); letter-spacing: -.02em; text-wrap: balance; }
.titulo .ponto { color: var(--ac); margin-left: .06em; }
.subtitulo { margin: -10px 0 22px; color: var(--fg2); font-size: 1rem; }
.volta { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 14px; color: var(--fg2); text-decoration: none; font: 500 .8125rem/1 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; }
.volta:hover { color: var(--fg); }
.rotulo { margin: 0; font: 500 .9375rem/1.3 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg2); }

.painel { border: 1px solid var(--borda); background: var(--painel); margin: 0 0 1.125rem; }
.painel__explica { margin-left: .75em; font: 400 .8125rem/1.3 var(--texto); letter-spacing: 0; text-transform: none; color: var(--fg2); }
@media (max-width: 720px) { .painel__explica { display: block; margin: 4px 0 0; } }
.painel__titulo { font-size: 1.0625rem; padding: 1rem 1.25rem .8125rem; border-bottom: 1px solid var(--borda); }
.nota { margin: 0; padding: 14px 20px 16px; border-top: 1px solid var(--borda); color: var(--fg2); font-size: .875rem; }
.nota b { color: var(--fg); font: 500 .875rem var(--mono); font-variant-numeric: tabular-nums; }
.vazio { margin: 0; padding: 22px 20px; color: var(--fg2); }
.nota--topo { border-top: 0; border-bottom: 1px solid var(--borda); }
.nota a { color: var(--ac); text-underline-offset: 3px; }

/* ── O todo ──────────────────────────────────────────── */
.todo { display: grid; grid-template-columns: minmax(19.5rem, 28%) 1fr; min-height: 18.75rem; }
.todo__numeros { display: flex; flex-direction: column; justify-content: flex-start; gap: 2.125rem; padding: 1.875rem 1.5rem 1.5rem; border-right: 1px solid var(--borda); }
.kpi__valor { margin: 6px 0 0; font: 600 2.625rem/1.05 var(--mono); font-variant-numeric: tabular-nums; letter-spacing: -.01em; white-space: nowrap; }
.kpi__valor--ac { color: var(--ac); font-weight: 600; }
.kpi__valor.num--neg { color: var(--neg); }
.kpi__nota { margin: 8px 0 0; font: 400 1.0625rem/1.3 var(--mono); color: var(--fg2); font-variant-numeric: tabular-nums; }
.todo__grafico { position: relative; padding: 1.125rem 1.25rem .5rem 0; min-width: 0; }
.legenda { display: flex; justify-content: flex-end; gap: 30px; margin: 0 0 4px; padding: 0 4px 0 0; list-style: none; font: 500 .8125rem/1 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg2); }
.legenda li { display: flex; align-items: center; gap: 10px; }
.legenda i { width: 1rem; height: 1rem; display: inline-block; }
.legenda__receita { border: 1.5px solid var(--fg2); }
.legenda__margem { background: var(--ac); }

/* Gráfico (SVG de src/app/grafico.ts) */
.gr { display: block; overflow: visible; }
.gr--compacto { display: none; }
.gr--compacto .gr__valor { font-size: 10.5px; }
.gr--compacto .gr__mes { font-size: 12px; }
.gr__grade { stroke: var(--borda); stroke-width: 1; stroke-dasharray: 2 4; }
.gr__grade--zero { stroke: var(--borda2); stroke-dasharray: none; }
.gr__eixo { fill: var(--fg2); font: 400 13px var(--mono); font-variant-numeric: tabular-nums; }
.gr__mes { fill: var(--fg2); font: 500 14px var(--mono); letter-spacing: .12em; }
.gr__valor { fill: var(--fg); font: 500 15px var(--mono); font-variant-numeric: tabular-nums; }
.gr__valor--margem { fill: var(--ac); }
.gr__valor--neg { fill: var(--neg); }
.gr__receita { fill: var(--sup); stroke: var(--fg2); stroke-width: 1.5; }
.gr__margem { fill: var(--ac); }
.gr__margem.gr__neg { fill: var(--neg); }
@media (prefers-reduced-motion: no-preference) {
  .gr rect { transform-box: fill-box; transform-origin: 50% 100%; animation: crescer 900ms var(--ease) both; animation-delay: calc(var(--i, 0) * 70ms + 120ms); }
  .gr rect.gr__neg { transform-origin: 50% 0%; }
  .gr__valor { animation: surgir 500ms var(--ease) both; animation-delay: 650ms; }
}
@keyframes crescer { from { transform: scaleY(0); } }
@keyframes surgir { from { opacity: 0; } }

/* ── Tabelas ─────────────────────────────────────────── */
.rolagem { overflow-x: auto; position: relative; } /* contém o texto só para leitor de tela, que é absoluto */
.tabela { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tabela th, .tabela td { text-align: left; vertical-align: middle; }
.tabela thead th {
  padding: .75rem 1.25rem .6875rem; border-bottom: 1px solid var(--borda); white-space: nowrap;
  font: 500 .9375rem/1.2 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg2);
}
.tabela thead .th--forte { color: var(--fg); font-weight: 600; }
.th__nota { color: var(--fg2); font-size: .75rem; letter-spacing: .06em; text-transform: none; }
.tabela tbody th { padding: .75rem 1.25rem; font: 500 1.25rem/1.25 var(--mono); color: var(--fg); white-space: nowrap; }
.tabela tbody tr + tr > * { border-top: 1px solid var(--borda); }
.cel { padding: .625rem 1.25rem; }
.num { display: inline-flex; align-items: baseline; font: 500 1.375rem/1.2 var(--mono); color: var(--fg); white-space: nowrap; }
.num--neg { color: var(--neg); }
.num--vazio { color: var(--fg2); }
.num--texto { font-size: 1.25rem; font-weight: 400; color: var(--fg); }
.cel--forte .num { font-weight: 600; }
.cel__sub { display: block; white-space: nowrap; margin-top: 3px; font: 500 .8125rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.ast { margin-left: 2px; color: var(--fg2); font-weight: 500; }
.pend { display: inline-block; width: 6px; height: 6px; margin: 0 0 .35em 6px; background: var(--ac); vertical-align: middle; }
.pend--legenda { margin: 0 6px .15em 0; }
.cel--seta { width: 3rem; padding-right: 1.125rem; color: var(--fg2); text-align: right; }
.seta { display: block; margin-left: auto; transition: transform 160ms var(--ease), color 160ms var(--ease); }

.linha { position: relative; }
.linha__link { text-decoration: none; }
.linha__link::after { content: ''; position: absolute; inset: 0; }
.linha__link--seta { display: inline-flex; align-items: center; gap: 6px; }
.linha__link--seta .seta { margin: 0; color: var(--fg2); }
.linha:hover .linha__link--seta .seta { color: var(--ac); }
.linha:hover > *, .linha:focus-within > * { background: var(--sup); }
.linha:hover .seta, .linha:focus-within .seta { transform: translateX(3px); color: var(--ac); }
.linha:focus-within .linha__link { outline: none; }
.linha:has(.linha__link:focus-visible) { outline: 2px solid var(--ac); outline-offset: -2px; }
.linha--total > * { border-top: 2px solid var(--borda2) !important; }
.linha--total th { font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.linha--total .num { color: var(--ac); font-weight: 600; }
.linha--total .num.num--neg { color: var(--neg); }
.linha--alerta .num { color: var(--ac); }

/* Camadas e itens (cliente, empresa): centavos, linhas mais baixas */
.tabela--camadas tbody th, .tabela--itens tbody th { font: 500 1rem/1.3 var(--mono); }
.tabela--camadas .num, .tabela--itens .num { font-size: 1.0625rem; }
.tabela--camadas td, .tabela--itens td { text-align: right; padding: 11px 20px; }
.tabela--camadas thead th:not(:first-child), .tabela--itens thead th:not(:first-child) { text-align: right; }
.tabela__menos th, .tabela__menos .num { color: var(--fg2); }
.tabela__soma > * { border-top: 1px solid var(--borda2) !important; }
.tabela__soma--final > * { background: var(--ac-suave); }
.tabela__soma--final .num { color: var(--ac); font-weight: 600; }
.tabela__soma--final .num.num--neg { color: var(--neg); }
.tabela__soma--final .num.num--vazio, .linha--total .num.num--vazio { color: var(--fg2); }
.tabela__prova th, .tabela__prova .num { color: var(--fg2); font-weight: 400; }
.item__nome { display: block; color: var(--fg); }
.item__sub { display: block; margin-top: 2px; font: 400 .8125rem/1.35 var(--texto); color: var(--fg2); white-space: normal; max-width: 46ch; }

/* ── Cliente ─────────────────────────────────────────── */
.tempo { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 2px; margin: 0 0 18px; padding: 0; list-style: none; }
.tempo__mes { padding: 10px 14px 9px; border-top: 3px solid var(--borda2); background: var(--painel); display: flex; justify-content: space-between; gap: 8px; }
.tempo__nome { font: 500 .8125rem/1.2 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg); }
.tempo__fase { font: 400 .8125rem/1.2 var(--mono); color: var(--fg2); }
.tempo__mes--pre_venda { border-top-style: dashed; }
.tempo__mes--implantacao { border-top-color: var(--ac); border-top-style: dashed; }
.tempo__mes--operacao { border-top-color: var(--ac); }
.blocos { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 18px; margin: 0 0 18px; }
.bloco { border: 1px solid var(--borda); background: var(--painel); padding: 18px 20px; }
.bloco--largo { grid-column: 1 / -1; }
.bloco__valor { margin: 8px 0 6px; font: 500 1.5rem/1.2 var(--mono); font-variant-numeric: tabular-nums; }
.bloco__texto { margin: 0; color: var(--fg2); font-size: .9375rem; max-width: 70ch; }
.pedido { margin: 12px 0 0; max-width: 90ch; }
.pedido b { font-weight: 500; }
.pedido__dono { font: 500 .75rem/1 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--ac); margin-left: 6px; }
.pedido__resolve { color: var(--fg2); }
.pedido__faixa { display: block; margin-top: 4px; font: 500 .9375rem var(--mono); color: var(--fg); }

/* ── Detalhes (estrutura do cliente, linha da empresa) ─ */
.todo--simples { grid-template-columns: 1fr; min-height: 0; }
.todo__numeros--linha { flex-direction: row; flex-wrap: wrap; align-items: flex-start; gap: 24px 72px; border-right: 0; }
.todo__numeros--linha .kpi { max-width: 56ch; }
.grupo-linha > * { border-top: 1px solid var(--borda2) !important; background: var(--sup); }
.grupo-linha th, .grupo-linha .num { font-weight: 600; }
.tabela--conta td, .tabela--conta thead th:not(:first-child) { text-align: right; }

.abre { display: inline-flex; align-items: center; gap: 6px; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.abre:hover { color: var(--fg); }
.abre__seta { color: var(--fg2); transition: transform 160ms var(--ease); }
.abre[aria-expanded="true"] .abre__seta { transform: rotate(180deg); color: var(--ac); }
.tabela__sub > * { background: var(--sup); }
.tabela__sub th { padding-left: 2.25rem !important; font-size: .875rem !important; color: var(--fg2); }
.tabela__sub .num { font-size: .9375rem; color: var(--fg2); }

.caixa { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.caixa__item { padding: 18px 20px; }
.caixa__item + .caixa__item { border-left: 1px solid var(--borda); }
.caixa__item .bloco__valor { margin: 6px 0 4px; }
.dobra > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; }
.dobra > summary::-webkit-details-marker { display: none; }
.dobra > summary::after { content: ''; width: 8px; height: 8px; border-right: 1.5px solid var(--fg2); border-bottom: 1.5px solid var(--fg2); transform: rotate(45deg) translateY(-3px); margin-left: 4px; transition: transform 160ms var(--ease); }
.dobra[open] > summary::after { transform: rotate(225deg) translateY(-1px); border-color: var(--ac); }
.dobra:not([open]) > summary { border-bottom: 0; }
@media (max-width: 720px) { .caixa { grid-template-columns: 1fr; } .caixa__item + .caixa__item { border-left: 0; border-top: 1px solid var(--borda); } }

.linha--abre { cursor: pointer; }
.linha--abre .abre { font-weight: inherit; text-align: left; }
.linha--abre.aberta > * { background: var(--sup); }
.linha__nome .abre { font: 500 1.25rem/1.25 var(--mono); color: var(--fg); }
.linha__ir { display: inline-flex; padding: 6px; margin: -6px; color: var(--fg2); }
.linha__ir:hover { color: var(--ac); }
.tabela__sub--pct .num { color: var(--fg2); }
.tabela__sub th { white-space: normal !important; max-width: 30rem; }
.tabela__sub th .th__nota { display: block; margin-top: 2px; letter-spacing: 0; }
.tabela--camadas thead th { white-space: nowrap; }
.todo__numeros--linha { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 24px 40px; }
.todo__numeros--linha .kpi { max-width: none; }
.tabela__sub th .ast { margin-left: 1px; }

.todo--compacto .todo__numeros { gap: 1.375rem; padding: 1.5rem; justify-content: center; }
.todo--compacto .kpi__valor { font-size: 1.875rem; }
.todo--compacto .kpi__nota { font-size: .875rem; }
.todo--compacto .todo__grafico { display: flex; flex-direction: column; justify-content: center; }
.todo--compacto .legenda { margin-bottom: .75rem; }
.coluna__link { text-decoration: none; color: inherit; border-bottom: 1px dotted var(--fg3); }
.coluna__link:hover { color: var(--ac); border-bottom-color: var(--ac); }
.tabela--clientes thead th { text-transform: none; letter-spacing: .02em; }

/* ── Para decidir ────────────────────────────────────── */
.decisao { padding: 18px 20px; border-bottom: 1px solid var(--borda); }
.decisao__id { margin: 0 0 4px; font: 500 .8125rem var(--mono); letter-spacing: .08em; color: var(--ac); }
.decisao__titulo { margin: 0 0 6px; font: 700 1.25rem/1.3 var(--display); }
.decisao__motivo { margin: 0 0 8px; color: var(--fg2); max-width: 90ch; }
.decisao__efeito { margin: 0; font: 400 .875rem/1.5 var(--mono); }
.frase { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 6px 16px; padding: 18px 20px; background: var(--ac-suave); }
.frase__texto { grid-column: 1; margin: 0; font: 500 1.0625rem var(--mono); }
.frase__copiar { grid-column: 2; grid-row: 1 / 3; height: 40px; padding: 0 18px; border: 1px solid var(--ac); background: transparent; color: var(--ac); font: 500 .875rem var(--mono); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.frase__copiar:hover { background: var(--ac); color: var(--ac-fg); }
.grupo { padding: 6px 20px 18px; border-bottom: 1px solid var(--borda); }
.grupo:last-child { border-bottom: 0; }
.grupo__dono { margin: 14px 0 6px; font: 500 .875rem var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--ac); }
.pedido-cartao { padding: 10px 0; }
.pedido-cartao + .pedido-cartao { border-top: 1px solid var(--borda); }
.pedido-cartao__titulo { margin: 0 0 2px; font: 600 1rem/1.4 var(--texto); }
.pedido-cartao__resolve { margin: 0; color: var(--fg2); max-width: 90ch; }
.pedido-cartao__faixa { margin: 4px 0 0; font: 500 .9375rem var(--mono); }

/* ── Rodapé ──────────────────────────────────────────── */
.rodape { max-width: var(--largura); margin: 0 auto; padding: 0 var(--gutter) 36px; }
.rodape p { margin: 0 0 4px; font: 400 .8125rem/1.5 var(--mono); color: var(--fg2); }

/* ── Telas menores ───────────────────────────────────── */
@media (max-width: 1100px) {
  .barra__dentro { gap: 24px; }
  .todo { grid-template-columns: 1fr; }
  .todo__numeros { flex-direction: row; flex-wrap: wrap; gap: 24px 48px; border-right: 0; border-bottom: 1px solid var(--borda); }
}
@media (max-width: 720px) {
  .barra__dentro { height: auto; flex-wrap: wrap; row-gap: 0; padding-top: 12px; }
  .marca { font-size: 1.375rem; }
  .periodo { margin-left: auto; }
  .periodo a { height: 32px; padding: 0 10px; font-size: .8125rem; }
  .periodo a span { display: none; }
  .nav { order: 3; width: 100%; height: 44px; gap: 22px; overflow-x: auto; }
  .nav__item { font-size: .8125rem; }
  .titulo { font-size: 1.875rem; }
  .kpi__valor { font-size: 2rem; }
  .legenda { flex-direction: column; align-items: flex-start; gap: 8px; padding-left: 12px; }
  .legenda li { white-space: nowrap; }
  .todo__grafico { padding: 14px 8px 6px; }
  .gr--largo { display: none; }
  .gr--compacto { display: block; }
  /* Tabelas em grade: o nome e o total do período na primeira linha, os meses embaixo; nada rola para o lado. */
  .tabela--grade thead { display: none; }
  .tabela--grade, .tabela--grade tbody { display: block; }
  .tabela--grade tr { display: grid; grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); column-gap: 10px; padding: 12px 14px; }
  .tabela--grade tr[hidden] { display: none; } /* a linha filha fica fechada até tocar na mãe */
  .tabela--grade tr > * { padding: 0 !important; border: 0 !important; background: none !important; text-align: left !important; }
  .tabela--grade tbody tr + tr { border-top: 1px solid var(--borda); }
  .tabela--grade tr.linha--total, .tabela--grade tr.tabela__soma { border-top: 2px solid var(--borda2); }
  .tabela--grade tr.tabela__soma--final { background: var(--ac-suave); }
  .tabela--grade tr > th { grid-column: 1 / -2; grid-row: 1; align-self: center; font-size: 1rem; white-space: normal; }
  .tabela--grade tr > .cel--forte { grid-column: -2 / -1; grid-row: 1; text-align: right !important; }
  .tabela--grade tr > .cel:not(.cel--forte):not(.cel--seta) { grid-row: 2; margin-top: 8px; }
  .tabela--grade .cel--seta { display: none; }
  /* Abrir a linha: o toque alcança 44 px de altura sem mudar a altura da linha. */
  .abre { position: relative; }
  .abre::before { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: max(100%, 44px); transform: translateY(-50%); }
  .tabela--grade [data-mes]::before { content: attr(data-mes); display: block; margin-bottom: 2px; font: 500 .6875rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
  .tabela--grade .num { font-size: 1rem; }
  .tabela--grade .cel--forte .num { font-size: 1.125rem; }
  .tabela--grade .cel--forte .num--texto { font-size: .875rem; white-space: nowrap; }
  .tabela--grade .item__sub { max-width: none; }
  .linha:hover > *, .linha:focus-within > * { background: none; }
  .linha:hover, .linha:focus-within { background: var(--sup); }
  .cel__sub { font-size: .6875rem; letter-spacing: .06em; }
  .tempo__mes { flex-direction: column; gap: 2px; padding: 8px 10px; }
  .tempo__fase { font-size: .75rem; }
  .titulo { overflow-wrap: anywhere; }
}
/* Clientes do Início: 3 colunas no lugar das --n da grade. Vem depois de .tabela--grade tr, que tem o mesmo peso e senão vence. */
@media (max-width: 720px) {
  .tabela--clientes tr { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 8px; }
  .tabela--clientes tr > th { grid-column: 1 / 3 !important; }
  .tabela--clientes tr > .cel--forte { grid-column: 3 / 4 !important; grid-row: 1 !important; }
  .tabela--clientes tr > .cel:not(.cel--forte):not(.cel--seta) { grid-row: auto !important; margin-top: 0 !important; }
}

/* Ações do app: entrar, quem está na barra, efeito da mudança, aprovar, rejeitar e responder. Servido depois de app.css,
   com os mesmos tokens: um acento só (âmbar), vermelho só no destrutivo e no negativo, quadrado, borda no lugar de sombra. */

/* ── Barra: quem entrou ─────────────────────────────── */
.barra__fim { margin-left: auto; display: flex; align-items: center; gap: 20px; }
.barra__fim .periodo { margin-left: 0; }
.quem { display: flex; align-items: center; gap: 12px; font: 500 .75rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.quem__nome { color: var(--fg); }
.quem__link { color: var(--fg2); text-decoration: none; padding: 6px 0; }
.quem__link:hover { color: var(--ac); }

/* ── Botões ─────────────────────────────────────────── */
.botao {
  height: 40px; padding: 0 18px; border: 1px solid var(--ac); border-radius: 0; background: transparent; color: var(--ac);
  font: 500 .875rem var(--mono); letter-spacing: .08em; text-transform: uppercase; cursor: pointer;
  transition: background-color 120ms var(--ease), color 120ms var(--ease);
}
.botao:hover { background: var(--ac); color: var(--ac-fg); }
.botao--perigo { border-color: var(--neg); color: var(--neg); }
.botao--perigo:hover { background: var(--neg); color: var(--fg); }
.botao--neutro { border-color: var(--borda2); color: var(--fg); }
.botao--neutro:hover { background: var(--sup2); color: var(--fg); }
/* O principal da tela, em âmbar sólido: Entrar com Google, Criar senha (aprovado pelo Pedro em 16/10). */
.botao--primario { border-color: var(--ac); background: var(--ac); color: var(--ac-fg); font-weight: 600; }
.botao--primario:hover { border-color: var(--ac-hover); background: var(--ac-hover); color: var(--ac-fg); }
.botao:focus-visible { outline: 2px solid var(--ac); outline-offset: 3px; }
.botao--largo { width: 100%; }

/* ── Formulário de ação ─────────────────────────────── */
.acao { display: grid; gap: 8px; margin-top: 14px; max-width: 72ch; }
.acao__rotulo { font: 500 .8125rem/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.acao__rotulo span { margin-left: .5em; font: 400 .8125rem var(--texto); letter-spacing: 0; text-transform: none; }
.acao__texto, .campo {
  width: 100%; border: 1px solid var(--borda2); border-radius: 0; background: var(--bg); color: var(--fg);
  font: 400 .9375rem/1.5 var(--texto); padding: 10px 12px; resize: vertical;
}
.acao__texto:hover, .campo:hover { border-color: var(--fg3); }
.acao__texto:focus-visible, .campo:focus-visible { outline: 2px solid var(--ac); outline-offset: 0; border-color: transparent; }
.acao__botoes { display: flex; flex-wrap: wrap; gap: 10px; }
.acao__nota { margin: 12px 0 0; color: var(--fg2); font-size: .875rem; max-width: 90ch; }
.acao__nota a, .subtitulo a { color: var(--ac); text-underline-offset: 3px; }

/* ── Aviso depois da ação ───────────────────────────── */
.aviso { margin: 0 0 1.125rem; padding: 12px 16px; border: 1px solid var(--borda2); border-left-width: 3px; font-size: .9375rem; max-width: 90ch; }
.aviso--ok { border-left-color: var(--ac); }
.aviso--erro { border-left-color: var(--neg); }
.decisao .aviso { margin: 10px 0; }
.decisao--nova { border-left: 3px solid var(--ac); padding-left: 17px; }

/* ── Efeito da mudança ──────────────────────────────── */
.efeito { width: 100%; max-width: 64rem; margin-top: 12px; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.efeito th, .efeito td { padding: 6px 12px; border-bottom: 1px solid var(--borda); text-align: right; white-space: nowrap; }
.efeito thead th { font: 500 .75rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.efeito th:first-child { text-align: left; padding-left: 0; white-space: normal; }
.efeito tbody th { font-weight: 400; }
.efeito__onde { font: 500 .9375rem var(--mono); }
.efeito__sub { display: block; font: 400 .8125rem/1.4 var(--texto); color: var(--fg2); }
.efeito .num { font: 500 .9375rem var(--mono); }
.efeito .num--neg { color: var(--neg); }
.efeito .num--vazio { color: var(--fg2); }
.efeito__vazio { margin: 10px 0 0; color: var(--fg2); }
.efeito__mais { margin-top: 10px; }
.efeito__mais summary { cursor: pointer; font: 500 .8125rem var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--fg2); }
.efeito__mais summary:hover { color: var(--fg); }

/* ── Bloco do caixa (ler-inter --separar): três números, lista por fornecedor fechada, fora e transferências ─────
   Só no cartão de uma mudança que traz o resumo do caixa; os outros cartões não mudam. */
.lote { max-width: 64rem; margin-top: 14px; }
.lote__numeros { display: flex; flex-wrap: wrap; gap: 10px 48px; margin: 0 0 14px; }
.lote__numero { display: grid; gap: 4px; }
.lote__numero dt { font: 500 .75rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.lote__numero dd { margin: 0; }
.lote__numero .num { font: 500 1.375rem/1.2 var(--mono); font-variant-numeric: tabular-nums; }
.lote__lista { border-top: 1px solid var(--borda); }
.lote__item { border-bottom: 1px solid var(--borda); }
.lote__item > summary {
  display: grid; grid-template-columns: minmax(0, 1fr) auto 14px; gap: 2px 16px; align-items: baseline; padding: 8px 0;
  list-style: none; cursor: pointer;
}
.lote__item > summary::-webkit-details-marker { display: none; }
.lote__item > summary::after {
  content: ''; grid-column: 3; grid-row: 1; width: 7px; height: 7px; margin-bottom: 3px; border-right: 1.5px solid var(--fg2); border-bottom: 1.5px solid var(--fg2);
  transform: rotate(45deg);
}
.lote__item[open] > summary::after { transform: rotate(225deg); border-color: var(--ac); }
.lote__item > summary:hover .lote__quem { color: var(--ac); }
.lote__item > summary:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }
.lote__quem { grid-column: 1; font: 500 .9375rem/1.35 var(--mono); }
.lote__item--secao .lote__quem { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.lote__sub { grid-column: 1; font: 400 .8125rem/1.4 var(--texto); color: var(--fg2); }
.lote__valor { grid-column: 2; grid-row: 1; text-align: right; white-space: nowrap; }
.lote__valor .num { font: 500 .9375rem var(--mono); font-variant-numeric: tabular-nums; }
.lote__linhas { margin: 0 0 10px; padding: 0; list-style: none; background: var(--sup); }
.lote__linha { display: grid; grid-template-columns: 4.5em minmax(0, 1fr) auto; gap: 2px 16px; align-items: baseline; padding: 6px 12px; font: 400 .8125rem/1.45 var(--texto); }
.lote__linha + .lote__linha { border-top: 1px solid var(--borda); }
.lote__data { font: 400 .8125rem var(--mono); color: var(--fg2); font-variant-numeric: tabular-nums; }
.lote__desc { min-width: 0; overflow-wrap: anywhere; }
.lote__porque { display: block; color: var(--fg2); }
.lote__v { text-align: right; white-space: nowrap; }
.lote__v .num { font: 500 .8125rem var(--mono); font-variant-numeric: tabular-nums; }
.lote__iof { display: block; font: 400 .8125rem var(--mono); color: var(--fg2); }
.lote__nota { margin: 10px 0 0; color: var(--fg2); font-size: .875rem; max-width: 90ch; }

/* ── Resposta a pedido ──────────────────────────────── */
.resposta { margin: 8px 0 0; padding: 8px 12px; border-left: 2px solid var(--ac); background: var(--sup); max-width: 90ch; font-size: .9375rem; }
.resposta__quem { font: 500 .8125rem var(--mono); color: var(--fg2); }
.acao--pedido { margin-top: 10px; }

/* ── Entrar ─────────────────────────────────────────── */
.entrar, .entrar__senha { display: grid; gap: 14px; }
.entrar { max-width: 26rem; padding: 20px; }
.entrar .acao__rotulo { display: block; margin-bottom: 6px; }
.entrar .aviso { margin: 0; }
/* Entrar com Google: o botão principal, de 52 px, com o "G" nas cores do Google (a marca dele) num quadrado claro, onde as
   quatro cores aparecem; sobre o âmbar, o amarelo do G sumiria. */
.botao--google { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-height: 52px; text-decoration: none; }
.botao__selo { flex: none; display: grid; place-items: center; width: 28px; height: 28px; background: var(--fg); }
.botao__marca { flex: none; display: block; }
/* "ou com senha": um traço fino de cada lado. */
.entrar__ou { display: flex; align-items: center; gap: 12px; margin: 2px 0; font: 500 .75rem/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
.entrar__ou::before, .entrar__ou::after { content: ''; flex: 1; border-top: 1px solid var(--borda); }

@media (max-width: 720px) {
  .barra__fim { gap: 12px; }
  .quem { gap: 10px; font-size: .6875rem; }
  .efeito thead { display: none; }
  .efeito, .efeito tbody { display: block; }
  .efeito tr { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--borda); }
  .efeito th, .efeito td { padding: 0; border: 0; text-align: left; }
  .efeito tbody th { grid-column: 1 / -1; margin-bottom: 4px; }
  .efeito td::before { content: attr(data-rotulo); display: block; font: 500 .6875rem/1.2 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
  .acao__botoes .botao { flex: 1 1 auto; }
  .botao { min-height: 48px; }
  /* 16 px: abaixo disso o iPhone amplia a página ao tocar no campo e não volta sozinho. */
  .acao__texto, .campo { font-size: 16px; }
  .quem__link { display: inline-flex; align-items: center; justify-content: flex-end; min-width: 44px; min-height: 44px; padding: 0; }
}

/* Responder: o formulário fica dobrado até a pessoa abrir. */
.responder { margin-top: 10px; }
.responder > summary { display: inline-flex; align-items: center; list-style: none; }
.responder > summary::-webkit-details-marker { display: none; }
.responder[open] > summary { color: var(--fg2); border-color: var(--borda); }

/* ── Acompanhamento (src/app/acompanhamento.ts) ─────── */
.entrar a.botao { display: flex; align-items: center; justify-content: center; text-decoration: none; }
.entrar .acao__nota { margin: 0; }
.acompanhamento__sair { margin-top: 24px; }
.acompanhamento__projeto .painel__titulo { margin: 0; }
.acompanhamento__projeto a { color: var(--ac); text-underline-offset: 3px; }

/* O filtro de datas da barra e os atalhos de período (src/app/layout.ts). Servido depois de app.css e acoes.css, com os
   mesmos tokens: quadrado, borda no lugar de sombra, mono nos rótulos; o período escolhido ganha fundo painel e anel interno,
   como o seletor que ele substituiu. Sem âmbar: o acento fica para o resultado e para a aba atual. */

/* ── Filtro: De, Até, Aplicar ───────────────────────── */
.filtro { margin-left: auto; display: flex; align-items: stretch; height: 2.5rem; border: 1px solid var(--borda2); background: var(--bg); }
.barra__fim .filtro { margin-left: 0; }
.filtro__campo { display: flex; align-items: center; gap: 8px; padding: 0 4px 0 12px; cursor: text; }
.filtro__campo + .filtro__campo { border-left: 1px solid var(--borda2); }
.filtro__campo:hover { background: var(--sup); }
.filtro__rotulo { font: 500 .75rem/1 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg2); }
.filtro__data {
  height: 100%; min-width: 0; border: 0; border-radius: 0; background: transparent; color: var(--fg); color-scheme: dark;
  font: 500 .9375rem/1 var(--mono); font-variant-numeric: tabular-nums; padding: 0 4px;
}
.filtro__data:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
.filtro__data::-webkit-calendar-picker-indicator { opacity: .55; cursor: pointer; }
.filtro__data::-webkit-calendar-picker-indicator:hover { opacity: 1; }
.filtro__aplicar {
  border: 0; border-left: 1px solid var(--borda2); border-radius: 0; background: transparent; color: var(--fg); padding: 0 16px; cursor: pointer;
  font: 500 .8125rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase;
  transition: background-color 120ms var(--ease), color 120ms var(--ease);
}
.filtro__aplicar:hover { background: var(--sup2); }
.filtro__aplicar:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }

/* ── Atalhos: uma linha embaixo da barra ────────────── */
.atalhos { border-top: 1px solid var(--borda); }
.atalhos__dentro { max-width: var(--largura); margin: 0 auto; padding: 0 var(--gutter); display: flex; align-items: center; justify-content: flex-end; gap: 2px; height: 2.375rem; }
.atalhos__item {
  display: inline-flex; align-items: center; height: 1.75rem; padding: 0 10px; white-space: nowrap; text-decoration: none;
  font: 500 .75rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--fg2);
  transition: color 120ms var(--ease), background-color 120ms var(--ease);
}
.atalhos__item:hover { color: var(--fg); }
.atalhos__item[aria-current="true"] { background: var(--painel); color: var(--fg); box-shadow: inset 0 0 0 1px var(--fg3); }
/* Os meses fechados, um a um, depois de um traço. */
.atalhos__traco { flex: none; width: 1px; height: 1rem; margin: 0 8px; background: var(--borda2); }

@media (max-width: 720px) {
  /* A barra fica alta com o filtro e os atalhos: no celular ela rola com a página. */
  .barra { position: static; }
  .barra__fim { display: contents; }
  .quem { margin-left: auto; }
  .filtro { order: 4; width: 100%; margin: 4px 0 10px; height: 3.25rem; }
  /* O rótulo em cima da data: a data em 16 px (abaixo disso o iPhone amplia a página) cabe a 360 px. */
  .filtro__campo { flex: 1 1 0; min-width: 0; flex-direction: column; align-items: stretch; justify-content: center; gap: 3px; padding: 0 2px 0 10px; }
  .filtro__rotulo { font-size: .6875rem; letter-spacing: .08em; }
  .filtro__data { flex: none; height: auto; width: 100%; min-width: 0; padding: 0; font-size: 16px; }
  .filtro__data::-webkit-calendar-picker-indicator { display: none; } /* no celular, tocar na data abre o calendário */
  .filtro__aplicar { flex: none; padding: 0 12px; font-size: .75rem; }
  /* Os atalhos quebram em duas linhas: nada rola para o lado. */
  .atalhos__dentro { justify-content: flex-start; flex-wrap: wrap; height: auto; padding: 6px calc(var(--gutter) - 8px); row-gap: 4px; }
  .atalhos__item { height: 2.75rem; min-width: 2.75rem; justify-content: center; padding: 0 8px; }
}

/* Menu lateral recolhível (src/app/layout.ts). Servido por último em /estilo.css, com os tokens de app.css.
   Desktop (≥ 1100px): o menu fica à esquerda, expandido (232px) ou recolhido (64px, só ícones, com dica), conforme
   <html data-menu>; a barra do período fica no alto da coluna principal. Abaixo de 1100px: uma barra fina no topo (menu,
   marca, quem entrou), o período logo embaixo, e o menu vira gaveta sobre a página (<html data-gaveta>).
   Quadrado, borda no lugar de sombra; o âmbar marca a seção atual (texto e traço de 2px na borda esquerda) e o foco. */

:root { --lateral: 232px; --lateral-recolhido: 64px; --topo: 3.5rem; }

/* ── Pular para o conteúdo ──────────────────────────── */
.pular {
  position: absolute; left: 8px; top: 8px; z-index: 60; padding: 10px 14px; background: var(--ac); color: var(--ac-fg);
  font: 500 .8125rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; text-decoration: none;
  transform: translateY(calc(-100% - 16px));
}
.pular:focus { transform: none; }
.pular:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
.folha:focus { outline: none; }

/* ── Casca: menu à esquerda, coluna principal ───────── */
.casca { display: flex; align-items: flex-start; min-height: 100vh; }
.principal { flex: 1 1 auto; min-width: 0; }
.icone { flex: none; display: block; }

/* ── Menu lateral ───────────────────────────────────── */
.lateral {
  position: sticky; top: 0; z-index: 20; flex: none; width: var(--lateral); height: 100vh; height: 100dvh;
  display: flex; flex-direction: column; background: var(--bg); border-right: 1px solid var(--borda); overflow-x: clip;
}
.lateral__topo {
  flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  height: calc(4rem + 1px); padding: 0 12px 0 22px; border-bottom: 1px solid var(--borda);
}
.lateral__botao, .topo__menu {
  position: relative; flex: none; display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0;
  border: 0; border-radius: 0; background: none; color: var(--fg2); cursor: pointer;
  transition: color 120ms var(--ease), background-color 120ms var(--ease);
}
.lateral__botao:hover, .topo__menu:hover { color: var(--fg); background: var(--sup); }
.lateral__botao:focus-visible, .topo__menu:focus-visible { outline: 2px solid var(--ac); outline-offset: 0; }
.lateral__fechar { display: none; }

.lateral__nav { display: flex; flex-direction: column; gap: 2px; padding: 14px 0; }
.lateral__item {
  position: relative; display: flex; align-items: center; gap: 14px; height: 2.75rem; padding: 0 16px 0 22px;
  white-space: nowrap; text-decoration: none; color: var(--fg2);
  font: 500 .9375rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase;
  transition: color 120ms var(--ease), background-color 120ms var(--ease);
}
.lateral__item:hover { color: var(--fg); background: var(--sup); }
.lateral__item:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
.lateral__item[aria-current="page"] { color: var(--ac); }
.lateral__item[aria-current="page"]::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: var(--ac); }
.lateral__conta { margin-left: auto; color: var(--ac); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: 0; }

/* Quem entrou, no pé do menu: inicial em quadrado, nome, sair. */
.lateral__fim { margin-top: auto; padding: 10px 0; border-top: 1px solid var(--borda); }
.lateral__quem {
  display: flex; align-items: center; gap: 12px; min-height: 2.75rem; padding: 0 10px 0 20px; white-space: nowrap;
  font: 500 .75rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase;
}
.lateral__inicial {
  flex: none; display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid var(--borda2);
  font: 600 .75rem/1 var(--mono); letter-spacing: 0; color: var(--fg);
}
.lateral__nome { min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--fg); }
.lateral__sair {
  position: relative; margin-left: auto; display: flex; align-items: center; gap: 8px; padding: 8px 10px; text-decoration: none;
  color: var(--fg2); transition: color 120ms var(--ease);
}
.lateral__sair .icone { width: 16px; height: 16px; }
.lateral__sair:hover { color: var(--ac); }
.lateral__sair:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
.lateral__entrar { font-size: .8125rem; letter-spacing: .08em; }

/* ── Barra do período, no alto da coluna principal ──── */
.periodo-barra { position: sticky; top: 0; z-index: 10; background: var(--bg); border-bottom: 1px solid var(--borda); }
.periodo-barra__dentro {
  max-width: var(--largura); margin: 0 auto; min-height: 4rem; padding: .75rem var(--gutter);
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem;
}
.periodo-barra .filtro { margin: 0; flex: none; }
.periodo-barra .atalhos { border-top: 0; min-width: 0; }
.periodo-barra .atalhos__dentro { max-width: none; margin: 0; padding: 0; height: auto; justify-content: flex-start; flex-wrap: wrap; row-gap: 4px; }

/* ── Barra fina do topo: só abaixo de 1100px ────────── */
.topo { display: none; }
.lateral__fundo { display: none; }

/* ── Desktop: recolhido ─────────────────────────────── */
@media (min-width: 1100px) {
  html[data-menu="recolhido"] .lateral { width: var(--lateral-recolhido); overflow: visible; }
  html[data-menu="recolhido"] .lateral__texto {
    position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
  }
  html[data-menu="recolhido"] .lateral__topo { justify-content: center; padding: 0; }
  html[data-menu="recolhido"] .lateral__topo .marca { display: none; }
  html[data-menu="recolhido"] .lateral__conta {
    position: absolute; top: 5px; left: 36px; display: grid; place-items: center; min-width: 16px; height: 16px; padding: 0 3px;
    background: var(--ac); color: var(--ac-fg); font: 600 .6875rem/1 var(--mono);
  }
  html[data-menu="recolhido"] .lateral__quem { flex-direction: column; gap: 4px; padding: 4px 0; }
  html[data-menu="recolhido"] .lateral__sair { margin: 0; padding: 8px; }
  /* A dica: o nome do item ao lado do ícone, no hover e no foco. */
  html[data-menu="recolhido"] .lateral [data-dica]:hover::after,
  html[data-menu="recolhido"] .lateral [data-dica]:focus-visible::after {
    content: attr(data-dica); position: absolute; left: calc(100% + 8px); top: 50%; transform: translateY(-50%); z-index: 30;
    padding: 7px 10px; background: var(--sup2); border: 1px solid var(--borda2); color: var(--fg); pointer-events: none;
    font: 500 .75rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; white-space: nowrap;
  }
  html[data-menu="recolhido"] .lateral__item[data-dica]:hover::after,
  html[data-menu="recolhido"] .lateral__item[data-dica]:focus-visible::after { left: calc(100% + 4px); }
}
@media (min-width: 1100px) and (prefers-reduced-motion: no-preference) {
  .lateral { transition: width 180ms var(--ease); }
}

/* ── Tablet e celular: barra fina e gaveta ──────────── */
@media (max-width: 1099.98px) {
  .topo {
    position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 10px; height: var(--topo);
    padding: 0 var(--gutter) 0 max(4px, calc(var(--gutter) - 8px)); background: var(--bg); border-bottom: 1px solid var(--borda);
  }
  .topo .marca { font-size: 1.375rem; }
  .topo .quem { margin-left: auto; }
  .casca { display: block; min-height: 0; }
  .periodo-barra { top: var(--topo); }

  .lateral {
    position: fixed; top: 0; bottom: 0; left: 0; z-index: 40; width: min(300px, 86vw); height: auto;
    overflow-y: auto; transform: translateX(-100%); visibility: hidden;
  }
  html[data-gaveta] .lateral { transform: none; visibility: visible; }
  html[data-gaveta] .lateral__fundo { display: block; position: fixed; inset: 0; z-index: 35; background: rgba(12, 12, 14, .72); }
  html[data-gaveta] body { overflow: hidden; }
  .lateral__topo { height: var(--topo); padding: 0 12px 0 22px; }
  .lateral__recolher { display: none; }
  .lateral__fechar { display: inline-grid; }
  .lateral__fim { display: none; } /* quem entrou já está na barra do topo */

  /* Sem script, o menu fica na página, em linha, embaixo da barra. */
  html:not([data-js]) .topo__menu { display: none; }
  html:not([data-js]) .lateral { position: static; width: auto; transform: none; visibility: visible; border-right: 0; border-bottom: 1px solid var(--borda); }
  html:not([data-js]) .lateral__topo { display: none; }
  html:not([data-js]) .lateral__nav { flex-direction: row; overflow-x: auto; padding: 0; }
}
@media (max-width: 1099.98px) and (prefers-reduced-motion: no-preference) {
  .lateral { transition: transform 200ms var(--ease), visibility 0s linear 200ms; }
  html[data-gaveta] .lateral { transition: transform 200ms var(--ease), visibility 0s; }
}
@media (max-width: 720px) {
  /* No celular a barra do período rola com a página (é alta com o filtro e os atalhos); a do topo fica. */
  .periodo-barra { position: static; }
  .periodo-barra__dentro { min-height: 0; padding: 10px var(--gutter) 8px; gap: 6px; }
  .periodo-barra .filtro { order: 0; width: 100%; }
  .periodo-barra .atalhos { width: 100%; }
  .periodo-barra .atalhos__dentro { margin: 0 -8px; padding: 0; }
  /* 44 px de toque; a margem negativa deixa o ícone onde estava. */
  .topo__menu { width: 2.75rem; height: 2.75rem; margin-left: -4px; }
  .volta { min-height: 2.75rem; margin: -.75rem 0 .25rem; }
}

/* O celular (até 720px), no desenho aprovado pelo Pedro em 16/10 (copias/app-teste/celular/proposta-final.md). Servido por
   último em /estilo.css, depois de menu.css, com os mesmos tokens. Acima de 720px nada daqui aparece: só a primeira seção vale
   ali, e ela esconde o que é do celular. A exceção é Entrar e convite, que mudam em toda largura.
   A casca: barra de cima fixa (marca, o botão do período com as datas, Entrar ou a inicial de quem entrou), barra de baixo
   fixa (Início, Empresa, Decidir com a contagem, Projetos), o menu lateral some. Período e conta abrem folhas de baixo para cima pelo
   popover nativo, sem script; sem popover (iOS abaixo de 17), voltam a barra do período e o "Sair" de sempre.
   A tela respeita o recorte e a barra de início do iPhone (viewport-fit=cover em layout.ts). */

/* ── Fora do celular: o que só existe nele ──────────── */
.topo__periodo, .topo__conta, .abas, .rodape__celular { display: none; }
@supports not selector(:popover-open) { .folha-baixo { display: none; } }

/* ── Entrar e convite: só a marca, em toda largura ──── */
.simples { max-width: calc(28rem + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter) 3rem; }
.simples__topo { display: flex; align-items: center; height: 4rem; }
.simples__topo .marca { padding-block: calc((44px - 1em) / 2); }
.simples__folha { max-width: none; padding: clamp(1.5rem, 8vh, 4.5rem) 0 0; }
.simples .entrar { max-width: none; }
.simples .subtitulo { margin-top: -6px; }
.entrar__ir { display: flex; align-items: center; justify-content: center; margin-top: 4px; text-decoration: none; }

@media (max-width: 720px) {
  :root {
    --abas: 60px;
    --topo: calc(52px + env(safe-area-inset-top, 0px));
    --gutter: max(16px, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
  }
  html { -webkit-tap-highlight-color: transparent; }
  body.app:not(.app--simples) { padding-bottom: calc(var(--abas) + env(safe-area-inset-bottom, 0px)); }

  /* ── Barra de cima: marca, período, quem ──────────── */
  .topo { gap: 8px; padding: env(safe-area-inset-top, 0px) var(--gutter) 0 max(6px, calc(var(--gutter) - 10px)); }
  .topo__menu, .lateral, .lateral__fundo { display: none !important; }
  .topo .marca { padding: calc((44px - 1em) / 2) 10px; } /* 44 px de altura com a letra de qualquer tamanho */
  .topo .quem { margin-left: auto; font-size: .8125rem; }
  .topo .quem__link { color: var(--fg); }
  .topo__periodo + .quem { margin-left: 0; }
  .topo__periodo {
    margin-left: auto; min-width: 0; align-items: center; gap: 10px; height: 44px; padding: 0 12px;
    border: 1px solid var(--borda2); border-radius: 0; background: var(--painel); color: var(--fg); cursor: pointer;
    font: 500 .875rem/1 var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap;
    transition: background-color 120ms var(--ease);
  }
  .topo__datas { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .topo__chevron { flex: none; display: block; color: var(--fg2); }
  .topo__periodo:active { background: var(--sup2); }
  .topo__periodo:focus-visible, .topo__conta:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .topo__conta {
    flex: none; place-items: center; width: 44px; height: 44px; margin-right: -8px; padding: 0;
    border: 0; border-radius: 0; background: none; color: var(--fg); cursor: pointer;
  }
  .topo__conta span { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid var(--borda2); font: 600 .8125rem/1 var(--mono); }
  .topo__conta:active span { background: var(--sup2); }

  /* Com popover: o botão do período no lugar da barra, e a inicial no lugar do nome e Sair. Sem ele, fica tudo como era. */
  @supports selector(:popover-open) {
    .topo__periodo { display: inline-flex; }
    .topo__conta { display: grid; }
    .topo:has(.topo__conta) .quem { display: none; }
    .periodo-barra { display: none; }
  }

  /* ── Barra de baixo: Início, Empresa, Decidir, Projetos (o Acompanhamento, desde 23/10) ── */
  .abas {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    padding: 0 env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
    background: var(--bg); border-top: 1px solid var(--borda);
  }
  .abas__item {
    position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; height: var(--abas);
    color: var(--fg2); text-decoration: none; font: 500 .75rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase;
  }
  .abas__icone { width: 22px; height: 22px; }
  .abas__item:active { background: var(--sup); }
  .abas__item:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .abas__item[aria-current="page"] { color: var(--ac); }
  .abas__item[aria-current="page"]::before { content: ''; position: absolute; top: -1px; left: 26%; right: 26%; height: 2px; background: var(--ac); }
  .abas__conta {
    position: absolute; top: 6px; left: calc(50% + 7px); min-width: 18px; height: 18px; padding: 0 4px; display: grid; place-items: center;
    background: var(--ac); color: var(--ac-fg); font: 600 .75rem/1 var(--mono); letter-spacing: 0;
  }
  /* Com o teclado aberto, a barra de baixo sai do caminho. */
  body:has(:is(input:not([type="radio"]):not([type="checkbox"]):not([type="hidden"]), textarea, select):focus) .abas { display: none; }

  /* ── Folha de baixo para cima (período, conta) ────── */
  .folha-baixo[popover] {
    inset: auto 0 0 0; margin: 0; width: 100%; max-width: none; max-height: min(88dvh, 640px); overflow-y: auto; overscroll-behavior: contain;
    padding: 6px var(--gutter) calc(18px + env(safe-area-inset-bottom, 0px)); border: 0; border-top: 1px solid var(--borda2);
    background: var(--painel); color: var(--fg);
  }
  .folha-baixo::backdrop { background: rgba(12, 12, 14, .72); }
  html:has(.folha-baixo:popover-open) { overflow: hidden; }
  .folha-baixo__alca { width: 36px; height: 4px; margin: 4px auto 6px; background: var(--borda2); }
  .folha-baixo__cab { display: flex; align-items: center; justify-content: space-between; min-height: 44px; }
  .folha-baixo__titulo { margin: 0; font: 700 1.25rem/1.2 var(--display); letter-spacing: -.01em; }
  .folha-baixo__fechar {
    display: grid; place-items: center; width: 44px; height: 44px; margin-right: -12px; padding: 0;
    border: 0; border-radius: 0; background: none; color: var(--fg2); cursor: pointer;
  }
  .folha-baixo__fechar .icone { width: 22px; height: 22px; }
  .folha-baixo__fechar:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .folha-baixo__texto { margin: 0 0 14px; color: var(--fg2); font-size: .9375rem; line-height: 1.5; text-wrap: pretty; }
  .folha-baixo__texto b { color: var(--fg); font-weight: 500; }
  .folha-baixo__rotulo { margin: 0; font: 500 .75rem/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
  .folha-baixo__secao { margin: 18px 0 8px; }
  .folha-baixo .botao { display: flex; align-items: center; justify-content: center; min-height: 48px; text-decoration: none; }
  .folha-baixo :focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }

  /* Atalhos prontos: linhas grandes, as datas à direita; o atual leva o quadrado âmbar. */
  .opcoes { margin: 0 calc(-1 * var(--gutter)); border-block: 1px solid var(--borda); }
  .opcoes__item {
    display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; column-gap: 12px; align-items: center; min-height: 56px;
    padding: 0 var(--gutter); color: var(--fg); text-decoration: none;
  }
  .opcoes__item + .opcoes__item { border-top: 1px solid var(--borda); }
  .opcoes__item:active { background: var(--sup2); }
  .opcoes__marca { justify-self: center; width: 12px; height: 12px; border: 1.5px solid #7a7f86; }
  .opcoes__item[aria-current="true"] .opcoes__marca { background: var(--ac); border-color: var(--ac); }
  .opcoes__nome { font: 500 1rem/1.2 var(--texto); }
  .opcoes__datas { font: 400 .875rem/1 var(--mono); font-variant-numeric: tabular-nums; color: var(--fg2); white-space: nowrap; }

  /* Um mês fechado: um botão por mês, com o ano embaixo; quebra em linhas quando os meses passam de quatro. */
  .meses { display: flex; flex-wrap: wrap; gap: 1px; border: 1px solid var(--borda2); background: var(--borda2); }
  .meses__item {
    flex: 1 1 4.5rem; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; min-height: 56px;
    background: var(--painel); color: var(--fg); text-decoration: none; font: 500 .875rem/1 var(--mono); letter-spacing: .1em; text-transform: uppercase;
  }
  .meses__item small { font: 400 .75rem/1 var(--mono); font-variant-numeric: tabular-nums; letter-spacing: .04em; color: var(--fg2); }
  .meses__item:active { background: var(--sup2); }
  .meses__item[aria-current="true"] { background: var(--ac); color: var(--ac-fg); }
  .meses__item[aria-current="true"] small { color: var(--ac-fg); }

  /* Outras datas: De e Até em 16 px (abaixo disso o iPhone amplia a página), e o botão na largura toda. */
  .datas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .datas__campo { display: grid; gap: 6px; min-width: 0; }
  .datas__data {
    width: 100%; min-width: 0; height: 48px; margin: 0; padding: 0 12px; border: 1px solid var(--borda2); border-radius: 0;
    background: var(--bg); color: var(--fg); color-scheme: dark; font: 500 16px/1 var(--mono); font-variant-numeric: tabular-nums;
    -webkit-appearance: none; appearance: none;
  }
  .datas__ver { grid-column: 1 / -1; margin-top: 4px; }

  @media (prefers-reduced-motion: no-preference) {
    .folha-baixo[popover] {
      transform: translateY(100%);
      transition: transform 220ms var(--ease), overlay 220ms allow-discrete, display 220ms allow-discrete;
    }
    .folha-baixo[popover]:popover-open { transform: none; }
    @starting-style { .folha-baixo[popover]:popover-open { transform: translateY(100%); } }
  }

  /* ── Faixa de fases do cliente ────────────────────────
     "implantação" tem 79 px em mono de 12 px: com 4 meses numa linha, não cabe a 320. Cada mês tem no mínimo 92 px e a faixa
     quebra em linhas; com 4 meses até 400 px, fica 2 x 2 no lugar de 3 + 1. */
  .tempo { grid-auto-flow: row; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); }
  .tempo__mes { padding: 8px 6px 8px 10px; }
  .tempo__fase { white-space: nowrap; }
  @media (max-width: 400px) { .tempo:has(> :nth-child(4):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

  /* ── Painéis de borda a borda ─────────────────────── */
  .folha .painel { margin-inline: calc(-1 * var(--gutter)); border-inline: 0; }
  .painel__titulo, .nota, .vazio { padding-inline: var(--gutter); }
  .tabela--grade tr { padding-inline: var(--gutter); }
  .simples .entrar { padding: 20px var(--gutter); }
  /* Em Entrar e convite a margem fica nos filhos, para o painel ir de borda a borda sem passar da coluna. */
  .simples { padding-inline: 0; }
  .simples__topo, .simples__folha { padding-inline: var(--gutter); }

  /* ── Rodapé: uma linha por símbolo ────────────────── */
  .rodape { padding: 22px var(--gutter) 24px; }
  .rodape p { margin-bottom: 8px; line-height: 1.55; text-wrap: pretty; }
  .rodape__computador { display: none; }
  .rodape__celular { display: block; }
  .rodape__parte { display: block; padding-left: 1.25em; text-indent: -1.25em; }
  .rodape__parte + .rodape__parte { margin-top: 8px; }
}

/* Até 380px (iPhone SE, Android pequeno): a barra de cima aperta para caber a marca, as datas e quem entrou. */
@media (max-width: 380px) {
  .topo { gap: 4px; }
  .topo .marca { padding-inline: 8px; font-size: 1.1875rem; }
  .topo__periodo { gap: 6px; padding: 0 8px; font-size: .8125rem; }
}
@media (max-width: 340px) {
  .topo__chevron { display: none; }
}
@media (max-width: 720px) {
  .simples__folha { padding-top: 1.5rem; }
}

/* ── Tabela empilhada (passo 2): Empresa, Cliente e os detalhes ─────────────────────────────────────────────────────────
   Marcação de empresa.ts, cliente.ts e detalhe.ts, preparada por empilhar() em src/app/colunas.ts: o nome da linha em cima
   e os números embaixo, em colunas fixas e alinhadas (--colunas números por linha; a letra cabe no mais longo, --largura
   caracteres). O cabeçalho aparece uma vez, grudado sob a barra de cima. Filhas recuadas sobre --sup, em letra menor, e a
   seta na ponta direita da mãe. Com 5 números ou mais, o seletor mostra uma coluna por vez (rádios e :has(), sem script).
   Guias e Caixa viram listas. No computador nada daqui aparece. */
.colunas, .guia__pago, .kpi__partes { display: none; }

@media (max-width: 720px) {
  .rolagem:has(> .tabela--pilha, > .pilha, > .tabela--guias) { overflow: visible; }

  .tabela--pilha {
    --k: var(--colunas, 3); --vao: 8px;
    /* A letra que faz o número mais longo caber na coluna, com folga de um caractere (Plex Mono: 0,6 em por caractere). */
    --cabe: calc((100vw - 2 * var(--gutter) - (var(--k) - 1) * var(--vao)) / var(--k) / ((var(--largura, 8) + 1) * .6));
    display: block; width: 100%;
  }
  .pilha--seletor .tabela--pilha { --k: 1; }
  .tabela--pilha thead, .tabela--pilha tbody { display: block; }
  .tabela--pilha tr {
    position: relative; display: grid; grid-template-columns: repeat(var(--k), minmax(0, 1fr)); column-gap: var(--vao);
    padding: 0 var(--gutter);
  }
  .tabela--pilha tr[hidden] { display: none; }
  .tabela--pilha tr > * { min-width: 0; padding: 0 !important; border: 0 !important; background: none !important; }
  /* A coluna do período, numa faixa um pouco mais clara até a borda. */
  .tabela--pilha-total tr {
    background-image: linear-gradient(to left, rgba(255, 255, 255, .025)
      calc(var(--gutter) + (100% - 2 * var(--gutter) - (var(--k) - 1) * var(--vao)) / var(--k) + var(--vao) / 2), transparent 0);
  }
  .pilha--seletor .tabela--pilha tr { background-image: none; }

  /* O cabeçalho, uma vez só, sob a barra de cima. */
  .tabela--pilha thead { position: sticky; top: var(--topo); z-index: 5; background: var(--painel); border-bottom: 1px solid var(--borda2); }
  .pilha--seletor .tabela--pilha thead { display: none; }
  .tabela--pilha thead th {
    padding: 12px 0 10px !important; text-align: right !important; white-space: normal; overflow-wrap: anywhere;
    font: 500 .75rem/1.25 var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--fg2);
  }
  .tabela--pilha thead th:first-child { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .tabela--pilha thead .th--seta { display: none; }
  .tabela--pilha thead .th--forte { color: var(--fg); font-weight: 600; }
  .tabela--pilha thead .th__nota { display: block; margin-top: 3px; font: 400 .75rem/1.2 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--fg2); }

  /* O nome em linha própria; os números embaixo, à direita de cada coluna. */
  .tabela--pilha tbody th { grid-column: 1 / -1; padding: 11px 0 0 !important; font: 500 .875rem/1.35 var(--mono); white-space: normal; text-align: left; }
  .tabela--pilha td { grid-row: 2; padding: 4px 0 11px !important; text-align: right !important; }
  .tabela--pilha td[colspan] { grid-column: 1 / -1; text-align: left !important; }
  .tabela--pilha td[colspan] .num { font: 400 .875rem/1.4 var(--texto); }
  .tabela--pilha .cel--seta { display: none; }
  .tabela--pilha [data-mes]::before { content: none; }
  .tabela--pilha .num { font-size: clamp(12px, var(--cabe), 1.0625rem); }
  .tabela--pilha tbody th .th__nota { display: block; margin-top: 2px; font: 400 .8125rem/1.4 var(--texto); letter-spacing: 0; color: var(--fg2); }
  .tabela--pilha .item__nome { font: inherit; }
  .tabela--pilha .item__sub { max-width: none; }

  .tabela--pilha tbody tr + tr { border-top: 1px solid var(--borda); }
  .tabela--pilha tbody tr.tabela__soma { border-top: 1px solid var(--borda2); }
  .tabela--pilha tbody tr.linha--total { border-top: 2px solid var(--borda2); }
  .tabela--pilha tr.tabela__soma--final { background-color: var(--ac-suave); }
  .tabela--pilha tbody tr.grupo-linha { border-top: 1px solid var(--borda2); background-color: var(--sup); }

  /* A mãe: a linha toda abre (o botão cobre a linha), a seta na ponta direita. */
  .tabela--pilha .abre { position: static; display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 12px; text-align: left; }
  .tabela--pilha .abre::before { inset: 0; top: 0; height: auto; transform: none; }
  .tabela--pilha .abre__seta { flex: none; width: 14px; height: 14px; }
  .tabela--pilha tr:has(> th .abre[aria-expanded="true"]) { background-color: var(--sup); }
  .tabela--pilha tr:has(> th .abre):active { background-color: var(--sup2); }
  .tabela--pilha tr:has(.abre:focus-visible) { outline: 2px solid var(--ac); outline-offset: -2px; }
  .tabela--pilha .abre:focus-visible { outline: none; }

  /* As filhas: recuadas, sobre --sup, letra menor; um fio marca de quem são. */
  .tabela--pilha tbody tr.tabela__sub { background-color: var(--sup); }
  .tabela--pilha tbody tr.tabela__sub::before { content: ''; position: absolute; top: 0; bottom: 0; left: calc(var(--gutter) + 3px); width: 1px; background: var(--borda2); }
  .tabela--pilha tbody tr.tabela__sub > th { max-width: none; padding: 9px 0 0 17px !important; font-size: .8125rem !important; }
  .tabela--pilha tbody tr.tabela__sub > td { padding: 2px 0 9px !important; }
  .tabela--pilha .tabela__sub .num { font-size: clamp(12px, calc(var(--cabe) * .92), .9375rem); }
  /* Detalhe de uma linha da empresa: os itens de cada cliente, recuados sob o nome dele (que leva à página do cliente). */
  .tabela--pilha tr.grupo-linha ~ tr:not(.grupo-linha):not(.linha--total) > th { padding-left: 17px !important; font-size: .8125rem; }
  .tabela--pilha tr.grupo-linha ~ tr:not(.grupo-linha):not(.linha--total)::before { content: ''; position: absolute; top: 0; bottom: 0; left: calc(var(--gutter) + 3px); width: 1px; background: var(--borda2); }
  .tabela--pilha tr.grupo-linha ~ tr:not(.grupo-linha):not(.linha--total) .num { font-size: clamp(12px, calc(var(--cabe) * .92), .9375rem); }
  /* A descrição do fornecedor em até 2 linhas; tocar na linha mostra o texto inteiro (SCRIPT_ABRIR). */
  .tabela--pilha .tabela__sub th .th__nota, .tabela--pilha .item__sub {
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
  }
  .tabela--pilha tr.lida th .th__nota, .tabela--pilha tr.lida .item__sub { display: block; -webkit-line-clamp: none; line-clamp: none; overflow: visible; color: var(--fg); }
  .tabela--pilha tbody tr:has(.th__nota, .item__sub):not(:has(.abre, .linha__link)) { cursor: pointer; }

  /* O seletor de coluna (5 números ou mais): grudado sob a barra, no lugar do cabeçalho. */
  .colunas {
    position: sticky; top: var(--topo); z-index: 5; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr);
    min-width: 0; margin: 0; padding: 0 var(--gutter); border: 0; border-bottom: 1px solid var(--borda2); background: var(--painel);
  }
  .colunas input { position: absolute; opacity: 0; pointer-events: none; }
  .colunas label {
    position: relative; display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 48px; padding: 4px 2px;
    cursor: pointer; text-align: center; overflow-wrap: anywhere;
    font: 500 .75rem/1.2 var(--mono); letter-spacing: .04em; text-transform: uppercase; color: var(--fg2);
  }
  .colunas label { flex-direction: column; gap: 3px; }
  .colunas label small { font: 400 .75rem/1.1 var(--mono); letter-spacing: 0; text-transform: none; color: var(--fg2); }
  .colunas input:checked + label { color: var(--fg); font-weight: 600; }
  /* Uma coluna por vez: o nome e o número na mesma linha, a seta numa coluna própria na ponta direita. */
  .pilha--seletor .tabela--pilha tbody tr { grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; padding-right: calc(var(--gutter) + 26px); }
  .pilha--seletor .tabela--pilha tbody th { grid-column: 1; grid-row: 1; padding: 13px 0 12px !important; }
  .pilha--seletor .tabela--pilha tbody td { grid-column: 2; grid-row: 1; align-self: start; padding: 13px 0 12px !important; }
  .pilha--seletor .tabela--pilha tbody tr.tabela__sub > th { padding: 10px 0 9px 17px !important; }
  .pilha--seletor .tabela--pilha tbody tr.tabela__sub > td { padding: 10px 0 9px !important; }
  .pilha--seletor .tabela--pilha td[colspan] { grid-column: 1 / -1; grid-row: 2; padding-top: 0 !important; }
  .pilha--seletor .tabela--pilha .abre__seta { position: absolute; top: calc(50% - 7px); right: var(--gutter); }
  .colunas input:checked + label::after { content: ''; position: absolute; left: 10%; right: 10%; bottom: -1px; height: 2px; background: var(--ac); }
  .colunas input:focus-visible + label { outline: 2px solid var(--ac); outline-offset: -2px; }
  .pilha:has(.colunas input[value="0"]:checked) .tabela--pilha [data-c]:not([data-c="0"]),
  .pilha:has(.colunas input[value="1"]:checked) .tabela--pilha [data-c]:not([data-c="1"]),
  .pilha:has(.colunas input[value="2"]:checked) .tabela--pilha [data-c]:not([data-c="2"]),
  .pilha:has(.colunas input[value="3"]:checked) .tabela--pilha [data-c]:not([data-c="3"]),
  .pilha:has(.colunas input[value="4"]:checked) .tabela--pilha [data-c]:not([data-c="4"]),
  .pilha:has(.colunas input[value="5"]:checked) .tabela--pilha [data-c]:not([data-c="5"]),
  .pilha:has(.colunas input[value="6"]:checked) .tabela--pilha [data-c]:not([data-c="6"]),
  .pilha:has(.colunas input[value="7"]:checked) .tabela--pilha [data-c]:not([data-c="7"]),
  .pilha:has(.colunas input[value="8"]:checked) .tabela--pilha [data-c]:not([data-c="8"]),
  .pilha:has(.colunas input[value="9"]:checked) .tabela--pilha [data-c]:not([data-c="9"]),
  .pilha:has(.colunas input[value="10"]:checked) .tabela--pilha [data-c]:not([data-c="10"]),
  .pilha:has(.colunas input[value="11"]:checked) .tabela--pilha [data-c]:not([data-c="11"]),
  .pilha:has(.colunas input[value="12"]:checked) .tabela--pilha [data-c]:not([data-c="12"]),
  .pilha:has(.colunas input[value="13"]:checked) .tabela--pilha [data-c]:not([data-c="13"]) { display: none; }

  /* Guias: uma lista, o valor à direita e o dia do pagamento embaixo dele. */
  .tabela--guias, .tabela--guias tbody { display: block; }
  .tabela--guias thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .tabela--guias tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; align-items: baseline; padding: 12px var(--gutter); }
  .tabela--guias tr > * { padding: 0 !important; border: 0 !important; }
  .tabela--guias tbody tr + tr { border-top: 1px solid var(--borda); }
  .tabela--guias tbody th { grid-column: 1; grid-row: 1 / 3; align-self: start; font: 500 .9375rem/1.35 var(--mono) !important; white-space: normal; }
  .tabela--guias td.cel--forte { grid-column: 2; grid-row: 1; text-align: right; }
  .tabela--guias td.cel--forte .num { font-size: 1rem; }
  .tabela--guias td:not(.cel--forte) { grid-column: 2; grid-row: 2; text-align: right; }
  .tabela--guias td:not(.cel--forte) .num { font: 400 .8125rem/1.4 var(--mono); color: var(--fg2); }
  .guia__pago { display: inline; margin-right: .4em; }

  /* Caixa: uma lista, o rótulo à esquerda, o valor à direita e o texto embaixo. */
  .caixa__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; align-items: baseline; padding: 14px var(--gutter); }
  .caixa__item .rotulo { font-size: .75rem; }
  .caixa__item .bloco__valor { grid-column: 2; grid-row: 1; margin: 0; font-size: 1.125rem; text-align: right; white-space: nowrap; }
  .caixa__item .bloco__texto { grid-column: 1 / -1; margin-top: 4px; font-size: .875rem; line-height: 1.45; }

  /* ── O valor principal e as linhas de ficha (Empresa, Cliente) ─────────────── */
  .todo__numeros:has(.kpi--heroi) { display: flex; flex-direction: column; gap: 0; padding: 0; border-right: 0; align-items: stretch; }
  .todo--simples .todo__numeros:has(.kpi--heroi) { border-bottom: 0; }
  .kpi--heroi { order: -1; padding: 18px var(--gutter); }
  .kpi--heroi .rotulo, .kpi--ficha .rotulo { font-size: .75rem; letter-spacing: .1em; }
  .kpi--heroi .kpi__valor { margin: 6px 0 8px; font-size: 2.75rem; line-height: 1; letter-spacing: -.02em; word-spacing: -.4em; }
  .kpi--heroi .kpi__nota { margin: 0; font: 400 .9375rem/1.5 var(--texto); color: var(--fg2); text-wrap: pretty; }
  .kpi--heroi .kpi__pct { font: 500 .9375rem var(--mono); color: var(--ac); }
  .kpi--heroi .kpi__valor.num--neg ~ .kpi__nota .kpi__pct { color: var(--neg); }
  .kpi--heroi .kpi__inteiro, .kpi--ficha .kpi__inteiro { display: none; }
  .kpi--heroi .kpi__partes, .kpi--ficha .kpi__partes { display: inline; }
  .kpi--heroi .kpi__moeda, .kpi--ficha .kpi__moeda { font-size: max(12px, .5em); font-weight: 500; letter-spacing: 0; color: var(--fg2); }
  .kpi--ficha {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; align-items: baseline;
    padding: 14px var(--gutter); border-top: 1px solid var(--borda);
  }
  .kpi--ficha .kpi__valor { margin: 0; font-size: 1.25rem; text-align: right; word-spacing: -.3em; }
  .kpi--ficha .kpi__nota { grid-column: 1 / -1; margin: 4px 0 0; font: 400 .875rem/1.45 var(--texto); color: var(--fg2); }
  .kpi__forte { font: 500 .875rem var(--mono); font-variant-numeric: tabular-nums; color: var(--fg); }
  .kpi--heroi .kpi__forte { font-size: .9375rem; }
}
@media (max-width: 380px) {
  .tabela--pilha thead th { letter-spacing: .02em; }
}
/* Sem :has() (iOS abaixo de 15.4): sem seletor, todas as colunas de uma vez, como numa tabela de até 4 números. */
@media (max-width: 720px) {
  @supports not selector(:has(*)) {
    .colunas { display: none; }
    .pilha--seletor .tabela--pilha { --k: var(--colunas); }
    .pilha--seletor .tabela--pilha thead { display: block; }
    .pilha--seletor .tabela--pilha tbody tr { grid-template-columns: repeat(var(--k), minmax(0, 1fr)); column-gap: var(--vao); padding-right: var(--gutter); }
    .pilha--seletor .tabela--pilha tbody th { grid-column: 1 / -1; padding: 11px 0 0 !important; }
    .pilha--seletor .tabela--pilha tbody td { grid-column: auto; grid-row: 2; padding: 4px 0 11px !important; }
    .pilha--seletor .tabela--pilha .abre__seta { position: static; }
  }
}

/* ── Início (passo 3): o valor principal com a frase, as barras deitadas e a lista de clientes ───────────────────────────
   Marcação de inicio.ts e grafico.ts (graficoMeses, também na Empresa). A lista sai das mesmas linhas da tabela, no mesmo
   laço: cada número é o texto da célula (inicio.test.ts confere). No computador nada daqui aparece. */
.grm, .clientes__lista, .so-celular, .kpi__nota--celular { display: none; }

@media (max-width: 720px) {
  .so-computador, .kpi--computador { display: none; }
  .so-celular { display: inline; }
  .kpi--heroi .kpi__nota--celular { display: block; }

  /* As barras deitadas no lugar do gráfico de colunas. */
  .todo__grafico { padding: 16px var(--gutter) 14px; }
  .todo__grafico > .legenda, .todo__grafico > .gr { display: none; }
  .grm { display: block; }
  .grm__legenda {
    display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 10px; padding: 0; list-style: none;
    font: 500 .75rem/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--fg2);
  }
  .grm__legenda li { display: flex; align-items: center; gap: 8px; }
  .grm__chave { width: 12px; height: 12px; }
  .grm__chave--r { border: 1.5px solid var(--fg2); background: var(--sup); }
  .grm__chave--m { background: var(--ac); }
  .grm__linha {
    display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) calc(var(--grm-l, 7) * .525rem + 2px); column-gap: 12px;
    align-items: center; min-height: 46px; padding: 8px 0;
  }
  .grm__linha + .grm__linha { border-top: 1px dashed var(--borda); }
  .grm__mes { font: 500 .8125rem/1 var(--mono); letter-spacing: .1em; color: var(--fg2); }
  .grm__barras { position: relative; height: 30px; }
  .grm__barras::before { content: ''; position: absolute; left: var(--z); top: -4px; bottom: -4px; width: 1px; background: var(--borda2); }
  .grm__b { position: absolute; left: var(--z); width: var(--w); height: 12px; }
  .grm__b--r { top: 1px; border: 1.5px solid var(--fg2); background: var(--sup); }
  .grm__b--m { top: 17px; background: var(--ac); }
  .grm__b--neg { left: calc(var(--z) - var(--w)); }
  .grm__b--m.grm__b--neg { background: var(--neg); }
  .grm__b--r.grm__b--neg { border-color: var(--neg); }
  .grm__vals { display: grid; justify-items: end; gap: 2px; }
  .grm__vals .num { font: 500 .875rem/1.15 var(--mono); font-variant-numeric: tabular-nums; }
  .grm__m:not(.num--neg):not(.num--vazio) { color: var(--ac); }
  .grm__sem { grid-column: 2 / -1; font: 400 .875rem/1.3 var(--texto); color: var(--fg2); }
  @media (prefers-reduced-motion: no-preference) {
    .grm__b { transform-origin: left center; animation: grm-crescer 700ms var(--ease) both; animation-delay: calc(var(--i, 0) * 40ms + 80ms); }
    .grm__b--neg { transform-origin: right center; }
  }
  @keyframes grm-crescer { from { transform: scaleX(0); } }

  /* Clientes: o título numa linha, a dica à direita. */
  .clientes__titulo.so-celular { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; }
  .clientes__titulo .painel__explica { margin: 0; }

  /* A lista no lugar da tabela. */
  .clientes .rolagem { display: none; }
  .clientes__lista { display: block; }
  .cli + .cli { border-top: 1px solid var(--borda); }
  .cli > summary, .cli__l > summary { list-style: none; cursor: pointer; }
  .cli > summary::-webkit-details-marker, .cli__l > summary::-webkit-details-marker { display: none; }
  .cli > summary {
    display: grid; grid-template-columns: minmax(0, 1fr) auto 20px; column-gap: 12px; align-items: baseline;
    min-height: 72px; padding: 14px var(--gutter);
  }
  .cli > summary:active, .cli__l > summary:active { background: var(--sup2); }
  .cli > summary:focus-visible, .cli__l > summary:focus-visible, .cli__ir:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .cli[open] > summary { background: var(--sup); }
  .cli__nome { min-width: 0; font: 500 1.0625rem/1.3 var(--mono); color: var(--fg); overflow-wrap: anywhere; }
  .cli__valor { text-align: right; white-space: nowrap; }
  .cli__valor .num { font: 600 1.25rem/1.2 var(--mono); font-variant-numeric: tabular-nums; }
  .cli__seta { grid-column: 3; grid-row: 1 / span 3; align-self: center; justify-self: end; color: var(--fg2); transition: transform 160ms var(--ease); }
  details[open] > summary > .cli__seta { transform: rotate(180deg); color: var(--ac); }
  .cli__meta { grid-column: 1 / 3; margin-top: 3px; font: 400 .8125rem/1.4 var(--mono); font-variant-numeric: tabular-nums; color: var(--fg2); }
  .cli__barra { grid-column: 1 / 3; height: 2px; margin-top: 10px; background: linear-gradient(to right, var(--fg2) var(--p), var(--borda) var(--p)); }
  .cli__barra--neg { background: linear-gradient(to right, var(--neg) var(--p), var(--borda) var(--p)); }
  .cli--total { border-top: 2px solid var(--borda2) !important; }
  .cli--total .cli__nome { font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
  .cli--total .cli__valor .num:not(.num--neg) { color: var(--ac); }

  /* A conta do cliente, aberta: as linhas da tabela, na ordem dela. */
  .cli__corpo { border-top: 1px solid var(--borda); background: var(--bg); }
  .cli__l + .cli__l, .cli__ir { border-top: 1px solid var(--borda); }
  div.cli__l, .cli__l > summary {
    display: grid; grid-template-columns: minmax(0, 1fr) auto 20px; column-gap: 12px; align-items: baseline;
    min-height: 52px; padding: 13px var(--gutter) 12px;
  }
  .cli__l > summary .cli__seta { grid-row: 1; }
  .cli__rot { min-width: 0; font: 500 .9375rem/1.35 var(--mono); color: var(--fg); }
  .cli__v { grid-column: 2; text-align: right; white-space: nowrap; }
  .cli__v .num { font: 500 1.0625rem/1.3 var(--mono); font-variant-numeric: tabular-nums; }
  .cli__l--menos > .cli__rot, .cli__l--menos > summary > .cli__rot,
  .cli__l--menos > .cli__v .num:not(.num--neg), .cli__l--menos > summary > .cli__v .num:not(.num--neg) { color: var(--fg2); }
  .cli__l--menos[open] > summary > .cli__rot { color: var(--fg); }
  .cli__l[open] > summary { background: var(--sup); }
  .cli__l.cli__l--final { border-top-color: var(--borda2); background: var(--ac-suave); }
  .cli__l--final .cli__v .num:not(.num--neg) { color: var(--ac); font-weight: 600; }
  .cli__l--prova .cli__rot, .cli__l--prova .cli__v .num { color: var(--fg2); font-weight: 400; }
  .cli__filhas { border-top: 1px solid var(--borda); background: var(--sup); }
  .cli__f {
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; align-items: baseline;
    min-height: 44px; padding: 11px calc(var(--gutter) + 32px) 10px calc(var(--gutter) + 16px);
  }
  .cli__f::before { content: ''; position: absolute; top: 0; bottom: 0; left: calc(var(--gutter) + 3px); width: 1px; background: var(--borda2); }
  .cli__f + .cli__f { border-top: 1px solid var(--borda); }
  .cli__f .cli__rot { font: 400 .875rem/1.35 var(--mono); }
  .cli__f .th__nota { margin-left: 6px; font: 400 .8125rem var(--mono); letter-spacing: 0; color: var(--fg2); }
  .cli__f .cli__v .num { font: 400 .9375rem/1.3 var(--mono); color: var(--fg); }
  .cli__ir {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; padding: 0 var(--gutter);
    color: var(--fg); text-decoration: none; font: 500 .8125rem/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase;
  }
  .cli__ir:active { background: var(--sup2); }
  .cli__ir .seta { flex: none; color: var(--ac); }
}

/* ── Para decidir (passo 4): contagens no topo, motivo dobrado, efeito em lista, Aprovar e Rejeitar empilhados ────────────
   Marcação de decidir.ts. Aprovar em âmbar sólido, na largura toda; Rejeitar embaixo, em contorno vermelho, 16 px abaixo.
   A frase empilhada, com "Copiar a frase" na largura toda. No computador nada daqui aparece. */
.resumo-decidir, .efeito-lista, .motivo, .grupo__conta, .pedido-cartao__rotulo, .acao__entrar, .nota__ir, .nota--celular { display: none; }

@media (max-width: 720px) {
  .decisao, .pedido-cartao, .painel__titulo { scroll-margin-top: calc(var(--topo) + 8px); }

  /* As duas contagens, que levam à seção. */
  .resumo-decidir {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 0 calc(-1 * var(--gutter)) 1.125rem;
    border-block: 1px solid var(--borda); background: var(--borda);
  }
  .resumo-decidir__item {
    display: flex; flex-direction: column; justify-content: center; gap: 6px; min-height: 76px; padding: 12px var(--gutter);
    background: var(--painel); color: var(--fg); text-decoration: none;
  }
  .resumo-decidir__item:active { background: var(--sup2); }
  .resumo-decidir__item:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .resumo-decidir__item b { font: 600 1.625rem/1 var(--mono); font-variant-numeric: tabular-nums; }
  .resumo-decidir__item:first-child b { color: var(--ac); }
  .resumo-decidir__item span { font: 400 .875rem/1.3 var(--texto); color: var(--fg2); }

  /* O cartão da mudança. */
  .decisao { padding: 16px var(--gutter) 20px; }
  .decisao--nova { padding-left: calc(var(--gutter) - 3px); }
  .decisao__titulo { text-wrap: pretty; overflow-wrap: anywhere; }
  .decisao__motivo { font-size: .9375rem; line-height: 1.5; }
  .decisao__motivo--longo { display: none; }
  .motivo { display: block; margin: 0 0 8px; }
  .motivo > summary { display: block; list-style: none; cursor: pointer; }
  .motivo > summary::-webkit-details-marker { display: none; }
  .motivo > summary:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }
  .motivo__texto {
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; line-clamp: 4; overflow: hidden;
    color: var(--fg2); font-size: .9375rem; line-height: 1.5;
  }
  .motivo[open] .motivo__texto { display: block; -webkit-line-clamp: none; line-clamp: none; overflow: visible; }
  .motivo__mais {
    display: inline-flex; align-items: center; min-height: 44px; color: var(--fg);
    font: 500 .8125rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase;
  }
  .motivo[open] .motivo__mais { display: none; }
  .decisao__efeito { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; align-items: baseline; overflow-wrap: anywhere; }
  .decisao__efeito .rotulo { font-size: .75rem; }

  /* O efeito: uma linha por célula, onde muda pelo nome, a variação grande à direita e "antes → depois" embaixo. */
  .decisao .efeito { display: none; }
  .efeito-lista { display: block; margin: 12px calc(-1 * var(--gutter)) 0; padding: 0; list-style: none; border-block: 1px solid var(--borda); background: var(--bg); }
  .efeito-lista__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; align-items: baseline; padding: 11px var(--gutter); }
  .efeito-lista__item + .efeito-lista__item { border-top: 1px solid var(--borda); }
  .efeito-lista__onde { min-width: 0; font: 500 .9375rem/1.35 var(--mono); overflow-wrap: anywhere; }
  .efeito-lista__delta { text-align: right; white-space: nowrap; }
  .efeito-lista__delta .num { font: 600 1.0625rem/1.2 var(--mono); font-variant-numeric: tabular-nums; }
  .efeito-lista__sub { grid-column: 1; min-width: 0; font: 400 .8125rem/1.4 var(--texto); color: var(--fg2); }
  .efeito-lista__antes { grid-column: 2; text-align: right; white-space: nowrap; font: 400 .8125rem/1.4 var(--mono); font-variant-numeric: tabular-nums; color: var(--fg2); }
  .efeito-lista__antes .num { font: inherit; color: inherit; }
  .efeito__mais > summary { display: flex; align-items: center; min-height: 44px; }
  .efeito__mais[open] > summary { color: var(--fg); }
  /* Dentro da dobra (mais de 12 células, o bloco do caixa), a lista fica na margem do cartão: de borda a borda vazaria da dobra. */
  .efeito__mais > .efeito-lista { margin-inline: 0; }
  .efeito__mais .efeito-lista__sub { overflow-wrap: anywhere; }

  /* O bloco do caixa: os três números lado a lado; cada fornecedor uma linha de toque de 44 px, na margem do cartão. */
  .lote__numeros { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 12px; }
  .lote__numero .num { font-size: 1.0625rem; overflow-wrap: anywhere; }
  .lote__item > summary { min-height: 44px; padding: 10px 0; align-content: center; column-gap: 12px; }
  .lote__item > summary:active { background: var(--sup2); }
  .lote__item > summary:focus-visible { outline-offset: -2px; }
  .lote__linhas { margin: 0 0 10px; }
  .lote__linha { grid-template-columns: 3.6em minmax(0, 1fr) auto; gap: 2px 10px; padding: 8px 10px; }

  /* A nota, grande; Aprovar e Rejeitar empilhados, longe um do outro. */
  .acao { max-width: none; gap: 10px; margin-top: 18px; }
  .acao__texto { min-height: 96px; }
  .acao__botoes--pilha, .acao--pedido .acao__botoes { flex-direction: column; gap: 16px; margin-top: 4px; }
  .acao__botoes--pilha .botao, .acao--pedido .acao__botoes .botao { width: 100%; flex: none; }
  .acao__aprovar { min-height: 52px; border-color: var(--ac); background: var(--ac); color: var(--ac-fg); font-weight: 600; }
  .acao__aprovar:hover, .acao__aprovar:active { border-color: var(--ac-hover); background: var(--ac-hover); color: var(--ac-fg); }
  .acao__rejeitar:active { background: var(--neg); color: var(--fg); }

  /* A frase para colar na conversa, empilhada; tocar nela seleciona tudo. */
  .frase { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 16px var(--gutter) 18px; }
  .frase__texto { overflow-wrap: anywhere; -webkit-user-select: all; user-select: all; }
  .frase__copiar { grid-column: 1; grid-row: auto; width: 100%; height: auto; min-height: 48px; }
  .frase__copiar:active { background: var(--ac); color: var(--ac-fg); }

  /* Pedidos: o dono com a contagem, o efeito com o rótulo, Responder na largura toda. */
  .grupo { padding: 6px var(--gutter) 18px; }
  .grupo__dono { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
  .grupo__conta { display: inline; font: 400 .8125rem/1 var(--mono); letter-spacing: .04em; text-transform: none; color: var(--fg2); }
  .pedido-cartao { padding: 12px 0 14px; }
  .pedido-cartao__resolve { font-size: .9375rem; line-height: 1.5; }
  .pedido-cartao__faixa { margin-top: 10px; line-height: 1.4; }
  .pedido-cartao__rotulo { display: inline; margin-right: .5em; font: 500 .75rem/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--fg2); }
  .responder { margin-top: 12px; }
  .responder > summary { display: flex; justify-content: center; width: 100%; }
  .pedido-cartao .aviso, .decisao .aviso { margin: 10px 0; }

  /* Sem login: no lugar do "Entre" no meio da frase, um botão de 48 px onde ficaria a ação. */
  .nota--celular { display: block; }
  .acao__entrar { display: flex; align-items: center; justify-content: center; width: 100%; margin-top: 14px; text-decoration: none; }
  /* Pedidos fora do período: o link vira uma linha de toque, como "Abrir a página" no Início. */
  .nota__ir {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 0 var(--gutter);
    border-bottom: 1px solid var(--borda); color: var(--fg); text-decoration: none;
    font: 500 .8125rem/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase;
  }
  .nota__ir:active { background: var(--sup2); }
  .nota__ir:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
  .nota__ir .seta { flex: none; color: var(--ac); }
}

/* O acompanhamento (src/app/acompanhamento.ts): o quadro do cliente (acompanhamento.usetenex.ai) e a aba dos sócios.
   Servido por último em /estilo.css, com os mesmos tokens; só classes próprias, então nada das outras páginas muda.
   O quadro: quatro colunas (Pedido, Priorizado, Em andamento, Feito), uma embaixo da outra no celular, duas a duas no tablet,
   lado a lado a partir de 1100px. Cada coluna é um painel com o nome, a contagem e um quadrado de estado (The Square Rule):
   contorno apagado no Pedido, contorno âmbar no Priorizado, âmbar sólido no Em andamento, apagado sólido no Feito. */

/* ── A casca larga do cliente (paginaSimples com largo) ── */
.simples--largo { max-width: calc(var(--largura) + 2 * var(--gutter)); }
.simples--largo .subtitulo { max-width: 70ch; }

/* ── O quadro ───────────────────────────────────────── */
.quadro { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.125rem; align-items: start; }
@media (min-width: 720.02px) { .quadro { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .quadro { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.quadro__coluna { margin: 0; scroll-margin-top: 16px; }
.quadro__cabeca {
  display: flex; align-items: center; gap: 10px; margin: 0; padding: 1rem 1.25rem .375rem;
  font: 500 .9375rem/1.3 var(--mono); letter-spacing: var(--rotulo); text-transform: uppercase; color: var(--fg);
}
.quadro__cabeca::before { content: ''; flex: none; width: 10px; height: 10px; border: 1.5px solid var(--fg2); }
#priorizado .quadro__cabeca::before { border-color: var(--ac); }
#andamento .quadro__cabeca::before { border-color: var(--ac); background: var(--ac); }
#feito .quadro__cabeca::before { border-color: var(--fg2); background: var(--fg2); }
.quadro__nome { min-width: 0; }
.quadro__conta { margin-left: auto; font: 600 1.375rem/1 var(--mono); letter-spacing: 0; font-variant-numeric: tabular-nums; }
.quadro__explica { margin: 0; padding: 0 1.25rem .875rem; border-bottom: 1px solid var(--borda); color: var(--fg2); font-size: .875rem; }
.quadro__lista { margin: 0; padding: 0; list-style: none; }
.quadro__vazio { margin: 0; padding: 18px 1.25rem 20px; color: var(--fg2); font-size: .875rem; }
.quadro__mais > summary {
  display: flex; align-items: center; min-height: 48px; padding: 0 1.25rem; border-top: 1px solid var(--borda); cursor: pointer; list-style: none;
  color: var(--ac); font: 500 .8125rem/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase;
}
.quadro__mais > summary::-webkit-details-marker { display: none; }
.quadro__mais > summary::after { content: '+'; margin-left: auto; font-size: 1.125rem; }
.quadro__mais[open] > summary::after { content: '−'; }
.quadro__mais > summary:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
.quadro__rodape { margin: 1.25rem 0 0; color: var(--fg2); font: 400 .8125rem/1.5 var(--mono); }
.quadro__resumo { display: none; }
.aviso--calmo { border-left-color: var(--fg2); }

/* ── Cartão ─────────────────────────────────────────── */
.cartao { padding: 14px 1.25rem 16px; }
.cartao + .cartao, .quadro__mais .cartao:first-child { border-top: 1px solid var(--borda); }
.cartao__titulo { margin: 0; font: 600 1.0625rem/1.35 var(--texto); color: var(--fg); text-wrap: pretty; overflow-wrap: anywhere; }
.cartao__texto { margin-top: 6px; color: var(--fg2); font-size: .9375rem; line-height: 1.55; overflow-wrap: anywhere; }
.cartao__texto p { margin: 0 0 6px; }
.cartao__texto p:last-child, .cartao__texto ul:last-child, .cartao__texto ol:last-child { margin-bottom: 0; }
.cartao__texto ul, .cartao__texto ol { margin: 0 0 6px; padding-left: 1.25em; }
.cartao__texto li + li { margin-top: 2px; }
.cartao__texto strong { color: var(--fg); font-weight: 600; }
.cartao__texto a { color: var(--ac); text-underline-offset: 3px; }
.cartao__datas { display: flex; flex-wrap: wrap; gap: 2px 14px; margin: 10px 0 0; color: var(--fg2); font: 400 .8125rem/1.4 var(--mono); }
.cartao__datas span + span { color: var(--fg); }

/* Só na tela dos sócios: o número com o link da issue, as marcas e o aviso de formato. */
.cartao__marcas { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: -4px 0 6px; }
.cartao__numero {
  display: inline-flex; align-items: center; min-height: 28px; margin-right: 2px;
  color: var(--ac); font: 500 .875rem/1 var(--mono); font-variant-numeric: tabular-nums; text-decoration: none;
}
.cartao__numero:hover { text-decoration: underline; text-underline-offset: 3px; }
.cartao__marca { padding: 4px 6px; border: 1px solid var(--borda2); color: var(--fg2); font: 500 .75rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.cartao__marca--aviso { border-color: var(--ac); color: var(--ac); }
.cartao--interna { background: var(--bg); }
.cartao__aviso { margin: 8px 0 0; padding: 8px 10px; border-left: 3px solid var(--ac); background: var(--ac-suave); color: var(--fg); font-size: .875rem; }
.quadro__fora { margin-top: 1.125rem; }

/* ── A aba dos sócios: todos os clientes numa tela ──── */
.acomp__lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 27rem), 1fr)); gap: 1.125rem; align-items: start; }
.acomp { margin: 0; }
.acomp__titulo { margin: 0; font: 700 1.25rem/1.3 var(--display); }
.acomp__titulo a { color: var(--fg); text-decoration: none; }
.acomp__titulo a:hover { color: var(--ac); }
.acomp__quem { margin: 0; padding: 12px 1.25rem 0; color: var(--fg2); font-size: .875rem; overflow-wrap: anywhere; }
.acomp__contas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 12px 0 0; border-block: 1px solid var(--borda); }
.acomp__contas div { padding: 10px 1.25rem 12px; min-width: 0; }
.acomp__contas div + div { border-left: 1px solid var(--borda); }
.acomp__contas dt { color: var(--fg2); font: 500 .75rem/1.25 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.acomp__contas dd { margin: 6px 0 0; font: 600 1.375rem/1 var(--mono); font-variant-numeric: tabular-nums; }
.acomp__fatos { margin: 0; padding: 12px 1.25rem 0; list-style: none; color: var(--fg2); font-size: .875rem; }
.acomp__fatos li + li { margin-top: 6px; }
.acomp__fatos b { color: var(--fg); font-weight: 500; }
.acomp__aviso { color: var(--ac); }
.acomp__leitura { margin: 0; padding: 12px 1.25rem 0; color: var(--fg2); font: 400 .8125rem/1.5 var(--mono); }
.acomp__leitura--erro { color: var(--ac); }
.acomp__acoes { display: flex; flex-wrap: wrap; gap: 10px; padding: 16px 1.25rem 18px; }
.acomp__acoes--topo { padding: 0; margin: -6px 0 18px; }
.acomp__acoes .botao, .acompanhamento__sair .botao { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.acomp__pessoas { margin: 0; padding: 14px 1.25rem 16px 2.5rem; color: var(--fg2); }
/* Sócios: as internas da coluna à parte da contagem do cliente. */
.quadro__internas { margin-left: 8px; white-space: nowrap; color: var(--fg2); font: 500 .75rem/1 var(--mono); letter-spacing: .04em; }

/* Convite: a conta como texto (não é campo; o campo do gerenciador de senhas fica escondido). */
.convite__conta { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.convite__email { font-size: 1rem; color: var(--fg); overflow-wrap: anywhere; }

/* "Ver como o cliente": a faixa por cima da página do cliente, só para os sócios. */
.como-cliente {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px;
  padding: 8px var(--gutter); background: var(--ac); color: var(--ac-fg); font: 600 .8125rem/1.3 var(--mono); letter-spacing: .06em; text-transform: uppercase;
}
.como-cliente__voltar { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; color: var(--ac-fg); text-decoration: underline; text-underline-offset: 3px; text-transform: none; letter-spacing: 0; font: 600 .9375rem/1.3 var(--texto); }
.como-cliente__voltar:focus-visible { outline: 2px solid var(--ac-fg); outline-offset: 2px; }

/* ── Celular ────────────────────────────────────────── */
@media (max-width: 720px) {
  /* De borda a borda: a grade encosta na tela (não os painéis dentro dela, que vazariam da grade). */
  .quadro, .acomp__lista { gap: 0; margin-inline: calc(-1 * var(--gutter)); }
  .folha .quadro .painel, .folha .acomp__lista .painel { margin-inline: 0; }
  .acomp { margin-bottom: 1.125rem; }
  .quadro__coluna { margin-bottom: 1.125rem; scroll-margin-top: calc(var(--topo, 0px) + 8px); }
  .quadro__cabeca, .quadro__explica, .quadro__vazio, .cartao, .quadro__mais > summary, .acomp__quem, .acomp__fatos, .acomp__leitura, .acomp__acoes { padding-inline: var(--gutter); }
  /* As quatro contagens em 2 × 2; o nome do projeto é uma linha de toque inteira. */
  .acomp__contas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .acomp__contas div { padding-inline: var(--gutter); }
  .acomp__contas div + div { border-left: 0; }
  .acomp__contas div:nth-child(even) { border-left: 1px solid var(--borda); }
  .acomp__contas div:nth-child(n + 3) { border-top: 1px solid var(--borda); }
  .acomp__titulo { padding-block: 0; }
  .acomp__titulo a { display: flex; align-items: center; min-height: 56px; }
  .acomp__pessoas { padding-inline: calc(var(--gutter) + 1.25rem) var(--gutter); }
  .cartao__numero { min-height: 44px; min-width: 44px; }
  .acomp__acoes .botao, .acompanhamento__sair .botao { height: 48px; flex: 1 1 100%; }
  .acompanhamento__sair .botao { width: 100%; }
  .acomp__acoes--topo { margin-top: -10px; }
  /* As quatro contagens no topo, cada uma leva à coluna: 2 × 2, de borda a borda. */
  .quadro__resumo {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 0 calc(-1 * var(--gutter)) 1.125rem;
    border-block: 1px solid var(--borda); background: var(--borda);
  }
  .quadro__salto {
    display: flex; flex-direction: column; justify-content: center; gap: 4px; min-height: 72px; padding: 10px var(--gutter);
    background: var(--painel); color: var(--fg2); text-decoration: none; font-size: .875rem;
  }
  .quadro__salto b { color: var(--fg); font: 600 1.625rem/1 var(--mono); font-variant-numeric: tabular-nums; }
  .quadro__salto:active { background: var(--sup); }
  .quadro__salto:focus-visible { outline: 2px solid var(--ac); outline-offset: -2px; }
}
