/* 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; }
@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; }
}

/* ── 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 > * { 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; }
  .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; }
}

/* 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); }
.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); }

/* ── 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 neutro (borda, sem sombra, quadrado) com o "G" nas cores do Google, que é a marca dele. */
.botao--google { display: inline-flex; align-items: center; justify-content: center; gap: 12px; text-decoration: none; }
.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; }
}

/* 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); }

/* 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: 2.75rem; }
  .filtro__campo { flex: 1 1 0; min-width: 0; gap: 6px; padding: 0 2px 0 10px; }
  .filtro__rotulo { font-size: .6875rem; letter-spacing: .08em; }
  .filtro__data { flex: 1 1 auto; width: 100%; min-width: 0; padding: 0; font-size: .8125rem; }
  .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 { 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; }
}
